mcpField
P
pp-slickdeals

pp-slickdeals

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

pp-slickdeals について

Printing Press CLI で Slickdeals にアクセスするスキルで、セール、クーポン、販売店の動向を追うエージェント向けです。ライブフィードとローカルの SQLite スナップショットを組み合わせ、オフライン照会や時系列分析を行えます。

主な機能

  1. 01ライブのトップページセールとクーポンの閲覧
  2. 02セール検索とカテゴリ絞り込み
  3. 03セールのスナップショットをローカル保存
  4. 04販売店と期間を指定したスナップショット照会
  5. 05販売店ランキングと評価数の増加分析

活用シーン

  1. 01現在評価の高いセールを探す
  2. 02セールへのコミュニティ評価の推移を追跡
  3. 03保存データから最近のセール概要を作成
  4. 04期間内の販売店ごとのセール動向を比較

インストール

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

$npx skills add https://github.com/mvanhorn/printing-press-library --skill pp-slickdeals

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

詳細

Slickdeals — Printing Press CLI

前提条件:CLI のインストール

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

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

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

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

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

この CLI を使用する場面

ホットディール、フロントページのフィード、クーポン、カテゴリの閲覧、長期的なローカルディール追跡など、Slickdeals のデータにエージェントからアクセスする必要がある場合に、この CLI を使用してください。v0.2 リリースでは、v0.1 の Nuxt エンドポイントのラッピングに加えて、ライブのフロントページデータを取得する RSS インターフェースと、ローカルの SQLite スナップショットストアが追加されました。これにより、エージェントはディールの勢いを追跡し、複合クエリを実行して、完全にオフラインで販売業者の分析を生成できます。

独自の機能

これらの機能は、この API のほかのツールでは利用できません。

  • hot — ライブのフロントページから、最小サムズアップ数で絞り込んだ人気ディールを取得し、サムズアップ数の降順で並べ替えます。
  • frontpage-fresh — フィルターなしで、ライブのフロントページ RSS フィード(本日の新着)を取得します。
  • popular — Slickdeals の「人気ディール」フィードを取得します(コミュニティの投票によるもので、編集者が選定するフロントページとは異なります)。v0.3 で追加
  • search --live — q= パラメーターを使った、サーバーサイドの実際のキーワード検索です。--forum N で検索対象のフォーラムを指定することもできます。v0.3 で修正 — v0.2 ではパラメーター名が誤っていたため、クライアントサイドのフィルタリングに暗黙的にフォールバックしていました。
  • category — forumchoice[]=N を使った、フォーラム単位の RSS フィードです。Slickdeals が案内している 5 つのフォーラム ID:4(無料特典)、9(ホットディール)、10(クーポン)、25(コンテスト)、38(ドラッグストア/食料品)。v0.3 で書き換えられ、v0.2 のクライアントサイドのキーワードマップではなく、サーバーサイドの実際のフィルタリングを使うようになりました。
  • coupons — ライブのおすすめクーポン一覧を取得します。--store で販売業者を指定して絞り込むこともできます(Nuxt JSON エンドポイント)。
  • watch — ライブのフロントページ RSS から単一のディールを取得します。時系列分析用にスナップショットの行を保存することもできます。
  • digest — 指定期間内に取得された上位 N 件のスナップショットを要約します。販売業者ごとの件数上限の設定や、販売業者/カテゴリ別のグループ化もできます。
  • deals — 取得したスナップショットに対する主要な SQL 複合クエリです:--store costco --since 24h --min-thumbs 50。
  • analytics top-stores — 期間内の販売業者の集計:ディール件数、平均サムズアップ数、最大サムズアップ数、初回/最終確認時刻。
  • analytics thumbs-velocity — ディールのサムズアップ数を時系列で記録し、各ステップの差分も示します。裁定取引や自動スナイプにおけるモメンタムシグナルとして利用できます。

HTTP トランスポート

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

コマンドリファレンス

v0.1 のコマンド(Nuxt エンドポイントのラッパー)

ad-stats — ad-events に関する操作

  • slickdeals-pp-cli ad-stats <id> — POST /ad-stats/{id}/ad-events

ajax — bSubNavPlacement.php に関する操作

  • slickdeals-pp-cli ajax create_threadrate.php — POST /ajax/threadrate.php
  • slickdeals-pp-cli ajax list_bSubNavPlacement.php — GET /ajax/bSubNavPlacement.php

frontpage — おすすめに関する操作

  • slickdeals-pp-cli frontpage list_json — GET /frontpage/promoted-content/json
  • slickdeals-pp-cli frontpage list_recommendations — GET /frontpage/recommendation-carousel/recommendations

web-api — missed-deals に関する操作

  • slickdeals-pp-cli web-api list_featured_coupons — GET /web-api/frontpage/featured-coupons/
  • slickdeals-pp-cli web-api list_missed_deals — GET /web-api/frontpage/missed-deals/
v0.2 コマンド(ライブ RSS とローカルスナップショットの活用)

hot — サムズアップ数が多い Slickdeals のフロントページのセール(ライブ RSS)

  • slickdeals-pp-cli hot [--min-thumbs N] [--limit N] — ライブのフロントページ RSS を取得し、コミュニティのサムズアップ数が --min-thumbs 以上のセールのみを表示します。結果はサムズアップ数の降順で並びます。クライアント側でフィルターします(forum=9&hotdeals=1 の RSS パラメーターは空のフィードを返します)。

frontpage-fresh — 最新の Slickdeals フロントページ RSS フィード(ライブ、フィルターなし)

  • slickdeals-pp-cli frontpage-fresh [--limit N] — ライブのフロントページ RSS(/newsearch.php?mode=frontpage&rss=1)から今日の新着を取得します。フィードの順序(新しいものが先)で表示します。v0.1 の frontpage list-json とは異なり、Nuxt によるキャッシュは使用しません。

search — 同期済みデータまたはライブ API を対象とする全文検索

  • slickdeals-pp-cli search "<query>" [--live] [--limit N] — ローカルに同期したデータを FTS5 で検索します。--live を指定すると、ライブの RSS 検索エンドポイントを使用します。フロントページフィードに対してクライアント側でキーワードフィルターを実行します(Slickdeals の RSS はサーバー側の search= パラメーターに対応していません)。

category — Slickdeals のフォーラムカテゴリー別にセールを表示

  • slickdeals-pp-cli category <id|name> [--limit N] — 数値 ID またはわかりやすい名前(例:tech、gaming)でフォーラムカテゴリーを指定し、ライブ RSS のセールを取得します。組み込みのカテゴリーとフォーラム ID の対応表をすべて表示するには、--list を使用します。フロントページフィードに対してクライアント側でフィルターします。

coupons — Slickdeals のおすすめクーポン一覧(ライブ Nuxt JSON)

  • slickdeals-pp-cli coupons [--store <name>] [--limit N] — /web-api/frontpage/featured-coupons/ を通じて、ライブのおすすめクーポン一覧を取得します。RSS のクーポンフィルター(f2=1)は機能せず、Slickdeals が無視してフロントページフィードを返すため、Nuxt エンドポイントを使用します。

watch — ライブのフロントページ RSS フィードから、ID を指定して Slickdeals のセールを 1 件取得

  • slickdeals-pp-cli watch <deal-id> [--persist] [--once] — 現在のフロントページ RSS を取得し、一致する項目を報告します。後で digest/deals/analytics のクエリに使用できるよう、スナップショットをローカルの SQLite ストアに書き込むには --persist を指定します。--once がデフォルトです(v0.2)。バックグラウンドでのポーリングは v0.3 で対応します。

digest — 直近の期間にローカルで取得した上位のセールを要約

  • slickdeals-pp-cli digest [--since 24h] [--top N] [--merchant-cap N] [--grouped-by merchant|category] — ローカルの deal_snapshots ストアを読み込み、指定期間内の上位のセールをサムズアップ数の降順で返します。スナップショットは watch --persist によって登録されます。ストアが空の場合は、ヒントと空のエンベロープを返します。

deals — ローカルに取得したセールのスナップショットに対する複合クエリ

  • slickdeals-pp-cli deals [--store <name>] [--category <name>] [--since <dur>] [--min-thumbs N] [--deal-id <id>] [--latest] — ローカルの deal_snapshots テーブルに対して SQL の複合クエリを実行します。デフォルトでは、セールごとの最新のスナップショットを返します(--latest=true)。ライブフィードにはアクセスしません。

analytics top-stores — 指定期間のセール件数とサムズアップ数で販売業者を順位付け

  • slickdeals-pp-cli analytics top-stores [--window 30d] [--limit N] — 指定期間の deal_snapshots を販売業者ごとに集計し、セールの重複なし件数、次いでサムズアップ数の最大値の順に並べます。期間には --since と同じ接尾辞(30d、24h、1w、30m)を指定できます。全期間を対象にするには 0 を指定します。

analytics thumbs-velocity — 1 件のセールのサムズアップ数の時系列と増減

  • slickdeals-pp-cli analytics thumbs-velocity <deal-id> — 1 件のセール ID に対するサムズアップ数の観測結果を時系列順に返します。各行にはサムズアップ数と前回の観測からの増減が含まれます(最初の観測点は 0)。
適切なコマンドを見つける

実行したい操作はわかっていても、どのコマンドを使うのかわからない場合は、CLI に直接問い合わせてください。

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

which は、自然言語での機能に関する問い合わせを、この CLI の厳選された機能インデックスから最適なコマンドに対応付けます。終了コード 0 は一致する候補が 1 つ以上あることを示し、終了コード 2 は信頼できる候補がないことを示します。その場合は --help を確認するか、より具体的な問い合わせを使用してください。

レシピ

本日の注目セールを取得する
slickdeals-pp-cli hot --json --limit 10

コミュニティの評価スコア順で、トップページのセール上位10件を降順で返します(デフォルトでは評価数が20以上)。基準を引き上げるには、--min-thumbs 50を追加します。

セールの推移を追跡する
# Capture a snapshot now
slickdeals-pp-cli watch 19510173 --persist --json

# After multiple captures, inspect thumb velocity
slickdeals-pp-cli analytics thumbs-velocity 19510173 --json

各watch --persistは、タイムスタンプ付きの行をdeal_snapshotsに書き込みます。velocityコマンドでは、各行の差分とともに、観測ごとの評価数の推移を表示します。

日次ダイジェスト
slickdeals-pp-cli digest --since 24h --top 20 --merchant-cap 3 --json

過去24時間に取得したセール上位20件を要約し、同じ販売業者の掲載数を最大3件に制限します。スナップショットストアにデータを保存するには、少なくとも1回watch --persistを実行しておく必要があります。

複合クエリ
slickdeals-pp-cli deals --store costco --since 24h --min-thumbs 50 --json

ローカルのスナップショットをSQLで絞り込みます。過去1日以内の、評価数が50以上のCostcoのセールを対象に、各セールの最新スナップショットだけを残します。

カテゴリー別に閲覧する
# List all known categories
slickdeals-pp-cli category --list

# Browse tech deals live
slickdeals-pp-cli category tech --json

組み込みのフォーラム→キーワードマップを使って、指定したカテゴリーのライブRSSセールを取得します。数値のフォーラムID、またはわかりやすい名前(tech、gaming、homeなど)を渡します。

認証の設定

認証は不要です。

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

エージェントモード

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

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

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

    slickdeals-pp-cli ad-stats mock-value --breakpoint example-value --agent --select id,name,status
    
  • プレビュー可能 — --dry-runで、送信せずにリクエストを表示します

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

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

  • 明示的な再試行 — すでに存在するものの作成を成功として扱う場合に限り、--idempotentを使用します

レスポンスのエンベロープ

ローカルストアまたはAPIから読み取るコマンドは、出力をデータの出所を示すエンベロープで包みます:

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

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

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

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

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

エントリーはローカルの~/.slickdeals-pp-cli/feedback.jsonlに保存されます。SLICKDEALS_FEEDBACK_ENDPOINTが設定されており、かつ--sendが渡された場合、またはSLICKDEALS_FEEDBACK_AUTO_SEND=trueの場合を除き、POSTされることはありません。デフォルトではローカルにのみ保存されます。

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

出力の配信

すべてのコマンドで--deliver <sink>を使用できます。出力はstdoutに加えて(またはstdoutの代わりに)指定したシンクに送られるため、エージェントはコマンド結果を手動でパイプせずに振り分けられます。対応するシンクは3種類です:

シンク動作
stdoutデフォルト。stdoutのみに出力します
file:<path><path>に出力をアトミックに書き込みます(tmp + rename)
webhook:<url>出力本文をURLにPOSTします(--compactの場合はapplication/jsonまたはapplication/x-ndjson)

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

名前付きプロファイル

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

slickdeals-pp-cli profile save briefing --json
slickdeals-pp-cli --profile briefing ad-stats mock-value --breakpoint example-value
slickdeals-pp-cli profile list --json
slickdeals-pp-cli profile show briefing
slickdeals-pp-cli profile delete briefing --yes

明示的なフラグは常にプロファイルの値より優先され、プロファイルの値はデフォルトより優先されます。agent-contextは、利用可能なプロファイルをすべてavailable_profilesに一覧表示するため、情報を調べるエージェントは実行時にプロファイルを検出できます。

終了コード

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

引数の解析

$ARGUMENTS を解析します。

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

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

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

claude mcp add slickdeals-pp-mcp -- slickdeals-pp-mcp

確認します:claude mcp list

直接使用

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

コメント