jianhao-travel-planner skill
A skill that guides an agent through web search and source checks and builds a trip book as one HTML file
- 441 ★ on the repository
- Last commit
- MIT
Extended access
Why this level
- Reaches the web for data and images and runs Python scripts on your machine
- The optional deployment of the slimmed-down version needs your own server, and the Pexels key sits in `.env`
Install
- Works in
Manual install
py tools/pipeline.py full fixtures/demo/demo_full.json my-demo.html --visualA trial run of the chain without an agent on sample data; `--visual` adds a check at two viewport sizes.
Access and checks
How we reviewExtended accessThe tool runs code or makes network calls and only reads external data.
- Reaches the web for data and images and runs Python scripts on your machine
- The optional deployment of the slimmed-down version needs your own server, and the Pexels key sits in `.env`
This is third-party code. Review the repository files before installing.
What it does
The skill walks an agent through a fixed process for building a trip book: first questions about the departure city, dates and the group, then a web search and a cross-check of sources. The output is a route in two forms, a markdown source and a single HTML file. The full version opens offline, and a slimmed-down one can be put on your own server. The book holds an overview with weather and a countdown to departure, a table of road legs, days with half-hour cards and photos, tickets and reservations, lodging, a three-tier budget, a section for emergencies, a list of places to eat and souvenirs. The skill also keeps food cards per city that grow from trip to trip. Photos for each day come from Wikimedia Commons, from Pexels with a key, or are AI-generated and marked as illustrative. Before handing over, the agent runs `tools/checklist.py`, a mechanical check against a list. It does not guarantee that prices, tickets and transport are confirmed, so key items in the book carry a verification status. If you do not want the agent to drive the process, the `tools/pipeline.py full` chain validates the data in `trip_data.json`, renders it to HTML and runs the final check. Python 3.8 and the standard library are enough.
Who it is for. Travelers planning a route in China who read Chinese maps and reviews, and anyone who wants a trip book with sources.
Good fit when
- A weekend or five-day trip needs a route with meals and a budget in one file that reads well on a phone and prints
- The agent searches the web for each key fact and marks it with a verification status, and you want to see those marks
- You want to build a food database per city so the cards grow from trip to trip
- A trip abroad: version 1.14 adds an outbound pack with a dual-currency budget, border and payment notes and consular contacts
Not a fit when
- You need a quick answer to one route question: the skill first asks about departure, dates and the group
- You need a guarantee that tickets and prices are confirmed: the mechanical check does not give one, so re-check facts before leaving
- Your agent cannot reach the web: the search and the source cross-check run online
Example request
Build a five-day trip book for Wuhan: departing from Shanghai, two adults, mid-OctoberLimitations
- SKILL.md, templates and trigger phrases are in Chinese, and the cross-check runs on Chinese services: Dianping, Gaode, Xiaohongshu. For trips outside China you would source data differently.
- The `jianhao-travel-planner` folder must not be renamed, and `assets/` and `tools/` must stay inside it.
- The agent has to read `SKILL.md` in full: when it is reduced to a short summary, the opening questions and the final check disappear.
- Photos come from Wikimedia Commons or Pexels (the key lives in `.env`), otherwise an AI image with a label remains.
How to disable. Delete the `jianhao-travel-planner` folder from `~/.claude/skills/` or from the project's `.claude/skills/`. If you enabled the pre-push hook, restore the setting with `git config --unset core.hooksPath`.
FAQ
How do I install jianhao-travel-planner in Claude Code?
Download the stable version from the releases page, unpack it and put the whole `jianhao-travel-planner` folder into `~/.claude/skills/` or the project's `.claude/skills/`. The path must end in `…/skills/jianhao-travel-planner/SKILL.md`.
Does it work with agents other than Claude Code?
Yes, any agent that reads files and reaches the web can use the folder as is. Tell it to read `SKILL.md` in full without summarizing and to ask the stage-zero questions.
Do I need keys or paid APIs?
No. Paid APIs and social logins are not needed, the Pexels key is optional and the default photo source, Wikimedia Commons, needs none.
What does the mechanical check do before delivery?
`tools/checklist.py` runs the finished HTML against a list of items, and the agent must run it before handing over. It catches gaps but does not replace confirming prices, tickets and transport: re-check those by the statuses in the book.
How can I try the skill without a trip of my own?
Run `py tools/pipeline.py full fixtures/demo/demo_full.json my-demo.html --visual`: the whole tool chain runs on a made-up three-day book. Sample data lives in `fixtures/demo`.
Discussion
No questions or reviews yet.
Related
SkillsA skill and dataset for a first trip to China: city matching, areas, itineraries, preparation and emergency help, all sourced
travel-plan-viz: trip plan as an HTML page
travel-plan-viz
A skill that builds a trip plan into one HTML file with a map, a day-by-day schedule and reminders of booking deadlines
A skill that builds a personal trip handbook: a questionnaire and approved plan become an offline mobile HTML page.
Marco Polo: a travel planning skill
Marco Polo
A skill that builds an itinerary from real places, hours and bookings and delivers a handbook with a map and food guide
A JourniOne skill for trip planning: a day-by-day route, hotels, flights and a web journal of the trip
Search tours, hotels, flights, trains and excursions via Aviasales, Travelata, Level.Travel, Tutu.ru, Tripster and Sputnik8
Comparison with similar tools
Cards that share the main search query, and how they differ.
| Tool | Official | Repository stars | Main difference |
|---|---|---|---|
| jianhao-travel-planner (this card) | no | 441 | |
| travel-plan-viz: trip plan as an HTML page | no | 415 | builds a plan from prepared data into HTML with a map, with no web search or source cross-check |
| China Travel Kit | no | 179 | a reference and database for a first trip to China, with no step-by-step process for producing a trip book |
README in short
The page says the skill produces a trip book in two forms plus food cards and lists what the book contains. It then covers installing into a skills folder, installing for other agents, photo source options and a no-skill mode in which data in `trip_data.json` runs through a tool chain. Sample data sets and a blank user profile template are described there too.
README badge
Original SKILL.md
--- name: jianhao-travel-planner description: 见好 · 旅行规划器——出行路书工作流(通用版)。当用户提出旅游、出行、周末去哪、做攻略、做路书、目的地推荐、行程规划、自驾方案、当日行程、今天去哪、特产推荐等需求时触发。按「需求采集→目的地筛选→实查复核→六维度路书(吃/玩/住/行/拍+避雷)+随行两件套(当日旅行模式/特产三问)→行程中动态调整→素材采集→复盘回流」全流程执行,输出自包含路书文件。核心铁律:关键信息必须联网实查、未核实必标注、动线不绕路、天气定节奏、内容预埋(机位+钩子)。 --- # 见好 · 旅行规划器(jianhao-travel-planner · 公用版 v1.19) > **公用版说明(2026-09-21 从作者本体 v3.26 派生;v1.2 于 2026-09-29 升级基准骨架——导航双通道/当日定位;v1.3 于 2026-09-30 正文条款对齐作者本体 v3.49 的国内通用部分(必答清单/价格含税总价制/图源三级链等);v1.4 于 2026-10-03 增补本体 v3.50 五条价格纪律;v1.5 于 2026-10-05 增补本体 v3.51-52(机械交付闸门 tools/checklist.py+头部执行速查卡);v1.7 于 2026-10-08 增补本体 v3.55-59 国内通用条款(今日速览标准件/升级体验必答化/冷知识卡与 Plan B 固定件/slot 主次律/机位信息标准/tips 两组兼备/导览图插画化基线/R2 门槛/住宿选房顺位等)+checklist.py v1.2;v1.8 于 2026-10-09 增补本体 v3.62 游客优惠检查工序(票根经济/文旅消费券主动搜寻,知会型呈现);v1.9 于 2026-10-10 增补本体 v3.63-66(移动端表格列宽修复(fixed+colgroup,桌面零变化)/导航当日重复标记废止/大交通实时实查铁律(铁律 8)/天文时刻 API 实查/订房机位距离顺位/OTA 渠道核销窗口);v1.10 于 2026-10-13 tools/checklist.py 同步至 v1.6(形态检查组八项)+内部词中性化收口;v1.11 于 2026-10-13 SKILL.md 瘦身(版本行 42 条迁 HISTORY.md 全档,留最近 3 条+指针);v1.12 于 2026-10-14 增补本体 v3.69(美食清单按天分组式正本形态+密度硬标准四条/铁律 8 补航班聚合口径实证/跨板块归位黑名单);v1.13 于 2026-10-15 开工前置闸(阶段 0 出发地/日期窗/人数与关系禁默认+需求确认单,根治"零提问默认北京出发"实测事故)+SKILL.md 禁止摘要改写条款(93KB 正文被环境改造成附录的实测教训)+导览图双通路定序(手绘 SVG=无网无 key 兜底正路,硬执行禁跳过);**v1.14 于 2026-10-19 重大升级:①出境能力包正式收录**(作者三册出境实战成熟后解除测试封锁:实查通路三层级/签证体检卡/出入境双清单/双币种预算+含税实付/sos 领保块/装备卡/热门未排取舍说明——见「出境册附加条款」节)**②checklist.py 同步 v1.9**(24 项机械闸+修复指引映射+四视口,叙事注释已中性化)**③新工具随包**:assets/basemap_tool.py(真底图导览图工具链,兑现 v1.13 承诺)+tools/prep_fetch.py(日照/汇率/POI 坐标确定性预抓)**④增补通用条款**:提速五条/导览图六条+bbox 三层+总览比例家族基准/验收规范一页纸/三档位/价格复用边界/城市骨架池/修复熔断纪律/工具信息多处全集同列——见「制作提速·导览图·验收增补」节**;**v1.16 于 2026-10-24 改进路书检查与默认行程节奏**(修复属性化页面时段识别/零时段明确报错/餐段误报收紧;默认 09:30—10:00 开始游玩、起床细节不入册——见 CHANGELOG)**;**v1.17 于 2026-10-24 工具链公开化**——tools/ 随包新增生成器/数据校验器/导览图程序化/事实派生等八件与 schema/TEMPLATE/基准骨架/合成样本四套回归,README 新增「工具模式」(不装 skill 按 schema 填数据走机械全链)——见 CHANGELOG**;**v1.18 于 2026-10-26 修复完整示范配图与检查盲区**(demo 七张 1×1 占位换标注「虚构示意·非真实景点」的示意插画/页尾图源改中性缺省可数据侧覆盖/导览图出界检查三态判定并兼容程序化导览图/发布打包防缺件防裹挟——见 CHANGELOG)**;**v1.19 于 2026-11-03 新增「中转衔接与廉价航空」条款(中转行李三规则/廉航值机费坑/联程票须全程乘坐/经港过境官方条件)+知识蒸馏核查规则(忠实转述≠事实核查,入条款必附核查状态)+最小流程改造(QUICKSTART/pipeline new·outline/fetch_images/timer)——见 CHANGELOG** > 本文件是作者自用版 travel-planner 的公用/开源版:方法骨架、产出形态、自查清单与本体一致;按开源前置工序做了 7 项改造—— > ① **抓取链切公开源**:正餐情报走大众点评/高德地图/小红书等公开平台交叉验证,不再依赖博主作品抓取流水线(不需要任何登录态); > ② **配套口径三改**:证据分级适配公开源 / 收录门槛 R2 的「穷尽」判定改为「地图 POI+多源交叉穷尽」/ 信源名单由使用者自建(不预置任何博主白名单); > ③ **脱敏去个人化**:用户档案改填空模板、作者个人设定降级为参考示例、个人文件路径全部清除; > ④ **长辈/官方版叠加档完整保留**(四件套+决策替做+温馨提示); > ⑤ **配图硬规矩保留** + Pexels 免费 key 自注册指引(2 分钟,见「工具与依赖」); > ⑥ **工程工具随包附带**(`tools/consistency.py` 骨架校验 + `tools/desource.py` 脱敏),去 AI 味通道二改可选; > ⑦ **版本演进记录原样保留**——每条规矩后面的"血案"(翻车实录)是这套标准为什么成立的解释,比规矩本身更值得读。记录中的署名(作者与协作者)是真实迭代存档,正文运行区已不含个人依赖。 > 🏠 **本工作流的维护与更新**:github.com/awangwang123/jianhao-travel-planner —— 反馈、许愿池与新版本发布均在此仓库。 > > **安装**:整个目录(SKILL.md + assets/ + tools/)复制到 `~/.claude/skills/jianhao-travel-planner/`(全局)或项目 `.claude/skills/jianhao-travel-planner/`(单项目)即可被 Claude Code 自动加载。 > ⚠️ **与自用版的关系**:本文件由作者的自用版本 travel-planner 派生(自用版含作者个人档案、不公开)。公用版技术名 `jianhao-travel-planner` 与自用版不同名,二者可在同一台机器共存、互不覆盖。 > 📜 完整版本演进翻车实录(42 条)见 HISTORY.md;用户视角变更说明见 CHANGELOG.md > 版本 v3.54(2026-10-07,「工具缺口改」拍板)|**tools/checklist.py 升 v1.1 四项扩容**(成品终审实证:机械检查全过但四类问题全漏——检查项必须跟上翻车形态):①**图渲染**(视觉项内**先滚动触发懒加载**再逐张查,报 N/N)②**badge 在位**(每日卡 today-badge 元素逐天查——被「无日期模式」掩盖的潜伏缺陷显性化)③**存储键跨成品污染**(键前缀→城市映射+标题比对,从别的成品抄脚本没改键即拦)④**长【】指引残留**(≥15 字【】=骨架填稿指引未删即拦;【估算】【未核实】等短标注不受影响)。顺修 intel 空壳误报(选装区块不装=正常)。毒抓自测+异版回归零误伤。 > 版本 v3.52(2026-10-05,「制作时没翻条款」根因后的防不读设计)|**头部新增「执行速查卡」**:SKILL.md 原 50+ 行版本演进史在前、执行条款埋深处——触发加载的 AI 若不深读(实测案例:条款全文在副本里但制作时没翻),关键约束等于不存在——速查卡 5 条(读正本/板块非空/实查时点/交付闸门/修正双写)前置到第一屏,把「先读条款」从自觉变成第一眼可见的机械动作(实测自白「翻条款不存在于我的流程」+「AI 做的时候不读 skill,skill 就是白写的」实证)。 > 版本 v3.51(2026-10-05,三次同类翻车后的机械交付闸门)|**🔴交付前必跑 `tools/checklist.py`(通用机械检查,任意城市路书可跑)**:11 项=区块完备/区块空壳/每日餐行/author 选装件/JS 拼接/ID 唯一/占位符/骨架指纹/价格切碎/双视口/图渲染——**交付前必跑、输出原文贴给用户、任何 FAIL 不许交稿、SKIP 必须声明**(fail-closed)。源起:东京 v1/国际三册/山东三城三次同类翻车,条款靠人记三次失效——检查必须机械;首跑即抓自家大岛册餐行缺三处(脚本对自家产品同样不留情)。**开源场景意义**:外部使用者没有三重外部质检,checklist=使用者侧唯一质检武器。 > ①🔴**禁止轻餐穿插正餐分段**——早/宵/下午茶卡不得混在正餐 ①②③④ 动线分段里(首版广佛补卡曾插在正餐分段内,作者 打回); > ②**轻餐板块独立置底**:分段带「☕ 早餐 / 下午茶 / 宵夜(城市A → 城市B · 全天候)」,放全部正餐卡之后; > ③**轻餐排序=城市序**(先广州后顺德),城内按 **早餐 → 下午茶 → 小吃 → 宵夜** 排; > ④**正餐排序=行程动线序**(Day1-3 驻地 → 老城 → 转场镇 → 顺路镇),禁抓取序/随机序(首版 26 店即抓取序被 作者 打回「顺序都是乱的」); > ⑤**侧栏导航两组**:「正餐 · 按行程动线 · N 张」+「早 / 下午茶 / 宵夜 · M 张」,锚点与正文卡序一致; > ⑥编号:正餐 01-N 连续,轻餐 N+1 起连续(轻餐卡标题带(早餐)(宵夜)(下午茶)(小吃)类型标)。 > ①**收录优先级**:⚡双博主交叉 → 📌作者 指定 → 单博主名店(区聚堆); > ②**卡片字段**:城市·区域|店名|位置(门牌)|评星/人均/营业时间|**特色菜/推荐菜**|**避雷/温馨提示**——博主负面评价(两极分化/脾气火爆/上菜慢)写进避雷栏,别只夸不贬; > ③**介绍不呆**:写记忆点(现烤皮脆/双博主同探/晚6点售罄),不能只堆营业时间; > ④**朋友版情报卡全脱敏**:不写博主/赞数/链接/证据块; > ⑤🔴**离主行程远的店去掉**(2026-09-20 作者定,先例:南海友壕气·黄岐离广州/顺德主线远被划掉)。 > ⑥(v3.26 增补)**情报卡/清单 IA 分层**:正餐(动线序)在上 + 早/宵/下午茶(城市序)独立板块在下—— > ①🔴**禁止轻餐穿插正餐分段**——早/宵/下午茶卡不得混在正餐 ①②③④ 动线分段里(首版广佛补卡曾插在正餐分段内,作者 打回); > ②**轻餐板块独立置底**:分段带「☕ 早餐 / 下午茶 / 宵夜(城市A → 城市B · 全天候)」,放全部正餐卡之后; > ③**轻餐排序=城市序**(先广州后顺德),城内按 **早餐 → 下午茶 → 小吃 → 宵夜** 排; > ④**正餐排序=行程动线序**(Day1-3 驻地 → 老城 → 转场镇 → 顺路镇),禁抓取序/随机序(首版 26 店即抓取序被 作者 打回「顺序都是乱的」); > ⑤**侧栏导航两组**:「正餐 · 按行程动线 · N 张」+「早 / 下午茶 / 宵夜 · M 张」,锚点与正文卡序一致; > ⑥编号:正餐 01-N 连续,轻餐 N+1 起连续(轻餐卡标题带(早餐)(宵夜)(下午茶)(小吃)类型标)。 > ⑦(v1.12)**美食清单按天分组式=正本形态**:每天一小节+叙述性标题(如「第 2 天 · 老街糖水与外沙海鲜」)+节内小表(餐段/位置/店/点什么/人均),**禁整册一张「D1 晚/D2 晚」顿列大表**(对照实证:顿列式读者要自己把行映射回行程,分节式跟着动线走即得);分节式配齐三件:品类级必吃清单(含时令)+找店口诀+收录标准与信源声明尾注。 > ⑧(v1.12)**美食密度硬标准(可数、防时好时坏)**:①每册实名店铺 ≥ 天数×2(对应每正餐主选+备选 ≥2 家的去重下限)②正餐主选必须实名店——市场/夜市只作场景背景、不得当正餐答案(无硬线时美食深浅全看当轮执行状态,敷衍必复发)③早/宵「随意」节各 ≥2 实名店 ④人均未实查不写死价格——标【未核实】或给来源。 ## ⚡ 执行速查卡(制作任何路书前必读——先读这 7 条再动手)