mcpField
G
google-hotels

google-hotels

github.com/skillhq生产力1465 次安装34 周前更新
代码仓库

关于 google-hotels

通过 agent-browser 搜索 Google Hotels 的酒店查询技能,提供价格、评分、设施和日期可用性信息。适合比较酒店住宿选项;仅用于搜索,不负责完成预订。

主要功能

  1. 01按地点或酒店名称搜索
  2. 02查询指定日期价格与可用性
  3. 03比较评分、设施和住宿价格
  4. 04通过独立会话隔离搜索

适用场景

  1. 01比较不同区域的酒店
  2. 02查找特定日期的酒店价格
  3. 03按评分或设施筛选住宿选项

安装

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

$npx skills add https://github.com/skillhq/hotel-search --skill google-hotels

安装后在 Claude Code 中输入/google-hotels确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

README.md
.github/workflows/
publish.yml
references/
interaction-patterns.md

详细介绍

Google Hotels 搜索

通过 agent-browser 搜索 Google Hotels,查找酒店价格、评分、设施和可订情况。

适用场景

  • 用户要求搜索、查找或比较酒店或住宿
  • 用户想了解某个城市、街区或地标附近的酒店价格
  • 用户询问特定日期的酒店空房情况
  • 用户想找某个区域评分最高或价格最低的酒店

不适用场景

  • 预订:此技能仅用于搜索,绝不完成购买
  • 度假租赁 / Airbnb:Google Hotels 显示酒店,不显示租赁房源
  • 航班:使用航班搜索技能
  • 历史价格:Google Hotels 仅显示当前价格
  • 搜索期间绝不要离开 Google Hotels——不要转到 Booking.com、Expedia、Hotels.com 或任何 OTA 来绕过搜索限制。例外:展示结果后,可以访问酒店的自有网站,查询直接预订 / 优惠(见搜索后)。

会话约定

始终使用 --session hotels 进行隔离。

URL 快速路径(优先)

构建一个包含地点和日期编码的 URL。可直接加载结果——总共只需 3 条命令。

URL 模板
https://www.google.com/travel/search?q={QUERY}&qs=CAE4AA&ts={TS_PARAM}&ap=MAE

其中 {QUERY} 是地点 / 酒店名称,{TS_PARAM} 是经过 base64 编码的日期参数。

在 URL 中编码日期

Google Hotels 使用经过 protobuf 编码的 ts 参数表示日期。2025 至 2030 年的字节布局固定。使用此 bash 函数生成参数:

hotel_ts() {
  local ci_y=$1 ci_m=$2 ci_d=$3 co_y=$4 co_m=$5 co_d=$6 nights=$7
  local cyl=$(printf '%02x' $(( ($ci_y & 0x7f) | 0x80 )))
  local cyh=$(printf '%02x' $(($ci_y >> 7)))
  local col=$(printf '%02x' $(( ($co_y & 0x7f) | 0x80 )))
  local coh=$(printf '%02x' $(($co_y >> 7)))
  echo -n "08011a200a021a00121a12140a0708${cyl}${cyh}10$(printf '%02x' $ci_m)18$(printf '%02x' $ci_d)120708${col}${coh}10$(printf '%02x' $co_m)18$(printf '%02x' $co_d)18$(printf '%02x' $nights)32020801" \
    | xxd -r -p | base64 | tr -d '\n='
}
# Usage: hotel_ts CHECKIN_YEAR MONTH DAY CHECKOUT_YEAR MONTH DAY NIGHTS
# Example: hotel_ts 2026 3 15 2026 3 20 5
# Output: CAEaIAoCGgASGhIUCgcI6g8QAxgPEgcI6g8QAxgUGAUyAggB

约束:年份为 2025-2030,月份为 1-12,日期为 1-31,住宿晚数为 1-127。这些范围涵盖了所有现实中的酒店搜索需求。

地点格式
格式示例
城市Hotels+in+Bangkok
城市 + 国家Hotels+in+Bangkok+Thailand
街区Hotels+in+Shibuya+Tokyo
地标附近Hotels+near+Eiffel+Tower
地区Hotels+in+Amalfi+Coast
机场Hotels+near+BKK+airport
特定酒店Haus+im+Tal+Munich
URL 与交互功能对比
功能可通过 URL 设置?
地点✅ 可以(通过 q=)
日期✅ 可以(通过 ts=)
客人 / 房间❌ 通过交互设置(默认:1 间房、2 位客人)
筛选条件(星级、价格、设施)❌ 通过交互设置
示例:曼谷酒店,3 月 15 日至 20 日
# Step 1: Generate ts parameter
ts=$(hotel_ts 2026 3 15 2026 3 20 5)

# Step 2: Open with location + dates — results load immediately
agent-browser --session hotels open "https://www.google.com/travel/search?q=Hotels+in+Bangkok&qs=CAE4AA&ts=${ts}&ap=MAE"
agent-browser --session hotels wait --load networkidle
agent-browser --session hotels snapshot -i

# Step 3: Extract results from snapshot, then close
agent-browser --session hotels close
示例:指定酒店及日期
ts=$(hotel_ts 2026 3 9 2026 3 12 3)
agent-browser --session hotels open "https://www.google.com/travel/search?q=Haus+im+Tal+Munich&qs=CAE4AA&ts=${ts}&ap=MAE"
agent-browser --session hotels wait --load networkidle
agent-browser --session hotels snapshot -i
agent-browser --session hotels close
不指定日期(仅地点)

如果用户未指定日期,请省略 ts、qs 和 ap 参数:

agent-browser --session hotels open "https://www.google.com/travel/search?q=Hotels+in+Bangkok"
agent-browser --session hotels wait --load networkidle
agent-browser --session hotels snapshot -i

结果将显示“起价”。如果用户之后提供日期,请通过交互设置(见深入参考)。

有关详细的交互式工作流(日期选择器导航、客人 / 房间选择器、筛选条件),请参阅深入参考。

结果格式

将结果作为一张信息丰富的表格呈现:

| # | Hotel | Stars | Rating | Price/Night | Total | Via | Key Amenities |
|---|-------|-------|--------|-------------|-------|-----|---------------|
| 1 | Sukhothai Bangkok | ★★★★★ | 9.2 | $185 | $925 | Hotels.com | Pool, Spa, WiFi |
| 2 | Centara Grand | ★★★★★ | 8.8 | $165 | $825 | Booking.com | Pool, Gym, WiFi |
| 3 | Ibis Sukhumvit | ★★★ | 7.4 | $45 | $225 | Agoda | WiFi, Restaurant |

并行会话

仅当用户明确要求比较不同搜索结果时使用(例如:“比较涩谷和新宿的酒店”)。

agent-browser --session shibuya open "https://www.google.com/travel/search?q=Hotels+in+Shibuya+Tokyo" &
agent-browser --session shinjuku open "https://www.google.com/travel/search?q=Hotels+in+Shinjuku+Tokyo" &
wait

agent-browser --session shibuya wait --load networkidle &
agent-browser --session shinjuku wait --load networkidle &
wait

# Set dates in both sessions, then snapshot both
agent-browser --session shibuya snapshot -i
agent-browser --session shinjuku snapshot -i

agent-browser --session shibuya close &
agent-browser --session shinjuku close &
wait

关键规则

规则原因
优先使用带 ts= 的 URL 快速路径带日期仅需 3 条命令,交互式操作则需 10 条以上
wait --load networkidle比固定等待 wait 5000 更智能
有日期时,始终在 URL 中编码日期使用 hotel_ts 生成 ts 参数
输入文本时使用 fill,不要使用 type会先清除现有文本
输入地点后等待 2 秒自动补全需要 API 往返
点击建议项,绝不要按 EnterEnter 键对自动补全不可靠
每次交互后重新获取快照DOM 变化会使引用失效
检查是否显示“查看价格”这表示尚未设置日期
搜索期间绝不要离开 Google Hotels例外:显示结果后,可访问酒店自有网站查询直接预订
使用“<”和“>”切换日历日历可能打开在错误的月份,使用箭头向前或向后切换

故障排除

问题解决方案
同意弹窗点击「全部接受」或「全部拒绝」
URL 快捷路径失败回退到 google.com/travel/hotels 交互流程
没有结果 /「查看价格」设置入住和退房日期
日历打开在错误的月份使用「<」箭头向前导航,或使用「>」向后导航。导航后务必重新生成快照,以确认目标月份可见
日历覆盖层阻止生成快照按 Escape 关闭日历,重新生成快照,然后重新打开日期选择器并重试
价格过时价格为实时参考价——请说明这一点
货币不匹配Google 使用浏览器区域设置中的货币——请指出任何差异
CAPTCHA告知用户。不要尝试解决。稍等片刻后重试
显示地图视图而非列表点击「列表」或「查看列表」切换按钮
找不到酒店尝试不同写法:全名、较短名称、名称 + 城市、名称 + 街区

搜索后:直接预订与优惠

展示结果后,务必询问用户是否希望你查看是否有更优惠的价格。可以这样说:

「要我查看[酒店名称]的官方网站,看看有没有促销代码或会员价吗?直接预订通常比通过 OTA 更便宜。」

何时提供此选项
  • 用户按名称搜索特定酒店时,务必提供
  • 结果中有一个明显胜出的选项,且用户感兴趣时,务必提供
  • 比较多家酒店时,应用户要求提供——针对用户选中的酒店
查看内容

在新会话(--session direct)中打开酒店官网,并查找:

  1. 直接预订价格——通常比 OTA(Booking.com、Expedia 等)便宜 5-15%
  2. 促销代码——查找横幅、弹窗或「优惠」/「特惠」/「促销」页面
  3. 会员/忠诚度计划价格——「注册即可享首次预订 X% 折扣」或免费会员折扣
  4. 套餐优惠——含早餐、免费取消、停车套餐
  5. 季节性促销——节假日特惠、提前预订价、最后一分钟优惠
# After Google Hotels search is done, visit hotel's direct site
agent-browser --session direct open "https://www.example-hotel.com"
agent-browser --session direct wait --load networkidle
agent-browser --session direct snapshot -i
# Look for: promo banners, "offers" or "deals" links, booking widget prices
agent-browser --session direct close
连锁酒店忠诚度计划

如果酒店属于大型连锁品牌,请介绍其忠诚度计划——会员通常能享受更优惠的价格、客房升级或积分:

连锁品牌品牌忠诚度计划典型会员福利
IHGHoliday Inn、InterContinental、Crowne Plaza、Kimpton、IndigoIHG One Rewards会员价(通常最便宜)、赚取积分、奖励住宿第 4 晚免费
MarriottMarriott、Sheraton、Westin、W、Ritz-Carlton、Courtyard、AloftMarriott Bonvoy会员价、移动端办理入住、积分/里程
HiltonHilton、DoubleTree、Hampton、Conrad、Waldorf AstoriaHilton Honors会员折扣、奖励住宿第 5 晚免费、数字钥匙
AccorSofitel、Novotel、ibis、Mercure、Moxy、FairmontALL - Accor Live Limitless会员价、会籍等级福利
HyattHyatt、Andaz、Park Hyatt、ThompsonWorld of Hyatt会员价、免费住宿奖励、套房升级
如何识别连锁品牌

Google Hotels 快照通常会包含连锁品牌名称:

  • "Holiday Inn Express Bangkok Sukhumvit 11 by IHG" → IHG
  • "Courtyard by Marriott Bangkok" → Marriott
  • "Hilton Munich City" → Hilton
  • "Novotel Muenchen City" → Accor
  • 不带连锁品牌后缀 → 可能是独立酒店(直接查看其官网)
独立酒店

对于独立/精品酒店(如 Haus im Tal):

  • 查看官网是否有促销代码(通常显示在横幅或专门的「优惠」页面中)
  • 查找「直接预订」优惠(最低价保证、免费额外服务)
  • 查看是否提供订阅新闻邮件的折扣
  • 如果网站上没有显示相关信息,可在网页搜索中输入酒店名称 +「促销代码」
展示对比结果

查看后,展示直接预订与 OTA 的价格对比:

## Haus im Tal — Booking Comparison

| Source | Room Type | Price/Night | Total (3 nights) | Notes |
|--------|-----------|-------------|-------------------|-------|
| Booking.com | Downtown Cozy | €183 | €549 | Free cancellation |
| Hotel direct | Downtown Cozy | €175 | €525 | Use code HIT24 for 5% off |
| Hotel direct (with code) | Downtown Cozy | €166 | €499 | Best price |

提示:务必提醒用户,你无法完成预订——只能提供链接和找到的促销代码。

深入参考

请参阅 references/interaction-patterns.md,了解:

  • 完整的注释式演练(每条命令及预期输出)
  • 位置自动补全的故障模式与恢复方法
  • 日期选择器的日历导航
  • 房客与客房选择器(最复杂的组件)
  • 筛选条件(星级、价格、设施、取消政策)
  • 滚动查看更多结果
  • 下钻查看酒店详情并比较供应商价格
  • 直接预订与促销码检查工作流

评论

支持 Markdown