关于 google-flights
通过 agent-browser 查询 Google Flights 当前机票价格、时刻和余位的技能。支持舱位与行程比较,也可提取预订链接,但不执行购票。
主要功能
- 01查询当前机票价格与时刻
- 02比较经济舱和商务舱
- 03支持往返与单程搜索
- 04复杂搜索时使用交互式备用流程
- 05提取预订平台链接
- 06以紧凑列表展示结果
适用场景
- 01比较指定日期的城市间票价
- 02查询航班余位和时刻
- 03比较经济舱与商务舱价格
- 04获取所选航班的预订链接
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ skillhq/ flight-search --skill google-flights安装后在 Claude Code 中输入/google-flights确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
LICENSEREADME.md.github/workflows/publish.ymlreferences/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 往返 |
| 始终点击建议项,切勿按 Enter | Enter 对自动补全不可靠 |
| 每次交互后重新获取快照 | DOM 变化会使引用失效 |
| “Done”不等于搜索 | 日历中的 Done 只会关闭日期选择器 |
| 展示结果后提供预订链接 | 用户几乎总是想预订——主动提示他们 |
保持结果会话处于活动状态;显示结果后关闭 biz | 预订点击需要结果会话;biz 仅用于增量更新 |
故障排除
同意弹窗:在快照中点击“Accept all”或“Reject all”。
URL 快捷路径无效:改用交互式操作。某些地区或语言环境对 ?q= 的处理方式不同。
没有结果:确认机场(检查组合框标签)、日期在未来,或等待更长时间。
机器人检测 / CAPTCHA:告知用户。请勿解决 CAPTCHA。稍等片刻后重试。
深入参考
请参阅 references/interaction-patterns.md,了解:
- 完整的注释版操作演练(每条命令及预期输出)
- 机场自动补全的故障模式及恢复方法
- 日期选择器的日历导航
- 多城市搜索
- 滚动查看更多结果