Install
openclaw skills install @cryptocxf/schedule-planner-cxfPlan requested travel itineraries, compare flight/train/hotel prices, and generate local itinerary HTML with optional public platform homepage QR codes. Use for concrete travel planning, price comparison, or itinerary export requests; not casual travel discussion, calendar scheduling, bookings, orde
openclaw skills install @cryptocxf/schedule-planner-cxf按用户所用语言回应,遵循用户指定的目的地、交通方式、预算与行程节奏。中文示例主要面向中国境内出行,不限制回答语言。HTML 模板支持 language: "zh-CN" 或 "en";多城市对比示例页面为中文。
scripts/lib/tuniu.js 的查询白名单;不运行原始 CLI 的其他命令,不创建订单、预订或支付。TUNIU_API_KEY 从本地进程环境读取,作为鉴权信息发送给 https://openapi.tuniu.cn/mcp/flight、/train 或 /hotel。对应查询还会发送城市、日期、酒店关键词等必要参数。这些数据会离开本机;不能称为“Key 不上传第三方”。不要输出密钥。.env、用户全局途牛配置、默认乘客资料或其他凭据文件。不要要求、填入或保存乘客姓名、证件号、手机号、订单号、支付链接。自由文本字段不具备自动隐私识别能力,准备输入时不要加入敏感信息。output/,会包含用户行程。只在用户要求导出到桌面时使用支持的 --desktop;不要将本地行程文件上传发布,除非用户另行授权。https://www.tuniu.com/、https://m.tuniu.com/、https://www.12306.cn/。不接受订单/支付路径、查询参数、重定向地址或其他域名。用户自行打开平台搜索和预订。--open 已移除;给出文件路径,由用户打开。生成二维码直接调用本地 qrcode 库。Node.js 22 或以上。进入技能目录后,按照已提交的锁文件安装依赖:
npm ci --ignore-scripts
依赖固定为 qrcode@1.5.4 和 tuniu-cli@1.0.7,传递依赖由 package-lock.json 锁定。.npmrc 同样禁用安装脚本,避免途牛 postinstall 自动向其他 agent 目录安装技能。安装需要访问官方 npm registry;运行时不会下载安装代码。
实时查询用当前 Node 的绝对路径启动固定的本地 tuniu-cli/dist/index.js,缺失或版本不符即停止。子进程只收到 TUNIU_API_KEY、关闭服务发现的开关及 Windows 必需的 SystemRoot。不继承全量环境,不接收自定义 CLI 路径,不回退到全局安装。
该限制是代码层约束,并非操作系统沙箱。宿主仍需按其权限规则允许所需网络、查询子进程和输出目录写入;不要为了运行此技能扩大通配权限。
高德地图/天气:此包没有高德客户端,不读取 AMAP_API_KEY。如宿主已有用户授权的高德工具,可按请求使用它,遵守该工具的数据传输权限;否则说明未查询的部分,不临时安装其他工具或宣称已接入。
# 完全离线演示,输出带模拟标签的行程网页及公开首页二维码
node scripts/generate-trip-page.js --mock
# 导出用户指定的行程 JSON
node scripts/generate-trip-page.js --input trip.json
# 一次实时查询(query.json 的格式见 usage.md)
node query_trip.js --input query.json
# 多城市查询:需要明确的路线/日期文件
node scripts/query-5city-trip.js --input plan.json
# 读取查询结果生成对比页;此步骤不联网
node scripts/generate-5city-trip.js --input output/comparison-实际文件名.json
# 本地回归测试,不联系途牛,不使用真实凭据
npm test
离线示例见 mock 模式。迁移旧版时,删除输入中的 passenger、orderId、paymentUrl 等字段;只有用户需要公开首页快捷入口时才设置 platformUrl。