mcpField
P
pp-hotel-goat

pp-hotel-goat

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

关于 pp-hotel-goat

pp-hotel-goat 是用于驱动 Hotel GOAT CLI 的技能,可搜索 Google Hotels、查看酒店详情并维护本地愿望清单。它面向旅行查询而非预订,并支持为 Agent 筛选输出字段。

主要功能

  1. 01按地点和日期搜索酒店
  2. 02按星级、价格和货币筛选
  3. 03查看酒店详情与评价
  4. 04为 Agent 选择嵌套字段
  5. 05将酒店保存到本地愿望清单

适用场景

  1. 01比较旅程日期的酒店价格
  2. 02查找指定地点附近的酒店
  3. 03查看酒店设施和评分
  4. 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 已安装。**如果尚未安装,请先安装:

  1. 通过 Printing Press 安装程序安装。默认情况下,二进制文件会安装到 macOS/Linux 的 $HOME/.local/bin,以及 Windows 的 %LOCALAPPDATA%\Programs\PrintingPress\bin:
    npx -y @mvanhorn/printing-press-library install hotel-goat --cli-only
    
  2. 验证:hotel-goat-pp-cli --version
  3. 确保报告的安装目录已加入将调用此技能的 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未找到资源
5API 错误(上游问题)
7请求过于频繁(等待后重试)
10配置错误

参数解析

解析 $ARGUMENTS:

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

MCP 服务安装

  1. 安装 MCP 服务:
    go install github.com/mvanhorn/printing-press-library/library/travel/hotel-goat/cmd/hotel-goat-pp-mcp@latest
    
  2. 在 Claude Code 中注册:
    claude mcp add hotel-goat-pp-mcp -- hotel-goat-pp-mcp
    
  3. 验证:claude mcp list

直接使用

  1. 检查是否已安装:which hotel-goat-pp-cli 如果未找到,请提供安装选项(参见本技能开头的先决条件)。
  2. 根据用户查询,从上文的独特功能和命令参考中选择最合适的命令。
  3. 使用 --agent 标志执行:
    hotel-goat-pp-cli <command> [subcommand] [args] --agent
    
  4. 如果存在歧义,请查看子命令帮助:hotel-goat-pp-cli <command> --help。

评论

支持 Markdown