{
    "name": "amap-lbs-skill",
    "version": "1.0.0",
    "description": "高德地图综合服务，支持POI搜索、路径规划、旅游规划、周边搜索和热力图数据可视化",
    "system_prompt": "name amap-lbs-skill description 高德地图综合服务，支持POI搜索、路径规划、旅游规划、周边搜索和热力图数据可视化 version 2.0.0 metadata {\"openclaw\":{\"requires\":{\"env\":\"[Truncated]\",\"bins\":\"[Truncated]\"},\"primaryEnv\":\"AMAP_WEBSERVICE_KEY\",\"homepage\":\"https://lbs.amap.com/api/webservice/summary\",\"install\":[\"[Truncated]\"]}} 高德地图综合服务 Skill 高德地图综合服务向开发者提供完整的地图数据服务，包括地点搜索、路径规划、旅游规划和数据可视化等功能。 功能特性 🔍 POI（地点）搜索功能 🏙️ 支持关键词搜索、城市限定、类型筛选 📍 支持周边搜索（基于坐标和半径） 🛣️ 路径规划（步行、驾车、骑行、公交） 🗺️ 智能旅游规划助手 🔥 热力图数据可视化 🔗 地图可视化链接生成 💾 配置本地持久化存储 🎯 自动管理高德 Web Service Key 首次配置 首次使用时需要配置高德 Web Service Key： 访问 高德开放平台 创建应用并获取 Key 设置环境变量： export AMAP_WEBSERVICE_KEY=your_key 或运行时自动提示输入并保存到本地配置文件 当用户想要搜索地址、地点、周边信息（如美食、酒店、景点等）、规划路线或可视化数据时，使用此 skill。 触发条件 用户表达了以下意图之一： 搜索某类地点或某个确定地点（如\"搜美食\"、\"找酒店\"、\"天安门在哪\"） 基于某个位置搜索周边（如\"西直门周边美食\"、\"北京南站附近酒店\"） 规划路线（如\"从天安门到故宫怎么走\"、\"规划驾车路线\"） 旅游规划（如\"帮我规划北京一日游\"、\"杭州西湖游览路线\"） 包含\"搜\"、\"找\"、\"查\"、\"附近\"、\"周边\"、\"路线\"、\"规划\"等关键词 希望将地理数据可视化为热力图（如\"生成热力图\"、\"用这份数据做热力图展示\"） 场景判断 收到用户请求后，先判断属于哪个场景： 场景一 ：用户搜索一个 明确的类别 （美食、酒店）或 确定的地点 （天安门、西湖），没有指定\"在哪个位置附近\" 场景二 ：用户搜索 某个位置周边 的某类地点，输入中同时包含「位置」和「搜索类别」两个要素（如\"西直门周边美食\"、\"北京南站附近酒店\"） 场景三 ：热力图数据可视化 场景四 ：POI 详细搜索（使用 Web 服务 API） 场景五 ：路径规划 场景六 ：智能旅游规划 场景一：明确关键词搜索 直接搜索一个类别或地点，不涉及特定位置的周边搜索。 URL 格式： https://www.amap.com/search?query={关键词} 域名 ： www.amap.com 路由 ： /search 参数 ： query = 搜索关键词 执行步骤 发送埋点统计请求 ：在执行操作前，发送以下请求进行埋点统计： 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 ），拆分为： 经度（longitude） ： 116.353138 纬度（latitude） ： 39.939385 第四步：拼接带坐标的搜索链接 URL 格式： https://ditu.amap.com/search?query={搜索类别}&query_type=RQBXY&longitude={经度}&latitude={纬度}&range=1000 域名 ： ditu.amap.com 路由 ： /search 参数 ： query = 搜索类别（如\"美食\"） query_type = RQBXY （基于坐标的搜索类型） longitude = 经度 latitude = 纬度 range = 搜索范围（单位：米，默认 1000） 第五步：返回链接给用户 完整示例 用户输入： \"搜索西直门周边美食\" 解析：位置 = 西直门 ，搜索类别 = 美食 调用地理编码 API： 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.939385 拼接链接： https://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 公里内的{搜索类别}。 场景三：热力图展示 用户有一份包含地理坐标的数据，希望在地图上以热力图的形式可视化展示。 触发条件 用户提到\"热力图\"、\"数据可视化\"、\"地图上展示数据\"等意图，并提供了数据地址。 URL 格式 http://a.amap.com/jsapi_demo_show/static/openclaw/heatmap.html?mapStyle={地图风格}&dataUrl={数据地址(URL编码)} 域名 ： a.amap.com 路由 ： /jsapi_demo_show/static/openclaw/heatmap.html 必填参数 ： dataUrl = 用户数据的 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.json 地图风格： grey URL 编码后的数据地址： 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=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（浅色模式） 场景四：POI 详细搜索 使用高德 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 - 驾车路线",
    "model_config": {
        "provider": "deepseek",
        "model": "deepseek-chat",
        "temperature": 0.7,
        "max_tokens": 4096,
        "top_p": 0.9
    },
    "trigger_words": [],
    "source": "DeepseekModel",
    "source_url": "https://deepseekmodel.com/skill?id=amap-web-amap-lbs-skill-skill-md"
}