mcpField
G
google-flights

google-flights

github.com/skillhq生产力343.0k 次安装28 周前更新
代码仓库

关于 google-flights

通过 agent-browser 查询 Google Flights 当前机票价格、时刻和余位的技能。支持舱位与行程比较,也可提取预订链接,但不执行购票。

主要功能

  1. 01查询当前机票价格与时刻
  2. 02比较经济舱和商务舱
  3. 03支持往返与单程搜索
  4. 04复杂搜索时使用交互式备用流程
  5. 05提取预订平台链接
  6. 06以紧凑列表展示结果

适用场景

  1. 01比较指定日期的城市间票价
  2. 02查询航班余位和时刻
  3. 03比较经济舱与商务舱价格
  4. 04获取所选航班的预订链接

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/skillhq/flight-search --skill google-flights

安装后在 Claude Code 中输入/google-flights确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

LICENSE
README.md
.github/workflows/
publish.yml
references/
interaction-patterns.md

详细介绍

Google Flights 搜索

通过 agent-browser 搜索 Google Flights,查找航班价格、时刻表和余票情况。

何时使用

  • 用户要求搜索、查找或比较航班或机票价格
  • 用户想了解城市间的航班价格
  • 用户询问航班时刻表或余票情况
  • 用户想查找特定日期的最便宜航班

何时不使用

  • 完成购买:此技能可查找航班并提取预订链接,但不要尝试在预订网站上完成购买。
  • 酒店/租车:搜索非航班类旅行时,请使用其他工具。
  • 历史价格数据:Google Flights 显示当前价格,不提供历史价格。

会话约定

  • 仅经济舱(国内航班默认):--session flights
  • 经济舱 + 商务舱对比(国际航班或用户提出要求时):--session econ 和 --session biz
  • 交互式备用方案:--session flights

国内与国际航班判定

**国内航班默认仅显示经济舱。**美国国内航线的商务舱通常贵 3–5 倍,除非用户要求,否则很少值得展示。

如果出发地和目的地都是美国机场,则属于国内航班。常见的美国 IATA 代码:ATL、BOS、BWI、CLT、DEN、DFW、DTW、EWR、FLL、HNL、IAD、IAH、JFK、LAS、LAX、LGA、MCO、MDW、MIA、MSP、OAK、ORD、PHL、PHX、PDX、SAN、SEA、SFO、SJC、SLC、TPA。

何时显示商务舱:

  • 国际航班(始终显示经济舱 + 商务舱对比)
  • 用户明确要求“商务舱”或“business”
  • 用户要求“比较舱位”或“显示所有舱位”

何时不显示商务舱:

  • 美国国内航班(默认仅显示经济舱)
  • 用户明确要求“经济舱”或“最便宜”

快速路径:基于 URL 的搜索(推荐)

构造包含自然语言 ?q= 参数的 URL。直接加载结果——总共 3 条命令。

URL 模板
https://www.google.com/travel/flights?q=Flights+from+{ORIGIN}+to+{DEST}+on+{DATE}[+returning+{DATE}][+one+way][+business+class][+N+passengers]
默认:仅经济舱(国内航班)

对于国内航班,运行单个会话——总共调用工具 2 次:

# Open and wait in one call
agent-browser --session flights open "https://www.google.com/travel/flights?q=Flights+from+MIA+to+SFO+on+2026-04-28+returning+2026-04-30" && agent-browser --session flights wait --load networkidle

# Snapshot results
agent-browser --session flights snapshot -i
# Keep session alive for booking links

然后以精简列表格式呈现结果(见下文“输出格式”部分)。

经济舱 + 商务舱对比(国际航班)

对于国际航班,并行运行两个会话以显示价格差异:

# Open both and wait in parallel
(agent-browser --session econ open "https://www.google.com/travel/flights?q=Flights+from+BKK+to+NRT+on+2026-03-20+returning+2026-03-27" && agent-browser --session econ wait --load networkidle) &
(agent-browser --session biz open "https://www.google.com/travel/flights?q=Flights+from+BKK+to+NRT+on+2026-03-20+returning+2026-03-27+business+class" && agent-browser --session biz wait --load networkidle) &
wait

# Snapshot both in parallel
agent-browser --session econ snapshot -i &
agent-browser --session biz snapshot -i &
wait

# Close biz (only needed for delta); keep econ alive for booking links
agent-browser --session biz close

匹配逻辑:按航空公司名称和出发时间匹配航班。并非所有经济舱航班都有对应的商务舱航班(ZIPAIR、Air Japan 等廉价航空公司不提供商务舱)。没有商务舱匹配项时显示“-”。

提示:如果某家航空公司出现在商务舱结果中,却未出现在经济舱结果中(例如 Philippine Airlines),它可能在该航线上仅提供商务舱票价。请将其列出,并在经济舱栏标注“-”。

单程

在 URL 中添加 +one+way。对于国际航班,并行运行经济舱和商务舱搜索:

# Domestic (economy only)
agent-browser --session flights open "https://www.google.com/travel/flights?q=Flights+from+LAX+to+JFK+on+2026-04-15+one+way" && agent-browser --session flights wait --load networkidle

# International (economy + business comparison)
(agent-browser --session econ open "https://www.google.com/travel/flights?q=Flights+from+LAX+to+LHR+on+2026-04-15+one+way" && agent-browser --session econ wait --load networkidle) &
(agent-browser --session biz open "https://www.google.com/travel/flights?q=Flights+from+LAX+to+LHR+on+2026-04-15+one+way+business+class" && agent-browser --session biz wait --load networkidle) &
wait
用户仅要求商务舱时

如果用户明确要求商务舱(而不是舱位对比),则只运行商务舱会话:

agent-browser --session flights open "https://www.google.com/travel/flights?q=Flights+from+JFK+to+CDG+on+2026-06-01+returning+2026-06-15+business+class"
agent-browser --session flights wait --load networkidle
agent-browser --session flights snapshot -i
# Keep session alive for booking links
头等舱/多名乘客
agent-browser --session flights open "https://www.google.com/travel/flights?q=Flights+from+JFK+to+CDG+on+2026-06-01+returning+2026-06-15+first+class+2+adults+1+child"
agent-browser --session flights wait --load networkidle
agent-browser --session flights snapshot -i
# Keep session alive for booking links
可通过 URL 使用的功能
功能URL 语法状态
往返+returning+YYYY-MM-DD可用
单程+one+way可用
商务舱+business+class可用
头等舱+first+class可用
N 名乘客(成人)+N+passengers可用
成人 + 儿童+2+adults+1+child可用
IATA 代码BKK、NRT、LAX可用
城市名称Bangkok、Tokyo可用
YYYY-MM-DD 格式的日期2026-03-20可用(最佳)
自然语言日期March+20可用
超级经济舱+premium+economy不可用
多城市N/A不可用
需要交互式备用方案的情况
  • 超级经济舱
  • 多城市行程(3 段或以上航程)
  • 婴儿乘客(区分占座与抱坐)
  • URL 未能加载结果(同意横幅、CAPTCHA、区域设置问题)
从快照中读取结果

每个航班都显示为一个 link 元素,并附有完整描述:

link "From 20508 Thai baht round trip total. Nonstop flight with Air Japan.
     Leaves Suvarnabhumi Airport at 12:10 AM on Friday, March 20 and arrives
     at Narita International Airport at 8:15 AM on Friday, March 20.
     Total duration 6 hr 5 min. Select flight"

将经济舱和商务舱快照解析为紧凑列表格式:

1. JAL — Nonstop · 5h 55m
   8:05 AM → 4:00 PM
   Economy: THB 23,255 · Business: THB 65,915 (+183%)

2. THAI — Nonstop · 5h 50m
   10:30 PM → 6:20 AM+1
   Economy: THB 28,165 · Business: THB 75,000 (+166%)

3. Air Japan — Nonstop · 6h 05m
   12:10 AM → 8:15 AM
   Economy: THB 20,515 · Business: —

4. ZIPAIR — Nonstop · 5h 45m
   11:45 PM → 7:30 AM+1
   Economy: THB 21,425 · Business: —

匹配:按航空公司和出发时间配对经济舱与商务舱结果。没有商务舱的廉价航空会显示“—”。如果 Google 显示“Best”或“Cheapest”标签,也要包含。

预订选项交接

展示结果表后,始终提供预订链接:“需要这些航班中任意一个的预订链接吗?告诉我是哪一个即可。”

用户选定航班后,通过点击快照中的航班 link 元素提取预订选项。Google Flights 会显示一个面板,其中列出预订服务商(航空公司、OTA),每项均包含价格和一个指向预订网站的“Continue”链接。

工作流
# User picks flight #N — click the corresponding link from the results snapshot
# Use --session flights (domestic) or --session econ (international comparison)
agent-browser --session flights click @eN
agent-browser --session flights wait 3000
agent-browser --session flights snapshot -i

预订面板快照会显示如下 link 元素:

link "Book with Emirates THB 28,960" → href="https://..."
link "Book with Booking.com THB 29,512" → href="https://..."
link "Book with Teaflight THB 28,171" → href="https://..."

从每个链接中提取服务商名称、价格和 href URL。

输出格式
📋 Booking Options for JAL BKK→NRT (5h 55m, Nonstop)

| Provider | Price | Book |
|----------|-------|------|
| Emirates | THB 28,960 | [Continue](https://...) |
| Booking.com | THB 29,512 | [Continue](https://...) |
| Teaflight | THB 28,171 | [Continue](https://...) |
注意事项
  • 会话生命周期:为获取预订链接,请保持结果会话(flights 或 econ)处于活动状态。进行国际航线对比时,提取价格后立即关闭 --session biz。用户获取预订链接或拒绝后,关闭结果会话。
  • 如果预订面板加载失败:重新获取快照,并等待更长时间后再试。

交互式工作流(备用方案)

用于多城市、超级经济舱,或 URL 路径失效时。

打开并获取快照
agent-browser --session flights open "https://www.google.com/travel/flights"
agent-browser --session flights wait 3000
agent-browser --session flights snapshot -i

如果出现同意横幅,请先点击“Accept all”或“Reject all”。

设置行程类型(如果不是往返行程)
agent-browser --session flights click @eN   # Trip type combobox ("Round trip")
agent-browser --session flights snapshot -i
agent-browser --session flights click @eN   # "One way" or "Multi-city"
agent-browser --session flights wait 1000
agent-browser --session flights snapshot -i
设置舱位等级 / 乘客(如果不是默认值)

舱位等级:

agent-browser --session flights click @eN   # Cabin class combobox
agent-browser --session flights snapshot -i
agent-browser --session flights click @eN   # Select class
agent-browser --session flights wait 1000
agent-browser --session flights snapshot -i

乘客:

agent-browser --session flights click @eN   # Passengers button
agent-browser --session flights snapshot -i
agent-browser --session flights click @eN   # "+" for Adults/Children/Infants
agent-browser --session flights snapshot -i
agent-browser --session flights click @eN   # "Done"
agent-browser --session flights wait 1000
agent-browser --session flights snapshot -i
输入机场(出发地或目的地)
agent-browser --session flights click @eN   # Combobox field
agent-browser --session flights wait 1000
agent-browser --session flights snapshot -i
agent-browser --session flights fill @eN "BKK"
agent-browser --session flights wait 2000   # CRITICAL: wait for autocomplete
agent-browser --session flights snapshot -i
agent-browser --session flights click @eN   # Click suggestion (NEVER press Enter)
agent-browser --session flights wait 1000
agent-browser --session flights snapshot -i
设置日期
agent-browser --session flights click @eN   # Date textbox
agent-browser --session flights wait 1000
agent-browser --session flights snapshot -i
# Calendar shows dates as buttons: "Friday, March 20, 2026"
agent-browser --session flights click @eN   # Click target date
agent-browser --session flights wait 500
agent-browser --session flights snapshot -i
# Click "Done" to close calendar
agent-browser --session flights click @eN   # "Done" button
agent-browser --session flights wait 1000
agent-browser --session flights snapshot -i
搜索

“Done”只会关闭日历。你必须另外点击“Search”。

agent-browser --session flights click @eN   # "Search" button
agent-browser --session flights wait --load networkidle
agent-browser --session flights snapshot -i
# Keep session alive for booking links
多城市行程说明

选择“Multi-city”行程类型后,表单会为每一段行程显示一行:

  • 每段行程包含:出发地组合框、目的地组合框、出发日期文本框
  • 出发地会自动填入上一段行程的目的地
  • 点击“Add flight”可添加更多行程(默认显示 2 段)
  • 点击“Remove flight from X to Y”按钮可删除行程
  • 结果显示第一段行程的航班,价格反映多城市行程的总费用

按顺序填写每段行程的目的地和日期,然后点击“Search”。

输出格式

始终使用紧凑列表格式,不要使用 Markdown 表格。输出通常会显示在聊天机器人界面(如 Telegram)中,表格显示效果不佳。

经济舱 + 商务舱对比(默认)
1. JAL — Nonstop · 5h 55m
   8:05 AM → 4:00 PM
   Economy: THB 23,255 · Business: THB 65,915 (+183%)

2. THAI — Nonstop · 5h 50m
   10:30 PM → 6:20 AM+1
   Economy: THB 28,165 · Business: THB 75,000 (+166%)

3. Air Japan — Nonstop · 6h 05m
   12:10 AM → 8:15 AM
   Economy: THB 20,515 · Business: —
仅经济舱
1. JAL — Nonstop · 5h 55m
   8:05 AM → 4:00 PM · THB 23,255

2. THAI — Nonstop · 5h 50m
   10:30 PM → 6:20 AM+1 · THB 28,165
格式规则
  • 每个编号区块列出一个航班,航班之间空一行
  • 第 1 行:航空公司 — 经停次数 · 时长
  • 第 2 行:出发 → 到达时间
  • 第 3 行:价格(经济舱价格;如适用,附商务舱价差)
  • 航班列表外不要使用代码块——纯文本更易阅读
  • 将“最佳性价比”推荐作为列表后的纯文本段落保留

关键规则

规则原因
优先使用 URL 快捷路径只需调用工具 2 次(国内)或 3 次(国际),而交互式操作需要 15 次以上
使用 && 串联 open 和 wait消除工具调用之间的往返
国内航班跳过商务舱美国国内商务舱价格贵 3 到 5 倍,除非用户提出要求,否则很少有用
使用 & + wait 并行获取快照国际航班的两个快照会并发运行
使用 wait --load networkidle比固定的 wait 5000 更智能——网络空闲后即返回
机场字段使用 fill,而非 type会先清除已有文本
输入机场代码后等待 2 秒自动补全需要一次 API 往返
始终点击建议项,切勿按 EnterEnter 对自动补全不可靠
每次交互后重新获取快照DOM 变化会使引用失效
“Done”不等于搜索日历中的 Done 只会关闭日期选择器
展示结果后提供预订链接用户几乎总是想预订——主动提示他们
保持结果会话处于活动状态;显示结果后关闭 biz预订点击需要结果会话;biz 仅用于增量更新

故障排除

同意弹窗:在快照中点击“Accept all”或“Reject all”。

URL 快捷路径无效:改用交互式操作。某些地区或语言环境对 ?q= 的处理方式不同。

没有结果:确认机场(检查组合框标签)、日期在未来,或等待更长时间。

机器人检测 / CAPTCHA:告知用户。请勿解决 CAPTCHA。稍等片刻后重试。

深入参考

请参阅 references/interaction-patterns.md,了解:

  • 完整的注释版操作演练(每条命令及预期输出)
  • 机场自动补全的故障模式及恢复方法
  • 日期选择器的日历导航
  • 多城市搜索
  • 滚动查看更多结果

评论

支持 Markdown