关于 pp-pointhound
pp-pointhound 是面向旅行规划者和 Agent 的只读命令行技能,用于搜索和比较积分机票、追踪航线报价。它将搜索快照保存在本地 SQLite,支持按积分余额规划、跨路线排名和价格变化检测。
主要功能
- 01按积分余额查找航线
- 02按转点比例比较兑换
- 03批量搜索并保存快照
- 04多出发地与月份矩阵搜索
- 05检测报价变化
- 06监控航线新优惠
适用场景
- 01按现有积分规划旅行目的地
- 02比较航线的积分兑换成本
- 03寻找多个月份中的低价航班
- 04定期监控指定航线的新报价
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ mvanhorn/ printing-press-library --skill pp-pointhound安装后在 Claude Code 中输入/pp-pointhound确认已加载。
详细介绍
Pointhound — Printing Press CLI
前提条件:安装 CLI
此 skill 由 pointhound-pp-cli 二进制文件驱动。在调用此 skill 中的任何命令之前,必须确认 CLI 已安装。 如果缺少该 CLI,请先安装:
- 使用 Printing Press 安装程序安装。在 macOS/Linux 上,二进制文件默认安装到
$HOME/.local/bin;在 Windows 上,默认安装到%LOCALAPPDATA%\Programs\PrintingPress\bin:npx -y @mvanhorn/printing-press-library install pointhound --cli-only - 验证:
pointhound-pp-cli --version - 确保报告的安装目录位于将调用此 skill 的 Agent/运行时的
$PATH中。
如果 npx 安装失败(没有 Node、处于离线状态等),请改用直接通过 Go 安装(需要 Go 1.26.6 或更高版本):
go install github.com/mvanhorn/printing-press-library/library/travel/pointhound/cmd/pointhound-pp-cli@latest
如果安装后 --version 报告“command not found”,说明运行时无法在 $PATH 中找到二进制文件目录。在验证成功之前,请勿继续执行 skill 命令。
何时使用此 CLI
每当需要整合奖励搜索工作时,都可以使用此 CLI:比较多条路线、跟踪一段时间内的优惠、提出考虑余额的问题,或将 Pointhound 接入每日 cron。网页界面适合一次性搜索,但关闭标签页后所有内容都会丢失;此 CLI 会将每个快照保存在本地 SQLite 中,以便执行 SQL 查询、检测变化和跨路线排名。
何时不使用此 CLI
对于需要创建、更新、删除、发布、评论、点赞、邀请、下单、发送消息、预订、购买或更改远程状态的请求,请勿使用此 CLI。此 CLI 仅提供用于检查、导出、同步和分析的只读命令。
独特功能
这些功能在此 API 的其他工具中均不可用。
可不断积累的本地状态
-
from-home— 告诉我凭现有积分可以飞往哪些地方:输入 Chase UR、Amex MR、Bilt、Capital One 和 Citi TY 的余额,即可获得在指定舱位且积分余额足够的所有目的地,并按最低实际支出排序。当 Agent 要完成“规划一次秋季旅行”之类的目标,并掌握“用户有 45 万可转让积分”之类的余额信息时,此命令可以一次调用完成多步优化,而不必搜索 N 次。
pointhound-pp-cli from-home SFO --balance "ur:250000,mr:80000,bilt:120000" --cabin business --month 2026-10 --agent -
compare-transfer— 给定一个可转让积分计划(Chase UR、Amex MR 等)和一条路线,列出所有兑换方式,并按消耗的来源计划积分排序;计算时会将每项优惠的价格乘以实际转点比例(UR→United 即时 1:1,而 Marriott→United 最长需 72 小时,比例为 0.333:1)。Agent 在推理“最便宜的兑换方式”时,应使用用户输入的计量单位,而非航空公司收到的积分单位。此命令会完成换算。
pointhound-pp-cli compare-transfer chase-ultimate-rewards --search-id ofs_xxx --json -
batch— 从 CSV 文件(或多个重复的 --route 参数)并行执行 N 次路线与日期搜索;所有结果都会经过限流后保存到本地 SQLite 存储中。旅行规划中常见的情况是多次搜索;网页界面一次只能执行一次搜索。
pointhound-pp-cli batch --search-ids-file ~/routes.txt --throttle 1s --cabin business --json -
top-deals-matrix— 提交多出发地 × 多目的地 × 多个月份范围的矩阵搜索(例如,SFO、LAX → LIS、FCO、LHR,覆盖 10 月至 12 月),并保存每项结果的快照。该功能与 Pointhound 的 Premium Top Deals 产品类似,但支持离线访问和舱位筛选。旅行 Agent 和行程规划工具可以一次性回答“今年秋天去欧洲的最佳优惠是什么?”
pointhound-pp-cli top-deals-matrix --origins SFO,LAX --dests LIS,FCO,LHR --months 2026-10,2026-11,2026-12 --cabin business -
drift— 对于正在监控的路线,将最新快照与上一份进行比较,并显示每项优惠的状态:新增、更便宜、已消失或未变化。结果包含积分差额和时间间隔。它用简短的输出回答“有什么变化吗?”,这正是 Agent 或人工复查者真正需要的。
pointhound-pp-cli drift SFO LIS 2026-08-15 --since yesterday --json -
calendar— 针对一条路线和舱位,批量搜索 12 个月窗口内的每个月,并生成月度网格,显示每月最低积分成本(以及对应的优惠)。用户说“明年找个时间”时,行程规划 Agent 需要的是月份选择器,而不是日期选择器。
pointhound-pp-cli calendar --search-ids ofs_a,ofs_b,ofs_c --cabin business --json
面向 Agent 的基础设施
-
watch— 将航线注册为已保存的监控项;后续运行会轮询 Pointhound,仅当自上次快照以来出现新优惠或更低价优惠时才以代码 2 退出。非常适合 cron。相当于面向 Agent 的“有变化时告诉我”——由退出代码驱动,适用于任何调度程序。
pointhound-pp-cli watch SFO LIS 2026-08-15 --cabin business --quiet && say 'new deal'
特定服务模式
-
explore-deal-rating— 使用 Pointhound 的scout.pointhound.com/places/search中的dealRating和isTracked字段,发现某个大都市附近历史上高频出现优惠的机场;也可以选择接入batch,获取这些机场的实时优惠。让 Agent 在分发搜索前缩小范围:“帮我找纽约附近某地出发的便宜优惠”只需一条命令,而不是三条。
pointhound-pp-cli explore-deal-rating --metro NYC --min-rating high --limit 5 --agent -
transferable-sources— 给定一个航空公司兑换计划(例如 United MileagePlus),列出所有可向其转入积分的计划,以及兑换比例和转账时间(instant 或 up_to_72)。快速查询“我能通过 Capital One 转到 United 吗?”,无需记住表格。
pointhound-pp-cli transferable-sources united-mileageplus --json
HTTP 传输
此 CLI 使用兼容 Chrome 的 HTTP 传输来访问面向浏览器的端点。常规 API 调用无需常驻浏览器进程。
发现信号
此 CLI 根据浏览器观察到的流量上下文生成。
- 捕获覆盖范围:134 条网络条目中的 30 条 API 条目
- 协议:rest_json(95% 置信度)
- 身份验证信号:无;cookie — cookies:cf_clearance、ph_session
- 生成提示:primary_base_url=https://www.pointhound.com,auth_type=cookie,anonymous_read_endpoints,cross_domain_novel_commands=scout.pointhound.com,db.pointhound.com,search_create_blocked_by_cloudflare_requires_cookie_replay
- 候选命令构想:— 主要读取端点;已验证可匿名重放。;— 给定搜索会话的筛选条件;已验证可匿名重放。;— 提供支持优惠感知排名的机场/城市自动补全(跨域 — 手写的新颖命令)。
- 注意事项::; :
命令参考
offers — 搜索会话返回的航班优惠
pointhound-pp-cli offers filter_options— 获取给定搜索会话可用的可筛选条件(积分卡计划、航空公司计划、航空公司)。pointhound-pp-cli offers list— 列出已有搜索会话的航班优惠,可选筛选条件和排序方式。
查找合适的命令
当你知道想做什么,却不知道该用哪个命令时,可以直接询问 CLI:
pointhound-pp-cli which "<capability in your own words>"
which 会根据自然语言能力查询,从此 CLI 精选的功能索引中找出最匹配的命令。退出代码 0 表示至少有一个匹配项;退出代码 2 表示没有足够可信的匹配项——请改用 --help,或使用更具体的查询。
使用示例
今年秋天,我可以用 Chase UR 飞去哪里,乘坐商务舱?
pointhound-pp-cli from-home SFO --balance "ur:250000" --search-ids ofs_xxx --cabin business --month 2026-10 --json --select destinationCode,bestEffectivePoints,sourceIdentifier
from-home 会在本地计算转点比例;--select 会将响应缩减为四个字段,避免 Agent 被过多优惠详情淹没。
监控一条难搜的航线,等待新优惠
pointhound-pp-cli watch SFO HND 2026-12-22 --search-id ofs_xxx --cabin business --quiet
watch 仅在有变化时以代码 2 退出,因此只有出现实际消息时才会触发 &&。可将其接入 launchd 或 cron。
上周与今天的 SFO-LIS 航线情况有什么变化?
pointhound-pp-cli drift SFO LIS 2026-06-15 --cabin economy --json
drift 会在本地 SQLite 中合并两个快照,并显示每项优惠的新增、更便宜或已消失状态——这是网页界面无法实现的查询。
商务舱飞 SFO-NRT 的最佳月份
pointhound-pp-cli calendar --search-ids ofs_a,ofs_b,ofs_c --cabin business --json
跨 12 个月分发搜索,并按每月最低价分组。
哪些积分计划可以转入 Aeroplan?
pointhound-pp-cli transferable-sources united --search-id ofs_xxx --json
在本地查询 Pointhound 的 transferOptions 目录。网页端无法实现。
身份验证设置
大多数 CLI 功能都可匿名使用——航班报价读取、筛选条件、机场自动补全、信用卡目录。只有 top-deals-matrix 和 search 命令需要身份验证,通过 pointhound-pp-cli auth status 完成——CLI 会从 Chrome 读取你现有的 Pointhound 登录 Cookie(cf_clearance + ph_session),因此无需单独的令牌。
运行 pointhound-pp-cli doctor 验证设置。
Agent 模式
在任何命令后添加 --agent。相当于:--json --compact --no-input --no-color --yes。
-
可管道传输 — JSON 输出到 stdout,错误输出到 stderr
-
可筛选 —
--select保留部分字段。点分路径可深入嵌套结构;数组会逐元素遍历。对于响应冗长的 API,这对控制上下文大小至关重要:pointhound-pp-cli offers list --search-id 550e8400-e29b-41d4-a716-446655440000 --agent --select id,name,status -
可预览 —
--dry-run显示请求但不发送 -
适合离线使用 — 如果本地 SQLite 存储可用,同步/搜索命令可使用该存储
-
非交互式 — 不会提示输入,所有输入都通过标志传入
-
只读 — 请勿使用此 CLI 执行创建、更新、删除、发布、评论、点赞、邀请、下单、发送或其他修改请求
响应封装
从本地存储或 API 读取数据的命令,会将输出封装在来源信息中:
{
"meta": {"source": "live" | "local", "synced_at": "...", "reason": "..."},
"results": <data>
}
解析 .results 获取数据,并查看 .meta.source 确认数据来自实时来源还是本地存储。只有当 stdout 连接到终端时,才会将易读的 N results (live) 摘要输出到 stderr——通过管道接收或由 Agent 使用时,stdout 只包含纯 JSON。
Agent 反馈
当你(或 Agent)发现此 CLI 有任何问题时,请记录下来:
pointhound-pp-cli feedback "the --since flag is inclusive but docs say exclusive"
pointhound-pp-cli feedback --stdin < notes.txt
pointhound-pp-cli feedback list --json --limit 10
条目会存储在本地的 ~/.pointhound-pp-cli/feedback.jsonl。只有在设置了 POINTHOUND_FEEDBACK_ENDPOINT,并且传入了 --send 或设置了 POINTHOUND_FEEDBACK_AUTO_SEND=true 时,才会 POST 提交。默认行为仅限本地存储。
记录让你感到意外的事,而不是提交 Bug 报告。简短、具体、一行即可:这些细节会逐渐累积,发挥作用。
输出传递
每个命令都接受 --deliver <sink>。输出会发送到指定的目标位置,同时输出到 stdout,或替代 stdout 输出,因此 Agent 无需手动通过管道即可路由命令结果。支持三种目标位置:
| 目标位置 | 效果 |
|---|---|
stdout | 默认;仅输出到 stdout |
file:<path> | 将输出原子写入 <path>(临时文件 + 重命名) |
webhook:<url> | 将输出正文 POST 到 URL(使用 --compact 时,内容类型为 application/json 或 application/x-ndjson) |
不支持的方案会被拒绝,并返回结构化错误,列出受支持的方案。Webhook 请求失败时会返回非零状态码,并在 stderr 中记录 URL 和 HTTP 状态码。
命名配置
配置是保存的一组标志值,可在多次调用中重复使用。若计划任务中的 Agent 每次运行都以相同配置调用同一命令,可使用配置——这就是 HeyGen 的“Beacon”模式。
pointhound-pp-cli profile save briefing --json
pointhound-pp-cli --profile briefing offers list --search-id 550e8400-e29b-41d4-a716-446655440000
pointhound-pp-cli profile list --json
pointhound-pp-cli profile show briefing
pointhound-pp-cli profile delete briefing --yes
显式标志始终优先于配置值;配置值优先于默认值。agent-context 会在 available_profiles 下列出所有可用配置,让 Agent 能在运行时发现这些配置。
退出代码
| 代码 | 含义 |
|---|---|
| 0 | 成功 |
| 2 | 用法错误(参数错误) |
| 3 | 未找到资源 |
| 4 | 需要身份验证 |
| 5 | API 错误(上游问题) |
| 7 | 请求过于频繁(等待后重试) |
| 10 | 配置错误 |
参数解析
解析 $ARGUMENTS:
- 为空、
help或--help→ 显示pointhound-pp-cli --help输出 - 以
install开头 → 以mcp结尾 → 安装 MCP;否则 → 参见上文的先决条件 - 其他任何内容 → 直接使用(作为 CLI 命令执行,并附加
--agent)
MCP 服务安装
从此 CLI 已发布的 public-library 条目或预构建发行版中安装 MCP 二进制文件,然后进行注册:
claude mcp add pointhound-pp-mcp -- pointhound-pp-mcp
验证:claude mcp list
直接使用
- 检查是否已安装:
which pointhound-pp-cli如果未找到,请提供安装选项(参见本技能顶部的先决条件)。 - 根据用户查询,从上方的独特功能和命令参考中选择最合适的命令。
- 使用
--agent标志执行:pointhound-pp-cli <command> [subcommand] [args] --agent - 如果存在歧义,请查看子命令帮助:
pointhound-pp-cli <command> --help。