关于 pp-loopnet
pp-loopnet 是用于通过只读 `loopnet-pp-cli` 搜索和分析 LoopNet 商业地产房源的技能,面向需要整理市场数据、跟踪子市场并结合本地房源历史筛选物业的 Agent 与分析人员。
主要功能
- 01按地点和类型搜索商业房源
- 02获取单条房源详情
- 03追踪降价情况和挂牌天数
- 04分析子市场供应与房源流转
- 05汇总资本化率和困境信号
- 06以 JSON 或 CSV 导出市场数据
适用场景
- 01筛选子市场的出售或出租房源
- 02发现降价房源和长期挂牌物业
- 03比较子市场内房源收益率
- 04将商业地产数据导入数据管道
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ mvanhorn/ printing-press-library --skill pp-loopnet安装后在 Claude Code 中输入/pp-loopnet确认已加载。
详细介绍
LoopNet — Printing Press 命令行工具
前置条件:安装命令行工具
此技能使用 loopnet-pp-cli 二进制文件。**调用此技能中的任何命令前,必须先确认已安装该命令行工具。**如果尚未安装,请先安装:
- 通过 Printing Press 安装程序安装。在 macOS/Linux 上,默认将二进制文件安装到
$HOME/.local/bin;在 Windows 上,默认安装到%LOCALAPPDATA%\Programs\PrintingPress\bin:npx -y @mvanhorn/printing-press-library install loopnet --cli-only - 验证:
loopnet-pp-cli --version - 确保报告的安装目录已加入将调用此技能的 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 | 未找到资源 |
| 5 | API 错误(上游问题) |
| 7 | 受到速率限制(请等待后重试) |
| 10 | 配置错误 |
参数解析
解析 $ARGUMENTS:
- 为空、
help或--help→ 显示loopnet-pp-cli --help输出 - 以
install开头 → 以mcp结尾 → 安装 MCP;否则 → 请参阅上文的先决条件 - 其他任何内容 → 直接使用(将其作为带
--agent的 CLI 命令执行)
MCP 服务安装
从此 CLI 已发布的公共库条目或预构建版本安装 MCP 二进制文件,然后注册它:
claude mcp add loopnet-pp-mcp -- loopnet-pp-mcp
验证:claude mcp list
直接使用
- 检查是否已安装:
which loopnet-pp-cli如果未找到,请提供安装选项(请参阅本技能顶部的先决条件)。 - 根据上文的独特功能和命令参考,将用户查询匹配到最合适的命令。
- 使用
--agent标志执行:loopnet-pp-cli <command> [subcommand] [args] --agent - 如果有歧义,请查看子命令帮助:
loopnet-pp-cli <command> --help。