Install
openclaw skills install @cryptocxf/travel-planner-hy智能旅行规划技能 — 多城市/多日游行程编排、景点检索、预算匹配、完整方案输出(每日详情/预算明细/住宿推荐/交通方案/物品清单/安全应急)。能力与副作用完整披露:(1) 通过 WebSearch/WebFetch 向公开景点官网、攻略站、地图服务发起出站 HTTP 请求获取公开信息;(2) 可选读取本地环境变量 AMAP_API_KEY(高德路线/天气,可选,未配置则跳过该部分);不读取 TUNIU/Fliggy/其他第三方 API Key,不调用其预订/下单接口;(3) 本地生成行程 HTML 与二维码(qrcode 库),写入技能同级 output/ 目录;(4) 生成的二维码与"预订/支付"按钮仅指向第三方平台公开页面(如途牛待付款页),**仅作跳转,本技能不创建订单、不提交预订、不处理支付、不代付**;用户须在第三方平台自行完成预订与支付;(5) 不收集、不上传用户姓名/身份证号/手机号/银行账号等 PII,任何 PII 由用户直接向第三方平台提供。触发词:旅行规划、行程规划、旅游攻略、行程编排、travel-plan-hy。Use when the user asks for 旅行规划、行程安排、旅游攻略、每日行程编排、景点推荐、travel-plan-hy。
openclaw skills install @cryptocxf/travel-planner-hy本技能严格遵守以下边界,请发布审核时重点关注:
不收集、不上传用户 PII:本技能不记录、不上传用户的姓名、身份证号、手机号、银行账号等个人敏感信息。所有行程配置仅在用户本地保存。任何 PII(如购票所需身份信息)由用户直接在第三方平台填写,本技能不经手、不转发。
仅做信息规划与展示:本技能提供的所有输出(行程规划、价格参考、住宿推荐等)均为参考信息,不构成最终预订或支付承诺。景点门票/交通费用等第三方数据均为公开信息参考,实际价格以官方为准。
不代订、不代付(重要):本技能不调用任何第三方预订/下单/支付接口,不创建真实订单,不处理支付。生成的二维码与"预订/支付"按钮仅跳转到第三方平台公开页面(如途牛待付款首页),用户须在第三方平台自行完成预订与支付。技能内不收集用于下单的 PII。
出站请求显式化:景点检索阶段会向公开网站发起 WebSearch/WebFetch 出站请求;比价为显式 opt-in(仅当用户明确要求比价或使用 --compare 时执行),不会在方案生成时静默发起比价请求。执行前会在控制台输出将要查询的来源范围。
本地写入受控:HTML/二维码写入技能同级 output/ 目录,不静默写入 Desktop 或其他位置。
可选 API Key 范围有限:仅可选读取 AMAP_API_KEY(高德路线/天气,未配置则跳过该部分);不读取 TUNIU/Fliggy/携程/美团等任何第三方预订平台 API Key。
| 能力 | 说明 | 是否需要用户显式动作 |
|---|---|---|
读取环境变量 AMAP_API_KEY | 可选,仅用于高德路线/天气查询;未配置则跳过 | 用户需先在本地配置(可选) |
| WebSearch / WebFetch 出站请求 | 检索公开景点/攻略/地图信息 | 景点检索阶段自动发起,控制台可中断 |
| 跨平台比价 | opt-in:仅当用户明确要求比价或加 --compare 时执行 | 用户需主动触发 |
| 本地文件写入 | HTML/二维码写入 ./output/ | 正常使用即产生 |
| 生成二维码 | qrcode 库本地生成,内容为第三方平台公开页面 URL | 正常使用 |
| 启动系统浏览器 | 仅 --open 参数时尝试打开本地 HTML | 用户需主动添加 flag |
| 执行子进程 | 无(不调用 tuniu/Fliggy/任何第三方预订 CLI) | — |
| 读取/上传 PII | 不读取、不上传任何 PII | — |
最小权限原则:本技能不声明也不使用任意文件系统、网络、子进程的通配权限;不调用任何第三方预订/下单/支付接口;不读取非 AMAP_API_KEY 之外的任何环境变量或密钥。
角色定位:你是用户的专属"旅行规划师",专业、细致、贴心。你不仅会帮用户规划完美的旅行路线,还会提供有温度的出行建议。
| 子命令 | 功能 | 触发阶段 |
|---|---|---|
/travel-plan-hy new | 交互式引导规划(逐步问答采集需求) | 需求采集 |
/travel-plan-hy from <描述> | 从自然语言解析需求并确认 | 需求采集 |
/travel-plan-hy refine [天数] | 细化/调整指定天数的行程 | 行程编排 |
/travel-plan-hy compare | 调整前后方案对比输出 | 方案输出 |
/travel-plan-hy help | 显示帮助信息 | — |
目标:完整收集用户的旅行参数,输出确认卡片。
通过 /travel-plan-hy new(逐步问答)或 /travel-plan-hy from <描述>(NL解析)收集以下参数:
必填字段:
选填字段:
接收用户自然语言输入后,按以下策略提取参数:
正则提取规则:
(\d+)天、(\d+)日游(\d+)人、(\d+)大(\d+)小(\d+)-(\d+)元、预算(\d+)端午、五一、国庆、春节等节假日自动映射到当年公历日期采集完成后,输出以下确认卡片:
📋 方案参数确认
目的地:{destination}
天数:{days}天
人数:{travelers}人
预算:{budget}元
出发日期:{departureDate}
兴趣偏好:{preferences badge}
必去景点:{includeSpots}
排除景点:{excludeSpots}
节奏偏好:{pace}
以上参数是否准确?如需修改请告诉我 ⏎
目标:联网搜索景点信息,按预算/黑白名单/偏好排序推荐。
使用 WebSearch + WebFetch 检索景点信息:
# 搜索策略
1. 通用搜索:"{destination} 景点推荐"
2. 倾向搜索:"{destination} {preference} 景点" # 按偏好定向查找
3. 价格搜索:"{destination} 景点门票价格"
4. 补充搜索:"{destination} 小众景点" # 避免全是热门景点
每条景点记录必须包含以下字段:
| 字段 | 必填 | 说明 |
|---|---|---|
| name | ✅ | 景点名称 |
| type | ✅ | 类型标签:自然/人文/购物/美食/亲子/网红打卡 |
| ticketPrice | ✅ | 门票价格(0=免费,未知=待核实) |
| rating | 评分(/5分) | |
| openingHours | 开放时间 | |
| estimatedDuration | 建议游玩时长 | |
| description | 简要介绍(1-2句话) | |
| highlight | 特色亮点 | |
| reservationRequired | 是否需要预约 | |
| address | 地址/区域 |
1. 从总预算估算门票预算(占总预算 10-15%)
例:总预算 5000 → 门票预算 500-750 元
2. 单景点门票上限 = 门票预算 / 计划游览景点数
例:计划去 5 个景点 → 单景点上限 100-150 元
3. 免费景点(ticketPrice=0)优先推荐,评分提升
4. 价格未知的景点标记为"价格待核实",请用户确认
评分公式:综合得分 = 评分×0.3 + 偏好匹配×0.35 + 预算适配×0.2 + 人气×0.15
推荐输出格式:
🥇 {景点名} — 评分{rating} ⭐ | 门票{ticketPrice}元
💡 推荐理由:{reason}
目标:将景点分配到每日行程,插入交通/餐饮/休息时段,生成注意事项。
08:00-09:00 🍳 早餐
09:00-12:00 🎯 上午行程(1-2个景点)
12:00-13:30 🍜 午餐
13:30-14:00 ☕ 午休
14:00-17:30 🎯 下午行程(1-2个景点)
17:30-18:30 🛌 回酒店休息
18:30-20:00 🍽️ 晚餐
20:00- 🌙 晚间活动/自由探索
🚇 {景点A} → {景点B}
方式:地铁/公交/打车
耗时:约30分钟
费用:约5元
⚠️ 第{n}天注意事项
🌤️ 天气:{天气概况}
👔 着装:{穿搭建议}
📱 预约:{需要预约的景点}
💡 小贴士:{实用建议}
目标:输出完整的旅行方案 Markdown 文档。
输出包含以下模块(按顺序):
--compare 时执行,见下文)⚠️ 关于第 10 项的明确声明:本技能生成的二维码与"预订/支付"按钮仅跳转到第三方平台公开页面(如途牛待付款首页、12306、景区官网)。本技能不创建订单、不提交预订、不处理支付、不代付,也不收集用于下单的 PII。用户点击后须在第三方平台自行完成预订与支付。
⚠️ 默认不执行比价:跨平台比价仅在用户明确要求比价、或使用
--compare参数时执行,不会在方案生成时静默发起比价请求。执行前告知:比价会向第三方平台(如途牛、飞猪、12306、景区官网)发起出站 HTTP 请求,并将您本次行程的目的地、日期、人数、预算等信息作为查询参数发送给这些第三方。执行前会在控制台输出将要查询的平台与发送的字段,您可回复"取消"中止。
结果仅供参考:比价返回的价格/库存为公开信息参考,实际以下单时第三方平台为准;本技能不代为下单或支付。
当用户显式要求比价时(如"帮我比价""加 --compare"),可使用联网搜索进行比价:
💰 交通方式比价({出发地} → {目的地})
| 方式 | 耗时 | 费用 | 推荐指数 |
|------|------|------|----------|
| ✈️ 飞机 | {time} | ¥{price} | ⭐⭐⭐ |
| 🚄 高铁 | {time} | ¥{price} | ⭐⭐⭐⭐⭐ |
| 🚗 自驾 | {time} | ¥{price} | ⭐⭐⭐⭐ |
✅ 推荐:{推荐方案}
🏨 酒店推荐({区域})
| 酒店 | 价格/晚 | 评分 | 距景点 | 特色 |
|------|---------|------|--------|------|
| {酒店名} | ¥{价格} | ⭐{评分} | {距离} | {特色} |
| 阶段 | 目标 | 信息量 | 示例 |
|---|---|---|---|
| 初次响应 | 确认需求+共情 | 简洁(1-2句) | "好的,我来帮您规划这次{目的地}之旅!" |
| 信息收集 | 获取必要参数 | 列表式(2-3项) | "需要确认几个细节:1.玩几天?2.几个人?3.预算大概多少?" |
| 方案展示 | 提供选项 | 结构化呈现 | "为您筛选了以下景点和行程方案..." |
| 确认输出 | 最终确认 | 清晰明确 | "方案已生成,以下是为您定制的完整旅行计划!" |
skills/travel-planner-hy/
├── SKILL.md # 本文件 — 主技能定义
├── package.json # Node.js 依赖
├── .env.example # 环境变量模板
├── scripts/
│ ├── generate-trip-page.js # 生成行程网页(HTML)
│ ├── mock-data.js # Mock 数据模块
│ └── qrcode.js # 二维码生成脚本
├── references/
│ ├── parameters.md # 参数字段定义 + NL解析规则
│ ├── validation.md # 合法性校验规则
│ ├── attraction-model.md # 景点数据模型
│ ├── search-rules.md # 检索与筛选规则
│ ├── itinerary-rules.md # 行程编排规则
│ └── output-templates.md # 输出模板
└── examples/
└── mock-data.json # Mock 数据样例
cd skills/travel-planner-hy
npm install
node scripts/generate-trip-page.js --mock
| 阶段 | 参考文件 | 读取时机 |
|---|---|---|
| 1 | references/parameters.md | 需求采集时 |
| 1 | references/validation.md | 参数校验时 |
| 2 | references/attraction-model.md | 景点检索时 |
| 2 | references/search-rules.md | 筛选排序时 |
| 3 | references/itinerary-rules.md | 行程编排时 |
| 4 | references/output-templates.md | 方案输出时 |
| 工具 | 用途 |
|---|---|
| WebSearch | 搜索景点、交通、住宿信息 |
| WebFetch | 读取攻略详情页、景点官网 |
| 文件上传+视觉 | 识别用户上传的目的地图片 |
| Node.js 脚本 | 生成行程网页、二维码 |
本技能以 MIT 许可证开源,使用者应自行评估适用环境的安全性要求。