mcpField
P
pp-loopnet

pp-loopnet

github.com/mvanhorn其他2.1k42 次安装今天更新
代码仓库

关于 pp-loopnet

pp-loopnet 是用于通过只读 `loopnet-pp-cli` 搜索和分析 LoopNet 商业地产房源的技能,面向需要整理市场数据、跟踪子市场并结合本地房源历史筛选物业的 Agent 与分析人员。

主要功能

  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. 确保报告的安装目录已加入将调用此技能的 Agent/运行时的 $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 中找到二进制文件目录。在验证成功前,不要继续执行技能命令。

何时使用此命令行工具

当 Agent 或分析师需要以结构化、可编写脚本的形式获取 LoopNet 的商业房地产库存、定价或市场情报数据时,请使用此命令行工具。它适用于构建商业房地产数据管道、持续追踪某个子市场、筛查困境资产或定价错误的资产,或整理可比资产集。它不适用于住宅租赁(请使用 Apartments.com),也无法访问 CoStar 仅向订阅用户提供的分析数据。

何时不应使用此命令行工具

对于需要创建、更新、删除、发布、评论、点赞、邀请、订购、发送消息、预订、购买或更改远程状态的请求,请勿启用此命令行工具。此命令行工具仅提供只读命令,用于检查、导出、同步和分析。

独特功能

这些功能无法通过此 API 的任何其他工具实现。

仅本地存储支持的变动追踪
  • price-cuts — 显示每次同步之间要价下跌的所有已同步房源,并列出旧价格、新价格、降价百分比,以及降价时的挂牌天数。

    用它来寻找有出售意愿的卖家和重新定价的资产——降价是 LoopNet 本身从不披露的最强交易意向信号。

    loopnet-pp-cli price-cuts worcester-ma --type industrial-properties --agent
    
  • dom — 根据命令行工具首次发现每套仍在售房源的日期,计算其实际挂牌天数,并标记挂牌时间超过阈值的库存。

    用它来区分最新可比资产与滞销资产,并找出长期未售出的房源——这些信息在 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 — 将已同步的子市场汇总为一份报告:当前供应量、近期降价、中位数在售天数、新增和下架数量,以及困境信号。

    需要一条命令获取子市场市场情报快照时,使用此命令,无需分别运行五条分析命令。

    loopnet-pp-cli digest worcester-ma --type industrial-properties --agent
    
  • feed — 将最近同步的子市场导出为带运行时间戳的 JSON 或 CSV 文件,并将记录映射到六个 CRE 市场情报数据类别。

    需要将 LoopNet 数据直接导入下游 CRE 流水线(例如 data/raw 导入文件夹)且无需编写胶水代码时,使用此命令。

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

HTTP 传输

此 CLI 使用兼容 Chrome 的 HTTP 传输方式访问面向浏览器的端点。常规 API 调用无需常驻浏览器进程。

发现信号

此 CLI 根据浏览器观测到的流量上下文生成。

  • 捕获覆盖率:3 条网络条目中有 0 条 API 条目
  • 协议: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 房源的完整详细记录。

  • loopnet-pp-cli property <id> — 获取一条 LoopNet 房源的详情页。该页面包含一个 schema.org RealEstateListing/Product JSON-LD 区块,以及……
查找合适的命令

如果知道要做什么,但不知道该用哪条命令,可以直接询问 CLI:

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

which 会根据自然语言功能查询,从此 CLI 精选的功能索引中匹配最合适的命令。退出代码 0 表示至少找到一项匹配;退出代码 2 表示无法确信地匹配到结果,此时请回退使用 --help,或改用范围更窄的查询。

使用示例

撷取并筛选子市场
loopnet-pp-cli sync worcester-ma --type industrial --listing for-sale && loopnet-pp-cli caprate worcester-ma --type industrial --agent

将子市场拉取到存储中,然后一次性查看其资本化率和收益率分布。

为 Agent 精简冗长的详细记录
loopnet-pp-cli property 38523625 --agent --select name,price,cap_rate,total_assessment,broker_name

详细记录包含数十个字段;--select 只返回地址、价格、资本化率、评估值和经纪人信息,避免 Agent 因完整载荷而消耗过多上下文。

查找本月所有降价房源
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

将最近同步的子市场写入带运行时间戳的 CSV,以便导入 CRE 市场情报文件夹。

用一条命令汇总子市场
loopnet-pp-cli digest worcester-ma --type industrial-properties --agent

在一份报告中呈现子市场的供应量、近期降价、中位数在售天数、新增和下架数量,以及困境信号。

身份验证设置

无需 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 模式

在任意命令中添加 --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 输出,不要假设存在通用包装键。

Agent 反馈

当你(或 Agent)发现此 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 请求。默认行为仅在本地保存。

写下让你感到意外的地方,而不是提交错误报告。简短、具体,写成一行:这才是能不断积累价值的内容。

输出传递

每个命令都接受 --deliver <sink>。除 stdout 外,或改为将输出写入指定的 sink,让 Agent 无需手动通过管道即可路由命令结果。支持三种 sink:

Sink效果
stdout默认;仅写入 stdout
file:<path>以原子方式将输出写入 <path>(临时文件 + 重命名)
webhook:<url>将输出正文 POST 到该 URL(当使用 --compact 时,内容类型为 application/json 或 application/x-ndjson)

遇到未知方案时会拒绝处理,并返回列出受支持方案的结构化错误。Webhook 请求失败时会返回非零状态码,并在 stderr 中记录 URL 和 HTTP 状态码。

命名配置

配置是保存的一组标志值,可在多次调用中重复使用。当定时运行的 Agent 每次都以相同配置调用同一命令时,可以使用配置——这就是 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 下列出所有可用配置,让进行自省的 Agent 在运行时发现它们。

退出代码

Code含义
0成功
2用法错误(参数不正确)
3未找到资源
5API 错误(上游问题)
7受到速率限制(请等待后重试)
10配置错误

参数解析

解析 $ARGUMENTS:

  1. 为空、help 或 --help → 显示 loopnet-pp-cli --help 输出
  2. 以 install 开头 → 以 mcp 结尾 → 安装 MCP;否则 → 请参阅上文的先决条件
  3. 其他任何内容 → 直接使用(将其作为带 --agent 的 CLI 命令执行)

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。

评论

支持 Markdown