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。

ビジネスクラスを表示する場合:

  • 国際線(常にエコノミー + ビジネスの比較を表示)
  • ユーザーが明示的に「ビジネスクラス」または「ビジネス」を求めたとき
  • ユーザーが「客室クラスを比較」または「すべてのクラスを表示」を求めたとき

ビジネスクラスを省略する場合:

  • 米国国内線(デフォルトではエコノミーのみ)
  • ユーザーが明示的に「エコノミー」または「最安」を求めたとき

ファストパス: 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 を参照してください:

  • 注釈付きの完全なウォークスルー(すべてのコマンド + 期待される出力)
  • 空港オートコンプリートの失敗モードと復旧
  • 日付ピッカーのカレンダーナビゲーション
  • 複数都市検索
  • より多くの結果を表示するためのスクロール

コメント