Communitygithub.com

tracerman/cheapcharts-skill

用于在 CheapCharts 支持的商店中发现有价值的数字电影和电视交易、捆绑包以及已验证的历史最低价的智能体技能。

cheapcharts-skill 是什么?

该技能为开发者与 AI 智能体提供了一个全面的接口,用于在 iTunes (Apple TV)、Amazon Prime Video、Vudu 和 Google Play 等平台上追踪数字电影和电视节目的价格。它基于免费公共 API 构建,无需身份验证且无速率限制,支持并行调用(例如 deals.py 脚本使用 8 个并发工作者)。技能核心在于通过“Deals”端点获取当前交易,并结合内部“DetailData”端点验证每日价格变动、识别历史最低价(ATL)以及过滤虚假降价。它涵盖了搜索、图表、推荐、畅销榜和价格查询等多个端点,并针对每个用例提供了详细的决策指南(例如,查找最新降价、特定评分下的最佳交易或 ATL 优惠)。技能文档还包含大量实用陷阱提示和配方,帮助用户避免常见错误并高效利用 API,其典型流程是从“最新价格变动”排序的交易列表开始,逐项调用 DetailData 以确认日期和 ATL 状态。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add tracerman/cheapcharts-skill

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

CheapCharts API 技能

一个免费、公共 API 的价格追踪器,用于追踪 iTunes (Apple TV)、Amazon Prime Video、Vudu 和 Google Play 上的数字电影和电视节目。无需认证,无速率限制。并行调用是安全的——deals.py 脚本使用了 8 个并发的 DetailData 工作线程。

仓库: https://github.com/tracerman/cheapcharts-skill
API 基础 URL: https://buster.cheapcharts.de/v1/gptapi/
历史最低价 (ATL) 检查: https://buster.cheapcharts.de/v1/DetailData.php(非官方内部端点——参见陷阱 #17)

默认工作流(规范模式)

当用户询问有关交易、降价、价格或“现在什么便宜”的任何问题时,请遵循以下流程:

  1. 决定商店。 默认为 itunes(美国),或使用 itunes,amazon,vudu,googlePlay 进行多商店搜索。
  2. 决定项目类型。 电影使用 buymovies,电视使用 seasons,仅搜索使用 all。
  3. 使用 sort=latestPricechange 获取交易 用于“最新” / “今日降价” / “刚刚变化的” 问题。使用 sort=greatestSavings 获取“最佳交易”,或使用 sort=releaseDate 获取“最新发布”。
  4. 通过访问 DetailData 验证“今日”声明,针对每个候选项目并检查 priceHdLastChangeDate(或 priceSdLastChangeDate)。始终首先检查响应 status 字段——status=error 意味着你的调用静默失败(参见陷阱 #15)。
  5. 过滤掉虚假降价(priceBefore - price <= $1)以及在按 releaseDate 排序时的捆绑包占位日期。
  6. 使用 DetailData 的 ATL 标志 (priceHdIsLowest / priceSdIsLowest) 丰富信息,使得每个报告都能显示每次降价是否处于历史最低价。CheapCharts 为每个项目额外调用一次——请参阅呈现指南中的标准报告模板。

完整的“今日降价”配方(含 Python 验证)在工作流配方部分。

何时使用

  • 用户询问数字商店中电影/电视节目的价格
  • 用户想查找数字电影的优惠或折扣
  • 用户想浏览排行榜(什么流行/热门)
  • 用户想要某个类型的推荐
  • 用户想比较跨商店的价格(iTunes、Amazon、Vudu、Google Play)
  • 用户想查看价格历史或最低历史价格
  • 用户直接提到 CheapCharts

不要用于: 实体媒体(Blu-ray/DVD)、流媒体订阅目录(Netflix/Disney+)、电影评论/批评(请改用网络搜索)。

快速决策指南

用户说...使用端点原因
“最新优惠” / “今日降价” / “刚刚变化的”Deals + DetailData默认工作流:sort=latestPricechange,然后验证每个项目的 priceHdLastChangeDate 是否匹配今天(参见配方:“今日价格降价”)
“查找低于 $X 的优惠”Deals通过 maxPrice 过滤 + sort=greatestSavings
“最佳高评分优惠” / “低于 $X 的评论佳作”Deals通过 imdbRating + maxPrice 过滤(两者均为服务端过滤器,参见配方)
“4K / Dolby Vision / Atmos 电影”Deals + 客户端过滤has4K=1 服务端过滤器无效(陷阱 #16)——先获取再在客户端过滤
“打折的最新发布”Dealssort=releaseDate + 捆绑包占位符过滤(参见陷阱 #12)
“现在什么最流行” / “什么正在热卖”Charts 或 TopsellerCharts 用于单一商店,Topseller 用于跨商店
“[片名] 多少钱”Search then PricesSearch 获取 imdbId,然后 Prices 跨商店获取(陷阱 #19:iTunes = Apple TV)
“最佳完整剧集优惠”Deals (seasons)客户端过滤 isBundle=1(配方)
“给我推荐一部 [类型] 电影”Recommendations指定具体类型 + imdbRating(陷阱 #18:没有类型时,返回排行数据)
“什么卖得最好”Topseller跨商店畅销榜
“搜索 [片名]”Search基于标题的搜索,返回元数据
“[片名] 是否处于历史最低价?” / “ATL 优惠” / “有史以来最低价”Deals + DetailDataDetailData 暴露 priceHdIsLowest / priceSdIsLowest 标志——无需解析 priceHdEvolution(参见配方:“历史最低价 (ATL) 优惠”)。仅在你需要实际的历史最低美元金额或之前 ATL 的变更日期时才使用 priceHdEvolution。
“什么刚刚结束促销?” / “下一个降价目标”对候选集调用 DetailDatapriceBefore < price 意味着该标题最近的变化是价格上涨——促销刚刚结束。这些是概率最高的近期降价目标,应与活跃交易一起报告,而不是静默过滤掉。参见陷阱 #31。

API 端点

公共参数: Charts、Deals、Prices 和 Recommendations 共享公共参数(action、store、country、itemType、imdbRating、rottenTomatoesRating)。Search 和 Topseller 有自己的参数集(参见各自部分)。

1. 搜索 - Search.php

按标题查找项目。当你只有标题且需要 IMDb ID 时,首先使用此端点。

必需: action=search,query=<标题>(或 searchTerm=<标题>——别名,根据供应商的 llms.txt)
可选: store=itunes(默认),country=us(默认),itemType=all(默认),limit=20(默认 20,最大 20),offset=0(超出限制的结果分页偏移量)

(参见 RECIPES.md)

返回扁平列表:{"status":"success","results":[...项目...]}。每个项目包含 imdbId(如可用)、mediaType、itemType、priceFollowUpItemType、store、country、cheapChartsProductPageUrl、title、artist、releaseDate、releaseYear、currency、price、currentPrice、has4K、hdrFormat、imdbRating、rottenTomatoesRating(完整详情请参见公共项目字段表)。

2. 排行榜 - Charts.php

电影或电视季的当前排行榜。

必需: action=getCharts、store、country、itemType(buymovies 或 seasons)
可选: genre=All、quality=hd4k、limit、imdbRating(最小值)、rottenTomatoesRating(最小值)、releaseYear(例如 2025-2025)

(参见 RECIPES.md)

返回:{"status":"success","results":{"buymovies":[...]}}。项目包含 rank 字段。

3. 交易 - Deals.php

当前交易和降价。最适合淘便宜货。

必需: action=getDeals、store、country、itemType(buymovies 或 seasons)
可选: genre=All、quality=hd4k、sort=latestPricechange、maxPrice、releaseYear(格式:2020-2025——单一年份如 2026-2026 也可用;默认:所有年份)、limit、imdbRating(最低评分 0-10,默认 0 = 无过滤,例如 imdbRating=7)、rottenTomatoesRating(最低分数 0-100,默认 0 = 无过滤,例如 rottenTomatoesRating=80)、has4K=1(无效——被忽略,改为在客户端过滤)

排序选项: latestPricechange(默认)、price、greatestSavings、greatestPercentageSavings、popularity、alphabetical、releaseDate(仅升序——参见陷阱 #11)

日期过滤器: releaseYear=YYYY-YYYY 接受单一年份(2026-2026)和范围(2024-2026)。适用于 Deals 和 Charts 端点。在 Recommendations、Prices 或 Search 上不支持。

(参见 RECIPES.md)

返回:{"status":"success","results":{"buymovies":[...]}}。项目包含 price、priceBefore、imdbRating、rottenTomatoesRating。

4. 价格 - Prices.php

按 IMDb ID 查找特定标题的当前价格。

必需: action=getPrices、store、country、itemType=buymovies、imdbIDs(注意:llms.txt 公共参数列表将 seasons 列为 Prices 的有效值,但 Prices 特定的参数表和实证测试确认只有 buymovies 有效——参见陷阱 #7)(逗号分隔,例如 tt0468569,tt2911666)

(参见 RECIPES.md)

返回:{"status":"success","results":{"buymovies":[...]}}。项目形状与 Deals 相同。

5. 推荐 - Recommendations.php

精选推荐,按类型和质量过滤。

必需: action=getRecommendations、store、country、itemType(buymovies 或 seasons)
可选: genre=All、quality=hd4k、limit、imdbRating、rottenTomatoesRating

注意: llms.txt 列出 imdbRating/rottenTomatoesRating 在此处支持,但实证测试显示它们在 Recommendations 上被静默忽略(陷阱 #23)。请改用带 sort=greatestSavings + 评分过滤器的 Deals。

(参见 RECIPES.md)

返回:{"status":"success","results":{"buymovies":[...]}}。项目可能包含 description 字段。

6. 畅销榜 - Topseller.php

跨多个商店的畅销商品。不要求 itemType、imdbRating 或 rottenTomatoesRating(与其他端点不同)。

必需: action=getTopsellerForStartpage、country、store(逗号分隔,例如 itunes,amazon,vudu,googlePlay)
可选: maxItemCount=5(默认 5,每商店每类别)

(参见 RECIPES.md)

返回:{"status":"success","results":{"itunes":{"movies":[...],"seasons":[...]},"amazon":{...}}}。按商店分组,然后按电影/电视季分组。字段可用性因商店而异——has4K、hasAtmos、hdrFormat、isMovieBundle 仅对 iTunes 项目出现(参见陷阱 #3)。

7. DetailData(内部) - DetailData.php

不在官方 gptapi 文档中。 通过检查 CheapCharts 网站的网络调用发现。返回完整的项目详情,包括当前价格、完整价格历史以及子季(适用于捆绑包)。同时适用于电影和电视季。这是无需浏览器即可获取季/捆绑包价格的可靠方法。

必需: store、country、itemType(movies 或 seasons——注意不是 buymovies)、idInStore(搜索结果中的 iTunes 商店 ID)

(参见 RECIPES.md)

返回:{"results":{"seasons":{...}}}(键与你传递的 itemType 匹配)。

关键字段(季):

字段描述
priceSd / priceHd当前 SD/HD 价格
priceSdBefore / priceHdBefore上次变更前的价格
priceSdLastChangeDate / priceHdLastChangeDate上次价格变更的日期
priceSdEvolution / priceHdEvolution完整价格历史,格式为 日期:+/-价格~日期:+/-价格~... 字符串。+ = 价格上涨,- = 价格下跌。请参阅下方“解析 priceHdEvolution”——delta 约定对于重建绝对价格并不可靠;优先使用 IsLowest 标志。
priceSdIsLowest / priceHdIsLowest如果当前 SD/HD 价格等于 CheapCharts 跟踪历史中的历史最低价,则为 1,否则为 0。这是规范的 ATL 检查——请使用它而不是解析 priceHdEvolution。
priceSdIsBest / priceHdIsBest如果当前 SD/HD 价格等于当前促销窗口内的最低(最佳)价格(即当前持续促销的底价),则为 1,否则为 0。与 IsLowest 不同——IsBest=1, IsLowest=0 表示“本次促销的最低点,但之前的促销更低”。
priceSdDropIndicator / priceHdDropIndicator如果上次变更价格上涨则为 1,下跌则为 -1,无变化则为 0。用于过滤“真实降价”而无需与 priceBefore 比较。
isBundle / isSeasonBundle是否为季捆绑包
isSeasonComplete是否包含所有季
childSeasonsCount捆绑包中的子季数量
bundleSavings / bundleSavingsHd与单独按常规价格购买每季相比节省的金额
saveOpportunity / saveOpportunityHd与 bundleSavings 相同
episodeCount总集数
advisoryRating内容分级(例如 TV-14)
summary完整剧情简介
seasonFamily子季数组,每个包含 idInStore、title、priceSd、priceHd、priceSdEvolution、priceHdEvolution、cheapChartsProductPageUrl
productPageUrl直接的 Apple TV / iTunes 商店 URL
iTunesUrliTunes URL
imageSmallUrl / imageMediumUrl / imageLargeUrl封面图 URL
appleTvIdApple TV 内部 ID

解析 priceHdEvolution(低优先级——优先使用 priceHdIsLowest): 用 ~ 分割,每个片段为 YYYY-MM-DD:[+/-]价格。最后一个片段(最右边)是最早的历史价格;第一个片段是最近一次价格变更。示例:

2026-05-20:+89.99~2026-05-12:-69.99~2026-04-01:-49.99~2022-02-09:89.99

注意: delta 约定在标题之间不一致——对于某些标题,最后一个片段是绝对起始价格(2022-02-09:89.99 无符号);对于其他标题,delta 无法干净地累加到当前价格。根据经验,从最旧的片段步行 delta 并不总是能复现 priceHd/priceSd。对于 ATL 检测,请改用 priceHdIsLowest / priceSdIsLowest 标志——它们是权威的。 仅在需要历史低价的绝对美元金额或其发生日期时才退而解析 priceHdEvolution,并在信任之前对照 priceHd 验证结果。

枚举值

商店

值支持的国家
itunesus, de, gb, fr, au, ca, at, ch, es, pt, ru, jp, tr, pl, in, cn
amazonus, de
vuduus
googlePlayus

如果用户未指定商店,默认为 itunes——它拥有最广泛的国家支持。

项目类型

值含义用于
buymovies电影(购买价格)Charts, Deals, Prices, Recommendations
rentalmovies电影(租赁价格,约 30 天开始观看,48 小时完成)Charts, Deals, Prices(根据官方 llms.txt)
seasons电视剧季Charts, Deals, Recommendations, DetailData
movies仅电影元数据仅 Search
seasons仅季节元数据仅 Search
all所有媒体类型(电影、季、电子书、有声书、专辑)仅 Search

购买 vs 租赁(经验发现,当前 llms.txt 中未包含): Prices 端点的 itemType 参数接受 buymovies(购买价格)或 rentalmovies(租赁价格)。租赁通常有 30 天开始观看,48 小时完成。Search 端点可以返回任一类型——priceFollowUpItemType 字段告诉你后续请求中应使用哪一个。

…

[因翻译截断]

相关技能