关于 award-calendar
此编排技能将 seats.aero 的缓存奖励航班搜索整理为按日期和舱位划分的日历,供日期灵活的积分旅行规划使用。它还指导比较转点货币成本并呈现结果;不提供独立脚本。
主要功能
- 01按日期范围查询奖励航班
- 02按舱位整理每日最低里程
- 03比较转点货币的有效成本
- 04以日历表格呈现结果
- 05覆盖超出 60 天的日期范围
适用场景
- 01寻找灵活日期中的低价商务舱
- 02查看某月航线奖励座位情况
- 03比较不同日期的里程需求
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ borski/ travel-hacking-toolkit --skill award-calendar安装后在 Claude Code 中输入/award-calendar确认已加载。
详细介绍
奖励机票日历
“什么时候用积分从 SFO 飞往 NRT?”——用日历视图回答。
在一段日期范围内搜索 seats.aero,并以网格形式展示每天、每个舱等的最低奖励票价。突出最适合出行的日期。
**这是一个编排技能。**它会告诉 Agent 如何查询 seats.aero 并整理结果。没有独立脚本。
适用场景
- “用积分飞 SFO 到 NRT,什么时候最便宜?”
- “帮我看看 9 月 SFO-CDG 的奖励机票情况”
- “我的日期很灵活,什么时候出发比较好?”
- 任何日期灵活的奖励机票搜索
不适用场景
- 查询特定日期(直接使用
seats-aero) - 现金票价日历(使用 Google Flights 的“Date grid”或 Skiplagged)
- 酒店日期灵活性(此处不支持)
工作流
第 1 步:搜索日期范围
使用 seats.aero 缓存搜索 API,并指定日期范围。每次查询最多支持约 60 天。
curl -s -H "Partner-Authorization: $SEATS_AERO_API_KEY" \
"https://seats.aero/partnerapi/search?origin_airport={ORIGIN}&destination_airport={DEST}&start_date={START}&end_date={END}&cabin={CABIN}"
参数:
origin_airport:可用逗号分隔多个附近机场(例如SFO,SJC,OAK)destination_airport:同上。都市圈可指定多个机场(例如东京的NRT,HND)start_date、end_date:格式为 YYYY-MM-DD。为获得最佳结果,请将范围控制在 60 天以内。cabin:可选筛选条件。可选值为economy、premium、business、first。省略则搜索所有舱等。order_by:使用lowest_mileage,按所需里程从低到高排序。take:设为1000,一次获取所有结果。
日期范围超过 60 天时,分两次查询并合并结果。
第 2 步:按日期分组
处理 API 响应:
For each availability object:
date = result.Date
cabin = which cabin(s) are available (Y/W/J/F)
For each available cabin:
cost = result.{cabin}MileageCost
program = result.Source
Track: cheapest cost per date per cabin across all programs
第 3 步:优化转点合作伙伴选择
针对每个日期的最低价结果,使用 data/transfer-partners.json 计算可转点货币的实际成本:
For date 2026-09-05, cheapest business = 55,000 via Flying Blue:
Chase UR: 55,000 / 1.0 = 55,000 UR
Amex MR: 55,000 / 1.0 = 55,000 MR
Bilt: 55,000 / 1.0 = 55,000 Bilt
第 4 步:展示日历网格
**始终使用 Markdown 表格。**每个请求的舱等各用一个表格。
商务舱:SFO → NRT,2026 年 9 月
| 日期 | 计划 | 里程 | 最佳积分货币 | 积分 | CPP* | 座位数 | 直飞 |
|---|---|---|---|---|---|---|---|
| 9 月 3 日 ⭐ | Virgin Atlantic | 52,500 | Chase UR | 52,500 | 8.0 | 2 | ✅ ANA |
| 9 月 5 日 | Flying Blue | 55,000 | 任意 1:1 | 55,000 | 7.6 | 4 | ✅ AF |
| 9 月 7 日 | Aeroplan | 70,000 | Chase UR | 70,000 | 6.0 | 1 | ✅ ANA |
| 9 月 8 日 | United | 88,000 | Chase UR | 88,000 | 4.8 | 3 | ✅ UA |
| 9 月 10 日 | — | — | — | — | — | — | ❌ 无可用座位 |
| 9 月 12 日 | Aeroplan | 75,000 | Amex MR | 75,000 | 5.6 | 2 | ❌ 1 次中转 |
| ... | ... | ... | ... | ... | ... | ... | ... |
*如有 Duffel/Ignav 的现金票价,则据此计算 CPP;否则为估算值。
⭐ = 本月最佳优惠
总结:
- 最佳日期:9 月 3 日,通过 Virgin Atlantic 乘坐 ANA,需 52,500 里程(8.0 cpp)
- 次佳日期:9 月 5 日,通过 Flying Blue 需 55,000 里程
- 最差的一周:9 月 10 日至 14 日(大多数日期没有商务舱座位)
- 最便宜的经济舱:9 月 12 日,需 25,000 United 里程
第 5 步:补充信息
表格后请包含:
- 数据时效提醒:“数据来自 seats.aero 缓存搜索。最近发现时间可能有所不同。转点前请先核实。”
- 转点建议:“确认航空公司网站上有该航班后再转点。”
- **现金价格对比:**如果获取了现金票价(来自 Duffel/Ignav),请展示 CPP 供参考。
- **预订链接:**说明前 3 个日期的预订方式(例如“通过 Virgin Atlantic 网站预订,致电保留座位”)。
- **放票日期说明:**如果搜索的日期较远,请说明哪些航空公司可能尚未放出座位(使用 seats.aero 放票日期工具)。
错误处理
绝不要悄无声息地失败。
- ❌ Seats.aero: API error (rate limit). Try again in a few minutes.
- ⚠️ Seats.aero: Only 12 results for 30-day range. Some dates may have uncached availability. Try live search for specific dates of interest.
- ℹ️ No business availability found for any date. Showing economy and premium economy instead.
如果整个日期范围都没有结果,请明确说明,并建议:
- 扩大机场搜索范围(添加附近机场)
- 查看其他月份
- 查看其他舱等
- 使用 seats.aero 实时搜索查询特定日期(仅限本地 Patchright)
限制
- 仅包含缓存数据。 结果可能已有 1–48 小时。实时搜索(通过 seats-aero-web)更新更及时,但仅限 Bobby-local 使用。
- 查询范围限制为 60 天。 更长的日期范围需拆分为多个查询。
- 不支持往返优化。 仅显示单程可用情况。查询往返行程时,请分别搜索去程和返程。
- 没有现金票价日历。 这里只显示奖励票。若要灵活选择现金票价日期,请使用 Google Flights 的“日期网格”视图。
- 虚假可用情况。 某些结果可能无法实际预订。请务必核实。
评论
支持 Markdown