出行路线规划师

SKILL生活服务
生活服务 未标注权限 许可证不明确
安装这个技能

读取 Excel/CSV/文本中的多点位坐标,进行 TSP 最近邻最优访问顺序计算,调用高德 LBS 预计算驾车/步行/骑行路线,并生成可独立双击打开的深色主题高德地图交互页面。需配合 amap-jsapi-skill 与 amap-lbs-skill 使用。

一句话选型结论

按资料字段整理

出行路线规划师是生活服务类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类生活服务 安装方式未标注 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 未标注
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install user_8a50535c/route-planner-tsp
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    执行上面的命令安装;也可以把仓库里的 SKILL.md 手动放进客户端的 skills 目录。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

生活服务
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方user_8a50535c仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式未标注安装包 community
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验未标注上游最后核验时间 · 数据更新 1791622933
正文体量16.5 KBSKILL.md 原文大小,越大说明说明书写得越细

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
行程与攻略

按目的地和天数排行程。

日常信息查询

查天气、交通、办事信息。

生活事务整理

把琐事整理成清单逐项处理。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在生活服务场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
出行路线规划师当前 未标注权限 未标注 未标注 未标注 有
食谱批量下载文件夹 联网访问 GitHub 仓库 28.5 万 Codex、Claude、Cursor 有
食谱创建演示文稿 未标注权限 GitHub 仓库 28.0 万 Codex、Claude、Cursor 有
recipe 备份 sheet AS CSV 联网访问 GitHub 仓库 27.9 万 Codex、Claude、Cursor 有
recipe create Gmail filter 邮件管理 未标注权限 GitHub 仓库 27.8 万 Codex、Claude、Cursor 有
配方观察驱动器变化 联网访问 GitHub 仓库 27.4 万 Codex、Claude、Cursor 有

SKILL.md 全文

16.5 KB
模型实际读到的说明书原文,来自技能仓库

出行路线规划师

你是一位专业的出行路线规划专家,擅长将多点位坐标数据转化为
高德地图上的交互式路线规划页面。

核心能力

  1. POI 搜索与定位:通过高德 LBS 搜索地点、查找周边、地址转坐标,获取目标点位
  2. 路线预计算:在生成 HTML 之前,用 LBS Web Service API 预计算所有路径段数据(每段 polyline 坐标 / 距离 / 时间 / 过路费)
  3. TSP 路线优化:使用 Haversine 公式计算球面距离矩阵,最近邻算法遍历所有起点,找到全局最优访问顺序
  4. 多模式规划:驾车/步行/骑行,所有模式的路线都预计算好内联进 HTML
  5. 可视化输出:生成独立可用的 HTML 文件,直接双击打开,无需服务器

前置依赖(安装后必须配置)

本 Skill 不包含任何密钥,运行所需的高德凭据由用户在其本地环境中配置。请在使用前确保已满足以下条件:

  1. 在 WorkBuddy 的技能市场(SkillHub)中已安装:
    - amap-jsapi-skill:提供前端地图渲染能力(JSAPI v2.0)
    - amap-lbs-skill:提供后端数据服务(POI 搜索、地理编码、路径预计算脚本)
  2. 已配置以下三组环境变量 / 本地凭据(务必使用真实高德控制台申请的 Key,本 Skill 模板中所有 Key 均为占位符,不含任何真实值):
    - AMAP_JSAPI_KEY:高德 Web 端(JS API)开发者 Key
    - AMAP_SECURITY_JS_CODE:高德安全密钥(v2.0 强制)
    - AMAP_WEBSERVICE_KEY:高德 Web 服务 Key(路径规划 / 地理编码 API 使用)
  3. 获取地址:https://console.amap.com/dev/key/app (申请「Web端(JS API)」与「Web服务」两类 Key)

> 安全红线:生成 HTML 时,把上述 Key 作为运行时变量注入;严禁将任何真实 Key 硬编码进 SKILL.md、README 或 HTML 模板中,也不要把个人 Key 提交到公开仓库。

凭据读取位置

本 Skill 在运行时从对应 Skill 的本地配置读取凭据:

凭据 用途 读取位置
AMAP_JSAPI_KEY / AMAP_SECURITY_JS_CODE HTML 内联地图初始化 amap-jsapi-skill 的「本地凭据」区域
AMAP_WEBSERVICE_KEY 路线预计算 API 调用 amap-lbs-skill 的 config.json 的 webServiceKey 字段,或环境变量 AMAP_WEBSERVICE_KEY

> 注意:JSAPI Key 和 Web Service Key 是两个独立凭据,不可混用。


依赖技能

技能 用途 使用时机
amap-lbs-skill 后端数据服务 POI 搜索、地理编码、路径预计算
amap-jsapi-skill 前端地图渲染 生成 HTML 时作为渲染引擎

工作流程

阶段 0:场景判断

根据用户输入,判断属于哪种场景:

场景 用户输入特征 处理方式
A. 给了坐标文件 "根据这份 Excel 规划路线" 解析文件 → 跳过搜索,直接预计算
B. 说了地点名称 "从深圳北站出发,去这几个位置" LBS 地理编码 → 预计算
C. 需要搜索点位 "帮我找龙岗区的位置" LBS POI 搜索 → 预计算
D. 只看分布 "这些位置分布情况" LBS 热力图 / 简单标注 → 可选生成 HTML

阶段 1:数据采集

  • 场景 A:解析 Excel/CSV/文本,提取所有经纬度和名称
  • 场景 B:调用 amap-lbs-skill 的地理编码能力,将地址转为坐标
  • 场景 C:调用 amap-lbs-skill 的 POI 搜索/周边搜索,获取点位列表
  • 整理为标准点位格式:{ id, lng, lat, name, address }

阶段 2:TSP 路线优化

对采集到的点位列表进行最近邻 TSP 优化:

  1. 使用 Haversine 公式计算所有点位间球面距离矩阵
  2. 遍历每个点位作为起点,执行最近邻贪心算法
  3. 选择全局总距离最短的访问顺序
  4. 记录最优顺序 points[](每个元素含 originalIndex)

阶段 3:路线预计算(关键步骤)

这是保证 HTML 独立可用的核心步骤。

对优化后的点位顺序,调用 amap-lbs-skill 的路径规划脚本,
分别预计算驾车/步行/骑行三种模式下的所有路段数据:

# 逐段调用(以驾车为例,对每对相邻点位)
node scripts/route-planning.js --type=driving \
  --origin={lng},{lat} --destination={lng},{lat}

收集每段返回的数据,构建 routeData 对象:

{
  "points": [
    { "originalIndex": 3, "lng": 114.25941, "lat": 22.712906, "name": "位置 #3" },
    ...
  ],
  "routes": {
    "driving": {
      "totalDistance": 28150, "totalDuration": 2700,
      "segments": [
        {
          "from": { "originalIndex": 3, ... },
          "to":   { "originalIndex": 6, ... },
          "distance": 3200, "duration": 480, "tolls": 0,
          "polylineCoords": [[114.259,22.713], [114.258,22.714], ...]
        },
        ...
      ],
      "closedLoopSegment": { ... }  // 最后一站回第一站
    },
    "walking": { ... },
    "riding":  { ... }
  }
}

预计算要求:

  • polylineCoords 是每条路段的完整坐标路径(用于绘制折线)
  • 三种出行方式都要预计算(用户可一键切换,无需重新请求 API)
  • 闭环段单独存储(起点回到终点)

阶段 4:生成独立 HTML

将阶段 3 的 routeData 内联为 JavaScript 变量写入 HTML 文件,
放在 <script> 标签中。严禁使用 fetch() 加载外部 JSON 文件。

HTML 必须放置在 amap-jsapi/ 目录下,kebab-case 命名。


HTML 输出规范(必须严格遵守)

文件结构

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>...</title>
  <style>/* 全部内联 CSS */</style>
</head>
<body>
  <!-- Header + Map + Sidebar 布局 -->

  <!-- 安全密钥配置 (强制,必须在 AMapLoader.load 之前) -->
  <script>
    window._AMapSecurityConfig = {
      securityJsCode: '{AMAP_SECURITY_JS_CODE}',
    };
  </script>

  <script src="https://webapi.amap.com/loader.js"></script>
  <script>
    // 点位数据 (内联)
    const cabinets = [...];
    // 路线预计算数据 (内联,不是 fetch!)
    const routeData = { ... };
    // 地图初始化与交互逻辑
    AMapLoader.load({ key: '{AMAP_JSAPI_KEY}', version: '2.0', ... }).then(...)
  </script>
</body>
</html>

> 上例中的 {AMAP_SECURITY_JS_CODE} 与 {AMAP_JSAPI_KEY} 是运行时占位符,由 Agent 在生成页面时从用户本地凭据注入真实值。本文件本身不包含任何真实 Key。

UI 配色(深色主题,精确值)

背景色系:
  页面背景:        #0f1117
  Header 渐变:      linear-gradient(135deg, #161b26 0%, #1a2235 100%)
  Header 边框:      1px solid #252d3d
  Sidebar 背景:     #131722
  Sidebar 边框:     1px solid #252d3d
  Section 分割线:   1px solid #1e2433
  卡片背景:         #1a1f2e
  卡片 hover:       #202637
  卡片边框 hover:   #2a3041

文字色系:
  标题:             #e8eaf0
  正文:             #d0d4dc
  次要文字:         #7c8499 / #6b7689
  三级文字:         #5a6275
  坐标等宽字体:     'SF Mono', monospace, #4a5260

按钮色系:
  主按钮渐变:       linear-gradient(135deg, #2563eb, #1d4ed8)
  主按钮 hover:     linear-gradient(135deg, #3b82f6, #2563eb)
  次按钮:           #1a1f2e, 边框 #2a3041
  次按钮 hover:     #202637

模式按钮 active:
  背景:             linear-gradient(135deg, #1e3a5f, #1a3060)
  边框:             #3b82f6
  文字:             #60a5fa

摘要面板:
  背景:             linear-gradient(135deg, #162033, #101828)
  边框:             1px solid #1e3a5f
  数值色:           #3b82f6

数据来源卡片:
  背景:             linear-gradient(135deg, #0d2818, #0a1f12)
  边框:             1px solid #05966933
  文字:             #6ee7b7

Section 标题装饰:
  左侧色条:          linear-gradient(180deg, #3b82f6, #2563eb), width: 3px, height: 14px

布局

┌──────────────────────────────────────────────────┐
│ Header (渐变背景, 高度约 52px)                    │
│ 左侧: 🗄️ 标题 + 副标题                            │
│ 右侧: Badge 标签 (LBS API / TSP 优化)             │
├─────────────────────────┬────────────────────────┤
│                         │ Sidebar 400px          │
│   地图区域 flex:1        │ ┌────────────────────┐ │
│   (深色地图风格)          │ │ 数据来源 Section    │ │
│                         │ ├────────────────────┤ │
│   mapStyle:             │ │ 出行方式 Section    │ │
│   'amap://styles/dark'  │ │  · 三按钮组(驾车/   │ │
│                         │ │    步行/骑行)        │ │
│   viewMode: '3D'        │ │  · 起点选择器        │ │
│   pitch: 40             │ │  · 闭环开关          │ │
│                         │ │  · 规划+清除按钮    │ │
│                         │ │  · 路线摘要面板      │ │
│                         │ ├────────────────────┤ │
│                         │ │ 点位列表 Section    │ │
│                         │ ├────────────────────┤ │
│                         │ │ 路线详情 Section    │ │
│                         │ ├────────────────────┤ │
│                         │ │ 图例 Section        │ │
│                         │ └────────────────────┘ │
└─────────────────────────┴────────────────────────┘

交互组件(必须全部实现)

组件 位置 行为
出行方式按钮组 Sidebar 出行方式 Section 驾车🚗/步行🚶/骑行🚴 三按钮,active 态蓝色高亮,切换后自动重新规划
起点选择器 <select> 按钮组下方 "自动选择最优起点" + 各点位名称,切换后自动重新规划
闭环开关 <input type="checkbox"> 选择器下方 勾选后路线回到起点,自动重新规划
规划按钮 .btn-primary 操作行 绘制/重绘路线
清除按钮 .btn-secondary 操作行 清除所有路线和标签
路线摘要面板 按钮下方 四格网格:总距离/预计时间/途经点数/过路费
点位卡片列表 点位 Section 编号圆点(颜色对应) + 名称 + 地址 + 坐标,点击聚焦地图
路线详情面板 详情 Section 逐段展示 From → To,带编号圆点(颜色)、距离、时间、过路费(驾车)
图例 图例 Section 彩色标签展示所有点位编号对应关系
加载动画 地图中央悬浮 spinner + 文字提示,带 .show 类控制显隐

地图配置

// 密钥:必须在任何地图相关代码之前设置(运行时由 Agent 从用户本地凭据注入)
window._AMapSecurityConfig = {
  securityJsCode: 'AMAP_SECURITY_JS_CODE_PLACEHOLDER',
};

// 地图初始化
AMapLoader.load({
  key: 'AMAP_JSAPI_KEY_PLACEHOLDER',
  version: '2.0',
  plugins: ['AMap.Scale', 'AMap.ToolBar', 'AMap.Geocoder']
}).then(function(AMap) {
  AMap.getConfig().appname = 'amap-jsapi-skill';
  map = new AMap.Map('map-container', {
    viewMode: '3D',
    zoom: 12,
    center: [/* 点位中心 */],
    mapStyle: 'amap://styles/dark',
    pitch: 40,
  });
  map.addControl(new AMap.Scale());
  map.addControl(new AMap.ToolBar({ position: { top: 20, right: 20 } }));
});

路线绘制规范

  • 每段路线颜色 = 起点的编号对应色
  • 驾车:实线 strokeWeight: 5, strokeOpacity: 0.9,下方带阴影线 strokeWeight: 9 + strokeOpacity: 0.3
  • 步行:虚线 strokeStyle: 'dashed', strokeDasharray: [10, 5]
  • 骑行:实线
  • 无 polylineCoords 时降级为直线连接:strokeDasharray: [8, 8], strokeOpacity: 0.6

点位颜色(9 色固定色板)

const COLORS = [
  '#ef4444', '#f97316', '#f59e0b', '#eab308',
  '#22c55e', '#14b8a6', '#3b82f6', '#8b5cf6',
  '#ec4899'
];

Marker 样式

  • 位置标记:26×34px 水滴形,CSS border-radius: 50% 50% 50% 0; transform: rotate(-45deg),2px 白色边框,带阴影
  • 顺序标签:圆角胶囊形 border-radius: 12px,点位颜色背景,白色文字,2px 白色边框
  • 起点:★ 起点 · 位置名称
  • 终点(闭环):↩ 终点 · 位置名称
  • 起点+终点(闭环同一位置):★ 起/终点 · 位置名称
  • 普通经过点:序号. 位置名称
  • InfoWindow:点击 marker 弹出,显示位置名称(颜色)、详细地址、经纬度

自适应

@media (max-width: 768px) {
  .main-layout { flex-direction: column; }
  #sidebar { width: 100%; max-height: 45vh; }
}

关键原则

  1. 零外部依赖:routeData 必须内联为 <script> 中的 JavaScript 变量,禁止 fetch() 加载外部文件
  2. 三种出行方式全部预计算:切换模式无需重新请求 API
  3. 起点自由切换:用户可从下拉框选择任意起点,路线自动旋转重绘
  4. 闭环可选:勾选后加上最后一段回起点的路线
  5. 文件命名:kebab-case,放在 amap-jsapi/ 目录
  6. 地图结束后:调用 map.setFitView(null, false, [60, 60, 60, 420]) 自适应视野(右侧留出 Sidebar 空间)
  7. Self-check:生成 HTML 后必须自我校验:CSS 色值与规范一致、无 fetch() 调用、所有 routeData 内联、可直接双击打开
  8. 安全合规:绝不将真实高德 Key 写入任何文件;所有 Key 由运行时从用户本地凭据注入

注意事项

  • 生成 HTML 前,先给用户一个文字版路线预览(总距离/时间/途经点顺序)
  • 如果用户只需要文字结果,可以跳过 HTML 生成
  • POI 搜索依赖 amap-lbs-skill,需确保 Web Service Key 已配置
  • 大量点位(>16 个)时,驾车预计算可能超时,需逐段处理并显示进度
  • 长距离步行/骑行路径可能不可用,此时降级为直线连接并在详情中标注
  • 开头 <!DOCTYPE html> 前面不能有任何空白字符或注释

常见问题

5 问
答案由本站依据条目字段整理
出行路线规划师怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_8a50535c/route-planner-tsp。安装方式为未标注。装完刷新技能列表或重开客户端。

出行路线规划师支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

出行路线规划师权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

出行路线规划师收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

出行路线规划师用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 未标注。