mcpField
P
pp-loopnet

pp-loopnet

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

pp-loopnet について

pp-loopnetは、読み取り専用の`loopnet-pp-cli`でLoopNetの商業用不動産情報を検索・分析するスキルです。市場データの収集、サブマーケットの追跡、ローカルの掲載履歴を使った物件選別を行うエージェントやアナリスト向けです。

主な機能

  1. 01場所と種別による商業物件検索
  2. 02個別掲載情報の取得
  3. 03値下げと掲載日数の追跡
  4. 04サブマーケットの供給と掲載変動の分析
  5. 05キャップレートと売却動機の兆候を集計
  6. 06市場データのJSONまたはCSV出力

活用シーン

  1. 01サブマーケットの売買・賃貸物件の選別
  2. 02値下げ物件や長期掲載物件の発見
  3. 03サブマーケット内の物件利回り比較
  4. 04商業不動産データのパイプラインへの出力

インストール

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

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

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

詳細

LoopNet — Printing Press コマンドラインツール

前提条件:コマンドラインツールをインストールする

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

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

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

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

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

このコマンドラインツールを使う場面

エージェントやアナリストが、LoopNet の商業用不動産の物件情報、価格、市場インテリジェンスデータを、構造化されたスクリプトで処理できる形式で必要とする場合に、このコマンドラインツールを使用してください。CRE データパイプラインの構築、サブマーケットの経時的な追跡、困窮物件や価格設定が不適切な物件の絞り込み、比較対象物件セットの作成に適しています。住宅賃貸には対応していません(Apartments.com を使用してください)。また、CoStar の購読者限定の分析データにはアクセスできません。

このコマンドラインツールを使わない場面

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

独自の機能

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

ローカルストアでのみ実現できる変更追跡
  • price-cuts — 同期済みの物件のうち、同期の間に希望価格が下がったものをすべて表示します。値下げ前後の価格、値下げ率、値下げ時点の掲載日数を確認できます。

    意欲の高い売主や再価格設定された物件を探す際に使用してください。値下げは、LoopNet 自体では公開されない、取引意欲を示す最も強いシグナルです。

    loopnet-pp-cli price-cuts worcester-ma --type industrial-properties --agent
    
  • dom — CLI が初めて検出した日を基に、掲載中のすべての物件の実際の掲載日数を計算し、しきい値を超えた長期掲載物件にフラグを付けます。

    新しい比較対象物件と古い比較対象物件を見分けたり、長期間売れ残っている物件を探したりする際に使用してください。どちらも LoopNet では確認できません。

    loopnet-pp-cli dom worcester-ma --min-days 90 --agent
    
  • velocity — サブマーケットの吸収状況を報告します。期間ごとの新規掲載数、掲載終了数、掲載日数の中央値、純供給変化を確認できます。

    サブマーケットの活況度や冷え込みを把握する際に使用してください。市場インテリジェンスの概要を作成する際に、市場の需給動向を確認できます。

    loopnet-pp-cli velocity worcester-ma --agent
    
  • delisted — 過去の同期時には存在し、現在は存在しない物件を一覧表示します。売却、取り下げ、掲載期限切れなどが該当します。

    どの物件が市場から消えたかを追跡する際に使用してください。LoopNet が公開していない取引速度を把握するための代理指標になります。

    loopnet-pp-cli delisted worcester-ma --since 30d --agent
    
価格、利回り、困窮物件に関するインテリジェンス
  • caprate — サブマーケットの同期済み売却物件について、キャップレート、NOI、平方フィート当たり価格の分布(件数、最小値、中央値、四分位数、最大値)を報告し、キャップレートが四分位範囲から外れる物件にフラグを付けます。

    個別物件の利回りをサブマーケットの基準と比較したり、価格設定が不適切なキャップレートを見つけたりする際に使用してください。

    loopnet-pp-cli caprate worcester-ma --type industrial-properties --agent
    
  • distress — 価格引き下げや売却必須を示す説明文中のキーワード、Ten-X オークション物件、最近の値下げなど、売却意欲を示すシグナルを持つ物件にフラグを付けます。

    各物件の自由記述を一つずつ読む代わりに、困窮物件や売却意欲の高い売主の物件をまとめて探す際に使用してください。

    loopnet-pp-cli distress worcester-ma --agent
    
アナリストとパイプラインのワークフロー
  • digest — 同期済みのサブマーケットを、現在の供給件数、最近の値下げ、平均市場滞在日数、新規登録件数と掲載終了件数、財務難の兆候をまとめた1つのレポートに集約します。

    サブマーケットの市場情報を1つのコマンドでスナップショットとして把握する場合に使います。5つの分析コマンドを個別に実行する必要はありません。

    loopnet-pp-cli digest worcester-ma --type industrial-properties --agent
    
  • feed — 最新の同期済みサブマーケットを、実行日時を含む JSON または CSV ファイルとしてエクスポートします。レコードは、CRE 市場情報の6つのデータカテゴリーにマッピングされます。

    LoopNet のデータを、グルーコードを介さずに、後続の CRE パイプライン(例:data/raw 取り込みフォルダー)へ直接渡す場合に使います。

    loopnet-pp-cli feed worcester-ma --format csv --out ./loopnet-worcester.csv
    

HTTP トランスポート

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

検出シグナル

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

  • キャプチャ範囲:合計3件のネットワークエントリーのうち、API エントリーは0件
  • プロトコル:ssr_embedded_data(信頼度85%)
  • 生成ヒント:requires_protected_client

コマンドリファレンス

inventory — 場所、物件タイプ、売買・賃貸で LoopNet の商業用不動産の物件情報を検索します。

  • loopnet-pp-cli inventory <location> [--type <property_type>] [--listing for-sale|for-lease] — 場所、物件タイプ、売買・賃貸で LoopNet の掲載情報を検索します。サーバー側でレンダリングされた検索結果ページを返します...

property — LoopNet の掲載物件1件の詳細レコードを取得します。

  • loopnet-pp-cli property <id> — LoopNet の掲載物件1件の詳細ページを取得します。このページには、schema.org RealEstateListing/Product の JSON-LD ブロックと...
適切なコマンドを見つける

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

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

which は自然言語による機能の問い合わせを、CLI の厳選された機能インデックスから最適なコマンドに解決します。終了コード 0 は1つ以上の一致があることを示し、終了コード 2 は確信度の高い一致がないことを示します。その場合は --help に切り替えるか、より絞り込んだ問い合わせを使用してください。

レシピ

サブマーケットを取り込み、候補を絞り込む
loopnet-pp-cli sync worcester-ma --type industrial --listing for-sale && loopnet-pp-cli caprate worcester-ma --type industrial --agent

サブマーケットをストアに取り込んだ後、キャップレートと利回りの分布を一度に確認します。

エージェント向けに詳細レコードを絞り込む
loopnet-pp-cli property 38523625 --agent --select name,price,cap_rate,total_assessment,broker_name

詳細レコードには数十個のフィールドが含まれます。--select を使うと、住所、価格、キャップレート、評価額、仲介業者だけを返せるため、エージェントがすべてのペイロードにコンテキストを費やさずに済みます。

今月のすべての値下げを見つける
loopnet-pp-cli price-cuts worcester-ma --since 30d --agent

同期を繰り返した後、過去30日間に希望価格が下がった掲載物件を一覧表示します。これは取引心理を示す主要なシグナルです。

後続のパイプライン用に市場データをエクスポートする
loopnet-pp-cli feed worcester-ma --type industrial --format csv --out ./loopnet-worcester.csv

最新の同期済みサブマーケットを、CRE 市場情報の取り込みフォルダーですぐに使える、実行日時付きの CSV として書き出します。

サブマーケットを1つのコマンドで集約する
loopnet-pp-cli digest worcester-ma --type industrial-properties --agent

サブマーケットの供給、最近の値下げ、平均市場滞在日数、新規登録件数と掲載終了件数、財務難の兆候を1つのレポートにまとめます。

認証の設定

API キーは不要ですが、LoopNet のデータページは Akamai Bot Manager によって保護されています。ライブコマンド(inventory、property、sync)には、有効期間の短い クリアランス Cookie が必要です。

  • loopnet-pp-cli auth refresh — Cookie を取得します(短時間、ブラウザーを操作します)。
  • loopnet-pp-cli auth set --cookies "<header>" — ブラウザーの DevTools からコピーした Cookie ヘッダーを貼り付けます。
  • loopnet-pp-cli auth status — 現在の Cookie の状態を確認します。

Cookie は数時間有効です。Akamai の ボットチャレンジによるエラー(HTTP 403)で取得に失敗した場合は、更新してください。履歴コマンド(price-cuts、dom、 velocity、delisted、digest、caprate)はローカルの SQLite ストアを読み取るため、 Cookie は不要ですが、ストアへのデータ登録には事前の sync が必要です。

loopnet-pp-cli doctor を実行して設定を確認してください。

エージェントモード

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

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

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

    loopnet-pp-cli inventory worcester-ma --type industrial --agent --select id,name,status
    
  • プレビュー可能 — --dry-run で送信せずにリクエストを表示します

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

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

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

レスポンスの形式

--json の場合、各コマンドはそれぞれのタスク向けに整形されたフラットなオブジェクトを出力します。共通のエンベロープはありません。リスト形式のコマンドには results 配列と count が含まれます。たとえば search は次のようになります:

{
  "count": 12,
  "query": "warehouse",
  "results": [ ... ]
}

sync は概要オブジェクト(listings_synced、properties_synced、 total_results、...)を返します。インテリジェンスコマンド(caprate、price-cuts、 digest、...)は、それぞれ独自のレポートオブジェクトを返します。共通のラッパーキーがあると想定せず、コマンドの --json 出力を直接確認してください。

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

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

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

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

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

出力の配信

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

シンク動作
stdoutデフォルト。stdout のみに書き込みます
file:<path>出力を <path> にアトミックに書き込みます(一時ファイルを作成してリネーム)
webhook:<url>出力本文を URL に POST します(--compact の場合は application/json または application/x-ndjson)

不明なスキームは、対応しているスキームの一覧を示す構造化エラーとともに拒否されます。Webhook の失敗時はゼロ以外の終了コードを返し、URL と HTTP ステータスを stderr に記録します。

名前付きプロファイル

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

loopnet-pp-cli profile save briefing --json
loopnet-pp-cli --profile briefing inventory worcester-ma --type industrial
loopnet-pp-cli profile list --json
loopnet-pp-cli profile show briefing
loopnet-pp-cli profile delete briefing --yes

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

終了コード

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

引数の解析

$ARGUMENTS を解析します:

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

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

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

claude mcp add loopnet-pp-mcp -- loopnet-pp-mcp

確認:claude mcp list

直接使用

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

コメント