关于 flight-search-strategy
面向 Agent 的机票搜索策略技能,规定如何跨现金票价、里程票和目的地数据源搜索,并比较往返与单程组合、处理来源限制。重点是并行搜索及按来源判断数据可靠性。
主要功能
- 01并行搜索多个数据源
- 02纳入里程票可用性查询
- 03比较往返票与单程组合
- 04为国际航线搜索多个市场
- 05应用数据源可靠性指南
- 06监控 Southwest 预订票价变化
适用场景
- 01规划国际行程的搜索方案
- 02比较往返票与混合航司票价
- 03检查 Southwest 票价是否变动
MCP 相关
该技能将 Skiplagged 和 Kiwi.com 列为机票搜索的 MCP 来源,建议调用其工具,并与其他现金票价和里程票来源的结果合并。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ borski/ travel-hacking-toolkit --skill flight-search-strategy安装后在 Claude Code 中输入/flight-search-strategy确认已加载。
详细介绍
航班搜索策略
每次搜索航班时都要搜索所有来源
这不是让你择一使用的列表。每个来源返回的结果、价格和航空公司都不同。漏掉一个来源,就意味着少了可选项。优先级顺序决定的是来源结果不一致时该相信哪个价格,而不是可以跳过哪些来源。
| 优先级 | 来源 | 优势 | 局限 |
|---|---|---|---|
| 1 | Duffel(skill) | 现金价格最准确。提供真实的 GDS 票价舱位数据。可预订。 | 不支持 Southwest。没有奖励机票价格。报价 15-30 分钟后过期。 |
| 2 | Ignav(skill) | 快速 REST API。可选择市场进行价格套利。免费。 | 不支持 Southwest。没有奖励机票价格。 |
| 3 | Google Flights(skill,agent-browser) | 覆盖所有航空公司,包括 Southwest 的现金价格。免费。可比较经济舱和商务舱。 | 价格可能高于 GDS。没有积分价格。 |
| 4 | Skiplagged(MCP) | 隐藏城市票价。无需配置。 | 不支持 Southwest。在小型市场上结果可能杂乱。 |
| 5 | Kiwi.com(MCP) | 虚拟联程(巧妙的跨航空公司航线)。无需配置。 | 在小型市场上会返回无用结果。不支持 Southwest。 |
| 6 | Seats.aero(skill) | 覆盖 25+ 个计划的奖励航班可用情况。是积分搜索的首选。 | 数据经过缓存,并非实时。没有现金价格。不支持 Southwest。 |
| 7 | SerpAPI(skill,可选) | 搜索 Google Hotels。发现目的地(Google Travel Explore)。 | 不用于航班搜索(价格偏高)。仅用于酒店和“我该去哪儿?”这类查询。 |
| 8 | Southwest(skill,Patchright) | 票价舱位、积分价格、Companion Pass。涵盖全部 4 种票价舱位,支持现金和积分。 | 预构建的 Docker 映像:ghcr.io/borski/sw-fares。或使用本地 Patchright(有头模式)。每次搜索约需 20 秒。 |
标准航班搜索工作流
并行运行以下所有来源: Duffel + Ignav + Google Flights + Skiplagged + Kiwi。
Skiplagged 和 Kiwi 是无需密钥的 MCP 服务——每个正常启动的会话都可以使用。声称 MCP 不可用之前,务必先尝试调用工具;切勿用临时编写的浏览器抓取来替代这些来源(参见 fallback-and-resilience)。
比较奖励机票时,始终加入 Seats.aero。如果 Southwest 执飞该航线,始终运行 Southwest skill。
不要跳过任何来源。不要假定某个来源涵盖所有信息。汇总并展示所有来源的结果,突出显示最佳选项,无论结果来自哪个来源。
如需统一比较,请使用 compare-flights skill,它会并行协调上述所有来源,并进行转点优化。
往返与单程组合
如果行程有返程日期,就主动为两种组合都查询价格,无需等人提出:
- 所有来源的往返票价(Duffel、Ignav、Kiwi、Skiplagged 和 Google Flights 都会提供往返报价)。
- 两张单程票,分别独立搜索——这样也能找到往返搜索看不到的混合组合(去程由航空公司 A 执飞,返程由航空公司 B 执飞)。
在同一批并行搜索中完成所有查询;这只是多两次搜索,不需要再进行第二轮。
哪种组合更划算取决于航线,因此切勿想当然:
- 国际航线的传统航空公司往往往返票更划算,因为往返票价通常低于两张单程票的总价。
- 国内航线、低成本航空公司,以及 Southwest 执飞的任何航线,往往是两张单程票更划算(SW 按单程为每段定价)。此外,单程票更灵活:每段都可以独立更改或取消。
- 去返程由不同航空公司促销日历定价时,混合航空公司的组合经常比前两种都划算。
明确给出结论和价差:“往返票 $842,最优单程组合 $918——订往返票,可省 $76”(反之亦然)。如果价差低于约 $50,建议往返票之前,先说明分开购票的灵活性优势。
专门针对 Southwest
使用 southwest 技能:
docker run --rm ghcr.io/borski/sw-fares --origin SJC --dest DEN --depart 2026-05-15 --points
或者:
python3 skills/southwest/scripts/search_fares.py --origin SJC --dest DEN --depart 2026-05-15 --points
返回全部 4 个票价等级(Wanna Get Away、WGA+、Anytime、Business Select),并提供现金和积分价格。
google-flights 技能可作为更快的备用方案,但仅适用于 Southwest 现金价格(不提供票价等级细分或积分价格)。
监控现有的 Southwest 预订
docker run --rm -e SW_USERNAME -e SW_PASSWORD \
ghcr.io/borski/sw-fares change --conf ABC123 --first Jane --last Doe --json
登录,选择去程和返程,并显示每个可选航班的票价差额。负差额 = 省钱机会。使用 --list 查找所有即将出行的确认号码。只读,不会修改预订。
市场选择策略
不同国家/地区市场对同一条航线会返回不同价格。从泰国(&gl=TH)搜索,与从美国(&gl=US)搜索相比,可能省下数百美元。
搜索国际航班时,务必尝试多个市场:
- 先尝试出发国/地区市场(例如,从美国出发的航班使用
&gl=US) - 再尝试目的地国家/地区市场(例如,飞往日本的航班使用
&gl=JP) - 尝试更多市场前先询问用户(例如,第三国/地区或 VPN 市场)
适用于:
- 通过
&gl=XXURL 参数使用 google-flights - 在搜索负载的
market字段中使用 ignav
Duffel 和 SerpAPI 不支持市场选择。
来源准确性优先级
来源提供的现金价格不一致时:
Duffel > 航空公司网站 > SerpAPI > Skiplagged/Kiwi
- Duffel 按票价等级返回真实的 GDS 价格。 这些价格可用于预订。测试结果:Duffel 显示基础舱为 $271、主舱为 $325。SerpAPI 对同一航班显示 $541。多个行程的差价都相当稳定。
- SerpAPI(Google Flights)会报出偏高价格。 它经常显示“主舱”或捆绑票价,而不是最便宜且可预订的票价等级。它适用于 Google Hotels 和目的地探索,但不要将其作为航班现金价格的唯一可信来源。
- Kiwi 在小型市场会返回垃圾结果。 对飞往小型机场的国内航线,应严格筛选,或跳过 Kiwi。
常见失败模式
- 只运行一个来源,错过其他来源提供的更好选择。
- 认为 SerpAPI 的价格可用于预订(这些价格通常偏高)。
- 因为“没有 GDS 提供 Southwest 航班”而跳过 Southwest——这正是需要 SW 技能的原因。
- 因为用户“没有那些积分”而跳过 Seats.aero——用户可能可以通过转点获得这些积分,参见
partner-awards技能。 - 搜索国际航线时只搜索一个市场(至少尝试 2 个市场)。