据 AlphaMoat 统计,截至 2026-09,Map Search 累计下载 1,855 次、获 2 个星标,在全部 5,078 个 AI 技能中排名第 4,532 位,在「生活服务」分类(246 个)中排名第 224 位。
| 平台 | 累计安装 | 累计下载 | 星标 | 评论 |
|---|---|---|---|---|
| ClawHub ↗ | 52 | 1,849 | 1 | - |
| SkillHub ↗ | 132 | 1,855 | 2 | — |
各平台的计数口径不同,统计时间不一致。
该技能可返回地点名称、地址、位置和距离等信息,需要配置相应地图 API key。搜索关键词、区域和附近查询坐标会发送给外部地图服务商;只查询允许共享的数据,并妥善保管各平台密钥。 需要 Python 和 requests。
资料发布于 2026-10-29
以下是根据技能文档生成的示例,不代表实际运行结果。
2026-09 起统计方法调整:同名技能按作者分别统计,并覆盖全部技能。图中虚线为调整前的月份,与之后的数据不直接比较,也不计算跨越调整的增长。
| 月份 | 累计下载 | 环比 | 星标 |
|---|---|---|---|
| 2026-09 | 1,855 | — | 2 |
| 2026-08 | 1,743 | +7.5% | 2 |
| 2026-07 | 1,622 | +15.0% | 2 |
| 2026-06 | 1,411 | +9.1% | 2 |
| 2026-05 | 1,293 | — | 2 |
| 2026-03 | 766 | — | 1 |
以下是作者发布的原始文件,按纯文本显示,本站未做修改或审核;其中的链接不可点击,命令请核实后再运行。抓取于 2026-10-23。
---
name: map-search
description: 更适合中国体质宝宝的地图搜索工具,支持高德、百度、腾讯地图聚合搜索。
metadata:
openclaw:
emoji: "🗺️"
requires:
bins: ["python3"]
env:
- "AMAP_API_KEY" - "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}®ion={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}®ion={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 定位)
```
用 curl 直接向公共天气服务取当前天气与预报的技能。
在局域网里发现并控制 Sonos 音箱的命令行工具。
以六爻占卜方式作答的技能。
用本地 JSON 记录饮水量与睡眠的技能。
在本地同步并查询 CalDAV 日历的命令行技能。
在 macOS 上通过 remindctl 管理提醒事项的技能。
travel-cn 聚合去哪儿/携程/飞猪等中国旅行平台的数据查询,覆盖机票、酒店、火车票、景点门票与行程规划。
在终端里搜索与控制 Spotify 播放的技能。
数据月份:2026-09 · 下载/星标/安装数聚合自公开技能注册库(ClawHub、SkillHub),按月更新。口径说明见数据方法。