收藏夹1区

Map Search

生活サービスv1.0.0
作者:收藏夹1区更新日 2026-05-17map-search@clawhub_shoucangjia1qu/map-search
旅行計画地域生活

AlphaMoatによると、2026-09時点でMap Searchのダウンロード数は1,855、スター数は2で、AIスキル全体5,078件中4,532位、生活サービスでは246件中224位です。

インストール数
132
ダウンロード数
1855
スター数
2
総合順位
#4,532
全体の上位 90% · 生活サービスの上位 92%
プラットフォームインストール数ダウンロード数スター数コメント
ClawHub ↗5218491-
SkillHub ↗13218552—

プラットフォームごとに集計方法と集計時点が異なります。

このスキルでできること

地点名、住所、位置、距離を取得でき、各地図サービスの API key が必要です。検索語、地域、周辺検索の座標は外部の地図プロバイダーに送信されます。共有が許可された情報のみを検索し、各サービスの key を保護してください。 Python と requests が必要です。

資料公開日 2026-10-29

できること

  • 中国国内の場所、住所、周辺施設を調べたいユーザーやエージェント向けです。

使う場面

  • 検索情報を設定済みの地図プロバイダーに送信してよい場合にのみ使います。地域と座標の範囲を確認し、機微な位置情報を送らないでください。

プロンプト例

スキルのドキュメントをもとに生成した例であり、実際の実行結果ではありません。

指定したキーワードでこの都市の周辺施設を検索してください。クエリが送信される地図プロバイダーを先に示し、API key は表示しないでください。

月次の推移

ダウンロード数1855
679131119422026-03 · ダウンロード数 7662026-05 · ダウンロード数 12932026-06 · ダウンロード数 14112026-07 · ダウンロード数 16222026-08 · ダウンロード数 17432026-09 · ダウンロード数 185526-0326-09
スター数2
1222026-03 · スター数 12026-05 · スター数 22026-06 · スター数 22026-07 · スター数 22026-08 · スター数 22026-09 · スター数 226-0326-09

2026-09 から集計方法を変更し、同名スキルを作者ごとに分けて集計し、全スキルを対象にしました。破線は変更前の月で、変更後のデータとは直接比較せず、変更をまたぐ増減も計算していません。

月ダウンロード数前月比スター数
2026-091855—2
2026-081743+7.5%2
2026-071622+15.0%2
2026-061411+9.1%2
2026-051293—2
2026-03766—1

SKILL.md 原文

作者が公開した元のファイルをテキストのまま表示しています。AlphaMoat による編集や審査はしていません。リンクはクリックできません。コマンドは内容を確認してから実行してください。取得日 2026-10-23。

6.9 KB・ClawHub v1.0.0
---
name: map-search
description: 更适合中国体质宝宝的地图搜索工具,支持高德、百度、腾讯地图聚合搜索。
metadata:
  openclaw:
    emoji: "🗺️"
    requires:
      bins: ["python3"]
    env:
      - "AMAP_API_KEY"
すべて表示(全 250 行)
      - "BAIDU_MAP_API_KEY"
      - "TENCENT_MAP_API_KEY"
---

# 🗺️ Map Search Skill

多地图聚合搜索工具,支持高德、百度、腾讯。

## 核心代码

```python
#!/usr/bin/env python3
"""地图搜索工具"""

import os
import json
import requests

# ========== 配置路径 ==========
CONFIG_PATH = os.path.expanduser("~/.config/openclaw/map_config.json")


# ========== 读取配置函数 ==========
def get_config():
    """从配置文件读取所有配置(API Keys + 优先级)"""
    if os.path.exists(CONFIG_PATH):
        with open(CONFIG_PATH, 'r') as f:
            config = json.load(f)
            return {
                "api_keys": {
                    "amap": config.get("amap", {}).get("api_key", ""),
                    "baidu": config.get("baidu", {}).get("api_key", ""),
                    "tencent": config.get("tencent", {}).get("api_key", "")
                },
                "priority": config.get("priority", ["amap", "tencent", "baidu"])
            }
    
    # 回退到环境变量
    return {
        "api_keys": {
            "amap": os.getenv("AMAP_API_KEY", ""),
            "baidu": os.getenv("BAIDU_MAP_API_KEY", ""),
            "tencent": os.getenv("TENCENT_MAP_API_KEY", "")
        },
        "priority": ["amap", "tencent", "baidu"]
    }


# ========== 初始化全局变量 ==========
CONFIG = get_config()           # 获取配置
API_KEYS = CONFIG["api_keys"]   # 提取 API Keys
PRIORITY = CONFIG["priority"]   # 提取优先级

AMAP_KEY = API_KEYS["amap"]
BAIDU_KEY = API_KEYS["baidu"]
TENCENT_KEY = API_KEYS["tencent"]


# ========== 核心搜索函数 ==========
def search_maps(keyword, region="全国", priority=None):
    """地图聚合搜索"""
    if priority is None:
        priority = PRIORITY  # 使用配置文件中的优先级
    
    results = {}
    
    # 高德搜索
    if "amap" in priority and AMAP_KEY:
        url = f"https://restapi.amap.com/v3/place/text?key={AMAP_KEY}&keywords={keyword}&city={region}&output=json"
        r = requests.get(url, timeout=5).json()
        if r.get("status") == "1":
            results["高德"] = [{"name": p["name"], "address": p["address"], "location": p["location"]}
                              for p in r.get("pois", [])[:5]]
    
    # 百度搜索
    if "baidu" in priority and BAIDU_KEY:
        url = f"https://api.map.baidu.com/place/v2/search?query={keyword}&region={region}&ak={BAIDU_KEY}&output=json"
        r = requests.get(url, timeout=5).json()
        if r.get("status") == 0:
            results["百度"] = [{"name": p["name"], "address": p.get("address", ""), "location": p.get("location", "")}
                             for p in r.get("results", [])[:5]]
    
    # 腾讯搜索
    if "tencent" in priority and TENCENT_KEY:
        url = f"https://apis.map.qq.com/ws/place/v1/search?keyword={keyword}&region={region}&key={TENCENT_KEY}&output=json"
        r = requests.get(url, timeout=5).json()
        if r.get("status") == 0:
            results["腾讯"] = [{"name": p["name"], "address": p.get("address", ""), "location": p.get("location", "")}
                             for p in r.get("data", [])[:5]]
    
    return results


# ========== 主入口 ==========
if __name__ == "__main__":
    import sys
    keyword = sys.argv[1] if len(sys.argv) > 1 else "咖啡馆"
    region = sys.argv[2] if len(sys.argv) > 2 else "上海"
    
    results = search_maps(keyword, region)
    
    for source, items in results.items():
        print(f"\n【{source}】")
        for i, item in enumerate(items, 1):
            print(f"  {i}. {item['name']}")
            print(f"     地址: {item['address']}")
```

## 使用方式

### 1. 通过 exec 调用
```bash
python /root/.openclaw/workspace/skills/map-search/map_search.py "咖啡馆" "上海"
```

### 2. 封装成 CLI 工具
```bash
# 创建软链接
ln -s /root/.openclaw/workspace/skills/map-search/map_search.py /usr/local/bin/map-search

# 直接使用
map-search "火锅" "北京"
map-search "酒店" "深圳"
```

## 配置文件

**路径:** `~/.config/openclaw/map_config.json`

```json
{
  "amap": {
    "api_key": "你的高德API Key"
  },
  "baidu": {
    "api_key": "你的百度API Key"
  },
  "tencent": {
    "api_key": "你的腾讯API Key"
  },
  "priority": ["amap", "tencent", "baidu"]
}
```

### 设置优先级
```json
"priority": ["amap", "tencent", "baidu"]
```
- `"amap"` - 高德
- `"baidu"` - 百度
- `"tencent"` - 腾讯

按数组顺序搜索,找到一个有效结果就停止。

## 环境变量(备选)

如果配置文件不存在,会回退到环境变量:
```bash
export AMAP_API_KEY="你的高德Key"
export BAIDU_MAP_API_KEY="你的百度Key"
export TENCENT_MAP_API_KEY="你的腾讯Key"
```

## API Keys 申请

| 平台 | 地址 |
|------|------|
| 高德 | https://lbs.amap.com/ |
| 百度 | https://lbsyun.baidu.com/ |
| 腾讯 | https://lbs.qq.com/ |

## 输出示例

### 关键词搜索
```
【高德】
  1. 星巴克(人民广场店)
     地址: 黄浦区南京西路123号
  2. 瑞幸咖啡(来福士店)
     地址: 黄浦区西藏中路268号
```

### 附近搜索
```
🔍 附近搜索: 咖啡馆 (半径 2000 米)
正在获取当前位置...
当前位置: 经度 121.47, 纬度 31.23

【高德】
  1. 星巴克(人民广场店)
     地址: 黄浦区南京西路123号
     距离: 520米
  2. 瑞幸咖啡(来福士店)
     地址: 黄浦区西藏中路268号
     距离: 890米
```

## 🆕 附近搜索功能

### 自动获取当前位置(通过 IP 定位)
```bash
python /root/.openclaw/workspace/skills/map-search/map_search.py --nearby -k "咖啡馆"
```

### 指定经纬度
```bash
python /root/.openclaw/workspace/skills/map-search/map_search.py --nearby -k "咖啡馆" --lat 31.230416 --lng 121.473701
```

### 指定搜索半径
```bash
python /root/.openclaw/workspace/skills/map-search/map_search.py --nearby -k "火锅" -r 1000
```

### 命令行参数

| 参数 | 说明 | 示例 |
|------|------|------|
| `--nearby` 或 `-n` | 启用附近搜索模式 | `--nearby` |
| `-k` 或 `--keyword` | 搜索关键词 | `-k "咖啡馆"` |
| `--lat` | 纬度 | `--lat 31.230416` |
| `--lng` | 经度 | `--lng 121.473701` |
| `-r` 或 `--radius` | 搜索半径(米,默认2000) | `-r 1000` |

### 使用场景示例

| 场景 | 命令 |
|------|------|
| 搜附近咖啡馆 | `map-search --nearby -k "咖啡馆"` |
| 搜附近1公里的火锅 | `map-search --nearby -k "火锅" -r 1000` |
| 搜指定位置附近的酒店 | `map-search --nearby -k "酒店" --lat 39.9 --lng 116.4` |

## 注意事项

- 需要安装 `requests` 库: `pip install requests`
- 每个地图 API 有每日调用次数限制
- 配置文件优先级 > 环境变量
- 附近搜索需要配置高德 API Key(用于 IP 定位)
```

生活サービスの人気スキル

データ月:2026-09 · ダウンロード数、スター数、インストール数は公開スキルレジストリ(ClawHub、SkillHub)から月単位で集計しています。詳しくはデータの方法論をご覧ください。