Travel Planner Roadbook - 旅行路书规划助手

Polar Sponsor
爱发电 赞助
.NET 9.0

端到端旅行计划制定助手。从"我想带家人去XX玩"一句模糊需求出发,经过需求收集→MCP驱动的方案生成(携程问道+高德)→决策辅助→订房(可跳过)→精美HTML路书交付,全流程覆盖。支持MCP缺失时WebSearch降级兜底。

Travel Planner — 旅行计划制定助手

功能概述

Travel Planner — 旅行计划制定助手是一项面向实际任务的技能,主要用于用户说出以下任一类意图时自动加载本 skill:;"帮我规划旅行""我想去 XX 玩""做个路书""亲子游怎么安排";

核心要点

  • "带家人去 XX""自驾游路线""XX 日游";
  • 给了目的地和时间但没说清楚需求 → 自动进入 Phase 1;
  • 核心流程(6 Phase);

使用与执行

Phase 1:需求收集 🎯 弹窗式交互;目标 :通过结构化弹窗一次性收齐所有。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。

结果检查与注意事项

实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。

Travel Planner — 旅行计划制定助手

触发条件

用户说出以下任一类意图时自动加载本 skill:

  • "帮我规划旅行""我想去 XX 玩""做个路书""亲子游怎么安排"
  • "带家人去 XX""自驾游路线""XX 日游"
  • 给了目的地和时间但没说清楚需求 → 自动进入 Phase 1

核心流程(6 Phase)

Phase 1: 需求收集 → Phase 2: 方案生成(2.0 降级决策 → MCP/WebSearch 双路径)
    → Phase 3: 决策辅助 → Phase 4: 订房(可跳过) → Phase 5: 路书交付 → Phase 6: 闭环

Phase 1:需求收集 🎯 弹窗式交互

目标:通过结构化弹窗一次性收齐所有关键信息,不回锅,避免来回拉扯。

交互方式:用 AskUserQuestion 工具分 2-3 轮弹窗,让用户"点选 + 填空",而非手写长文本:

  • 点选 = 预填 2-4 个常见选项,覆盖 80% 场景
  • 填空 = 选 Other 走自由输入,覆盖长尾需求
  • 多选 = 勾选多个标签(multiSelect: true)
  • 全部 2 轮内问完,最多 3 轮(条件触发)

触发话术(开场,避免冷启动):

"行,去云南玩!先对一下基本信息——下面弹窗点几下就完事,复杂的走 Other 自由填。"

第 1 轮 · 基础信息(4 个问题,一次问完)

调用一次 AskUserQuestion 抛出 4 题。

Q1 出发地:默认给一线 + 新一线城市,其他城市走 Other 填空

  • 北京
  • 上海
  • 广州 / 深圳
  • 成都 / 重庆

Q2 目的地范围(多选,云南热门组合):

  • 昆明(省会 + 中转)
  • 大理 + 丽江(经典北线)
  • 香格里拉(高原藏区)
  • 西双版纳(热带雨林)

Q3 出行月份:

  • 7-8 月(暑期雨季)
  • 9-10 月(秋季最佳)⭐ 推荐
  • 11-12 月(冬季避寒)
  • 春节 / 寒假

Q4 行程天数:

  • 5-7 天(短假)
  • 8-10 天(中长假)⭐ 推荐
  • 11-14 天(深度游)
  • 14 天以上(自驾大环线)

第 2 轮 · 人员与偏好(4 个问题,一次问完)

Q1 同行人结构:

  • 情侣 / 夫妻 2 人
  • 家庭带娃(孩子 3-12 岁)
  • 家庭带老人(65 岁+)
  • 全成人朋友聚会

Q2 交通偏好:

  • 全程自驾
  • 飞机到昆明 + 当地租车 ⭐ 推荐
  • 火车 + 当地租车
  • 全程包车

Q3 食宿预算(每人每天):

  • ¥300-500(经济)
  • ¥500-800(舒适)
  • ¥800-1500(轻奢)⭐ 推荐
  • ¥1500+(高端)

Q4 住宿偏好(多选):

  • 品牌连锁(希尔顿 / IHG / 万豪等)
  • 特色民宿 / 客栈
  • 亲子友好
  • 景观房 / 网红打卡

第 3 轮(条件触发)· 加分项

仅当 Round 2 同行人 = 家庭带娃 / 带老人,或目的地已锁定具体线路时触发。普通用户可跳过,直接进入整合输出。

Q1 必去景点 / 体验(填空,Other 必填) Q2 不想去的地方(填空,Other 可空) Q3 驾驶能力:

  • 老司机,长途无压力
  • 偶尔长途
  • 不熟悉
  • 不能开(只坐车)

Q4 旅行节奏:

  • 紧凑刷景(每天 2-3 个点)
  • 适中留白(每天 1-2 个点)⭐ 推荐
  • 慢游发呆(半天玩半天休)
  • 随性而定

整合输出:需求卡

弹窗收齐后,输出一份结构化需求卡给用户最终确认(不直接进 Phase 2):

## 需求卡

| 字段 | 你的输入 |
|------|----------|
| 出发地 | 北京 |
| 目的地 | 大理 + 丽江 |
| 出行时间 | 9-10 月 / 8 天 |
| 同行人 | 家庭带娃(孩子 5 岁)|
| 交通 | 飞机到昆明 + 当地租车 |
| 预算 | ¥800-1500 / 人 / 天 |
| 住宿 | 品牌连锁 + 亲子友好 |
| 必去 | ... |
| 不去 | ... |
| 节奏 | 适中留白 |

用户回复"确认 / OK / 走起"后进入 Phase 2 区域扫描;如需调整则直接说改哪一项。

Phase 2:方案生成与迭代 🔗 MCP 驱动

2.0 降级决策:MCP 可用性检查

必须在进入 2.1 之前执行。 检查 ctrip-wendao 和 amap-maps 连接状态:

情况 A:两个 MCP 均已连接 ✅

→ 走标准流程(2.1 问道扫骨架 + 高德补坐标 → 2.2 问道出骨架 + 高德拉里程)

情况 B:部分或全部 MCP 未连接 ⚠️

先告知用户,同时给出选择:

"检测到以下 MCP 未连接:{缺失的 MCP 名称}。

  • A 方案:先去连接器管理页面安装这些 MCP,回来继续走完整流程(精度高、体验好)
  • B 方案:我先用 WebSearch 帮你跑一版,精度会打折但能快速出结果。路线里程用网络搜索估算代替高德实测,景点推荐用搜索引擎代替携程问道"

用户选 A → 等待 MCP 就绪后走标准流程。 用户选 B → 走降级流程(WebSearch 兜底),细则如下。

降级模式标志:进入降级模式后,所有里程标注为 WebSearch 估算,所有方案标注 ⚠️ 降级版(MCP 缺失)。

降级:2.1 区域扫描(WebSearch 替代 ctrip-wendao)

用 WebSearch 替代 ctrip-wendao 完成区域扫描:
- 搜索:"{目的地} 旅游攻略 必去景点 经典路线 {出行月份}"
- 搜索:"{目的地} 亲子游 自驾游 推荐"
- 从搜索结果中提取:城市/区域列表、景点梯队排名、季节适配建议
- 数据来源标注"WebSearch",非"携程问道"

降级:2.1 坐标获取(WebSearch 替代 amap-maps)

用 WebSearch 替代高德 POI 搜索获取坐标:
- 搜索:"{景点名} 经纬度" 或 "{景点名} 位置坐标"
- 从百度百科/马蜂窝等页面提取坐标信息
- 无法获取坐标的景点标注"坐标估算",在路书中使用城市中心坐标近似
- 注:降级模式下跳过营业时间获取(WebSearch 难以准确获取)

降级:2.2 方案骨架(WebSearch 替代 ctrip-wendao)

用 WebSearch 替代 ctrip-wendao 生成行程骨架:
- 搜索:"{目的地} {天数}天 自驾游路线 行程安排"
- 搜索:"{目的地} 经典环线 自驾"
- 从马蜂窝/携程攻略/穷游等结果中提取成熟的行程骨架
- 人工整理成 2-3 版方案(仿问道骨架格式)

降级:2.2 里程数据(WebSearch 替代 amap-maps)

用 WebSearch 替代高德 directionDriving 获取里程:
- 搜索:"{城市A} 到 {城市B} 自驾 多少公里 多长时间"
- 从搜索结果(百度地图网页版、马蜂窝攻略)提取距离和预估时间
- 所有里程标注为"WebSearch 估算"(非"高德实测")
- 如果搜索不到某段里程,用相近城市间直线距离 × 1.3 粗略估计,标注"粗略估算"

降级对后续 Phase 的影响

  • Phase 3 决策辅助:降级模式下「事实层」和「路由层」数据源改用 WebSearch,精度下降但不影响四维决策框架
  • Phase 5 路书:降级模式下的路书在封面标注 ⚠️ 降级版,所有里程标注 WebSearch 估算,地图仍用高德瓦片渲染(瓦片源不依赖 MCP 连接)

2.1 区域扫描 —— "问道扫骨架、搜索补血肉"

第一步:携程问道扫骨架(降级模式见 2.0)

调用 ctrip-wendao(携程问道 MCP):
- 目的地全域扫描:有哪些值得去的城市/区域?
- 景点梯队排名:第一梯队(必去)、第二梯队(顺路)、第三梯队(可跳过)
- 口碑与季节适配:当前季节最适合什么?

第二步:高德补坐标(降级模式见 2.0)

调用 mcp__amap-maps__maps_text_search:
- 对问道扫出的每个城市/景区,用 keywords=景区名+city=所在城市 搜 POI
- 获取精确坐标(GCJ-02)和营业时间

第三步:搜索补血肉

用 WebSearch 补细节(小红书/马蜂窝/百度):
- 最近游客真实评价(尤其亲子/老人友好度)
- 小众路线、隐藏玩法
- 闭馆日/维修期/季节限制

输出:一份"全域目的地手册",含坐标、梯队、口碑、季节适配建议。

2.2 方案骨架生成 —— 里程实时拉取

第一步:携程问道出骨架(降级模式见 2.0)

调用 ctrip-wendao:
- 基于需求卡 + 全域手册,生成 2-3 版行程骨架
- 每版含:城市节点序列、推荐景点、住宿城市

第二步:高德实时拉里程(关键!6.1 前置到这里)(降级模式见 2.0)

对每条骨架的相邻城市节点,调用:
mcp__amap-maps__maps_directionDriving({
  origin: "起点经度,纬度",
  destination: "终点经度,纬度"
})

获取:总距离(米)、预估时长(秒)、路线步骤

为什么用高德不用腾讯地图? 腾讯地图 MCP directionDriving 有约 30 分钟级并发限流冷却(实战踩坑),高德 directionDriving 无此问题,且坐标系同为 GCJ-02。

里程标注规则:

  • 每段数据必须标注来源:高德实测 vs 规划估算
  • 生成阶段即拉实测,不留"事后修正"尾巴

第三步:出方案文档 方案文档格式:

## 方案 X:[一句话概括]

**路线骨架**:城市A → 城市B → ... → 城市C
**节奏**:松/紧/适中
**取舍逻辑**:为什么选这些点

| 日期 | 行程 | 住宿 | 开车 | 亮点 |
|------|------|------|------|------|
| D1   | A→B  | B    | Xkm/Yh(实测) | ... |
...

**每日详情**(含景点时间建议、餐厅推荐)

2.3 迭代原则

  • 用户说"太松" → 加密版(加密景点、提早出发)
  • 用户说"太赶" → 拆分版(中间多住一晚)
  • 每次迭代只改 1-2 个变量,不推倒重来
  • 里程已实测,迭代时不需重新拉(除非改城市节点)

Phase 3:决策辅助

当用户面临二选一(如"镜泊湖 vs 伊春"),走四维决策框架:

维度 分析内容 数据来源
事实层 距离、营业时间、门票、适合年龄段、体力消耗 高德 POI + 搜索
口碑层 最近游客评价、亲子友好度 携程问道 + 小红书
性价比层 时间投入 vs 体验产出 综合判断
路由层 选了 A 对整条线路的影响 高德重算里程

输出:一份对比报告,给出推荐(带理由),不等用户做选择题。

Phase 4:订房执行 🔗 携程问道 · 可跳过

触发条件:用户确认最终方案后触发。用户可以跳过(说"酒店我自己定")。

4.1 酒店推荐

标准模式(ctrip-wendao 可用):

逐城调用 ctrip-wendao:
"在[城市名]推荐3家亲子友好酒店,靠近[核心景点/区域],
预算约[预算范围]/晚,含评分、价格、特色"

降级模式(ctrip-wendao 不可用,见 2.0):

用 WebSearch 替代 ctrip-wendao 搜酒店推荐:
- 搜索:"{城市} 亲子酒店 推荐 {预算}元"
- 搜索:"{城市} {酒店名} 携程 评分"(验证评分和价格)
- 从携程/马蜂窝/大众点评结果中提取酒店信息和预订链接

输出格式:每城 3 选 1 对比表(必须含预订链接)

### [城市名]住宿推荐

| 酒店 | 评分 | 参考价/晚 | 位置 | 亲子亮点 | 预订 |
|------|------|-----------|------|----------|------|
| A    | 4.8  | ¥XXX     | ... | ... | [预订](链接) |
| B    | 4.6  | ¥XXX     | ... | ... | [预订](链接) |
| C    | 4.5  | ¥XXX     | ... | ... | [预订](链接) |

推荐:A,理由:...

4.2 预订链接(⚠️ 铁律:每家必须配链接)

每家推荐酒店必须附带携程预订链接,不允许出现"请在携程搜索"这类无链接输出。

调用方式:

用 WebSearch 搜索:
"[酒店完整名称] 携程 预订"

从搜索结果中提取 hotels.ctrip.com/hotel/ 或 hotels.ctrip.com/hotels/ 开头的链接。

⚠️ 注意:携程问道(ctrip-wendao)不提供直接预订 URL,多次验证均返回"无法直接提供可点击的预订URL"。因此预订链接统一通过 WebSearch 获取,不依赖问道。

输出格式:每家酒店行末追加 [预订](链接)。

铁律:链接缺失 ≠ 跳过,WebSearch 搜到为止。

4.3 跳过机制

用户说以下任一句即跳过 Phase 4,直接进入 Phase 5:

  • "酒店我自己定"
  • "不用推荐酒店"
  • "订房我自己来"

Phase 5:路书交付

5.1 受众适配

版本 适用对象 特点
家人版 同行的家人 文字温暖、地图直观、照片丰富
执行版 自己看 时间节点、订房链接、备选方案
长辈版 老人 大字、中文标注、无拼音

5.2 技术栈(固定规范)

地图:

  • 引擎:Leaflet(CDN 引入)
  • 瓦片源:高德 https://webrd0{s}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}(style=7,浅色底)
  • 子域名:1-4 轮询
  • 坐标系:GCJ-02(高德、腾讯地图同系)
  • 每个地图页面独立创建瓦片层(Leaflet 不能共享实例)

照片:

  • 源:Wikimedia Commons(https://commons.wikimedia.org/wiki/Special:FilePath/文件名)
  • 校验:请求后检查是否 404
  • Fallback:占位文字"实景以现场为准"

格式:

  • 单文件 HTML(免部署、手机可看、打印友好)
  • 原生 CSS + JS,无框架依赖
  • 吸顶导航 + 打印样式 + 手机适配

里程/时间标注:

  • 标准模式:所有里程从 Phase 2 高德实测数据填入
  • 降级模式:所有里程从 Phase 2 WebSearch 估算填入,统一标注 WebSearch 估算
  • 每段标注"约 X 小时(含休息建议预留 Y 小时)"

5.3 路书结构

封面(标题 + 日期 + 路线概要 + [降级模式时追标 ⚠️ 降级版])
总览页(全程路线图 + 总览表 + 亮点速览)
逐日页 D1-DN(每日路线图 + 景点照片 + 文字描述)
实用信息(天气参考、装备清单、注意事项)

5.4 生成后自检清单

  • 所有 map div id 合法(不能有 /、空格等特殊字符)
  • 逐日地图独立验证(每个 map 能加载瓦片)
  • 城市标签为中文(不能用拼音)
  • 成员姓名已清除(如用户要求不显示)
  • 地图瓦片能加载(高德 style=7 可用,style=6 返回 404)
  • 图片不 404(有 fallback)
  • 文件路径写完整绝对路径

5.5 关键技术要点

WGS-84 → GCJ-02 转换(见 references/wgs84_to_gcj02.py)

Leaflet 多地图共享瓦片实例 Bug:

// ❌ 错误:全局共享 tiles 实例,只挂到最后一个地图
var tiles = L.tileLayer(...);
tiles.addTo(map1);
tiles.addTo(map2); // 实际上不会显示

// ✅ 正确:每个地图独立创建
function initMap(mapId, ...) {
    var map = L.map(mapId).setView([lat, lng], zoom);
    L.tileLayer(url, opts).addTo(map);  // 独立实例
    ...
}

HTML 生成建议:

  • 用 Python f-string 模板生成(批量替换数据,避免手动拼 HTML)
  • 数据字典(城市坐标、路线坐标、景点名称、图片 URL)独立维护

Phase 6:闭环

  • 逐项确认:所有里程 = 实测值、所有图片可加载、所有链接有效
  • 将最终路书 HTML present 给用户
  • 如果用户要求订房,确认预订链接可访问
  • 不需要事后补数据(Phase 2 已拉完实数)

自动化任务

如果数据拉取因 MCP 限流等外部原因中断,建一次性 automation 待冷却恢复后继续:

automation_update(mode="create", scheduleType="once", ...)

自动化 prompt 要求:

  • 写清楚"不碰已实测数据"
  • 写清楚"严格串行、不并发"
  • 写清楚"限流时暂停 X 分钟重试,不无限循环"
  • 完成后 present 更新后的路书

设计原则

原则 说明
先区域扫描,再生成方案 用户对目的地认知不完整时,先给全景视野再决策
每次迭代只改 1-2 个变量 不推倒重来,保护用户心智投入
里程在生成阶段即实测 高德实时拉,不留"事后修正"尾巴
问道扫骨架、搜索补血肉 MCP 出结构化数据,公开搜索补口碑细节
二选一不走直觉 四维框架(事实/口碑/性价比/路由)辅助决策
受众决定交付形式 家人版 ≠ 执行版 ≠ 长辈版
路书是工程产物 考虑瓦片 bug、坐标偏移、图片 404、id 合法性
订房可跳过 用户说"酒店我自己定"即跳过 Phase 4
MCP 缺失不卡流程 检测到 MCP 未连接时,给用户 A/B 两选(安装 MCP / WebSearch 降级),绝不卡在"请安装"不动

MCP 依赖

本 skill 优先依赖以下 MCP 连接器,缺失时有 WebSearch 降级方案(详见 Phase 2.0):

MCP 用途 降级方案
ctrip-wendao(携程问道) 区域扫描、行程生成、酒店推荐 WebSearch 搜索攻略/游记/酒店推荐
amap-maps(高德地图) 驾车里程/时长、POI 坐标、天气 WebSearch 搜索距离/坐标,标注"估算"

前置检查:Phase 2 开始前,先确认两个 MCP 连接状态。

  • 均已连接 → 走标准流程
  • 缺失任一 → 执行降级决策(AskUserQuestion 让用户选 A 装 MCP 或 B 降级走 WebSearch)
  • 绝不卡在"请安装 MCP"不动——用户选 B 则立刻用 WebSearch 兜底推进

相关专题

更多
Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

2026.11.06

0

12

Postman请求头Headers怎么设置
Postman请求头Headers怎么设置

围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。

2026.11.06

0

13

Postman接口请求发送教程
Postman接口请求发送教程

详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。

2026.11.06

0

10

DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

2026.11.05

0

12

DBeaver安全防护教程大全
DBeaver安全防护教程大全

DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。

2026.11.05

0

12

DBeaver连接创建与配置教程
DBeaver连接创建与配置教程

本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。

2026.11.04

0

16

XORM框架结构体映射与表结构同步
XORM框架结构体映射与表结构同步

本专题围绕XORM框架的结构体映射展开,说明表名与字段的命名策略、xorm标签常用属性、主键自增与时间字段自动填充,并演示Sync2自动建表、增量字段升级、索引声明与反向生成结构体的完整流程。

2026.11.04

0

15

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

0

15

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

0

16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 134.1万人学习