pricewin-deal-finder について
pricewin-deal-finderは、最大4つの予約サイトのホテル料金を比較し、順位付きの候補と予約リンクを返すスキルです。都市、日程、人数を指定した宿泊検索を行うエージェント向けです。
主な機能
- 01最大4サイトの料金比較
- 02お得・最安・品質重視の候補を順位付け
- 031泊あたりの米ドル価格表示
- 04直接予約リンクの提示
- 05世界各都市の検索
活用シーン
- 01旅行日程に合わせたホテル料金比較
- 02指定日程で最安ホテルを検索
- 031泊の予算内で宿泊先を探す
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ price-win/ pricewin-skills-hub --skill pricewin-deal-finderインストール後、Claude Code で/pricewin-deal-finderを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
install.shpackage-lock.jsonpackage.jsonbin/browse.jsdaemon.jssearch.jslib/browser-state.jsdom-extract.jsselector-cache.jssnapshot.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 秒で完了します。