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。
ビジネスクラスを表示する場合:
- 国際線(常にエコノミー + ビジネスの比較を表示)
- ユーザーが明示的に「ビジネスクラス」または「ビジネス」を求めたとき
- ユーザーが「客室クラスを比較」または「すべてのクラスを表示」を求めたとき
ビジネスクラスを省略する場合:
- 米国国内線(デフォルトではエコノミーのみ)
- ユーザーが明示的に「エコノミー」または「最安」を求めたとき
ファストパス: 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
その後、結果をコンパクトなリスト形式で提示します(以下の「出力形式」セクションを参照)。
エコノミー + ビジネスの比較(国際線)
国際線の場合、価格差を示すために 2 つのセッションを並行して実行します:
# 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 などの格安航空会社はビジネスを提供していません)。ビジネスの一致がない場合は「-」と表示します。
ヒント: ある航空会社がビジネスの結果に現れるがエコノミーには現れない場合(例: フィリピン航空)、その路線ではビジネスのみの価格設定を行っている可能性があります。エコノミーには「-」を付けて含めてください。
片道
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」旅行タイプを選択すると、フォームは各区間ごとに 1 行を表示します:
- 各区間には、出発地コンボボックス、目的地コンボボックス、出発日テキストボックスがあります
- 出発地は前の区間の目的地から自動入力されます
- 「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 つのフライト、フライト間には空行
- 1 行目: 航空会社 — 経由地 · 所要時間
- 2 行目: 出発 → 到着時刻
- 3 行目: 価格 (エコノミー、該当する場合はビジネスの差額)
- フライトリストの周囲にコードブロックを付けない — プレーンテキストが最も読みやすいです
- 「Best value」の推奨は、リストの後にプレーンテキストの段落として記載します
重要なルール
| ルール | 理由 |
|---|---|
| URL ファストパスを優先する | ツール呼び出し 2 回(国内)または 3 回(国際)で済み、対話的な 15 回以上とは対照的 |
&& で open+wait を連結する | ツール呼び出し間のラウンドトリップを排除できる |
| 国内ではビジネスクラスをスキップする | 米国国内のビジネスクラスは価格が 3〜5 倍で、求められない限りほとんど役に立たない |
& + wait でスナップショットを並列化する | 国際線では両方のスナップショットが同時に実行される |
wait --load networkidle | 固定の wait 5000 よりも賢く、ネットワークが落ち着いた時点で戻る |
空港には type ではなく fill を使う | 既存のテキストを先にクリアする |
| 空港コードを入力した後は 2 秒待つ | オートコンプリートには API ラウンドトリップが必要 |
| 候補は常にクリックし、Enter は決して使わない | Enter はオートコンプリートでは信頼できない |
| 操作のたびに再スナップショットする | DOM の変更で参照が無効になる |
| 「Done」≠ 検索 | カレンダーの Done はピッカーを閉じるだけ |
| 結果を提示した後は予約リンクを案内する | ユーザーはほぼ常に予約を望むため、促す |
結果セッションは開いたままにし、結果取得後に biz を閉じる | 予約クリックには結果セッションが必要で、biz は差分のためだけに使う |
トラブルシューティング
同意ポップアップ: スナップショット内の「Accept all」または「Reject all」をクリックします。
URL ファストパスが機能しなかった場合: 対話的な方法にフォールバックします。一部の地域・ロケールでは ?q= の扱いが異なります。
結果がない場合: 空港を確認し(コンボボックスのラベルをチェック)、日付が未来であることを確認するか、より長く待ちます。
ボット検出 / CAPTCHA: ユーザーに伝えます。CAPTCHA を解いてはいけません。少し待ってから再試行します。
詳細リファレンス
以下については references/interaction-patterns.md を参照してください:
- 注釈付きの完全なウォークスルー(すべてのコマンド + 期待される出力)
- 空港オートコンプリートの失敗モードと復旧
- 日付ピッカーのカレンダーナビゲーション
- 複数都市検索
- より多くの結果を表示するためのスクロール