mcpField
P
pricewin-deal-finder

pricewin-deal-finder

github.com/price-win生産性26.9k 回インストール11 週間前に更新
リポジトリ

pricewin-deal-finder について

pricewin-deal-finderは、最大4つの予約サイトのホテル料金を比較し、順位付きの候補と予約リンクを返すスキルです。都市、日程、人数を指定した宿泊検索を行うエージェント向けです。

主な機能

  1. 01最大4サイトの料金比較
  2. 02お得・最安・品質重視の候補を順位付け
  3. 031泊あたりの米ドル価格表示
  4. 04直接予約リンクの提示
  5. 05世界各都市の検索

活用シーン

  1. 01旅行日程に合わせたホテル料金比較
  2. 02指定日程で最安ホテルを検索
  3. 031泊の予算内で宿泊先を探す

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/price-win/pricewin-skills-hub --skill pricewin-deal-finder

インストール後、Claude Code で/pricewin-deal-finderを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

install.sh
package-lock.json
package.json
bin/
browse.js
daemon.js
search.js
lib/
browser-state.js
dom-extract.js
selector-cache.js
snapshot.js

詳細

PriceWin Deal Finder

1 つのコマンドで Booking.com、Agoda、Google Hotels、OpenTravel の最新ホテル料金を比較 — そのうえ、コストパフォーマンス、最安値、品質の各部門でランキングしたおすすめと、直接予約できるリンクが得られます。

本当の最安料金を見つけるために、OTA のタブを 5 つも開く必要はありません。エージェントに 「8 月 12〜15 日、東京で 2 名で泊まれるホテルを探して」 と頼むだけで、このスキルが 30〜60 秒ほどで、見やすくランキングされた比較結果を返します(キャッシュ済みの都市の場合)。

次のような質問には、このスキルを実行してください:

  • 「<city> で <dates> に泊まれる最安のホテルは?」
  • 「このホテルは Booking.com と Agoda のどちらが安い?」
  • 「<city> のホテル料金を <N> 名で比較して。」
  • 「<city> で 1 泊 $<X> 未満のホテルを探して。」
  • 「<dates> に <landmark> の近くで泊まるのに、最もコストパフォーマンスのよい場所は?」

どの質問でも、以下と同じ回答を 1 つのコマンドで取得できます。確認のやり取りは不要です。

1 つのコマンドで得られるもの:

  • 🥇 コストパフォーマンス · 🥈 最安値 · 🥉 品質 — 横並びで選定
  • 最大 4 つの情報源から取得した、USD に換算済みの実際の 1 泊料金
  • 各ホテルの最安 OTA へ直接移動できるクリック可能な予約リンク
  • ステルス機能付き Patchright デーモンにより、ボット対策が強化された都市(上海、杭州、バンコクなど)を含む世界中のあらゆる都市に対応
  • API キーも MCP サーバーも不要 — 必要なのは node/npx だけです

結果の例:

🏨 Tokyo • Aug 12–15 • 3 nights • 2 guests
━━━━━━━━━━━━━━━━━━━━
🥇 BEST VALUE
Shinjuku Granbell Hotel
  ✅ agoda      💰 $118/night
     booking    💰 $131/night
     → Save $13 vs Booking
🥈 CHEAPEST
APA Hotel Shinjuku
  ✅ google     💰 $94/night
📊 18 hotels | agoda, booking, google, opentravel • prices in USD

インストール:

npx skills add https://github.com/Price-Win/pricewin-skills-hub --skill pricewin-deal-finder

🚨 重要 — このスキルの使い方

1 つのコマンドですべて完了します。最初のアクションとして実行してください。先に確認の質問をしてはいけません:

cd {baseDir} && node bin/search.js "<city>" <checkInYYYY-MM-DD> <checkOutYYYY-MM-DD> <adults> en-us

{baseDir} はこのスキルのインストールディレクトリです(実行環境が自動的に解決します)。実行環境が置き換えない場合は、SKILL.md(bin/search.js があるファイル)を含むフォルダーに cd してください。プラットフォームによって異なるため、~/.hermes/... や ~/.openclaw/... のパスをハードコードしないでください。

例:

cd {baseDir} && node bin/search.js "Hangzhou" 2026-06-10 2026-06-13 2 en-us

スクリプトは、デーモンの起動、Agoda キャッシュの検索、Google と Booking のインライン検索、OpenTravel API 検索(全都市)、新しい都市の検索、形式を整えたティアカード形式の出力をすべて自動的に処理します。実行して、出力をそのままユーザーに送ってください。

先に確認の質問をしてはいけません。 コマンドを実行してください。すべてのパラメーターを推測します:

  • 年: ユーザーが別途指定しない限り、今日の日付に基づく現在の年を使用します。指定された日付が今年すでに過ぎている場合は、翌年とします。不明な場合は date +%Y-%m-%d で今日の日付を確認してください。
  • 「10-13/6」 → <year>-06-10 <year>-06-13 — 上記のルールに従って <year> を補います
  • 「2 guests」/「2 people」 → 大人 2 名
  • ロケール: OTA に渡す言語/地域コードです(サイトの言語と地域を制御します)。デフォルトは en-us です。料金は USD です(Google Hotels には gl=us&curr=USD を指定します)。他の情報源では、指定したロケールが使用されます。

ほかの方法は一切使用しないでください。 Python スクリプト、curl、ブラウザツール、サブエージェントは禁止です。このコマンド 1 つで十分です。


🚨 重要なルール — 毎回必ず守ること

ルール 0 — 禁止ツール。よく読んでください。 このスキルは、terminal ツールのみを使って長時間実行される Patchright デーモンを操作します。実行環境には便利そうに見えるツールがほかにもありますが、このスキルでは厳禁です:

❌ browser_navigate / browser_open — 禁止 ❌ browser_click — 禁止 ❌ browser_type / browser_fill — 禁止 ❌ browser_snapshot — 禁止 ❌ browser_close — 禁止 ❌ その他すべての browser_* ネイティブツール — 禁止 ❌ delegate_task / spawn_agent / サブエージェントへの委任 — 禁止

理由:これらのネイティブツールはステルス機能のない標準の Chromium を起動するため、Booking.com と Agoda に数秒でボットとして検出され、実行環境によって「Command timed out after 30/60 seconds」で終了されるまでリクエストが停止します。タイムアウトに 5 分以上を費やすことになり、ユーザーには何も返せません。terminal から起動する Patchright デーモンなら、ボット検出を回避できます。

委任されたサブエージェントは履歴が空で、スキルのコンテキストも持たないため、必ず Python や curl によるスクレイピングを試み、すぐにボット対策でブロックされます。このスキルは、現在のエージェント内で terminal ツールのみを使って実行してください。 ✅ このスキルでブラウザーを操作する唯一の許可された方法は、terminal 経由です:

terminal: cd {baseDir} && node bin/search.js ...

ルール 1 — すべての処理は search.js が行います。OTA を自分でスクレイピングしないでください。 browse.js コマンドを手動で呼び出したり、ブラウザーで goto/click/type を実行したり、Agoda/Booking/Google の URL を手作業で組み立てたり、OpenTravel API を別途呼び出したり、デーモンを自分で起動したりしないでください。search.js は、ボット検出を回避する慎重な手順でステルスデーモンをすでに操作します。すべての都市(上海、杭州などの中国の都市を含む)での Agoda の検索も内部で処理します。OTA を手動で操作するのは、失敗の最大の原因です。Agoda/Booking のボット対策が作動し(「自動化を検出」「ホームページにリダイレクト」「検索の完了中に問題が発生しました」など)、IP がブロックされます。 あなたが行うべきことは、search.js を一度実行して、その出力を送ることだけです。情報源が「見つからない」と思った場合は、ルール 4 を読み直してください。手動で取得しに行ってはいけません。

ルール 2 — 都市の初回検索には 2~4 分かかります。 search.js の出力に "discovering" または "launching" のメッセージが含まれている場合は、ユーザーに「この都市を初めて検索します。セレクターを検出しています。2~4 分ほどかかります……」と伝え、結果が出るまで待ってください。再試行したり、中断したりしないでください。

ルール 3 — 出力をそのまま送信してください。 search.js は、そのまま送信できる形式のランク別カードを出力します。出力をそのまま回答にコピーしてください。書式を変えたり、要約したり、省略したりしないでください。

ルール 3a — Markdown のハイパーリンクを保持してください。 出力内のホテル名はすべて、すでに [Hotel Name](https://booking-url...) の形式で囲まれています。これはクリック可能なハイパーリンクです。次のことはしないでください:

  • Markdown を取り除き、URL を 🔗 https://... のように別の行に表示する
  • [Hotel Name](url) をプレーンテキストに置き換える
  • OTA 名を大文字で始める(「google」は「Google」ではなく「google」のままにする)
  • セクション名を変更する(「📋 More good deals」はそのままにする)

出力は Telegram-MarkdownV2 に対応しています。そのまま送れば、ホテル名がクリック可能になり、URL は非表示のままです(すっきりした表示になります)。

ルール 3b — 出力の後に提案やコメントのセクションを追加する場合、言及するホテル名はすべて [Hotel Name](url) 形式の Markdown ハイパーリンクにし、そのホテルについてスクリプトが出力したものと同じ URL を使ってください。 コメント内でホテル名をプレーンテキストで書かないでください。

ルール 4 — 結果が一部だけでも正常であり、問題ありません。手作業で「修正」しないでください。 情報源が出力に含まれない場合があります(例:今回 Agoda がブロックされた、またはその都市に OpenTravel の在庫がない)。問題ありません。利用できた情報源のランク別カードを送信してください。フッター(📊 N hotels | <sources> • prices in USD)には、実際に見つかった情報源が正確に記載されています。ブラウザー、直接 URL、その他のツールを使って不足している情報源を取得しようとしないでください。 ボット対策が作動し、状況が悪化します。search.js が完全にエラーで終了した場合は、何が失敗したかを 1 行でユーザーに伝え、エラーより前に出力された結果があればそれも表示してください。より多くの情報を得たい場合に許可されている再試行は、同じ search.js コマンドをもう一度実行することだけです(ボット対策は一時的な場合がよくあります)。


出力形式の参照

search.js は次の形式でランク別カードを出力します。これをそのままユーザーに送信してください。

ホテル名は、最安値を提示している OTA への Markdown リンクです。価格の行にはリンクが なく、OTA キーは小文字(agoda/booking/google/opentravel)で表示されます。 星評価やエリアの行はありません。スクリプトはその情報を持っていません。

🏨 <city> • <d1>–<d2> • <N> nights • <adults> guests
━━━━━━━━━━━━━━━━━━━━

🥇 BEST VALUE
[<Hotel Name>](<cheapest_link>)
  ✅ agoda      💰 <price>/night
     booking    💰 <price>/night
     opentravel 💰 <price>/night
     → Save <diff> vs Booking

🥈 CHEAPEST
[<Hotel Name>](<cheapest_link>)
  ✅ google     💰 <price>/night
     agoda      💰 <price>/night

🥉 QUALITY
[<Hotel Name>](<cheapest_link>)
  ✅ booking    💰 <price>/night
     agoda      💰 <price>/night

📋 More good deals
  — Agoda —
  • [<Hotel>](<agoda_link>) — agoda: <price> | booking: <price>
  — Booking —
  • [<Hotel>](<booking_link>) — booking: <price>
  — Google —
  • [<Hotel>](<google_link>) — google: <price>
  — OpenTravel —
  • [<Hotel>](<opentravel_link>) — opentravel: <price>

💡 Tip: <best Hotel Name>
   [Book on <OTA>](<link>) — <price>/night

📊 <N> hotels | <sources with data> • prices in USD

価格はすべて USD で表示されます。Agoda、Google、OpenTravel は IP によって通貨が VND に限定されるため、リアルタイムの為替レートで換算されます。Booking は最初から USD で返します。実際にデータが返された情報源だけがフッターに記載されます。


制限事項

  • 都市ごとの初回検索では、Agoda の検出に 2~4 分かかります。Google と Booking はその場で処理され(検出なし)、OpenTravel は直接 API を呼び出します。
  • 2 回目以降の検索では Agoda のキャッシュが再利用され、約 30~60 秒で完了します。

コメント