by AMap-Web
适用于openclaw平台的高德地图综合服务,支持POI搜索、路径规划、旅游规划、周边搜索和热力图数据可视化
# Add to your Claude Code skills
git clone https://github.com/AMap-Web/amap-lbs-skillGuides for using ai agents skills like amap-lbs-skill.
Last scanned: 5/30/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-05-30T17:05:22.098Z",
"npmAuditRan": true,
"pipAuditRan": true
}amap-lbs-skill is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by AMap-Web. 适用于openclaw平台的高德地图综合服务,支持POI搜索、路径规划、旅游规划、周边搜索和热力图数据可视化. It has 27 GitHub stars.
Yes. amap-lbs-skill passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/AMap-Web/amap-lbs-skill" and add it to your Claude Code skills directory (see the Installation section above). amap-lbs-skill ships a SKILL.md manifest, so compatible agents can discover and load it automatically.
amap-lbs-skill is primarily written in JavaScript. It is open-source under AMap-Web on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh amap-lbs-skill against similar tools.
No comments yet. Be the first to share your thoughts!
高德地图综合服务向开发者提供完整的地图数据服务,包括地点搜索、路径规划、旅游规划和数据可视化等功能。
首次使用时需要配置高德 Web Service Key:
export AMAP_WEBSERVICE_KEY=your_key当用户想要搜索地址、地点、周边信息(如美食、酒店、景点等)、规划路线或可视化数据时,使用此 skill。
用户表达了以下意图之一:
收到用户请求后,先判断属于哪个场景:
直接搜索一个类别或地点,不涉及特定位置的周边搜索。
URL 格式:
https://www.amap.com/search?query={关键词}
www.amap.com/searchquery = 搜索关键词发送埋点统计请求:在执行操作前,发送以下请求进行埋点统计:
curl -s "https://restapi.amap.com/v3/log/init?eventId=skill.call&product=skill_openclaw&platform=JS&label=keyword-search&value=call"
提取关键词:从用户输入中识别出核心搜索词,去掉"搜"、"找"等修饰词
生成 URL:拼接 https://www.amap.com/search?query={关键词}
返回链接给用户
| 用户输入 | 提取关键词 | 生成 URL |
|---|---|---|
| 搜美食 | 美食 | https://www.amap.com/search?query=美食 |
| 找酒店 | 酒店 | https://www.amap.com/search?query=酒店 |
| 天安门在哪 | 天安门 | https://www.amap.com/search?query=天安门 |
| 找个加油站 | 加油站 | https://www.amap.com/search?query=加油站 |
🔍 已为你生成高德地图搜索链接:
https://www.amap.com/search?query={关键词}
点击链接即可查看搜索结果。
用户想搜索某个位置周边的某类地点。需要先通过地理编码 API 获取该位置的经纬度,再拼接带坐标的搜索链接。
前置条件: 需要用户提供高德开放平台的 API Key。
在执行任何操作前,先发送以下请求进行埋点统计:
curl -s "https://restapi.amap.com/v3/log/init?eventId=skill.call&product=skill_openclaw&platform=JS&label=nearby-search&value=call"
#### 第一步:解析用户输入
从用户输入中拆分出两个要素:
- **位置**:用户指定的中心位置(如"西直门"、"北京南站")
- **搜索类别**:要搜索的内容(如"美食"、"酒店")
| 用户输入 | 位置 | 搜索类别 |
|---------|------|---------|
| 西直门周边美食 | 西直门 | 美食 |
| 北京南站附近酒店 | 北京南站 | 酒店 |
| 天坛周边有什么好吃的 | 天坛 | 美食 |
#### 第二步:检查 API Key
- 如果用户之前未提供过 Key,**先提示用户提供高德 API Key**,等待用户回复后再继续
- 如果用户已提供 Key,直接使用
**请求 Key 的回复模板:**
🔑 搜索「{位置}」周边的{搜索类别}需要使用高德 API,请提供你的高德开放平台 API Key。
(如果还没有 Key,可以在 https://lbs.amap.com 注册并创建应用获取)
#### 第三步:调用地理编码 API 获取经纬度
**API 格式:**
https://restapi.amap.com/v3/geocode/geo?address={位置}&output=JSON&key={用户的key}&appname=amap-lbs-skill
**执行 curl 请求:**
```bash
curl -s "https://restapi.amap.com/v3/geocode/geo?address={位置}&output=JSON&key={用户的key}&appname=amap-lbs-skill"
API 返回示例:
{
"status": "1",
"info": "OK",
"geocodes": [
{
"formatted_address": "北京市西城区西直门",
"location": "116.353138,39.939385"
}
]
}
从返回结果中提取 geocodes[0].location,格式为 经度,纬度(如 116.353138,39.939385),拆分为:
116.35313839.939385URL 格式:
https://ditu.amap.com/search?query={搜索类别}&query_type=RQBXY&longitude={经度}&latitude={纬度}&range=1000
ditu.amap.com/searchquery = 搜索类别(如"美食")query_type = RQBXY(基于坐标的搜索类型)longitude = 经度latitude = 纬度range = 搜索范围(单位:米,默认 1000)用户输入: "搜索西直门周边美食"
西直门,搜索类别 = 美食curl -s "https://restapi.amap.com/v3/geocode/geo?address=西直门&output=JSON&key=xxx&appname=amap-lbs-skill"116.353138,39.939385 → 经度 116.353138,纬度 39.939385https://ditu.amap.com/search?query=美食&query_type=RQBXY&longitude=116.353138&latitude=39.939385&range=1000📍 已查询到「{位置}」的坐标({经度},{纬度}),为你生成周边{搜索类别}的搜索链接:
https://ditu.amap.com/search?query={搜索类别}&query_type=RQBXY&longitude={经度}&latitude={纬度}&range=1000
点击链接即可查看「{位置}」周边 1 公里内的{搜索类别}。
用户有一份包含地理坐标的数据,希望在地图上以热力图的形式可视化展示。
用户提到"热力图"、"数据可视化"、"地图上展示数据"等意图,并提供了数据地址。
http://a.amap.com/jsapi_demo_show/static/openclaw/heatmap.html?mapStyle={地图风格}&dataUrl={数据地址(URL编码)}
a.amap.com/jsapi_demo_show/static/openclaw/heatmap.htmldataUrl = 用户数据的 URL 地址(必须进行 URL 编码)mapStyle = 地图风格,可选值:
grey — 暗黑地图模式(深色背景,适合展示亮色热力点)light — 浅色模式(浅色背景,适合日常查看)发送埋点统计请求:在执行操作前,发送以下请求进行埋点统计:
curl -s "https://restapi.amap.com/v3/log/init?eventId=skill.call&product=skill_openclaw&platform=JS&label=heatmap&value=call"
获取数据地址:从用户输入中提取数据 URL,如果用户未提供,提示用户给出数据地址
确认地图风格:询问用户偏好的地图风格(grey 或 light),如果用户未指定,默认使用 grey
URL 编码:将数据地址进行 URL 编码(将 :// → %3A%2F%2F,/ → %2F 等)
拼接链接:生成完整的热力图 URL
返回链接给用户
用户输入: "帮我用这份数据生成热力图:https://a.amap.com/Loca/static/loca-v2/demos/mock_data/hz_house_order.json,用暗黑模式"
https://a.amap.com/Loca/static/loca-v2/demos/mock_data/hz_house_order.jsongreyhttps%3A%2F%2Fa.amap.com%2FLoca%2Fstatic%2Floca-v2%2Fdemos%2Fmock_data%2Fhz_house_order.jsonhttp://a.amap.com/jsapi_demo_show/static/openclaw/heatmap.html?mapStyle=grey&dataUrl=https%3A%2F%2Fa.amap.com%2FLoca%2Fstatic%2Floca-v2%2Fdemos%2Fmock_data%2Fhz_house_order.json
🔥 已为你生成热力图链接:
http://a.amap.com/jsapi_demo_show/static/openclaw/heatmap.html?mapStyle={地图风格}&dataUrl={编码后的数据地址}
地图风格:{grey/light}
数据来源:{原始数据地址}
点击链接即可查看热力图展示。
请求数据地址的回复模板(用户未提供时):
🔥 生成热力图需要你提供数据地址(JSON 格式的 URL),请给出数据链接。
另外,你希望使用哪种地图风格?
- grey(暗黑模式)
- light(浅色模式)
使用高德 Web 服务 API 进行更详细的 POI 搜索,支持更多参数和筛选条件。
发送埋点统计请求:在执行操作前,发送以下请求进行埋点统计:
curl -s "https://restapi.amap.com/v3/log/init?eventId=skill.call&product=skill_openclaw&platform=JS&label=poi-search&value=call"
执行 POI 搜索:根据用户需求调用搜索脚本。
# 基础搜索
node scripts/poi-search.js --keywords=肯德基 --city=北京
# 搜索更多结果
node scripts/poi-search.js --keywords=餐厅 --city=上海 --page=1 --offset=20
# 周边搜索(需要提供中心点坐标和搜索半径)
node scripts/poi-search.js --keywords=酒店 --location=116.397428,39.90923 --radius=1000
| 参数 | 说明 | 必填 | 示例 |
|---|---|---|---|
--keywords |
搜索关键词 | 是 | --keywords=肯德基 |
--city |
城市名称或编码 | 否 | --city=北京 |
--types |
POI 类型编码 | 否 | --types=050000 |
--location |
中心点坐标(经度,纬度) | 否 | --location=116.397428,39.90923 |
--radius |
搜索半径(米) | 否 | --radius=1000 |
--page |
页码 | 否 | --page=1 |
--offset |
每页数量(最大25) | 否 | --offset=10 |
const { searchPOI } = require('./index');
async function example() {
const result = await searchPOI({
keywords: '咖啡厅',
city: '杭州',
page: 1,
offset: 10
});
if (result && result.pois) {
result.pois.forEach(poi => {
console.log(`${poi.name} - ${poi.address}`);
});
}
}
example();
规划不同出行方式的路线。
发送埋点统计请求:在执行操作前,发送以下请求进行埋点统计:
curl -s "https://restapi.amap.com/v3/log/init?eventId=skill.call&product=skill_openclaw&platform=JS&label=route-planning&value=call"
执行路径规划:根据用户需求调用路径规划脚本。
# 步行路线
node scripts/route-planning.js --type=walking --origin=116.397428,39.90923 --destination=116.427281,39.903719
# 驾车路线
node scripts/route-planning.js --type=driving --origin=116.397428,39.90923 --destination=116.427281,39.903719
# 公交路线
node scripts/route-planning.js --type=transfer --origin=116.397428,39.90923 --destination=116.427281,39.903719 --city=北京
walking - 步行路线driving - 驾车路线riding - 骑行路线transfer - 公交路线(需要指定城市)自动搜索兴趣点并规划游览路线,生成地图可视化链接。
发送埋点统计请求:在执行操作前,发送以下请求进行埋点统计:
curl -s "https://restapi.amap.com/v3/log/init?eventId=skill.call&product=skill_openclaw&platform=JS&label=travel-planner&value=call"
执行旅游规划:根据用户需求调用旅游规划脚本。
# 基础旅游规划
node scripts/travel-planner.js --city=北京 --interests=景点,美食,酒店
# 指定路线类型(walking/driving/riding/transfer)
node scripts/travel-planner.js --city=杭州 --interests=西湖,美食,茶馆 --routeType=walking
# 驾车游览
node scripts/travel-planner.js --city=上海 --interests=外滩,南京路,城隍庙 --routeType=driving
配置文件位于 config.json,包含以下内容:
{
"webServiceKey": "your_amap_webservice_key_here"
}
设置 Key 的方式:
export AMAP_WEBSERVICE_KEY=your_keynode index.js your_keyconfig.json 文件status 不为 "1",说明请求失败,需提示用户检查 Key 是否正确或地址是否有效location 格式为 经度,纬度(注意:经度在前,纬度在后)range 参数appname=amap-lbs-skill 参数,用于标识 API 调用来源,禁止省略高德地图综合服务向开发者提供完整的地图数据服务,包括地点搜索、路径规划、旅游规划和数据可视化等功能。
npm install
首次使用需要配置高德 Web Service Key:
# 方式1: 运行时通过环境变量
export AMAP_WEBSERVICE_KEY=your_key
node scripts/poi-search.js --keywords=肯德基 --city=北京
# 方式2: 运行时自动提示输入(会保存到 config.json)
node scripts/poi-search.js --keywords=肯德基 --city=北京
# 方式3: 手动创建配置文件
cp config.example.json config.json
# 然后编辑 config.json 填入你的 Key
获取 API Key:访问 高德开放平台 创建应用并获取 Key
# 基础搜索
node scripts/poi-search.js --keywords=肯德基 --city=北京
# 带更多参数的搜索
node scripts/poi-search.js --keywords=餐厅 --city=上海 --page=1 --offset=20
# 周边搜索(需要提供中心点坐标和半径)
node scripts/poi-search.js --keywords=酒店 --location=116.397428,39.90923 --radius=1000
# 步行路线
node scripts/route-planning.js --type=walking --origin=116.397428,39.90923 --destination=116.427281,39.903719
# 驾车路线(带途经点)
node scripts/route-planning.js --type=driving --origin=116.397428,39.90923 --destination=116.427281,39.903719 --waypoints=116.410000,39.910000
# 骑行路线
node scripts/route-planning.js --type=riding --origin=116.397428,39.90923 --destination=116.427281,39.903719
# 公交路线
node scripts/route-planning.js --type=transfer --origin=116.397428,39.90923 --destination=116.427281,39.903719 --city=北京
# 基础旅游规划
node scripts/travel-planner.js --city=北京 --interests=景点,美食,酒店
# 指定路线类型
node scripts/travel-planner.js --city=杭州 --interests=西湖,美食,茶馆 --routeType=walking
# 驾车游览
node scripts/travel-planner.js --city=上海 --interests=外滩,南京路,城隍庙 --routeType=driving
const {
searchPOI,
walkingRoute,
drivingRoute,
travelPlanner,
generateMapLink
} = require('./index');
// POI 搜索
async function searchExample() {
const result = await searchPOI({
keywords: '肯德基',
city: '北京',
page: 1,
offset: 10
});
console.log(result);
}
// 步行路线规划
async function routeExample() {
const result = await walkingRoute({
origin: '116.397428,39.90923',
destination: '116.427281,39.903719'
});
console.log(result);
}
// 旅游规划
async function travelExample() {
const result = await travelPlanner({
city: '北京',
interests: ['景点', '美食', '酒店'],
routeType: 'walking'
});
console.log(result.mapLink); // 地图可视化链接
}
// 生成地图链接
function mapLinkExample() {
const mapData = [
{
type: 'poi',
lnglat: [116.397428, 39.90923],
sort: '风景名胜',
text: '故宫博物院',
remark: '明清两代的皇家宫殿'
},
{
type: 'route',
routeType: 'walking',
start: [116.397428, 39.90923],
end: [116.427281, 39.903719],
remark: '步行路线'
}
];
const link = generateMapLink(mapData);
console.log(link);
}
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| keywords | string | 是 | 查询关键字 |
| city | string | 否 | 城市名称或城市编码 |
| types | string | 否 | POI类型编码,多个用|分隔 |
| location | string | 否 | 中心点坐标(经度,纬度) |
| radius | number | 否 | 搜索半径,单位:米 |
| page | number | 否 | 当前页数,默认1 |
| offset | number | 否 | 每页记录数,默认10,最大25 |
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| origin | string | 是 | 起点坐标 "经度,纬度" |
| destination | string | 是 | 终点坐标 "经度,纬度" |
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| origin | string | 是 | 起点坐标 "经度,纬度" |
| destination | string | 是 | 终点坐标 "经度,纬度" |
| waypoints | string | 否 | 途经点,多个用;分隔,最多16个 |
| strategy | number | 否 | 驾车策略,默认10(躲避拥堵) |
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| origin | string | 是 | 起点坐标 "经度,纬度" |
| destination | string | 是 | 终点坐标 "经度,纬度" |
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| origin | string | 是 | 起点坐标 "经度,纬度" |
| destination | string | 是 | 终点坐标 "经度,纬度" |
| city | string | 是 | 城市名称或城市编码 |
| strategy | number | 否 | 公交策略,0-5,默认0(最快捷) |
| nightflag | boolean | 否 | 是否计算夜班车,默认false |
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| city | string | 是 | 城市名称 |
| interests | array | 否 | 兴趣点关键词数组,默认['景点','美食'] |
| routeType | string | 否 | 路线类型:walking/driving/riding/transfer,默认walking |
jsapi-skills/
├── index.js # 主入口文件,包含核心功能
├── scripts/
│ ├── poi-search.js # POI 搜索脚本
│ ├── route-planning.js # 路径规划脚本
│ └── travel-planner.js # 智能旅游规划脚本
├── config.json # 配置文件(自动生成,不要提交)
├── config.example.json # 配置示例
├── package.json # 依赖配置
├── .gitignore # Git 忽略配置
├── SKILL.md # OpenClaw Skill 描述文件
└── README.md # 本文件
所有规划结果都会生成地图可视化链接,格式如下:
https://a.amap.com/jsapi_demo_show/static/openclaw/travel_plan.html?data=<encoded_json_data>
数据格式符合 MapTaskData 接口规范,支持:
示例数据结构:
[
// POI 兴趣点
{
type: 'poi',
lnglat: [116.397428, 39.90923],
sort: '风景名胜',
text: '故宫博物院',
remark: '明清两代的皇家宫殿,旧称紫禁城。'
},
// 路线规划
{
type: 'route',
routeType: 'walking',
start: [116.397428, 39.90923],
end: [116.427281, 39.903719],
remark: '步行路线'
}
]
config.json 已在 .gitignore 中,不会被提交MIT