mcpField
P
pp-pointhound

pp-pointhound

github.com/mvanhornその他2.1k112 回インストール今日更新
リポジトリ

pp-pointhound について

pp-pointhoundは、特典航空券を検索・比較する旅行計画者やエージェント向けの読み取り専用CLIスキルです。検索スナップショットをローカルのSQLiteに保存し、残高に応じた計画、複数路線の比較、価格変化の検出に対応します。

主な機能

  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/mvanhorn/printing-press-library --skill pp-pointhound

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

詳細

Pointhound — Printing Press CLI

前提条件:CLI をインストールする

このスキルは pointhound-pp-cli バイナリを実行します。**このスキルのコマンドを実行する前に、CLI がインストールされていることを必ず確認してください。**インストールされていない場合は、先にインストールしてください。

  1. Printing Press インストーラーを使ってインストールします。バイナリのインストール先は、macOS/Linux ではデフォルトで $HOME/.local/bin、Windows では %LOCALAPPDATA%\Programs\PrintingPress\bin です。
    npx -y @mvanhorn/printing-press-library install pointhound --cli-only
    
  2. 次のコマンドで確認します:pointhound-pp-cli --version
  3. 報告されたインストールディレクトリが、このスキルを実行するエージェント/ランタイムの $PATH に含まれていることを確認します。

npx によるインストールに失敗した場合(Node がない、オフラインなど)は、Go から直接インストールしてください(Go 1.26.6 以降が必要です)。

go install github.com/mvanhorn/printing-press-library/library/travel/pointhound/cmd/pointhound-pp-cli@latest

インストール後に --version が「command not found」と報告する場合、ランタイムからバイナリのディレクトリを $PATH 経由で参照できていません。確認が成功するまで、スキルのコマンドを実行しないでください。

この CLI を使用する場合

複数の経路を比較する場合、特典を継続して追跡する場合、残高を考慮した質問をする場合、または Pointhound を日次 cron に組み込む場合など、特典検索の作業を積み重ねていく必要があるときは、この CLI を使用してください。単発の検索にはウェブ UI で十分ですが、タブを閉じるとすべて失われます。この CLI では、すべてのスナップショットをローカルの SQLite に保存し、SQL クエリ、変動検知、複数経路のランキングに利用できます。

この CLI を使用しない場合

作成、更新、削除、公開、コメント、賛成票、招待、注文、メッセージ送信、予約、購入、またはリモート状態の変更が必要なリクエストでは、この CLI を有効にしないでください。この配布 CLI が提供するのは、確認、エクスポート、同期、分析を行う読み取り専用コマンドです。

独自の機能

この API 用のほかのツールでは利用できない機能です。

積み重ねられるローカル状態
  • from-home — 実際に保有しているポイントでどこへ飛べるかを調べます。Chase UR、Amex MR、Bilt、Capital One、Citi TY の残高を入力すると、指定した客室クラスでその残高の範囲内で行けるすべての目的地を、実質的な支出が少ない順に表示します。

    「秋の旅行を計画して」のような目標と、「ユーザーは譲渡可能ポイントを45万ポイント保有している」のような残高情報がある場合、このコマンドを使えば、N 回検索せずに複数ステップの最適化を一度の呼び出しで実行できます。

    pointhound-pp-cli from-home SFO --balance "ur:250000,mr:80000,bilt:120000" --cabin business --month 2026-10 --agent
    
  • compare-transfer — 譲渡可能ポイントのプログラム(Chase UR、Amex MR など)と経路を指定すると、実際の移行比率(UR→United の即時 1:1 に対し、Marriott→United は最大72時間で 0.333:1)を各特典の価格に乗じ、元のプログラムで消費するポイント数が少ない順にすべての特典を表示します。

    「最も安い特典」を検討するエージェントは、航空会社での利用ポイント数ではなく、ユーザーが入力したポイント単位で尋ねるべきです。このコマンドが計算を行います。

    pointhound-pp-cli compare-transfer chase-ultimate-rewards --search-id ofs_xxx --json
    
  • batch — CSV ファイル(または複数の --route フラグ)から、N 件の経路と日付の検索を並列に実行し、スロットリングを適用して、すべての結果をローカルの SQLite ストアにスナップショットとして保存します。

    旅行計画では複数検索が一般的です。ウェブ UI では一度に1件しか検索できません。

    pointhound-pp-cli batch --search-ids-file ~/routes.txt --throttle 1s --cabin business --json
    
  • top-deals-matrix — 複数の出発地 × 複数の目的地 × 月の範囲を組み合わせた検索(例:10月から12月の SFO、LAX → LIS、FCO、LHR)を実行し、すべての結果をスナップショットとして保存します。Pointhound の Premium Top Deals 製品と同様の機能ですが、オフラインで利用でき、客室クラスによる絞り込みもできます。

    旅行エージェントや旅行プランナーは、「この秋、ヨーロッパ行きで最もお得なのは?」と一度に尋ねられます。

    pointhound-pp-cli top-deals-matrix --origins SFO,LAX --dests LIS,FCO,LHR --months 2026-10,2026-11,2026-12 --cabin business
    
  • drift — 追跡中の経路について、最新のスナップショットとその前のスナップショットを比較し、特典ごとに新規、値下がり、消失、変更なしの状態を表示します。ポイント数の差と経過時間も含まれます。

    「何か変わった?」という質問に、簡潔な出力ひとつで答えます。エージェントや人が再確認するときに実際に必要なのはこれです。

    pointhound-pp-cli drift SFO LIS 2026-08-15 --since yesterday --json
    
  • calendar — 経路と客室クラスを指定し、12か月の期間にわたって毎月まとめて検索して、月ごとの最小ポイント費用と、その費用を実現した特典を月別グリッドに表示します。

    「来年のどこかで」と言われた場合、旅行計画エージェントに必要なのは日付選択ではなく月選択です。

    pointhound-pp-cli calendar --search-ids ofs_a,ofs_b,ofs_c --cabin business --json
    
エージェント向けの基盤機能
  • watch — ルートを保存済みウォッチとして登録します。以降の実行では Pointhound をポーリングし、前回のスナップショット以降に新しいディールまたはより安いディールが見つかった場合にのみ、終了コード 2 で終了します。cron に最適です。

    「何か変化があったら知らせて」というエージェント向けの機能です。終了コードで判定でき、あらゆるスケジューラーで使えます。

    pointhound-pp-cli watch SFO LIS 2026-08-15 --cabin business --quiet && say 'new deal'
    
サービス固有のパターン
  • explore-deal-rating — Pointhound の scout.pointhound.com/places/search にある dealRating フィールドと isTracked フィールドを使って、過去に高頻度でディールがあった大都市圏近郊の空港を見つけます。必要に応じて batch を連結し、それらの空港の最新オファーを取得できます。

    検索対象を一括展開する前に、エージェントが検索範囲を絞り込めます。「NYC の近くから安いディールを探して」が、3 つのコマンドではなく 1 つのコマンドで実行できます。

    pointhound-pp-cli explore-deal-rating --metro NYC --min-rating high --limit 5 --agent
    
  • transferable-sources — 航空会社のマイルプログラム(例:United MileagePlus)を指定すると、そのプログラムにポイントを移行できるすべての獲得プログラムを、移行比率と移行時間(即時または up_to_72)とともに一覧表示します。

    表を覚えていなくても、「Capital One 経由で United のマイルを獲得できますか?」をすばやく確認できます。

    pointhound-pp-cli transferable-sources united-mileageplus --json
    

HTTP トランスポート

この CLI は、ブラウザー向けエンドポイントに Chrome 互換の HTTP トランスポートを使用します。通常の API 呼び出しに常駐ブラウザープロセスは必要ありません。

ディスカバリーシグナル

この CLI は、ブラウザーで観測されたトラフィックのコンテキストをもとに生成されました。

コマンドリファレンス

offers — 検索セッションで返されるフライトオファー

  • pointhound-pp-cli offers filter_options — 指定した検索セッションで利用できる、絞り込み可能なファセット(カードプログラム、航空会社のマイルプログラム、航空会社)を取得します。
  • pointhound-pp-cli offers list — 既存の検索セッションのフライトオファーを、任意のフィルターと並べ替えを指定して一覧表示します。
適切なコマンドを見つける

やりたいことは分かっているものの、どのコマンドを使えばよいか分からない場合は、CLI に直接尋ねてください。

pointhound-pp-cli which "<capability in your own words>"

which は、自然言語による機能の問い合わせを、この CLI の厳選された機能インデックスから最適なコマンドに対応付けます。終了コード 0 は少なくとも 1 件の一致があることを意味し、終了コード 2 は確信の持てる一致がないことを意味します。その場合は --help を使うか、より具体的な問い合わせに切り替えてください。

レシピ

この秋、Chase UR を使ってビジネスクラスで行ける場所は?
pointhound-pp-cli from-home SFO --balance "ur:250000" --search-ids ofs_xxx --cabin business --month 2026-10 --json --select destinationCode,bestEffectivePoints,sourceIdentifier

from-home は移行比率の計算をローカルで行います。--select でレスポンスを 4 つのフィールドに絞り、エージェントがオファーの詳細に埋もれないようにします。

新しいディールが出るまで、難しいルートをウォッチする
pointhound-pp-cli watch SFO HND 2026-12-22 --search-id ofs_xxx --cabin business --quiet

watch は何かが変わった場合にのみ終了コード 2 で終了するため、&& の後続処理は実際に新しい情報がある場合にのみ実行されます。launchd または cron に組み込んでください。

先週と今日の SFO-LIS はどう違う?
pointhound-pp-cli drift SFO LIS 2026-06-15 --cabin economy --json

drift は 2 つのスナップショットをローカルの SQLite で結合し、オファーごとに新規/値下げ/消失のステータスを表示します。これは Web UI にはない機能です。

ビジネスクラスで SFO-NRT に飛ぶなら、最適な月は?
pointhound-pp-cli calendar --search-ids ofs_a,ofs_b,ofs_c --cabin business --json

12 か月にわたって検索を一括展開し、月ごとの最安値でグループ化します。

Aeroplan にポイントを移行できる獲得プログラムは?
pointhound-pp-cli transferable-sources united --search-id ofs_xxx --json

Pointhound の transferOptions カタログをローカルで検索します。Web 版にはない機能です。

認証のセットアップ

CLI のほとんどの機能は匿名で使用できます。フライトオファーの読み取り、絞り込み用ファセット、空港のオートコンプリート、クレジットカードカタログなどが該当します。認証が必要なのは top-deals-matrix と search コマンドのみで、pointhound-pp-cli auth status を使って認証します。CLI は Chrome に保存されている既存の Pointhound ログイン Cookie(cf_clearance + ph_session)を読み取るため、別途トークンを用意する必要はありません。

pointhound-pp-cli doctor を実行して、セットアップを確認してください。

エージェントモード

任意のコマンドに --agent を追加します。次のオプションが展開されます:--json --compact --no-input --no-color --yes。

  • パイプで連携可能 — JSON は stdout に、エラーは stderr に出力されます

  • フィルタリング可能 — --select でフィールドを絞り込めます。ドット区切りのパスはネストされた構造をたどり、配列は各要素を走査します。詳細な API でコンテキストを小さく保つうえで重要です:

    pointhound-pp-cli offers list --search-id 550e8400-e29b-41d4-a716-446655440000 --agent --select id,name,status
    
  • プレビュー可能 — --dry-run で、リクエストを送信せずに内容を確認できます

  • オフラインでも使いやすい — sync/search コマンドでは、利用可能な場合にローカルの SQLite ストアを使用できます

  • 非対話型 — プロンプトを表示せず、すべての入力はフラグで指定します

  • 読み取り専用 — 作成、更新、削除、公開、コメント、賛成投票、招待、注文、送信など、データを変更するリクエストにはこの CLI を使用しないでください

レスポンスエンベロープ

ローカルストアまたは API から読み取るコマンドは、出力を来歴エンベロープでラップします:

{
  "meta": {"source": "live" | "local", "synced_at": "...", "reason": "..."},
  "results": <data>
}

データには .results を解析し、ライブデータかローカルデータかを確認するには .meta.source を参照してください。人が読みやすい N results (live) の概要は、stdout がターミナルの場合にのみ stderr に出力されます。パイプやエージェントから利用する場合、stdout には純粋な JSON のみが出力されます。

エージェントからのフィードバック

あなた(またはエージェント)がこの CLI の問題に気づいたら、記録してください:

pointhound-pp-cli feedback "the --since flag is inclusive but docs say exclusive"
pointhound-pp-cli feedback --stdin < notes.txt
pointhound-pp-cli feedback list --json --limit 10

記録はローカルの ~/.pointhound-pp-cli/feedback.jsonl に保存されます。POINTHOUND_FEEDBACK_ENDPOINT が設定され、かつ --send が指定されているか、POINTHOUND_FEEDBACK_AUTO_SEND=true の場合を除き、POST されることはありません。デフォルトではローカルにのみ保存されます。

バグ報告ではなく、意外だったことを書いてください。短く、具体的に、1 行で記録します。そうした記録が積み重なっていきます。

出力の送信先

すべてのコマンドで --deliver <sink> を指定できます。出力は標準出力に加えて(または標準出力の代わりに)指定した送信先へ送られるため、エージェントはコマンド結果を手作業でパイプに渡すことなく振り分けられます。対応している送信先は 3 つです:

送信先効果
stdoutデフォルト。stdout のみに出力します
file:<path>出力を <path> にアトミックに書き込みます(一時ファイル + rename)
webhook:<url>出力本文を URL に POST します(--compact の場合は application/json または application/x-ndjson)

未対応のスキームは、対応する送信先を示す構造化エラーとともに拒否されます。Webhook の失敗時はゼロ以外のコードを返し、URL と HTTP ステータスを stderr に記録します。

名前付きプロファイル

プロファイルとは、保存されたフラグ値のセットで、呼び出しごとに再利用できます。スケジュールされたエージェントが毎回同じ設定で同じコマンドを実行する場合に使用します。これは HeyGen の「Beacon」パターンです。

pointhound-pp-cli profile save briefing --json
pointhound-pp-cli --profile briefing offers list --search-id 550e8400-e29b-41d4-a716-446655440000
pointhound-pp-cli profile list --json
pointhound-pp-cli profile show briefing
pointhound-pp-cli profile delete briefing --yes

明示的に指定したフラグは、常にプロファイルの値より優先されます。プロファイルの値はデフォルト値より優先されます。agent-context は、実行時に情報を取得するエージェントがプロファイルを検出できるよう、すべてのプロファイルを available_profiles の下に一覧表示します。

終了コード

コード意味
0成功
2使用方法のエラー(引数が不正)
3リソースが見つかりません
4認証が必要です
5API エラー(上流の問題)
7レート制限中です(待機して再試行してください)
10設定エラー

引数の解析

$ARGUMENTS を解析します:

  1. 空、help、または --help → pointhound-pp-cli --help の出力を表示
  2. install で始まる場合 → mcp で終わる場合は MCP のインストール、それ以外の場合は上記の前提条件を参照
  3. それ以外 → 直接使用(--agent を付けて CLI コマンドとして実行)

MCP サーバーのインストール

この CLI の公開済みパブリックライブラリエントリーまたはビルド済みリリースから MCP バイナリをインストールし、登録します:

claude mcp add pointhound-pp-mcp -- pointhound-pp-mcp

確認:claude mcp list

直接使用

  1. インストールされているか確認します:which pointhound-pp-cli 見つからない場合は、インストールを提案します(このスキルの冒頭にある前提条件を参照してください)。
  2. ユーザーのクエリに最適なコマンドを、上記の「独自の機能」と「コマンドリファレンス」から選びます。
  3. --agent フラグを付けて実行します:
    pointhound-pp-cli <command> [subcommand] [args] --agent
    
  4. 判断が難しい場合は、サブコマンドのヘルプを確認します:pointhound-pp-cli <command> --help。

コメント