Communitygithub.com

tracerman/cheapcharts-skill

用來探索數位電影與電視節目好康、套裝組合,以及在 CheapCharts 支援的商店中找出歷史最低價的代理人技能。

cheapcharts-skill 是什麼?

這是一個專為 AI 代理人設計的免費公開 API 技能,用於追蹤數位電影與電視節目在 iTunes (Apple TV)、Amazon Prime Video、Vudu 和 Google Play 上的價格變動。它無需認證、沒有速率限制,且支援並行呼叫(預設使用 8 個 DetailData 工作執行緒),適合快速掃描大量優惠。此技能的核心工作流程是:當使用者詢問「最新降價」或「今天哪些商品降價」時,代理人會先呼叫 Deals 端點(搭配 sort=latestPricechange),再透過 DetailData 內部的 `priceHdLastChangeDate` 驗證是否為今天的降價,並使用 `priceHdIsLowest` 旗標判斷是否為歷史最低價(ATL),最後過濾掉虛假降價(降幅低於 $1)與套裝佔位日期。支援的平台包括 ChatGPT(GPT-4 等)、Claude、Cursor、Codex 等可執行工具與程式碼的 AI 環境。其主要優點在於免費、無需金鑰、無速率限制,並提供完整的 API 端點(搜尋、圖表、優惠、價格、推薦、暢銷商品)與內部 DetailData 端點,讓代理人能可靠地取得季節套裝價格、完整價格歷史與歷史最低價旗標,而無需手動解析複雜的價格演進字串。

相容平台✓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/ 歷史最低價檢查: 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 然後 Prices透過 Search 取得 imdbId,再透過 Prices 跨商店查詢(陷阱 #19:iTunes = Apple TV)
「最佳完整系列優惠」Deals(seasons)在客戶端過濾 isBundle=1(配方)
「推薦一部 [類型] 電影」Recommendations傳入特定類型 + imdbRating(陷阱 #18:若無類型,則回傳圖表資料)
「什麼賣最好」Topseller跨商店暢銷商品
「搜尋 [片名]」Search根據片名搜尋,回傳中繼資料
「[片名] 是歷史最低價嗎?」/「歷史最低價的優惠」/「有史以來最低價」Deals + DetailDataDetailData 暴露了 priceHdIsLowest / priceSdIsLowest 旗標 — 無需解析 priceHdEvolution(請參閱配方:「歷史最低價 (ATL) 優惠」)。僅在需要歷史最低價的實際美元金額或前一次歷史最低價的變更日期時,才使用 priceHdEvolution。
「哪些商品剛結束特價?」/「下一個降價目標」對候選集合使用 DetailDatapriceBefore < price 表示該項目最近的變動是漲價 — 特價剛結束。這些是短期內降價機率最高的項目,應與活躍優惠一同回報,而非靜默過濾掉。請參閱陷阱 #31。

API 端點

共同參數: Charts、Deals、Prices 和 Recommendations 共用共同參數(action、store、country、itemType、imdbRating、rottenTomatoesRating)。Search 和 Topseller 有各自的參數集(請參閱其各自的章節)。

1. Search - Search.php

根據片名尋找項目。當你只有片名並需要 IMDb ID 時,請優先使用此端點。

必要參數: action=search、query=<片名>(或 searchTerm=<片名> — 別名,依供應商的 llms.txt) 選用參數: store=itunes(預設)、country=us(預設)、itemType=all(預設)、limit=20(預設 20,最大 20)、offset=0(結果分頁偏移量,用於取得超過 limit 的結果)

(詳情請參閱 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 - 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 - 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 - 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 - Recommendations.php

策劃的推薦,可按類型和品質過濾。

必要參數: action=getRecommendations、store、country、itemType(buymovies 或 seasons) 選用參數: genre=All、quality=hd4k、limit、imdbRating、rottenTomatoesRating

注意: llms.txt 將 imdbRating/rottenTomatoesRating 列為此處支援的參數,但實證測試顯示它們在 Recommendations 上會被靜默忽略(陷阱 #23)。請改用 Deals 搭配 sort=greatestSavings + 評分過濾器。

(詳情請參閱 RECIPES.md)

回傳:{"status":"success","results":{"buymovies":[...]}}。項目可能包含 description 欄位。

6. Topseller - 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(來自 Search 結果的 iTunes 商店 ID)

(詳情請參閱 RECIPES.md)

回傳:{"results":{"seasons":{...}}}(索引鍵與你傳入的 itemType 相符)。

關鍵欄位(季節):

欄位說明
priceSd / priceHd當前 SD/HD 價格
priceSdBefore / priceHdBefore上次變更前的價格
priceSdLastChangeDate / priceHdLastChangeDate上次價格變更的日期
priceSdEvolution / priceHdEvolution完整價格歷史,以 日期:+/-價格~日期:+/-價格~... 字串表示。+ = 價格上漲,- = 價格下跌。請參閱下方「解析 priceHdEvolution」 — 增減量慣例在重建絕對價格時不可靠;建議優先使用 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

注意: 增減量慣例在不同項目間不一致 — 對某些項目而言,最後一個區段是絕對起始價格(2022-02-09:89.99 無正負號);對其他項目而言,增減量無法整齊地累積成當前價格。實證顯示,從最舊區段開始走訪增減量並非總是能重現 priceHd/priceSd。對於 ATL 偵測,請改用 priceHdIsLowest / priceSdIsLowest 旗標——它們是具有權威性的。 僅在需要歷史最低價的實際美元金額或發生日期時,才退而使用解析 priceHdEvolution,並在信任結果前以 priceHd 進行驗證。

列舉值

Store

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

若使用者未指定商店,請預設為 itunes — 它擁有最廣泛的國家支援。

ItemType

值意義用於
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 欄位會告訴你在後續 Prices 呼叫中應使用哪一個。

相關技能