Travel Planner
把旅行需求变成可执行、可校验、可继续修改的中国大陆行程。每次必须同时交付可独立使用的对话版攻略与本地单文件 HTML;两者同等重要,并由同一份已校验 JSON 生成。只有用户明确希望分享,并确认隐私影响后,才额外发布公开链接。
工作原则
- 实时信息不靠记忆。 营业时间、闭园、票价、班次、天气、酒店和餐厅状态必须查询;查不到就标注未知或估算,不得伪造来源。
- 硬事实优先官方。 开放时间、预约、临时关闭、票务和交通规则以景区、场馆、铁路、航司、政府或运营方为准。
- 路线必须可行。 POI 要有坐标,主要移动段要有查询所得的方式与时长;字符串
source只是记录,不是外部查询已经发生的证明。 - 区分事实、体验和估算。 攻略用于发现候选与软信号,不能覆盖官方硬事实;价格区间必须带来源和查询时间。
- 最少打扰用户。 先利用已有信息和工具,只询问会实质改变方案的缺项。
- 保护隐私。 不把 API Key 写进 JSON、HTML、URL 或仓库;公开发布前明确提示页面可能暴露城市、日期、酒店和路线。
- 不擅自改环境。 不自动安装 MCP、浏览器扩展或 CLI;缺能力时说明影响,并提供可继续的降级方案。
- 双输出保持一致。 对话版攻略与 HTML 必须包含相同的核心行程事实;缺少任一输出、仅返回摘要或链接、两者版本不一致,都不算完成。
信息源
完整行程默认逐一尝试五类来源,但按平台属性分阶段使用,不做无目的的重复搜索。详细优先级、证据字段与降级策略见 references/data-sources.md。
| 阶段 | 来源 | 平台职责 | 必须产出 |
|---|---|---|---|
| 目的地发现 | 小红书 | 发现近期分区、节奏、排队和踩雷 | 候选区域与体验风险 |
| 规则确认 | 官方与运营方 | 确认开放、预约、票务、临时通知、天气和交通规则 | 决定能不能去的硬事实 |
| 路线落地 | 高德地图 | 确认 POI、坐标、距离、路线和通勤时长 | 可执行的地点顺序与移动时间 |
| 餐饮筛选 | 美团攻略 | 围绕已确定区域建立餐厅候选池 | 菜系、预算和用餐场景候选 |
| 交易核对 | 携程等国内 OTA | 核对酒店、机票、火车、门票价格和可订状态 | 价格区间、预订状态与国内入口 |
在 source_coverage 中为五个平台各写一项,记录 status、stages、purpose、checked_at 和 source_refs。无法访问或确实不适用时仍保留该平台项,用 unavailable / not_applicable 和 note 说明原因,不得假装已使用。执行顺序不代表可信度;发生冲突时仍以最新官方结论为准。
大众点评不属于默认主链路。仅在用户明确要求且当前环境已有合规能力时作为补充,不要求安装或绕过反爬。
网页搜索、浏览器、WebFetch 和 MCP 是检索方式,不是信息源。用搜索发现页面后,尽量打开原始官方页并记录它;不要把搜索摘要标成官方来源。
能力发现
开始前检查当前环境实际可用的搜索、地图、浏览、文件和 GitHub 能力。按能力而非客户端名称工作:
- 有地图工具:查询 POI、坐标和路线。
- 无地图工具但有合法 API 配置:可用官方 REST 接口。
- 两者都没有:仍可给出草案,但把路线时长标为待核验,不得标成高德实算。
- 有网页搜索或浏览能力:查询官方页、OTA 和攻略。
- 某个来源不可用:走合规降级,并在
source_coverage记录状态、替代方法和影响,不伪造已使用痕迹。
不要假设具体工具前缀、数量或安装路径。只有用户主动要求配置环境时,才读取 references/setup-guide.md。
标准流程
1. 归一化需求
收集并确认:
- 目的地、日期、人数和出发地;
- 已订交通与酒店;
- 必去/不去、预算、节奏、饮食禁忌、步行能力;
- 老人、儿童、无障碍、行李和返程缓冲等约束。
信息不足时先做合理假设,并清楚列出。日期或目的地不明确且会改变检索结果时再询问。
2. 五源分阶段研究
先用小红书发现目的地分区、近期节奏与风险,再用官方渠道决定候选是否可用;候选收敛后用高德落路线,用美团围绕当日区域找餐厅,最后用 OTA 核对交易与价格。不要让攻略先于官方做最终决定,也不要在区域未确定前搜索大量餐厅。
交付前回到官方、高德和 OTA 复核最易变化的开放、路线、价格与可售状态。小红书和美团只重查会影响当前选择的体验信号。
为易变事实保存 source、source_ref、checked_at,并在顶层 rechecks 安排 recheck_at。无法核验时写 unknown,不要伪装成已验证,也不要让估算价格通过严格校验。
3. 建候选池并排日程
用攻略发现区域和候选,用地图确认位置,用官方页确认可用性。安排时:
- 每天围绕一个主区域或清楚的转场逻辑;
- 先放时间固定、必须预约的项目;
- 控制每日 POI 数量和步行强度;
- 午晚餐靠近当日区域或明确成为路线一站;
- 最后一日从返程时间倒排,保留安检、取行李和拥堵缓冲。
- 为天气敏感或可能临时关闭的日程写结构化
plan_b:触发条件、替代安排和路线影响; - 按同行人、天气、海拔、夜间交通、行李和返程风险生成具体
safety_notes,避免通用套话。
酒店选择与换住判断见 references/hotel-planning.md,整体编排细节见 references/planning.md。
4. 写结构化数据
以 references/trip-schema.json 为核心结构。至少包含:
trip_name、city、date_range、party_size;- 酒店名称与坐标;
- 每日
day、date、region、center、pois; - POI 的序号、时间、停留时长与坐标;
transports的端点、方式、时长与来源;- 主餐厅坐标和价格;
- 带
priority、status、deadline、id_required的prebook; - 五类平台完整且不重复的
source_coverage; - 结构化
plan_b、safety_notes、rechecks、预算和关键提醒。
不要用 scripts/seed_prices.py 生成的演示估算冒充实时调研结果。该脚本只用于旧数据迁移和模板演示。
5. 校验并修正
运行:
python scripts/validate.py trip.json --pretty --fail-on-warn
失败或警告时先修数据,再继续。规则含义见 references/validation-rules.md。此外人工检查用户禁忌、近期临时通知和来源是否真实访问过。
如需补酒店早晚通勤,必须显式选择输出方式:
python scripts/add_hotel_legs.py trip.json --output trip-with-hotel-legs.json
# 或明确接受覆盖
python scripts/add_hotel_legs.py trip.json --in-place
V12 会阻止缺失或过期的关键复核项。测试历史/未来日期时可显式传 --as-of YYYY-MM-DD,但真实交付默认使用今天。
6. 渲染双输出
python scripts/render_markdown.py trip.json -o trip.md
python scripts/render_html.py assets/template.html trip.json -o trip.html
对话版必须直接使用 trip.md 的内容,不要另写一份可能漂移的攻略。打开 HTML 检查标题、日期、地图、五类信息源覆盖、预订状态、Plan B、安全提醒、行前复核、预算和移动端布局。高德 Web Key 只允许用户在页面内输入并保存到当前设备;不得通过 ?k= 参数传递。
7. 生成对话版攻略
把 trip.md 的完整内容放进对话,确保无需打开附件也能使用,至少包含:
- 行程概览、关键假设和待核验项;
- 每日时段、POI 顺序、区域和主要交通;
- 餐饮安排、预算区间、预约事项和 Plan B;
- 与老人、儿童、天气、末班车或返程有关的安全提醒。
不要只回复“已生成 HTML”、文件链接或改动摘要来代替对话版攻略。
8. 双交付或额外发布
在同一次最终回复中同时提供对话版攻略与 HTML 文件。JSON 是两种输出的唯一数据源和后续修改底稿,可一并提供,但不能替代任一用户可见输出。
用户明确要求公开链接时,把链接作为 HTML 文件之外的额外交付:
- 提示城市、日期、酒店和路线可能公开;
- 确认发布仓库、可见性和目标路径;
- 发布后实际打开链接验证;
- 只返回经过验证的链接。
公开发布失败时仍交付对话版攻略与 HTML 文件,不让托管能力阻塞规划结果。
部署细节见 references/deployment.md。
行前复核与临场调整
根据首日日期自动选择核对强度:
- 距出发超过 7 天:保留当前证据,并安排每类易变事实的
recheck_at; - 距出发 7 天内:重新查询开放/预约、主要路线、末班、可售状态和未付款价格;
- 距出发 1 天内:再查逐小时天气、预警、临时闭馆和机场/车站路线;
- 用户说“今天”“明天”或现场发生变化:只重算受影响日期,立即给出触发条件明确的替代方案。
细则见 references/recheck-and-safety.md。这不是后台定时任务;每次 Skill 被调用时根据当前日期执行。
增量修改
用户后续改酒店、日期、航班或 POI 时,不要重做无关部分:
- 读取现有 JSON;
- 找出受影响的日期、路线、价格和预订项;
- 只重新查询会失效的事实;
- 重跑全量校验;
- 重新生成 Markdown 与 HTML;
- 直接使用最新 Markdown 作为完整对话版攻略;
- 在同一回复中重新交付两种最新输出;
- 已发布且用户要求同步时,再更新同一页面。
如果来源出现冲突,保留官方结论,并在说明里记录冲突与取舍。
资源索引
- data-sources.md:五类信息源、优先级和证据规范
- planning.md:行程编排方法
- hotel-planning.md:酒店与换住策略
- validation-rules.md:V0–V13 校验规则(含 V12 时效性)
- recheck-and-safety.md:行前复核、临场调整与安全提醒
- deployment.md:本地交付与可选发布
- setup-guide.md:用户明确要求时的能力配置
- amap-mcp-usage.md:高德查询与路线字段
- xhs-research.md:小红书软信号
- meituan-guide-research.md:美团餐厅候选