Skill: dengjiawei1226/trip-planner-0to1-public (version 2.0.0)

--- name: trip-planner-0to1 version: 2.0.0 slug: trip-planner-0to1 description: 从 0 到 1 制作一份完整的自由行出行攻略，覆盖需求采集、多源资源调研（小红书 MCP + 地图 + Web 搜索）、方案决策、Markdown 行程书产出、多页交互式网页（指挥中心 + 攻略详情 + 航班卡片）、跨设备 Todo 同步、三链路部署的端到端工作流。适用于东南亚海岛、日本、欧洲自驾、美洲公路旅行等任何自由行场景。触发词：出行攻略、行程规划、自由行、做攻略、旅游计划、travel plan、itinerary、行程单、Todo 清单、旅行规划、路线规划、trip planning、旅行攻略。 --- # Trip Planner 0→1 —— 自由行攻略端到端工作流 v2 ## 🔄 版本自检（Skill 加载时自动执行） **AI 在加载本 Skill 时，必须静默执行以下检查**： ```bash clawhub inspect trip-planner-0to1 --json 2>/dev/null | grep -o '"version":"[^"]*"' | head -1 ``` 将远程 `latestVersion.version` 与本文件 frontmatter 中的 `version` 字段对比： - **远程版本 > 本地版本** → 提醒用户： > 📦 trip-planner-0to1 有新版本可用（远程 vX.Y.Z > 本地 vA.B.C）。 > 运行 `clawhub update trip-planner-0to1` 即可升级。要我帮你更新吗？ 如果用户同意，直接执行 `clawhub update trip-planner-0to1`。 - **版本一致** → 静默，不打扰用户。 - **clawhub 命令不存在 / 网络失败** → 静默跳过，不影响正常使用。 把一次出行攻略从「一张机票 + 模糊的目的地」做到「结构化行程书 + 多页作战指挥网站 + 跨设备 Todo 同步 + 三链路部署」，全流程标准化、可复用、可迭代。 --- ## 🎯 核心理念 ### 迭代循环，不是瀑布流 ``` ┌─────────────────────────────────────────┐ │ │ ▼ │ P1 需求澄清 → P2 资源调研 → P3 方案决策 │ │ ▲ │ │ │ │ ▼ │ │ 交叉验证 P4 行程书+话术 │ │ │ │ │ │ └────────────┘ │ │ │ │ │ ▼ │ │ P5 Todo → P6 多页网页 │ │ │ │ │ ▼ │ │ P7 同步 → P8 三链路部署 │ │ │ │ └───── 用户反馈 / 新信息 ───┘ ``` **P2-P4 是可回溯的循环**。发现路线不对、班次有误、主人砍了某个景点 → 回 P2 重新调研 → 改 P4 → 改 P6 网页。实际项目平均迭代 15-20 轮，不要指望一次性完工。 ### 上手即用，而非框架占位 **铁律**：行程书里每个 POI 必须做到"拿起手机照着念就行"。不允许出现： - `HH:MM | 地点A | 动作描述 | ¥XX` ← 空壳格式 - "到了之后再找" ← 没有具体方案 - "天气不好改室内" ← 不叫 Plan B --- ## 📋 工作流总览（8 Phase + 迭代） ``` Phase 1 需求澄清 → 时间/人数/预算/硬需求/风格/作息 Phase 2 资源调研 → 小红书 MCP + 地图 + Web + 交叉验证 Phase 3 方案决策 → 住宿/交通/一日游/餐厅 + 决策推理链 Phase 4 行程书+话术 → Markdown 行程 + 实操英文话术 + 版本日志 Phase 5 Todo 清单 → 出发前准备 / 行李装备 两大类 Phase 6 多页网页 → 指挥中心 + 攻略详情 + 航班卡片 + 地图路线 Phase 7 数据同步 → localStorage 兜底 + 可选云端（5 种方案） Phase 8 三链路部署 → 主站 + CDN 镜像 + 本地 HTML 离线 ``` --- ## Phase 1 —— 需求澄清 **不要自己脑补，缺信息就直接问。** 1. **硬约束**：航班已定？日期/机场/行李额？PNR 号？ 2. **人数 & 关系**：几人？夫妻/亲子/朋友团？ 3. **预算**：人均总预算 or 每晚住宿上限 4. **强需求**：必做项目？（潜水/极光/米其林/跳伞…） 5. **交通偏好**：自驾 vs 公共？有驾照翻译件？ 6. **酒店会籍**：IHG/Marriott/Hilton/GHA/Hyatt 7. **作息偏好**：精确到小时（如"10:00 自然醒，早于此算早起"），早起日必标 ⚠️ 原因 8. **同步需求**：是否需要和同行者跨设备共享 Todo --- ## Phase 2 —— 资源调研（多源并行 + 交叉验证） ### 🔴 交叉验证铁律 **每条关键信息必须 2+ 来源确认**，单一来源不可作为决策依据： | 信息类型 | 来源 A | 来源 B（验证） | |---------|--------|---------------| | 景点/餐厅评价 | 小红书笔记 | Google Maps 评分 + 评论区验证 | | 自驾距离/时间 | 小红书文字描述 | **Google Maps 实测**（以此为准） | | 渡轮/船票班次 | 小红书 | **运营方官网/电话确认** | | 配额/预约制 | 小红书 | 官网 + 潜店/运营方 WhatsApp 确认 | | 坐标/定位 | AI 记忆/估算 | **Google Maps / Wanderlog 官方链接** | ### 2.1 小红书 MCP **推荐作为第一信源**——中文攻略帖的"避坑信息"密度远高于英文 Google。 **三种公网可用方案**（按推荐顺序）： #### 方案 A：npx 一键启动（推荐，零配置） ```json { "mcpServers": { "xiaohongshu": { "command": "npx", "args": ["xiaohongshu-mcp@latest"] } } } ``` 首次运行自动打开浏览器登录页，扫码后 cookie 持久化到 `~/.mcp/rednote/cookies.json`。 无头模式（服务器/后台）： ```json { "args": ["xiaohongshu-mcp@latest", "--headless"] } ``` #### 方案 B：Docker（xpzouying/xiaohongshu-mcp，13k+ star） ```bash docker pull xpzouying/xiaohongshu-mcp wget https://raw.githubusercontent.com/xpzouying/xiaohongshu-mcp/main/docker/docker-compose.yml docker compose up -d # 暴露 http://localhost:18060/mcp ``` MCP 配置： ```json { "mcpServers": { "xiaohongshu": { "url": "http://localhost:18060/mcp" } } } ``` 首次使用调 `get_login_qrcode` 扫码登录，或上传 Cookie JSON。 #### 方案 C：Cookie 环境变量模式（轻量，适合 CI/脚本） ```json { "mcpServers": { "xiaohongshu": { "command": "npx", "args": ["@dengpengfei/xiaohongshu-mcp"], "env": { "xiaohongshu_cookie": "<浏览器 F12 复制的 cookie>" } } } } ``` #### 常用工具 | 工具 | 用途 | 关键技巧 | |------|------|---------| | `search_feeds` | 搜攻略帖 | 至少 3 组关键词，看发帖 <3 月的 | | `get_feed_detail` | 笔记正文 + 评论区 | **评论区才是金矿**！看差评和追问 | | `list_feeds` | 首页推荐 | 找当季热门目的地 | | `user_profile` | 博主历史笔记 | 深挖专业玩家 | #### 搜索关键词模板 ``` <目的地> 避坑 <目的地> 最新攻略 2026 <目的地> <月份> 天气 穿什么 <目的地> 自驾 RORO 带车（岛屿场景） <活动名> 预约 配额 提前多久 <景点> 值不值得去 <餐厅名> 评价 踩坑 ``` #### 陷阱识别 - 90% "精品一日游"帖子是商业推广 → 只看**评论区真实反馈** - 博主说"xx km / xx 分钟" → **必须 Google Maps 验证**，小红书距离描述经常不准 - "提前一天都能约" vs "提前一个月订满" → 取**保守值**，关键活动按"可能订满"安排 详细筛选标准见 `references/research-prompts.md`。 ### 2.2 地图 API 查**实际行车距离和时间**，至少对比 2 条路线： | 工具 | 场景 | |------|------| | Google Maps（手工 / `google-maps-api` skill） | 全球权威，路线对比必用 | | 高德/百度 | 国内目的地 | | OSRM（浏览器侧实时调用） | 网页地图路线渲染 | **经验**： - 山区/岛屿：海岸线绕远反而比内陆快（路况好） - 凌晨/深夜：可压缩 30-40% 时间（无车） - 必须标注**出发酒店→目的地**的精确 km 和 min，不是"大概 1 小时" ### 2.3 Web Search + WebFetch + agent-browser | 任务 | 工具 | 产出 | |------|------|------| | 酒店比价 | WebSearch + agent-browser（Agoda/Booking 反爬严重） | 比价 .md 表格 | | 渡轮/船票班次 | WebFetch 官网 | 班次表 + 电话 | | 签证/入境 | WebSearch 外交部/大使馆 | 要求清单 | | 租车/SIM/一日游 | Klook / KKday | 链接 + 价格 | ### 2.4 better-icons skill（图标检索） 网页需要图标时： ```bash better-icons search <关键词> # 搜索 200+ 图标库 better-icons get <icon-id> # 获取 SVG ``` 推荐组合：**Noto 3D**（装饰锚点）+ **Lucide**（功能图标）。 --- ## Phase 3 —— 方案决策 ### 3.1 住宿 ``` 有酒店会籍？ ├─ 是 → 官网直订（升房 + 早餐 + 酒廊） └─ 否 → Agoda + Booking + Trip.com + Kayak + 官网 五方比价 └─ 必查：含早？免费停车？步行到景点？取消政策？ ``` **产出**：`<目的地>酒店比价_<日期>.md`，金额同标本币 + CNY。 ### 3.2 交通 - **自驾**：选车 + **第三方全险**（比租车行 CDW 便宜且覆盖全）+ 国际驾照 - **自驾酒店必查**：有没有免费停车？（影响选型！） - **跨岛/渡轮**：精确到班次时刻表 + 带车费用 + 购票方式（线上/现场/电话） ### 3.3 一日游 / 体验 - 自驾版选 `self-drive, meet at jump-off`（省接送费 ₱500-800/人） - 提前查**配额制**项目：船潜/鲸鲨/跳伞 → 提前多久锁名额？黄金周是否会满？ - 用小红书评论区验证"提前几天订够不够" ### 3.4 餐厅 - 每天午/晚各 2 家候选（主选 + Plan B） - Google Maps ≥4.3 + 评论数 ≥300 - 选择理由写进行程书（为什么选这家、为什么不选另一家） --- ## Phase 4 —— 行程书 + 实操话术 ### 4.1 行程书 Markdown 文件名：`<目的地><出行方式>行程_v<N>_<日期>.md` **骨架**：`references/templates/itinerary-template.md` **🔴 v2 新增强制要求**： #### 版本变更日志（文档顶部） ```markdown > **版本说明**：2026-04-23 10:55 第六次更新。 > - v2.0：初版 > - v2.1：xx 改成 yy（原因：xxx） > - v2.2：砍掉 xx（原因：走那条路多开 2.5h，性价比低） ``` 每次改动都写 WHY，让行程逻辑可追溯。 #### 每个 POI 必须包含 | 要素 | 示例 | |------|------| | 精确地点 | Jollibee Bulacao Cebu, Cebu South Road | | 选择理由 | "Bulacao 之后再往南没 24h 店了" | | 导航关键词 | Google Maps 搜 `Jollibee Bulacao` | | 电话/联系方式 | (032) 273-1199 | | 费用 | ₱130-160（≈¥17-21） | | 避坑提示 | "别搜成 Tabunok 那家不是 24h" | #### Plan B 精确度要求 **禁止**： - ❌ "天气不好改室内" - ❌ "航班异常另行安排" **必须**： - ✅ "Argao 误船 → 等 18:00 末班（班次实查确认存在）" - ✅ "Tubigon 出幺蛾子 → 切 Loon 11:00 班（35km/45min）" - ✅ Plan B 精确到**替代航线/班次/耗时/费用** ### 4.2 实操话术（Phase 4.5） **🔴 新增层**：对自驾取还车、语言沟通、拒绝推销等场景写**英文/当地语原话**。 ```markdown ### 🛫 取车柜台话术（拒绝推销加保险） 员工说：*"Sir, do you want to add Super CDW? PHP 2,000/day."* **你回**： > "No thanks, I already have third-party coverage with RentalCover. > Here's the policy. Please note in the contract that I declined the CDW upgrade." ### 🏞 Canyoneering 运营商沟通 关键词：**"self-drive, meet at jump-off, no pickup, finish by 15:00"** ### 🐋 鲸鲨现场 SOP 1. 05:45 走到 briefing area（住宿步行即到） 2. 6:00 第一波下水 3. 浮潜 ₱1,500/人，直接跟工作人员买票 ``` **话术覆盖场景**： - 租车取还车（拒绝加保险、争取新车、还车验车签字） - 一日游集合（自驾版沟通关键词） - 酒店入住（会籍权益请求） - 事故处理 SOP（报警→拍照→通知租车行→索赔流程） - 砍价/拒绝宰客 --- ## Phase 5 —— Todo 清单 分**两大类**（不是三段）： ``` 📋 出发前准备 → 紧急（u0-uN）+ 重要（i0-iN）+ 已完成（d0-dN 沉底） 🎒 行李装备清单 → 全部装备（p0-pN）+ 已确认/已带（d 沉底） ``` **每条必须有**： - 主标题（动词 + 对象） - `<small>` 副说明：去哪办、多少钱、对应哪个行李项 - 图标（Lucide SVG，内联 sprite） - `data-id` 唯一 --- ## Phase 6 —— 多页交互式网页 ### 🔴 多页架构（替代单页假设） | 页面 | 职责 | 文件名 | |------|------|--------| | **指挥中心** | 地图 + 行程概览表 + Todo + 进度条 + 同步 | `index.html` | | **完整攻略** | Day by Day 时间轴 + 全部话术 + 避坑 + 折叠详情 | `guide.html` | | **航班卡片** | 登机牌视觉 + PNR + 柜台话术 + 机场重点提示 | `flight.html` | 三页互相导航链接，顶部 sticky nav 快速切换。 ### 视觉设计系统 | 位置 | 图标类型 | 示例 | |------|---------|------| | 卡片标题装饰徽章 | **Noto 3D 彩色**（立体渐变方块） | 飞机、酒店、地图 | | 功能性图标（Todo/导航/操作） | **Lucide 线性白色** | check、clipboard、backpack | | 内联 SVG sprite | `<svg><symbol id="i-xxx">` 放 body 开头 | 全站共享 | **设计约束**： - 深色海洋主题（`#0a1628` 底色 + `#4fc3f7` 主色 + `#ffab40` 强调色） - 卡片左侧彩色渐变竖条 - Todo 紧急标签带 2s 脉冲光晕动画 - 进度条渐变填充 + 百分比大字 ### 地图路线（指挥中心必备） **铁律**：地图必须同时有 marker + 路线 + 里程表 + 导航链接。 1. 地图上按 marker 顺序串接的**真实公路路线**（OSRM 浏览器侧实时调用 + localStorage 缓存 + 失败回退直线） 2. 地图正下方"**自驾里程汇总**"表格（每段 km / 耗时 / 方式 + 顶部总里程） 3. marker 递增数字标号（严格按行程顺序） 4. 底部"各路段一键导航"链接（自驾 → Google Maps，飞行 → Google Flights） **不要只放大头针就交付。** 用 `references/templates/patch-trip-page-v2.js` 一键注入路线 + 里程表 + 导航。 ### 🔴 坐标验证 SOP 景点/潜点/餐厅坐标**禁止**： - ❌ 复用酒店坐标（酒店在马路边，下水点在海岸） - ❌ 凭记忆/估算写坐标 - ❌ 小红书文字描述转坐标 **必须**： - ✅ 从 Google Maps / Wanderlog 官方链接提取坐标（`?api=1&query=lat,lng`） - ✅ 卫星图确认坐标在正确位置（海里的在海里，岸上的在岸上） - ✅ 沿海点位：验证经度是否在海岸线正确侧 ### 瓦片选择 | 瓦片 | 适用 | 注意 | |------|------|------| | **Esri ArcGIS**（街道+卫星） | 首选，无 Referer 限制 | ✅ | | **CARTO**（Voyager/Positron） | 备选，免费 CDN | ✅ | | ❌ OSM 官方 `tile.openstreetmap.org` | 禁用 | 需要 Referer，file:// 会 403 | 默认卫星影像（看海岸线/地形更直观），提供图层切换按钮。 --- ## Phase 7 —— 数据同步 **默认**：`localStorage`（95% 场景够用）。 **跨设备方案**（按难度从易到难）： | 方案 | 成本 | 适合 | |------|------|------| | A. localStorage | 0 | 一人出行 | | B. GitHub Gist | 0（需 GitHub） | 有技术背景 | | C. JSONBin.io | 0（1 万次/月） | 两人共享 | | D. Cloudflare Workers KV | 0（10 万读/天） | 推荐，零运维 | | E. 自建 Node 服务 | VPS 费 | 有自己服务器 | 代码模板见 `references/templates/todo-sync.js`。 --- ## Phase 8 —— 三链路部署 ### 🔴 必须三链路（任一挂了切另一条） | 链路 | 用途 | 特点 | |------|------|------| | **主站**（Cloudflare Pages / Vercel / 自有域名） | 日常使用 | 全球 CDN | | **镜像站**（备选平台 / CloudBase） | 主站挂时切换 | 不同运营商 | | **本地 HTML**（手机浏览器直接打开） | 完全离线 | 断网/境外信号差 | ### 部署检查 - URL 加缓存破坏参数 `?v=<yyyymmdd>` - 微信分享发 URL 不发文件 - 敏感信息脱敏（确认号/信用卡/订单号） - 菲律宾/东南亚等地测试延迟 + 丢包 --- ## ✅ 最终交付物完整文件树 ``` <project>/ ├── <目的地>行程_v<N>.md # 行程书（含版本日志 + 话术 + Plan B） ├── <目的地>酒店比价_<日期>.md # 酒店比价报告 ├── index.html # 🔴 指挥中心（地图+Todo+同步+进度条） ├── guide.html # 🔴 完整攻略详情（Day by Day 时间轴） ├── flight.html # 航班卡片页 ├── icons/ # SVG 图标集（Noto 3D + Lucide） │ ├── plane.svg │ ├── hotel.svg │ └── ... ├── <目的地>自驾路线.kml # 自驾 KML（可选） └── 部署 URL × 2 + 本地 HTML # 三链路 ``` **交付标准**： - [ ] 行程书每个 POI 有选择理由 + 避坑提示 + 导航关键词 - [ ] 行程书有 Plan B，精确到替代班次/路线/费用 - [ ] 行程书有实操英文话术（至少覆盖取车/活动沟通/事故处理） - [ ] 行程书顶部有版本变更日志（每次改动标 WHY） - [ ] 指挥中心地图有**路线**（不是只有大头针） - [ ] 指挥中心有里程表 + 一键导航 - [ ] Todo 可勾选 + 进度条 + 沉底动画 - [ ] 三链路部署（主站 + 镜像 + 离线 HTML） - [ ] 同行者跨设备验证（如启用同步） --- ## 🔴 常见坑（血泪教训） 1. **直接做，不要反复问"要不要我帮你…"** —— 获得基本信息后就推进 2. **小红书距离描述 100% 不可信** —— 必须 Google Maps 实测 3. **坐标不能复用酒店坐标** —— 酒店在马路边，潜点在海里 4. **Plan B 不是装饰** —— 精确到班次/时间/路线/费用，否则就是废话 5. **话术要写原话** —— 用户到异国他乡语言不通，照念即用才是价值 6. **版本日志写 WHY** —— "砍掉 Simala（走那条多开 2.5h，非教徒价值低）" 7. **瓦片别用 OSM 官方** —— file:// 打开会 403，用 Esri/CARTO 8. **单页塞不下** —— 超过 60KB 就分页，指挥中心/详情/航班三页互链 9. **地图行程调整了但忘改路线** —— markers + drawRoute 是独立维护的，必须同步 10. **迭代时旧 data-id 不能改** —— 云同步的 key 靠 id 匹配，改了历史状态全丢 --- ## 📚 参考文件 | 文件 | 用途 | |------|------| | `references/workflow-checklist.md` | 8 Phase DoD 检查清单 | | `references/research-prompts.md` | 小红书 / WebSearch 提示词模板 | | `references/templates/itinerary-template.md` | 行程 Markdown 骨架 | | `references/templates/index-skeleton.html` | 指挥中心网页骨架 | | `references/templates/itinerary-page-skeleton.html` | 行程详情页骨架（地图 + marker） | | `references/templates/patch-trip-page-v2.js` | 🔴 地图路线 + 里程表 + 导航注入器 | | `references/templates/patch-trip-page.js` | v1 兼容（不含里程表） | | `references/templates/todo-sync.js` | Todo 同步 JS（5 种后端） | | `references/cloudflare-workers-sync.md` | Workers KV 同步教程 | | `references/self-host-sync.md` | 自建 40 行同步教程 | --- ## 🛠️ 关键工具清单 | 工具 | Phase | 用途 | |------|-------|------| | 小红书 MCP（npx/Docker/Cookie） | P2 | 中文攻略第一信源 | | Google Maps（手工 / API） | P2-P4 | 路线验证、坐标提取 | | WebSearch + WebFetch | P2-P3 | 酒店比价、官网班次、签证 | | agent-browser | P2-P3 | 反爬严重的 OTA 比价 | | better-icons skill | P6 | 图标搜索（Noto 3D / Lucide） | | patch-trip-page-v2.js | P6 | 地图路线 + 里程表一键注入 | | Leaflet + OSRM（浏览器侧） | P6 | 实时路由 + 缓存 | | Leaflet.Locate | P6 | 用户到达目的地后实时定位 | | CloudBase MCP / Cloudflare Pages | P8 | 静态托管部署 | --- _v2.0 · 2026-04-29. 从 20+ 轮迭代的东南亚自驾环线实战中提炼，覆盖 P1-P8 全流程 + 话术 + 坐标 SOP + 三链路部署。_


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)