pp-craigslist について
pp-craigslistは、読み取り専用のcraigslist-pp-cliでCraigslistの掲載情報を検索、監視、分析するスキルです。エージェントや掲載情報の調査向けに、保存検索の通知、ローカルスナップショット分析、都市間の重複・詐欺シグナルを提供します。
主な機能
- 01除外キーワードを使った検索
- 02保存検索で新規掲載や値下げを監視
- 03価格履歴と市場中央値の分析
- 04再掲載と都市間重複の検出
- 05ルールに基づく詐欺リスク評価
活用シーン
- 01複数の都市で賃貸検索を監視
- 02掲載価格を時期や都市別に比較
- 03重複シグナルで不審な賃貸情報を特定
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ mvanhorn/ printing-press-library --skill pp-craigslistインストール後、Claude Code で/pp-craigslistを入力して読み込まれたか確認します。
詳細
Craigslist — Printing Press CLI
前提条件:CLI のインストール
このスキルは craigslist-pp-cli バイナリを使用します。**このスキルのコマンドを実行する前に、CLI がインストールされていることを必ず確認してください。**インストールされていない場合は、先にインストールしてください。
- Printing Press インストーラーを使ってインストールします。バイナリのインストール先は、macOS/Linux では
$HOME/.local/bin、Windows では%LOCALAPPDATA%\Programs\PrintingPress\binがデフォルトです。npx -y @mvanhorn/printing-press-library install craigslist --cli-only - 確認します:
craigslist-pp-cli --version - 報告されたインストールディレクトリが、このスキルを実行するエージェント/ランタイムの
$PATHに含まれていることを確認します。
npx によるインストールに失敗した場合(Node がない、オフラインなど)は、Go を直接インストールしてください(Go 1.26.6 以降が必要です)。
go install github.com/mvanhorn/printing-press-library/library/commerce/craigslist/cmd/craigslist-pp-cli@latest
インストール後に --version が「command not found」を報告する場合、ランタイムからバイナリディレクトリが $PATH 経由で認識できていません。確認に成功するまで、スキルのコマンドを実行しないでください。
この CLI を使用する場面
Craigslist の出品情報にスクリプトからローカル優先でアクセスする必要がある場合は、craigslist-pp-cli を使用してください。Craigslist 独自の UI では対応していないフィルター(NOT キーワード)を使った検索、複数の都市にまたがる保存済み検索の監視と真に新しい出品情報のみの通知、住宅情報の価格変動や再掲載の検出、都市をまたぐ重複シグナルを使った不審な賃貸物件のトリアージに適しています。読み取り中心のワークフロー(監視、エクスポート、比較、スコアリング)に最適です。出品やアカウント管理は対象外です。
この CLI を使用しない場面
作成、更新、削除、公開、コメント、賛成票、招待、注文、メッセージ送信、予約、購入、またはリモート状態の変更が必要なリクエストでは、この CLI を有効にしないでください。この Printing Press CLI が提供するのは、検査、エクスポート、同期、分析のための読み取り専用コマンドです。
独自の機能
これらの機能は、この API 用の他のツールでは利用できません。
積み重なる監視機能
-
watch run— 保存済み検索を定期的にポーリングし、これまで見たことのない出品情報すべてではなく、NEW、PRICE-DROP、SEED イベントを出力します。これにより、真に新しい出品情報を編集や再掲載と区別できます。都市をまたぐ再掲載の検出は別のrepostsコマンドで、都市をまたぐ重複検出はdupe-clusterで行います。エージェントがユーザーに通知する場合は、一般的な検索呼び出しではなくこちらを選んでください。通知する価値があるのは真に新しい出品情報のみで、型付きの差分イベントにより、エージェントは通知内容を適切に表現できます。
craigslist-pp-cli watch save apartments --query 1BR --negate furnished,sublet --sites sfbay --category apa --max-price 2500 && craigslist-pp-cli watch run apartments --seed-only && craigslist-pp-cli watch run apartments --json -
watch tail— 長時間実行されるテーリング機能で、新しい差分結果ごとに 1 件の JSON イベントを出力するため、エージェントやシェルパイプラインがリアルタイムに応答できます。NEW イベントと PRICE-DROP イベントを出力します。新しい出品情報のイベントを Slack/メール送信ツール、jq フィルター、または後続のエージェントループに渡すため、継続的なストリームが必要な場合に使用します。
craigslist-pp-cli watch tail apartments --interval 5m --json
ローカルスナップショット履歴
-
drift— 取得したすべてのスナップショットを対象に、単一の出品情報の価格推移を表示します。購入者に代わって交渉するエージェントは、具体的な値下げ履歴を引用できます。「この出品情報は 14 日前に掲載され、価格は 50 ドルでしたが、現在は 35 ドルです。」
craigslist-pp-cli drift 7915891289 --json -
dupe-cluster— 本文のフィンガープリントと画像ハッシュが都市をまたいで一致する出品情報を見つけます。都市をまたぐ詐欺や、アグリゲーターによる再掲載を明らかにします。賃貸物件を見に行くために移動する前に使用してください。1 件のアパートが 6 都市以上のクラスターに含まれている場合、ほぼ間違いなく詐欺です。
craigslist-pp-cli dupe-cluster --category apa --min-cluster-size 3 --json -
reposts— 本文のフィンガープリントによるクラスタリングで、過去 X 日間に N 回以上再掲載された出品情報を見つけます。再掲載は、売り手が交渉に前向きであること(交渉上の優位性)や、スパムの大量投稿を示します(見送るべきです)。両者を見分けることに価値があります。
craigslist-pp-cli reposts 'eames lounge' --min-reposts 3 --window 30d --json -
cities heat— 都市をまたいで、指定期間内のカテゴリごとの新着出品数を集計します。どの市場で何が活発かを明らかにします。エージェントが特定の商品を求めて複数の都市を探す場合、新着情報が最も多い 3 都市が分かれば、まずどこを探すべきか判断できます。
craigslist-pp-cli cities heat --category sss --since 24h --top 20 --json
トリアージとスコアリング
-
scam-score— 新規アカウント、中央値を下回る価格、電信送金に関するキーワード、都市をまたぐ重複のシグナルを使って、出品にルールベースの0〜100のスコアを付けます。「この出品は本物ですか」という質問をトリアージするエージェントは、感覚に頼った回答ではなく、実用的な数値とルールごとの寄与度を得られます。
craigslist-pp-cli scam-score 7915891289 --json -
median— クエリに対する価格のp25/p50/p75を、必要に応じて期間を指定したり、都市別に分けたりして取得します。エージェントがオファーを提案する前に適正価格の基準が必要な場合や、転売業者が市場規模を見積もる場合に役立ちます。
craigslist-pp-cli median 'iphone 15' --category mob --since 30d --by-city --json
CLの枠を超えた検索
-
search --negate— Craigslistの検索機能では標準でサポートされていない、NOTキーワードによる絞り込み検索を行います。アパート探しや求職をするペルソナにとって、除外キーワードは重要です。これにより、50件の検索結果を確認する代わりに、5件だけを確認できます。
craigslist-pp-cli search '1BR' --category apa --site sfbay --negate furnished,sublet,studio --json -
since— 保存済み検索を設定せずに、「この都市のこのカテゴリで、X期間前から何が新着か」をその場で確認します。「寝ている間に何が掲載されたか」を確認するために、エージェントが最初に実行すべきコマンドです。監視対象ごとの設定も状態管理も不要で、期間を指定するだけです。
craigslist-pp-cli since 24h --site sfbay --category sss --query ipad --json
コマンドリファレンス
コマンドツリー全体は craigslist-pp-cli --help で確認でき、craigslist-pp-cli <command> --help で再帰的に確認できます。主なグループは次のとおりです。
- リファレンス分類:
categories list、areas list、catalog refresh - 検索と取得:
search、postings、listing get|get-by-pid|images、filters show - ローカルストアへのデータ登録:
cl-sync - 保存済み検索の監視:
watch save|list|show|delete|run|tail - スナップショット分析:
drift、dupe-cluster、reposts、median、cities heat、since、geo within|bbox - トリアージ:
scam-score - ローカル状態のCRUD:
favorite add|list|remove - フレームワーク用ヘルパー:
doctor、version、which、agent-context、analytics、export、import、feedback、profile、tail、sync、workflow
データ鮮度の契約
この出力済みCLIは、登録済みのストアを利用する読み取りコマンドのパスに限り、制限付きのデータ鮮度管理を行います。--data-source auto モードでは、これらのパスは sync_state を確認し、ローカルデータを読み取る前に制限付きの更新を実行する場合があります。--data-source local では更新を行いません。--data-source live ではAPIから読み取り、ローカルストアを変更しません。データソースの選択を変えずに鮮度確認フックをスキップするには、CRAIGSLIST_NO_AUTO_REFRESH=1 を設定してください。
対象となるパス:
craigslist-pp-cli postings
JSON出力で生成された来歴エンベロープが使用される場合、鮮度メタデータは meta.freshness に表示されます。これは対象コマンドのパスにおける現在のキャッシュの鮮度として扱ってください。過去データが完全にバックフィルされていることや、API固有の拡張データが含まれていることを保証するものではありません。
適切なコマンドを見つける
実行したいことは分かっていても、どのコマンドを使うか分からない場合は、CLIに直接問い合わせてください。
craigslist-pp-cli which "<capability in your own words>"
which は、自然言語による機能のクエリを、このCLIの厳選された機能インデックスから最適なコマンドに対応付けます。終了コード 0 は少なくとも1つ一致したことを示し、終了コード 2 は確信を持てる一致がないことを示します。その場合は --help を確認するか、より範囲を絞ったクエリを使用してください。
レシピ
米国西部で1つの商品を探す
craigslist-pp-cli search 'eames lounge chair' --sites sfbay,losangeles,seattle,sandiego,sacramento,fresno,inlandempire,orangecounty --category fua --max-price 2500 --has-pic --json --select items.title,items.priceDisplay,items.site,items.canonicalUrl
西海岸の8サイトに並列で検索を実行し、エージェントやjqパイプラインに必要な形式にJSONを絞り込みます。
家具付きではない、またはサブレットではない1BRを監視する
craigslist-pp-cli watch save sf-1br --query '1BR' --sites sfbay --category apa --max-price 2800 --negate furnished,sublet,studio,airbnb && craigslist-pp-cli watch run sf-1br --seed-only && craigslist-pp-cli watch tail sf-1br --interval 5m --json
保存済み検索では、Craigslist自体がサポートしていない除外キーワードを使用します。シードのみの実行で seen_listings を初期化しておけば、次のtailサイクルからは本当に新しい出品だけが [NEW] および [PRICE-DROP] イベントとして出力されます。
条件が良すぎる出品をトリアージする
craigslist-pp-cli cl-sync --site sfbay --category apa --since 7d && craigslist-pp-cli scam-score 7915891289 --json && craigslist-pp-cli dupe-cluster --pid 7915891289 --json
cl-sync でローカルストアにデータを登録し、スコアコマンドでルールごとの寄与度を確認します。dupe-clusterでは、同じ出品が他の都市にも存在するかどうかを確認できます。どちらの後続コマンドも、有用なデータを返すにはストアにデータが登録されている必要があります。
適正価格の範囲を提示する
craigslist-pp-cli median 'iphone 15' --category mob --since 30d --by-city --json
ローカルのlisting_snapshotテーブルを使って、直近30日間のp25/p50/p75を都市別に算出します。
私が眠っている間に起きたこと
craigslist-pp-cli since 12h --site sfbay --category sss --query 'macbook pro' --json
対象期間のサイトマップを日付ごとに読み込み、ローカルストアにまだ存在しない掲載情報のみ詳細を取得して、差分を出力します。
認証の設定
認証は不要です。
craigslist-pp-cli doctor を実行して、設定を確認します。
エージェントモード
任意のコマンドに --agent を追加します。次のオプションに展開されます:--json --compact --no-input --no-color --yes。
-
パイプ可能 — stdout に JSON、stderr にエラーを出力します
-
フィルター可能 —
--selectでフィールドを絞り込めます。ドット区切りのパスはネストされた構造をたどり、配列では要素ごとに処理されます。出力の多い API でコンテキストを小さく保つために重要です:craigslist-pp-cli postings --agent --select id,name,status -
プレビュー可能 —
--dry-runで、リクエストを送信せずに内容を表示します -
オフライン対応 — 同期/検索コマンドは、ローカルの SQLite ストアが利用可能な場合に使用できます
-
非インタラクティブ — プロンプトは表示せず、すべての入力はフラグで指定します
-
読み取り専用 — 作成、更新、削除、公開、コメント、賛成投票、招待、注文、送信、その他の変更を伴うリクエストには、この CLI を使用しないでください
レスポンスエンベロープ
ローカルストアまたは API からデータを読み取るコマンドは、出力をデータの出所を示すエンベロープで囲みます:
{
"meta": {"source": "live" | "local", "synced_at": "...", "reason": "..."},
"results": <data>
}
データの取得には .results を解析し、ライブデータかローカルデータかを確認するには .meta.source を参照してください。人間が読める N results (live) の要約は、stdout がターミナルの場合にのみ stderr に出力されます。パイプやエージェントで利用する場合、stdout には JSON のみが出力されます。
エージェントからのフィードバック
あなた(またはエージェント)がこの CLI に気になる点を見つけた場合は、記録してください:
craigslist-pp-cli feedback "the --since flag is inclusive but docs say exclusive"
craigslist-pp-cli feedback --stdin < notes.txt
craigslist-pp-cli feedback list --json --limit 10
記録はローカルの ~/.craigslist-pp-cli/feedback.jsonl に保存されます。CRAIGSLIST_FEEDBACK_ENDPOINT が設定され、さらに --send が渡された場合、または CRAIGSLIST_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」パターンです。
craigslist-pp-cli profile save briefing --json
craigslist-pp-cli --profile briefing postings
craigslist-pp-cli profile list --json
craigslist-pp-cli profile show briefing
craigslist-pp-cli profile delete briefing --yes
明示的に指定したフラグは常にプロファイルの値より優先され、プロファイルの値はデフォルトより優先されます。agent-context は、実行時に情報を調べるエージェントがプロファイルを見つけられるよう、利用可能なすべてのプロファイルを available_profiles に一覧表示します。
終了コード
| コード | 意味 |
|---|---|
| 0 | 成功 |
| 2 | 使用方法のエラー(引数が正しくありません) |
| 3 | リソースが見つかりません |
| 5 | API エラー(上流の問題) |
| 7 | レート制限中(待ってから再試行してください) |
| 10 | 設定エラー |
引数の解析
$ARGUMENTS を解析します:
- 空、
help、または--help→craigslist-pp-cli --helpの出力を表示します installで始まる場合 →mcpで終わる場合は MCP のインストール、それ以外の場合は上記の前提条件を参照します- それ以外 → 直接使用(
--agentを付けて CLI コマンドを実行します)
MCP サーバーのインストール
- MCP サーバーをインストールします:
go install github.com/mvanhorn/printing-press-library/library/commerce/craigslist/cmd/craigslist-pp-mcp@latest - Claude Code に登録します:
claude mcp add craigslist-pp-mcp -- craigslist-pp-mcp - 確認します:
claude mcp list
直接使用
- インストールされているか確認します:
which craigslist-pp-cli見つからない場合は、インストールを提案します(このスキルの冒頭にある前提条件を参照)。 - ユーザーのクエリに最適なコマンドを、上記の固有の機能とコマンドリファレンスから選びます。
--agentフラグを付けて実行します:craigslist-pp-cli <command> [subcommand] [args] --agent- 曖昧な場合は、サブコマンドのヘルプを確認します:
craigslist-pp-cli <command> --help。