mcpField
P
pp-hotel-tonight

pp-hotel-tonight

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

关于 pp-hotel-tonight

pp-hotel-tonight 是供 Agent 和脚本查询 HotelTonight 临时酒店优惠的只读命令行技能。它结合实时搜索与本地价格历史来追踪降价、评估报价;无需登录,也不能预订。

主要功能

  1. 01搜索临时酒店优惠
  2. 02监控价格并发现降价
  3. 03查看酒店价格历史与判断
  4. 04比较街区和日期
  5. 05查询市场与 Daily Drop 优惠
  6. 06筛选适用于 Agent 的输出

适用场景

  1. 01按价格目标追踪城市优惠
  2. 02判断酒店报价是否偏低
  3. 03比较街区或入住日期
  4. 04查看当天及历史 Daily Drop

MCP 相关

该技能说明了如何安装 `hotel-tonight-pp-mcp` MCP 服务并在 Claude Code 中注册,但未说明其向 MCP 暴露的工具。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mvanhorn/printing-press-library --skill pp-hotel-tonight

安装后在 Claude Code 中输入/pp-hotel-tonight确认已加载。

详细介绍

HotelTonight — Printing Press CLI

前提条件:安装 CLI

此技能通过 hotel-tonight-pp-cli 二进制文件运行。**调用此技能中的任何命令前,必须确认 CLI 已安装。**如果尚未安装,请先安装:

  1. 通过 Printing Press 安装程序进行安装。在 macOS/Linux 上,二进制文件默认安装到 $HOME/.local/bin;在 Windows 上,默认安装到 %LOCALAPPDATA%\Programs\PrintingPress\bin:
    npx -y @mvanhorn/printing-press-library install hotel-tonight --cli-only
    
  2. 验证:hotel-tonight-pp-cli --version
  3. 确保报告的安装目录位于将调用此技能的 Agent/运行时的 $PATH 中。

如果 npx 安装失败(未安装 Node、处于离线状态等),请改用直接通过 Go 安装的方式(需要 Go 1.26.6 或更高版本):

go install github.com/mvanhorn/printing-press-library/library/travel/hotel-tonight/cmd/hotel-tonight-pp-cli@latest

如果安装后 --version 报告“command not found”,说明运行时无法在 $PATH 中找到二进制文件目录。验证成功前,请勿继续执行技能命令。

何时使用此 CLI

当 Agent 或脚本需要 HotelTonight 上最新的酒店优惠数据,并希望数据能够持续积累时,请使用此 CLI:例如监控某个城市的降价情况、建立某家酒店的价格历史、判断报价是否真的便宜,或比较不同街区和日期。此 CLI 只读且匿名——不会预订,也无需登录。

何时不使用此 CLI

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

独特功能

这些功能在此 API 的其他工具中均不可用。

本地价格分析
  • watch — 立即快照某个地点的优惠,并告知你哪些房间价格低于设定的门槛,或较上次查看时有所下降。

    当 Agent 需要持续监控某个城市的酒店临时降价,而不是盲目地反复查询时,使用此命令。

    hotel-tonight-pp-cli watch --lat 37.7749 --lng -122.4194 --when tonight --below 150 --agent
    
  • history — 显示本地存储中某家酒店记录的价格和折扣百分比历史。

    当你需要了解某家酒店实际的价格走势,而非单次临时报价时使用。

    hotel-tonight-pp-cli history "Argonaut Hotel" --days 30 --agent
    
  • verdict — 根据某家酒店自身记录的最低价、中位价和最高价,将其当前报价判定为便宜、正常或昂贵。

    当你想以可靠的基准而非猜测来回答“这真的便宜吗?”时,使用此命令。

    hotel-tonight-pp-cli verdict "Argonaut Hotel" --agent
    
实时优惠视图
  • compare-neighborhoods — 按街区对某个都市圈今晚的优惠分组,并按中位价或最佳折扣百分比对街区排序。

    当你需要判断今晚在某座城市选择哪个区域性价比最高时使用。

    hotel-tonight-pp-cli compare-neighborhoods --metro 1 --when tonight --agent
    
  • datescan — 通过并排排名视图,比较某个地点今晚、明晚和周末的优惠。

    当你想找到某个区域最便宜的住宿夜晚,而不想反复进行搜索时,使用此命令。

    hotel-tonight-pp-cli datescan --lat 30.3071 --lng -97.7354 --agent
    
  • daily-drop — 显示某个市场今日的 Daily Drop 酒店及其实际折扣价(应用会通过滑动解锁门槛将其隐藏);使用 --history 可查看过往 Daily Drop 的记录。

    用于查看和追踪 HotelTonight 独家每日限时优惠;应用会在你解锁前将其隐藏,并在每天结束时清除。

    hotel-tonight-pp-cli daily-drop --metro 1 --agent
    

命令参考

inventory — 按地点查询酒店临时优惠库存

  • hotel-tonight-pp-cli inventory — 搜索指定日期范围内、靠近某个经纬度的酒店临时优惠

markets — HotelTonight 市场(提供优惠的城市)

  • hotel-tonight-pp-cli markets get — 按数字 ID 获取单个市场
  • hotel-tonight-pp-cli markets list — 列出 HotelTonight 的主要市场及其位置、slug 和类别价格
  • hotel-tonight-pp-cli markets nearby — 列出指定市场 ID 对应的热门/附近市场
查找合适的命令

知道自己想做什么,但不知道该用哪个命令时,可以直接询问 CLI:

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

which 会根据自然语言能力查询,从此 CLI 精选的功能索引中找出最匹配的命令。退出代码 0 表示至少找到一个匹配项;退出代码 2 表示没有可信的匹配项——请改用 --help,或缩小查询范围。

使用示例

查找今晚坐标附近最便宜的选项,并精简输出供 Agent 使用
hotel-tonight-pp-cli inventory --latitude 37.7749 --longitude -122.4194 --agent --select rooms.hotel.name,rooms.hotel.neighborhood,rooms.customer_price_per_night,rooms.strikethrough_price,rooms.deal_type

原始库存数据包含数十 KB 的嵌套优惠信息;使用 --select 和点分路径,只返回酒店、街区、价格、30 天最高价和优惠类型,避免 Agent 消耗过多上下文。

关注某个街区,等待价格达到目标
hotel-tonight-pp-cli watch --lat 37.7749 --lng -122.4194 --when tonight --below 150

保存当前优惠快照,并报告现在低于 150 美元或比上次观察更便宜的客房——可以通过 cron 定时运行,在你离开时捕捉降价。

决定住哪一晚
hotel-tonight-pp-cli datescan --lat 30.3071 --lng -97.7354

并排比较同一地区今晚、明晚和周末的价格,让你一眼选出最便宜的一晚。

这个房价真的划算吗?
hotel-tonight-pp-cli verdict "Argonaut Hotel"

根据酒店记录的最低价、中位价和最高价对当前报价进行分类——需要先同步几次来建立基准。

身份验证设置

无需身份验证。

运行 hotel-tonight-pp-cli doctor 以验证设置。

Agent 模式

在任意命令中添加 --agent。它会展开为:--json --compact --no-input --no-color --yes。

  • 可管道传输——JSON 输出到 stdout,错误输出到 stderr

  • 可筛选——--select 保留部分字段。点分路径可访问嵌套结构;数组会逐元素遍历。对于输出冗长的 API,这对控制上下文大小至关重要:

    hotel-tonight-pp-cli inventory --latitude example-value --longitude example-value --agent --select id,name,status
    
  • 可预览——--dry-run 显示请求,但不会发送

  • 支持离线使用——有本地 SQLite 存储时,sync/search 命令可以使用该存储

  • 非交互式——绝不显示提示,每项输入都通过标志指定

  • 只读——请勿使用此 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-tonight-pp-cli feedback "the --since flag is inclusive but docs say exclusive"
hotel-tonight-pp-cli feedback --stdin < notes.txt
hotel-tonight-pp-cli feedback list --json --limit 10

条目会保存在本地的 ~/.hotel-tonight-pp-cli/feedback.jsonl 中。只有设置了 HOTEL_TONIGHT_FEEDBACK_ENDPOINT,且传入了 --send 或设置了 HOTEL_TONIGHT_FEEDBACK_AUTO_SEND=true,才会通过 POST 发送。默认情况下,反馈仅保存在本地。

记录让你感到意外的地方,而不是提交错误报告。简短、具体、一行即可:这部分内容会不断累积,发挥更大作用。

输出交付

每个命令都接受 --deliver <sink>。输出除了发送到 stdout(或取代 stdout)之外,还会发送到指定的目标端,因此 Agent 无需手动通过管道即可转发命令结果。支持三种目标端:

目标端效果
stdout默认;仅写入 stdout
file:<path>将输出原子写入 <path>(先写入临时文件,再重命名)
webhook:<url>将输出正文 POST 到 URL(使用 --compact 时,Content-Type 为 application/json 或 application/x-ndjson)

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

命名配置

配置是一组已保存的标志值,可在多次调用中重复使用。如果定时 Agent 每次运行都调用相同的命令并使用相同配置,请使用此功能——即 HeyGen 的 “Beacon” 模式。

hotel-tonight-pp-cli profile save briefing --json
hotel-tonight-pp-cli --profile briefing inventory --latitude example-value --longitude example-value
hotel-tonight-pp-cli profile list --json
hotel-tonight-pp-cli profile show briefing
hotel-tonight-pp-cli profile delete briefing --yes

显式标志始终优先于配置值;配置值优先于默认值。agent-context 会在 available_profiles 下列出所有可用配置,以便 Agent 在运行时发现它们。

退出代码

代码含义
0成功
2用法错误(参数错误)
3未找到资源
5API 错误(上游问题)
7触发速率限制(等待后重试)
10配置错误

参数解析

解析 $ARGUMENTS:

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

MCP 服务安装

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

直接使用

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

评论

支持 Markdown