关于 pp-hotel-goat
pp-hotel-goat 是用于驱动 Hotel GOAT CLI 的技能,可搜索 Google Hotels、查看酒店详情并维护本地愿望清单。它面向旅行查询而非预订,并支持为 Agent 筛选输出字段。
主要功能
- 01按地点和日期搜索酒店
- 02按星级、价格和货币筛选
- 03查看酒店详情与评价
- 04为 Agent 选择嵌套字段
- 05将酒店保存到本地愿望清单
适用场景
- 01比较旅程日期的酒店价格
- 02查找指定地点附近的酒店
- 03查看酒店设施和评分
- 04保存备选酒店以便稍后查看
MCP 相关
技能说明了 hotel-goat-pp-mcp 服务的安装及其在 Claude Code 中的注册方式。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ mvanhorn/ printing-press-library --skill pp-hotel-goat安装后在 Claude Code 中输入/pp-hotel-goat确认已加载。
详细介绍
Hotel GOAT — Printing Press CLI
前提条件:安装 CLI
此技能依赖 hotel-goat-pp-cli 二进制文件。**调用此技能中的任何命令前,必须确认 CLI 已安装。**如果尚未安装,请先安装:
- 通过 Printing Press 安装程序安装。默认情况下,二进制文件会安装到 macOS/Linux 的
$HOME/.local/bin,以及 Windows 的%LOCALAPPDATA%\Programs\PrintingPress\bin:npx -y @mvanhorn/printing-press-library install hotel-goat --cli-only - 验证:
hotel-goat-pp-cli --version - 确保报告的安装目录已加入将调用此技能的 Agent/运行时的
$PATH。
如果 npx 安装失败(没有 Node、处于离线状态等),请改用直接通过 Go 安装的方式(需要 Go 1.26.6 或更高版本):
go install github.com/mvanhorn/printing-press-library/library/travel/hotel-goat/cmd/hotel-goat-pp-cli@latest
如果安装后 --version 报告“command not found”,说明运行时无法通过 $PATH 找到二进制文件目录。验证成功前,请勿执行技能命令。
何时使用此 CLI
当用户需要按地点和日期范围搜索酒店、查找指定时间段内价格最低的日期、查找特定地址附近的酒店,或将住宿添加到本地心愿单时,请使用 hotel-goat。规划行程时,可搭配 flight-goat 使用;两者共用相同的标志和信封结构,因此未来的 travel-pp-cli 编排器只需进行简单合并。当用户想要实际预订时,请勿使用它(Google Hotels 是元搜索服务——hotel-goat 会显示 OTA 深层链接,之后用户可在 OTA 上预订)。
何时不使用此 CLI
对于需要创建、更新、删除、发布、评论、点赞、邀请、下单、发送消息、预订、购买或更改远程状态的请求,请勿启用此 CLI。此 CLI 仅提供用于检查、导出、同步和分析的只读命令。
独特功能
这些功能在此 API 的其他工具中不可用。
面向 Agent 的原生管道
-
hotels— 通过点分路径选择嵌套的 results.prices[]、results.booking_urls、results.images[]。仅返回 Agent 需要的字段。如果每家酒店只需要几个字段,而不是完整的嵌套响应,请使用此功能。
hotel-goat-pp-cli hotels "San Francisco" 2026-08-15 2026-08-17 --agent --select results.name,results.rating,results.price_per_night,results.booking_urls.primary
命令参考
hotels — Google Hotels 按地点和日期范围返回的酒店搜索结果
hotel-goat-pp-cli hotels— 按地点和日期范围搜索酒店。
hotel — 单个酒店的命令
hotel-goat-pp-cli hotel show <property-token>— 根据 Google 的 property_token 获取完整的酒店详情hotel-goat-pp-cli hotel reviews <property-token>— 获取某家酒店的评价明细
查找合适的命令
如果你知道要做什么,但不清楚该用哪个命令,可以直接询问 CLI:
hotel-goat-pp-cli which "<capability in your own words>"
which 会根据自然语言功能查询,从此 CLI 精选的功能索引中匹配最合适的命令。退出代码 0 表示至少找到一个匹配项;退出代码 2 表示没有可靠匹配项——此时请回退到 --help,或使用范围更窄的查询。
示例
使用欧洲货币进行筛选搜索
hotel-goat-pp-cli hotels "Paris" 2026-07-20 2026-07-23 --currency EUR --hotel-class 4,5 --max-price 300 --sort cheapest
搜索巴黎评分为 4 至 5 星、每晚低于 €300 的高档酒店,并按价格从低到高排序。
面向 Agent 的嵌套字段选择
hotel-goat-pp-cli hotels "San Francisco" 2026-08-15 2026-08-17 --agent --select results.name,results.rating,results.price_per_night,results.booking_urls.primary
仅返回 Agent 需要的四个字段,而非每条结果的完整数据。
根据 token 获取酒店详情
hotel-goat-pp-cli hotel show <property-token>
根据搜索返回的 property_token 获取完整的酒店详情(设施、附近地点、完整图片集)。
保存和查看酒店
hotel-goat-pp-cli wishlist add <property-token> && hotel-goat-pp-cli wishlist list
本地 SQLite 心愿单:保存搜索结果中的酒店,之后可查看。
健康检查
hotel-goat-pp-cli doctor
确认网络可访问 Google Hotels,并确认解析器仍能找到 AF_initDataCallback 数据块。
身份验证设置
无需身份验证。Google Hotels SSR 可公开访问。通过系统区域设置设定 Accept-Language;传入 --currency EUR 可使用其他货币显示价格。
运行 hotel-goat-pp-cli doctor 以验证设置。
Agent 模式
可将 --agent 添加到任意命令。它会展开为:--json --compact --no-input --no-color --yes。
-
可管道传递 — JSON 输出到 stdout,错误输出到 stderr
-
可筛选 —
--select保留指定字段。点分路径可深入嵌套结构;数组会逐元素遍历。对于输出冗长的 API,此功能对控制上下文大小至关重要:hotel-goat-pp-cli hotels "San Francisco" 2026-08-15 2026-08-17 --agent --select results.name,results.price_per_night,results.booking_urls.primary -
可预览 —
--dry-run显示请求,但不发送 -
支持离线使用 — 有本地 SQLite 存储时,同步/搜索命令可使用该存储
-
非交互式 — 从不提示输入;所有输入都通过标志传入
-
只读 — 请勿使用此 CLI 执行创建、更新、删除、发布、评论、点赞、邀请、下单、发送或其他会修改数据的请求
响应封装
从本地存储或 API 读取数据的命令,会将输出封装在来源信息中:
{
"meta": {"source": "live" | "local", "synced_at": "...", "reason": "..."},
"results": <data>
}
解析 .results 获取数据,并通过 .meta.source 确认数据来自实时来源还是本地来源。只有当 stdout 连接到终端,且未设置任何机器格式标志(--json、--csv、--compact、--quiet、--plain、--select)时,才会将便于人类阅读的 N results (live) 摘要输出到 stderr;管道/Agent 使用方和显式指定格式的运行会在 stdout 输出纯 JSON。
Agent 反馈
当你(或 Agent)发现此 CLI 有异常之处时,请记录下来:
hotel-goat-pp-cli feedback "the --since flag is inclusive but docs say exclusive"
hotel-goat-pp-cli feedback --stdin < notes.txt
hotel-goat-pp-cli feedback list --json --limit 10
条目会存储在本地的 ~/.hotel-goat-pp-cli/feedback.jsonl。除非设置了 HOTEL_GOAT_FEEDBACK_ENDPOINT,且传入了 --send 或将 HOTEL_GOAT_FEEDBACK_AUTO_SEND 设为 true,否则绝不会通过 POST 发送。默认仅存储在本地。
写下让你感到意外的事,而不是错误报告。简短、具体、一行即可:这正是持续积累的关键。
输出传递
每个命令都接受 --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”模式。
hotel-goat-pp-cli profile save briefing --json
hotel-goat-pp-cli --profile briefing hotels "San Francisco" 2026-08-15 2026-08-17
hotel-goat-pp-cli profile list --json
hotel-goat-pp-cli profile show briefing
hotel-goat-pp-cli profile delete briefing --yes
显式标志的优先级始终高于配置值;配置值的优先级高于默认值。agent-context 会在 available_profiles 下列出所有可用配置,以便 Agent 在运行时发现它们。
退出码
| 代码 | 含义 |
|---|---|
| 0 | 成功 |
| 2 | 用法错误(参数错误) |
| 3 | 未找到资源 |
| 5 | API 错误(上游问题) |
| 7 | 请求过于频繁(等待后重试) |
| 10 | 配置错误 |
参数解析
解析 $ARGUMENTS:
- 为空、
help或--help→ 显示hotel-goat-pp-cli --help输出 - 以
install开头 → 以mcp结尾 → 安装 MCP;否则 → 参见上文的先决条件 - 其他任何内容 → 直接使用(作为 CLI 命令执行,并附加
--agent)
MCP 服务安装
- 安装 MCP 服务:
go install github.com/mvanhorn/printing-press-library/library/travel/hotel-goat/cmd/hotel-goat-pp-mcp@latest - 在 Claude Code 中注册:
claude mcp add hotel-goat-pp-mcp -- hotel-goat-pp-mcp - 验证:
claude mcp list
直接使用
- 检查是否已安装:
which hotel-goat-pp-cli如果未找到,请提供安装选项(参见本技能开头的先决条件)。 - 根据用户查询,从上文的独特功能和命令参考中选择最合适的命令。
- 使用
--agent标志执行:hotel-goat-pp-cli <command> [subcommand] [args] --agent - 如果存在歧义,请查看子命令帮助:
hotel-goat-pp-cli <command> --help。