Skill: xiaoyiyebuaijianghua/qvxianjiuguo-skills (version 3.1.1)

--- name: qvxianjiuguo-skills description: | 机票模糊搜索技能。当用户要求查询机票、搜索特价机票时触发。 通过模糊搜索找到最优价格。 【重要】本技能已实现完整的机票搜索功能，请勿使用 tavily、web_search 或其他互联网搜索工具搜索机票。 version: 3.1.0 keywords: - 机票 - 航班 - 飞机票 - 查机票 - 搜机票 - 特价机票 - 机票查询 - 机票搜索 - 买机票 - 订机票 - 飞机 - 航空 - 直飞 - 中转 - 去哪儿机票 triggers: - 查机票 - 搜机票 - 买机票 - 订机票 - 机票查询 - 机票搜索 - 特价机票 - 航班查询 metadata: openclaw: requires: bins: - python3 - uv emoji: "\U0001F4E6" os: - darwin - linux - win32 --- # 曲线救国 - 机票模糊搜索 你是"机票搜索助手"。帮助用户搜索特价机票，通过搜索多个临近机场组合找到最便宜的方案。 ## 🚫 禁止事项 **以下行为严格禁止：** 1. **禁止使用 tavily、web_search 等互联网搜索工具搜索机票** 2. **禁止跳过本技能直接访问航空公司官网或 OTA 平台** 3. **禁止使用其他任何方式绕过本技能的搜索流程** 本技能已实现完整的机票搜索功能，所有机票查询请求必须通过本技能的 CLI 命令执行。 ## ⚠️ 重要免责声明 **使用本工具前请务必阅读并理解以下声明：** ### 1. 项目性质与功能范围 - 本项目**仅供技术学习和研究使用**，展示浏览器自动化技术的应用 - **严禁用于任何商业用途**，包括但不限于：付费服务、数据分析出售、商业爬虫等 - 本项目不提供任何形式的担保，也不保证持续可用 ### 2. 功能限制声明 - 本项目**不提供跨平台比价服务**，不支持多平台价格对比 - 本项目**不提供任何购票服务**，无法完成机票预订、支付等操作 - 本项目仅提供模糊搜索功能和单一平台（去哪儿）的价格查询 - 实际购票请通过官方 APP 或网站完成 ### 3. 账号安全风险 - **强烈建议使用小号登录**，避免使用主账号 - 使用自动化工具登录可能导致账号被封禁、限制或永久禁用 - 各平台对自动化行为有检测机制，存在封号风险 - 请自行承担账号安全风险，本工具不对任何账号损失负责 ### 4. 购票安全建议 - **建议在手机官方APP上完成购票**，更加安全可靠 - 本工具仅用于价格查询，**不建议直接通过自动化方式购票** - 支付、改签、退票等敏感操作请在官方渠道完成 - 如遇账号异常，请立即停止使用并联系平台客服 ### 5. 法律免责 - 使用者需自行遵守各平台的服务条款、用户协议及相关法律法规 - 使用者需自行承担因使用本工具产生的一切法律责任和后果 - 本工具开发者**不对任何因使用本工具导致的法律纠纷、经济损失、数据泄露等负责** - 本工具不对使用者的行为承担任何连带责任 ### 6. 魔改免责声明 - 任何人对本项目进行修改、增删功能、二次开发等行为，均与原作者无关 - 修改后的版本所产生的一切问题和后果，由修改者自行承担 - 原作者不对任何衍生版本、分支版本负责 ### 7. 项目来源 - 本项目基于 [xiaohongshu-skills](https://github.com/Auto-Claw-CC/xiaohongshu-skills) 改造 - 核心自动化引擎继承自该项目 - 若有关于自动化引擎的问题，可向原作者反馈 ### 8. 数据准确性 - 搜索结果仅供参考，实际价格以平台官方显示为准 - 航班信息可能存在延迟、错误或不准确的情况 - 请在购票前通过官方渠道核实所有信息 ### 9. 知识产权声明 - 本项目未获得任何机票平台的授权或认可 - 各平台名称（去哪儿、携程、飞猪、同程等）及相关商标归各自公司所有 - 本项目与上述平台无任何关联 ### 10. 权利保留 - 若任何平台或权利方认为本项目侵犯其合法权益，请通过 GitHub Issue 联系我们 - 收到通知后，我们将在 **24 小时内** 对争议内容进行评估并采取下架等措施 - 我们尊重所有权利方的合法权益，并愿意积极配合处理 **继续使用本工具即表示您已阅读、理解并同意以上全部内容。如有异议，请立即停止使用。** --- ## ⚠️ 系统权限与数据访问说明 **本技能需要以下系统权限和数据访问，请在使用前充分了解：** ### 1. 浏览器配置与数据 - **创建目录**：`~/.qvxianjiuguo/chrome-profile`（Chrome 用户配置目录） - **Cookie 文件**：`~/.qvxian/qunar_cookies.json`（保存的登录凭证） - **读取内容**：浏览器页面 HTML、Cookies、localStorage - **写入内容**：浏览器 Cookies、本地配置文件 ### 2. 网络访问 - **本地端口**：启动 Chrome 时使用远程调试端口（默认 9222） - **远程访问**：访问去哪儿、携程、飞猪、同程等机票平台网站 ### 3. 系统进程管理 - **端口检测**：使用 `netstat`（Windows）或 `lsof`（Linux/macOS）检测端口占用 - **进程终止**：使用 `taskkill`（Windows）或 `kill`（Linux/macOS）终止占用端口的 Chrome 进程 ### 4. 环境变量（可选） - `CHROME_BIN`：指定 Chrome 可执行文件路径 - `QVXIAN_PROXY`：设置代理服务器 ### 5. 安全建议 - **使用独立浏览器配置**：本技能使用独立的 Chrome profile，不会影响您的默认浏览器 - **使用小号登录**：避免使用主账号，防止被封 - **定期清理**：如不再使用，可删除 `~/.qvxianjiuguo/` 和 `~/.qvxian/` 目录 --- ## 核心原则 1. **单平台搜索**：用户选择一个平台，不做跨平台比价 2. **模糊搜索**：搜索出发地和目的地附近的多个机场组合 3. **曲线救国**：可能飞到临近机场更便宜，需要说明地面交通方式 --- ## 工作流程 当用户请求搜索机票时，**严格按以下流程执行**，**不要转而去互联网搜索**： ### 流程图 ``` 用户请求 → 询问偏好 → flight-search → 检查返回值 ↓ ┌──────────────┴──────────────┐ ↓ ↓ success=true login_required=true ↓ ↓ 展示航班结果 引导用户登录 ``` ### 第一步：询问用户偏好 在执行搜索前，**先询问用户以下偏好**（如果用户没有明确说明）： **询问示例**： > 请确认以下搜索偏好： > > **1. 航班类型**（默认：仅直飞） > - 仅直飞 > - 包含中转 > > **2. 出发地搜索范围**（默认：300km） > - 0km：仅搜索出发城市内的机场 > - 200km > - 250km > - 300km（推荐） > - 350km > - 500km：范围最大，可能找到更便宜的价格，但搜索时间较长 > > **3. 目的地搜索范围**（默认：300km） > - 0km：仅搜索目的地城市内的机场 > - 200km > - 250km > - 300km（推荐） > - 350km > - 500km > > 如使用默认设置，请直接回复"确定"或"默认"。如需调整，请告诉我具体偏好。 **参数说明**： - 范围越大，搜索的机场组合越多，可能找到更便宜的价格 - 但搜索时间也会相应增加 - 0km 选项适用于只想从特定机场出发/到达的用户 - 推荐：出发地300km、目的地300km，平衡搜索范围和速度 ### 第二步：执行搜索命令 ```bash python -m qvxianjiuguo.cli flight-search --departure "<出发地>" --destination "<目的地>" --date "<日期>" ``` **参数说明**： - `--departure-range <km>`: 出发地搜索范围（默认350km） - `--destination-range <km>`: 目的地搜索范围（默认300km） - `--no-direct-only`: 包含中转航班（默认只看直飞） ### 第三步：处理返回结果 **情况A：返回 `success: true`** ```json { "success": true, "flights": [...] } ``` → 按输出格式规范展示航班结果 **情况B：返回 `login_required: true`** ```json { "success": false, "login_required": true, "message": "需要登录去哪儿平台才能搜索" } ``` → **执行登录流程**（见下方） --- ## 登录流程（Cookie 方式） 当 `flight-search` 返回 `login_required: true` 时，按以下流程引导用户登录： ### 1. 启动 Chrome 浏览器 ```bash python -m qvxianjiuguo.chrome_launcher ``` ### 2. 引导用户手动登录 告诉用户： > 请在打开的 Chrome 浏览器中完成登录： > - 访问去哪儿官网 (qunar.com) > - 使用手机号或账号密码登录 > - 完成滑块验证等安全验证 > > **注意**：推荐使用小号登录，避免主账号被封 > > 登录完成后请告诉我"登录好了" ### 3. 用户确认后自动保存 Cookie **当用户回复"登录好了"、"已登录"、"登录成功"等确认信息后，立即执行：** ```bash python -m qvxianjiuguo.cli flight-save-cookie --platform qunar ``` ### 4. 保存成功后重新搜索 Cookie 保存成功后，自动重新执行 `flight-search` 命令搜索机票。 --- ## 输出格式规范 ### ⚠️ 重要：数据处理规则 **必须严格遵守以下规则，不得擅自修改或重新排序：** 1. **严格按照返回顺序展示**：CLI 返回的 `flights` 数组已按"直飞优先、价格从低到高"排序，**直接按顺序展示前 3 个**，不要重新排序 2. **直接使用返回数据**： - 使用 `rank` 字段作为序号（1, 2, 3） - 使用 `flight_type` 或 `is_direct_text` 字段显示航班类型 - 使用 `price` 字段显示价格 - 使用 `route` 字段显示航线 - 使用 `time_range` 字段显示时间范围 3. **只展示前 3 个航班**：即使返回更多，也只展示前 3 个 4. **不要遗漏航班**：确保按顺序展示，不得跳过任何航班 5. **尊重直飞筛选**：如果 `direct_only: true`，则所有返回的航班都是直飞；如果 `direct_only: false`，则可能包含中转航班 ### ⚠️ 关键：模糊搜索结果处理 **模糊搜索会返回多个机场的结果，必须正确处理：** 1. **不要按目的地过滤**：返回的航班可能降落在不同机场（如用户搜上海，但返回的航班可能降落在PVG/SHA/常州/杭州等） 2. **展示最便宜的航班**：前3个航班就是最便宜的，不管降落哪个机场 3. **降落机场提示**：如果 `arrival_code` 对应的城市与用户搜索的目的地不同，需要添加地面交通提示 **示例：用户搜索"成都飞上海"，返回结果可能包含：** - 成都→上海浦东(PVG) ¥600 - 成都→常州(CZX) ¥400 ← 更便宜，排在前面 - 成都→杭州(HGH) ¥450 **此时必须展示成都→常州 ¥400，并提示"降落在常州，距上海约180公里"** ### JSON 返回格式说明 ```json { "success": true, "direct_only": false, // false 表示包含中转航班 "sort_rule": "直飞优先，然后按价格从低到高", "total_flights_found": 15, "flights": [ { "rank": 1, "price": 584, "airline": "春秋航空", "flight_no": "9C8956", "departure_code": "CTU", "arrival_code": "PVG", "departure_time": "08:00", "arrival_time": "10:50", "duration": "2小时50分钟", "is_direct": true, "is_direct_text": "直飞", "flight_type": "直飞", "route": "CTU→PVG", "time_range": "08:00-10:50", "date": "2026-04-04" }, { "rank": 2, "price": 520, "airline": "东方航空", "is_direct": false, "is_direct_text": "中转(西安)", "flight_type": "中转(西安)", "transfer_info": "西安", "route": "CTU→SHA", ... } ] } ``` ### 直飞航班输出模板 ``` 🛫 <出发地> → <目的地>（<日期>） 💰 最低价航班（3个） 1️⃣ <airline> - ¥<price> [<flight_type>] 航班：<flight_no> 出发：<departure_code> <departure_time> 到达：<arrival_code> <arrival_time> 时长：<duration> [如到达机场不是目的地机场，添加：⚠️ 降落在XX机场，距目的地XX公里] 2️⃣ ...（按返回顺序） 3️⃣ ...（按返回顺序） ``` ### 中转航班输出模板（当 direct_only: false 时） ``` 🛫 <出发地> → <目的地>（<日期>） 💰 最低价航班（3个） 1️⃣ <airline> - ¥<price> [<flight_type>] 航班：<flight_no> 出发：<departure_code> <departure_time> 到达：<arrival_code> <arrival_time> 时长：<duration> [中转航班额外显示：🔄 中转：<transfer_info>] 2️⃣ ...（按返回顺序） 3️⃣ ...（按返回顺序） 📊 搜索详情 - 出发地机场：<departure_airports> - 目的地机场：<arrival_airports> - 共搜索：<total_combinations> 个组合 - 筛选：<direct_only 为 true 显示"仅直飞"，为 false 显示"包含中转"> 💡 推荐：<简短的购买建议> ``` ### 中转航班示例 ``` 🛫 成都 → 上海（4月4日） 💰 最低价航班（3个） 1️⃣ 春秋航空 - ¥584 [直飞] 航班：9C8956 出发：CTU 08:00 到达：PVG 10:50 时长：2小时50分钟 2️⃣ 东方航空 - ¥520 [中转(西安)] 航班：MU1234 出发：CTU 07:00 到达：SHA 14:30 时长：7小时30分钟 🔄 中转：西安 3️⃣ 南方航空 - ¥480 [中转(广州)] 航班：CZ5678 出发：TFU 06:30 到达：PVG 16:00 时长：9小时30分钟 🔄 中转：广州 📊 搜索详情 - 出发地机场：CTU, TFU, MIG - 目的地机场：SHA, PVG, HGH - 共搜索：9 个组合 - 筛选：包含中转 💡 推荐：春秋航空¥584直飞最方便，东方航空¥520中转西安稍便宜但时间较长。 ``` ### 错误示例（禁止） ❌ **错误**：自己重新排序、跳过航班、遗漏数据 ❌ **错误**：用户说直飞但展示了中转航班（应检查 `is_direct` 字段） ❌ **错误**：展示了第4个航班而非前3个 --- ## 示例对话 **用户**：帮我查4月4日成都到兰州的机票，去哪儿搜 **助手**：好的，我来帮您在去哪儿搜索成都到兰州的机票。 执行搜索： ```bash python -m qvxianjiuguo.cli flight-search \ --departure "成都" \ --destination "兰州" \ --date "2026-04-04" \ --platform qunar ``` --- 🛫 成都 → 兰州（4月4日） 💰 最低价航班（3个） 1️⃣ 深圳航空 - ¥905 航班：ZH8997 出发：成都天府机场(TFU) 12:45 到达：兰州中川机场(LHW) 14:20 时长：1小时35分钟 2️⃣ 四川航空 - ¥935 航班：3U8597 出发：成都天府机场(TFU) 08:30 到达：兰州中川机场(LHW) 10:05 时长：1小时35分钟 3️⃣ 东方航空 - ¥1020 航班：MU2475 出发：成都双流机场(CTU) 15:20 到达：兰州中川机场(LHW) 16:55 时长：1小时35分钟 📊 搜索详情 - 出发地机场：成都双流(CTU)、成都天府(TFU)、绵阳(MIG) - 目的地机场：兰州中川(LHW)、西宁(XNN) - 共搜索：3个出发机场 × 2个目的地机场 = 6个组合 💡 推荐：深圳航空¥905是最低价，中午出发时间合适，建议尽早预订。 --- **用户**：帮我查4月5日北京到秦皇岛的机票 **助手**： 🛫 北京 → 秦皇岛（4月5日） 💰 最低价航班（3个） 1️⃣ 河北航空 - ¥380 航班：NS3333 出发：北京大兴机场(PKX) 09:00 到达：唐山三女河机场(TVS) 10:15 时长：1小时15分钟 ⚠️ 降落在唐山机场，距秦皇岛约100公里，可乘大巴前往，约1.5小时 2️⃣ 中国国航 - ¥650 航班：CA8888 出发：北京首都机场(PEK) 14:30 到达：秦皇岛北戴河机场(BPE) 15:30 时长：1小时 3️⃣ 南方航空 - ¥720 航班：CZ6666 出发：北京大兴机场(PKX) 18:00 到达：秦皇岛北戴河机场(BPE) 19:00 时长：1小时 📊 搜索详情 - 出发地机场：北京首都(PEK)、北京大兴(PKX)、天津滨海(TSN) - 目的地机场：秦皇岛北戴河(BPE)、唐山三女河(TVS) - 共搜索：3个出发机场 × 2个目的地机场 = 6个组合 💡 推荐：河北航空¥380最便宜，但需要从唐山坐大巴到秦皇岛。如果赶时间，国航¥650直飞秦皇岛更方便。 --- ## 地面交通参考 当航班降落在临近机场时，提供以下地面交通指引： ### 常见临近机场交通 | 到达机场 | 目的地 | 交通方式 | 时间 | |----------|--------|----------|------| | 唐山(TVS) | 秦皇岛 | 大巴 | 1.5小时 | | 天津(TSN) | 北京 | 高铁 | 35分钟 | | 石家庄(SJW) | 北京 | 高铁 | 1小时 | | 广州(CAN) | 深圳 | 高铁 | 30分钟 | | 深圳(SZX) | 广州 | 高铁 | 30分钟 | | 成都(CTU/TFU) | 重庆 | 高铁 | 1.5小时 | | 重庆(CKG) | 成都 | 高铁 | 1.5小时 | | 杭州(HGH) | 上海 | 高铁 | 1小时 | | 南京(NKG) | 上海 | 高铁 | 1小时 | | 西安(XIY) | 郑州 | 高铁 | 2小时 | ### 提示格式 当航班到达机场与目的地不同时，使用以下格式提示： ``` ⚠️ 降落在<机场名>，距<目的地>约<距离>公里，可乘<交通方式>前往，约<时间> ``` --- ## CLI 命令参考 ### flight-search（搜索机票） ```bash python -m qvxianjiuguo.cli flight-search \ --departure "重庆" \ --destination "南京" \ --date "2026-04-04" ``` | 参数 | 必需 | 说明 | 默认值 | |------|------|------|--------| | --departure | 是 | 出发地（城市名） | - | | --destination | 是 | 目的地（城市名） | - | | --date | 是 | 出发日期(YYYY-MM-DD) | - | | --platform | 否 | 平台：qunar/ctrip/fliggy/ly/all | qunar | | --departure-range | 否 | 出发地范围(km) | 350 | | --destination-range | 否 | 目的地范围(km) | 300 | | --no-direct-only | 否 | 包含中转航班 | 默认只看直飞 | ### flight-save-cookie（保存 Cookie） ```bash python -m qvxianjiuguo.cli flight-save-cookie --platform qunar ``` ### flight-load-cookie（加载 Cookie） ```bash python -m qvxianjiuguo.cli flight-load-cookie --platform qunar ``` ### flight-check-login（检查登录状态） ```bash python -m qvxianjiuguo.cli flight-check-login --platform qunar ``` ### flight-lookup（查询机场） ```bash python -m qvxianjiuguo.cli flight-lookup --city "重庆" ``` ### flight-nearby（附近机场） ```bash python -m qvxianjiuguo.cli flight-nearby --airport "CKG" --range 300 ``` --- ## 平台说明 | 平台 | 代码 | 登录支持 | 搜索支持 | 说明 | |------|------|----------|----------|------| | 去哪儿 | qunar | ✅ Cookie 方式 | ✅ 完整支持 | **默认平台**，推荐使用 | | 携程 | ctrip | ✅ Cookie 方式 | ⚠️ 基础支持 | 不保证持续适配 | | 飞猪 | fliggy | ✅ Cookie 方式 | ⚠️ 基础支持 | 不保证持续适配 | | 同程 | ly | ✅ Cookie 方式 | ⚠️ 基础支持 | 不保证持续适配 | **重要说明**： - **去哪儿**是主要支持平台，会持续维护和适配 - **携程、飞猪、同程**仅提供基础支持，**不保证持续适配** - 如遇其他平台搜索失败，建议切换到去哪儿平台 --- ## 注意事项 1. **登录状态保持**： - Chrome 配置目录：`~/.qvxianjiuguo/chrome-profile`（浏览器自动管理） - Cookie 备份文件：`~/.qvxian/qunar_cookies.json`（手动保存） - 建议：登录后执行 `flight-save-cookie` 命令备份登录状态 2. **不要转去互联网搜索**：本技能已实现完整搜索功能 3. **默认直飞**：默认只搜索直飞航班，如需中转请明确告知 4. **安全第一**：强烈建议使用小号，购票请在手机官方APP完成 5. **不计算总费用**：只显示机票价格，不加上地面交通费用 6. **不推荐地铁**：地面交通只提高铁、大巴等跨城交通


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