Communitygithub.com

tracerman/cheapcharts-skill

デジタル映画やテレビ番組のお買い得情報、バンドル、全期間最低価格をCheapCharts対応ストアから発見するためのエージェントスキルです。

cheapcharts-skill とは?

このスキルは、iTunes(Apple TV)、Amazon Prime Video、Vudu、Google Playなど、主要なデジタルストアにおける映画やテレビ番組の価格追跡とお買い得情報の取得を可能にします。認証不要でレート制限もない無料の公開APIをベースにしており、Deals、Charts、Prices、Search、Recommendations、Topseller、DetailDataといった複数のエンドポイントを提供します。ユーザーの質問に応じて、最新の値下がり、最大の割引、全期間最低価格(ATL)の確認、ジャンル別のおすすめ、クロスストアでの価格比較など、最適なエンドポイントとパラメータを自動的に選択します。特に、DetailDataエンドポイントを使用した価格履歴の検証や、偽の値下がりを除外するロジックなど、信頼性の高い情報を提供するためのワークフローが組み込まれています。

対応✓Claude Code~Codex CLI~Cursor
npx skills add tracerman/cheapcharts-skill

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

CheapCharts API スキル

iTunes(Apple TV)、Amazon Prime Video、Vudu、Google Playのデジタル映画やテレビ番組向けの無料公開API価格トラッカー。認証不要、レート制限なし。並列呼び出しも安全です。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、Searchのみの場合は all を使用します。
  3. sort=latestPricechange でお得情報を取得する 「最新」/「本日の値下がり」/「変更があったもの」の質問に使用します。「ベストなお得情報」には sort=greatestSavings、「最新リリース」には sort=releaseDate を使用します。
  4. 「今日」の主張をDetailDataで検証する 各候補について priceHdLastChangeDate(または priceSdLastChangeDate)を確認します。最初にレスポンスの status フィールドを常にチェックしてください - status=error は、そうでなければ呼び出しが静かに失敗していることを意味します(落とし穴 #15 参照)。
  5. 偽の値下がりを除外する(priceBefore - price <= $1)および releaseDate でソートする際のバンドルプレースホルダー日付を除外します。
  6. ATLフラグでエンリッチする(DetailDataの priceHdIsLowest / priceSdIsLowest)。すべてのレポートで各値下がりが過去最低額かどうかを表示できるようにします。CheapChartsはアイテムごとに1回追加の呼び出しを行います。標準レポートテンプレートについては「プレゼンテーションガイドライン」セクションを参照してください。

Pythonによる検証を含む完全な「本日の値下がり」レシピは「ワークフローレシピ」セクションにあります。

使用するケース

  • ユーザーがデジタルストアの映画/テレビ番組の価格について質問する場合
  • ユーザーがデジタル映画のお得情報や割引を見つけたい場合
  • ユーザーがチャート(人気/トレンド)を閲覧したい場合
  • ユーザーがジャンル別のおすすめを希望する場合
  • ユーザーがストア間(iTunes、Amazon、Vudu、Google Play)の価格を比較したい場合
  • ユーザーが価格履歴や過去最低価格を確認したい場合
  • ユーザーがCheapChartsを直接言及した場合

使用しないケース: 物理メディア(Blu-ray/DVD)、ストリーミングサブスクリプションカタログ(Netflix/Disney+)、映画レビュー/批評(代わりにウェブ検索を使用)。

クイック決定ガイド

ユーザーの発言使用するエンドポイント理由
「最新のお得情報」/「本日の値下がり」/「変更があったもの」Deals + DetailDataデフォルトワークフロー: sort=latestPricechange で取得後、各アイテムの priceHdLastChangeDate が今日と一致するか検証(レシピ「今日の値下がり」参照)
「$X以下のお得情報を探して」DealsmaxPrice でフィルター + sort=greatestSavings
「評価の高いお得情報」/「批評家絶賛の$X以下」DealsimdbRating + maxPrice でフィルター(両方サーバーサイドフィルター、レシピ参照)
「4K / Dolby Vision / Atmos 映画」Deals + クライアントフィルターhas4K=1 サーバーフィルターは動作しません(落とし穴 #16) - 取得後にクライアントサイドでフィルター
「セール中の最新リリース」Dealssort=releaseDate + バンドルプレースホルダーフィルター(落とし穴 #12 参照)
「今人気のもの」/「売れているもの」Charts または Topseller単一ストアは Charts、クロスストアは Topseller
「[タイトル]はいくら?」Search 次に 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 - Search.php

タイトルでアイテムを検索します。タイトルしかなく、IMDb IDが必要な場合は、最初にこれを使用します。

必須: action=search、query=<title>(または searchTerm=<title> - エイリアス。ベンダーの llms.txt による) オプション: store=itunes(デフォルト)、country=us(デフォルト)、itemType=all(デフォルト)、limit=20(デフォルト20、最大20)、offset=0(制限を超えた結果のページングオフセット)

(RECIPES.md を参照)

フラットリストを返します: {"status":"success","results":[...items...]}。各アイテムには 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の共通パラメータは Prices に対して seasons を有効としていますが、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)。代わりに sort=greatestSavings + レーティングフィルターで Deals を使用してください。

(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 / saveOpportunityHdbundleSavings と同じ
episodeCount総エピソード数
advisoryRatingコンテンツレーティング(例: TV-14)
summary完全なあらすじ
seasonFamily子シーズンの配列。各要素は idInStore、title、priceSd、priceHd、priceSdEvolution、priceHdEvolution、cheapChartsProductPageUrl を持つ
productPageUrlApple TV / iTunes ストアの直接URL
iTunesUrliTunes URL
imageSmallUrl / imageMediumUrl / imageLargeUrlカバーアートURL
appleTvIdApple TV 内部ID

priceHdEvolution の解析(優先度低 - priceHdIsLowest を優先してください): ~ で分割、各セグメントは YYYY-MM-DD:[+/-]price 形式。最後のセグメント(右端)が最も古い価格履歴、最初のセグメントが最新の価格変更です。例:

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 のみ

購入とレンタル(経験的に発見されたもので、現在の llms.txt にはありません): Prices エンドポイントの itemType パラメータは buymovies(購入価格)または rentalmovies(レンタル価格)を受け入れます。レンタルは通常、視聴開始まで30日、開始後48時間で終了します。Search エンドポイントはどちらのタイプも返すことができます - priceFollowUpItemType フィールドが、フォローアップの Prices 呼び出しでどちらを使用するかを示します(落とし穴 #20 参照)。

quality

値意味
hdHD品質のみ
hd4kHD + 4K品質(デフォルト)
sdSD、HD、4Kすべて

共通パラメータ

これらのエンドポイントでサポート: Charts、Deals、Prices、Recommendations。Search と Topseller はこれらのパラメータをサポートしていません(代わりに独自のセクションを参照)。

パラメータ型説明
actionstring実行するアクション(例: getDeals)
storestringストア識別子(例: itunes)
countrystring国コード(例: us)
itemTypestringアイテムタイプ(buymovies、seasons など)
imdbRatingfloat(文字列として)最小IMDbレーティング(0-10)、デフォルト0(フィルターなし)
rottenTomatoesRatingint(文字列として)最小Rotten Tomatoesスコア(0-100)、デフォルト0(フィルターなし)

指定されたエンドポイントがサポートしていないパラメータは静かに無視されます。

ワークフローレシピ

すべてのレシピの完全な実装については RECIPES.md を参照してください。

「今日の値下がり」

  1. ?action=getDeals&store=itunes&country=us&itemType=buymovies&sort=latestPricechange&limit=20 で Deals を取得
  2. 各アイテムの imdbId を使用して DetailData を取得: ?idInStore=...&store=itunes&country=us&itemType=movies
  3. priceHdLastChangeDate が今日の日付と一致するか確認
  4. 価格差が $1 以下の場合は除外
  5. 常に最初にレスポンスの status フィールドをチェック(落とし穴 #15)
  6. ATL状態を報告: 「この価格は全期間最低値です!」(priceHdIsLowest=1 の場合)

「全期間最低価格(ATL)のお得情報」

  1. sort=greatestSavings で Deals を取得
  2. 上位の候補の DetailData を取得(Deals の結果の並列呼び出しを検討、rate limit なし)
  3. priceHdIsLowest=1 でフィルタリング
  4. ATL状態を報告: 「これは全期間最低価格です – [日の出]から上昇していません」
  5. priceHdEvolution は、過去の最低ドル金額(最初のセグメントの絶対値、デルタを累積しない)または以前のATLの日付(最低金額の日付)が必要な場合にのみ使用し、結果を検証してください

「お買い得なコンプリートシリーズ」

  1. ?action=getDeals&store=itunes&country=us&itemType=seasons&sort=greatestSavings&limit=20 で Deals を取得
  2. DetailData を取得、isBundle=1 かつ isSeasonComplete=1 でフィルタリング(これらは DetailData のフィールドです)
  3. bundleSavingsHd / saveOpportunityHd で節約額を計算
  4. 各バンドルの含まれるシーズン(seasonFamily)を一覧表示

「クロスストア価格比較」

  1. Deals または Search から imdbId を取得
  2. ?action=getPrices&store=itunes,amazon,vudu,googlePlay&country=us&itemType=buymovies&imdbIDs=tt0468569 で Prices を呼び出し
  3. 結果をストア別にグループ化して表示
  4. 利用できないストアや価格は省略(落とし穴 #5 参照)

プレゼンテーションガイドライン

各お得情報を報告する際は、以下の標準形式を使用してください:

標準レポートテンプレート:

🎬 [タイトル] ([年]) - [ジャンル] - IMDb: [レーティング]
💵 $[価格] ($[以前の価格] から $[差額] 値下げ、[割引率]% OFF)
🏪 [ストア]
📅 最終更新: [日付]
🔻 ATL: はい/いいえ - priceHdIsLowest フラグに基づく

常に以下を含めてください:

  • タイトルと年
  • 現在の価格、以前の価格、差額
  • 割引率(% OFF)
  • ストア
  • IMDb レーティング(利用可能な場合)
  • ATL 状態 - priceHdIsLowest フラグに基づき、「これは全期間最低価格です」と簡潔に述べる

ATL 状態を報告しない場合: ユーザーは「これは全期間最低価格ですか?」と再質問することになります。すべてのお得情報に対して常に ATL 状態を報告してください。

数値のフォーマット: 価格は通貨の小数点以下の桁数(例: $9.99)で表示します。割引率は整数パーセンテージ(例: 50% OFF)で表示します。

値下がりしていないものも含む: 価格が上昇したばかりのアイテムは除外しないでください(落とし穴 #31)。これらは「セールが終了したばかり」の候補であり、1~2週間以内に次の値下がりの可能性が高いです。これらを別のセクションで報告してください。

類似した価格帯: マージ

複数のアイテムが類似した価格(差額が $1 未満)の場合は、1 つのエントリにまとめて「[タイトル1]、[タイトル2]、[タイトル3] がそれぞれ $X」のようにリスト表示します。これがないと、AI エージェントのレスポンスがアクション可能なお得情報でスペースを埋め尽くそうとするため、品質の低いお得情報が多くなります。

ストアアイコン

各ストアの先頭に絵文字を追加してください:

  • 🍎 iTunes / Apple TV
  • 📦 Amazon Prime Video
  • 📀 Vudu
  • ▶️ Google Play

落とし穴 ⚠️

APIの癖と回避策

  1. itemType は必須です(ただし Search は除く) - すべてのエンドポイント(Search を除く)で itemType パラメータが必要です。これを省略すると、認識不可能なエラーメッセージが返されます。
  2. rentalmovies は公式ドキュメントにのみ記載されています - llms.txt は Charts、Deals、Prices で rentalmovies(レンタル価格)をリストアップしていますが、経験的テストではこれらのエンドポイントに対して rentalmovies は静かに無視されることが示されています。期待しないでください。
  3. Topseller: フィールドの可用性はストアによって異なります - has4K、hasAtmos、hdrFormat、isMovieBundle は iTunes アイテムにのみ表示されます。これらが Amazon、Vudu、Google Play のアイテムにないからといって、その情報を発明しないでください。
  4. status=success でも空の結果が返されることがあります - フィルターが厳しすぎる場合など。適切に処理し、ユーザーに親切に知らせてください。
  5. Prices (クロスストア): Vudu + Google Play は未完成のデータを返します - Vudu と Google Play は Prices レポートでは完全なデータセットを返さない傾向があります。特定のタイトルのみが表示されます。欠落しているエントリに対して「利用できません」または価格データを作成しないでください。表示されているものだけを報告してください。
  6. Search: itemType=all が必要です - itemType を指定しない場合、Search は何も返しません。何かを見つけるには常に itemType=all を含めてください。
  7. Prices: seasons は機能しません - llms.txt は Prices 用の共通パラメータとして seasons をリストアップしていますが、Prices固有のパラメータテーブルと経験的テストでは buymovies のみが動作することが確認されています。シーズンの価格を取得するには、代わりに DetailData を使用してください。
  8. DetailData: 内部エンドポイント - DetailData.php は公式の gptapi ドキュメントに記載されていませんが、CheapCharts のウェブサイトが使用しているため安定しています。
  9. country は必須です - すべてのエンドポイントで country パラメータが必要です。
  10. Recommendations の genre は大文字小文字を区別しませんが、他のパラメータは区別します - 推奨: genre=All または genre=Comedy など。
  11. Deals releaseDate ソートは昇順のみ - 降順はサポートされていません(最新のリリースを表示するには、代わりに複数ページ取得して最後のアイテムを表示する必要があります)。
  12. 日付プレースホルダー: 多くのアイテムの releaseDate はバンドルプレースホルダー日付(例: 2100-01-01)になっています。releaseDate でソートする場合は、これらをクライアントサイドでフィルタリングするか、通常のリリース日を下回るアイテムにフォールバックしてください。
  13. Search: rentalmovies はレンタル可能なタイトルのみを返します - 購入価格が必要な場合は常に itemType=buymovies を使用してフォローアップしてください。
  14. DetailData: アイテムタイプを movies または seasons に設定する必要があります - buymovies は機能しません。Search 結果の itemType フィールドを確認してください - 通常は movies または seasons です。
  15. 失敗した API 呼び出しは status: error を返します - 常に最初にレスポンスの status フィールドをチェックしてください。status をチェックせずに results を読み取ろうとすると、エラーが静かに失敗することになります。
  16. has4K フィルターはサーバーサイドでは機能しません - has4K=1 を Deals に渡しても効果はありません。デフォルトですべての品質が含まれます。4Kのお得情報をフィルタリングするには、結果をクライアントサイドでフィルタリングしてください。
  17. DetailData エンドポイント: DetailData.php の正確なURLは変更される可能性があります。最新のエンドポイントについては常に CheapCharts ウェブサイトのネットワークタブを確認するか、現在の https://buster.cheapcharts.de/v1/DetailData.php に依存してください。buymovies ではなく、itemType=movies または itemType=seasons を使用してください。idInStore は必須であり、Search 結果からの iTunes ストア ID です(IMDb ID ではありません)。
  18. Recommendations はジャンルを必要とします - ジャンルパラメータなしで Recommendations を呼び出すと、代わりにチャートデータを返します。 ユーザーが「何かおすすめして」のように言う場合、これはジャンルなしチャートと同じです。Rotten Tomatoes や IMDb のフィルターは経験的に無視されるため、代わりに Deals を使用してください。
  19. iTunes = Apple TV - CheapCharts は一貫して iTunes ストアを itunes と呼びますが、ユーザーは「Apple TV」と言うことがあります。これらは同じストアセレクターであることを覚えておいてください。
  20. Search の priceFollowUpItemType は、Prices のフォローアップ呼び出しでどの itemType を使用すべきかを示します。buymovies(購入)か、あまり一般的ではありませんが rentalmovies(レンタル)です。デフォルトで buymovies を想定しないでください - このフィールドを尊重してください。
  21. has4K は一部のアイテムで誤っている可能性があります - CheapCharts のウェブサイトに示されているものと比較して、一部のアイテムで誤った has4K 値が観察されています。これはバグです。ATL フラグと同様に、has4K を重要な決定要因として扱わないでください。
  22. detailData(すべて小文字)ではなく DetailData を使用してください - エンドポイント名には正しい大文字小文字を使用してください。
  23. Recommendations フィルターは期待通りに動作しません - imdbRating と rottenTomatoesRating は Recommendations エンドポイントでは静かに無視されます。レーティングフィルター付きのおすすめには、代わりに Deals を使用してください。
  24. imdbRating フィルターは minRating フィルターとして機能します - 例: imdbRating=7 は「IMDb レーティングが 7.0 以上のアイテムのみを表示」を意味します。
  25. rottenTomatoesRating フィルターは minRating フィルターとして機能します - 例: rottenTomatoesRating=80 は「Rotten Tomatoes スコアが 80% 以上のアイテムのみを表示」を意味します。
  26. 非現実的な URL を発明しないでください - CheapCharts はアイテムの productPageUrl を提供します。これらのみを使用し、推測しないでください。
  27. Search は常に buy タイプのアイテムを返すとは限りません - Search は購入アイテムとレンタルアイテムの両方を混合して返すことができます。ユーザーが「購入」と言った場合は、Search 結果で priceFollowUpItemType=buymovies のアイテムのみを使用してフィルタリングし、Prices または DetailData でフォローアップしてください。
  28. DetailData の seasonFamily 配列は、このメインの itunes エンドポイントでアクセスされた場合、iTunes/Apple TV のもののみを含みます - クロスプラットフォームのアイテムを期待しないでください。
  29. アイテムを複数回リストアップしないでください - ユーザーが「お得情報を表示して」と要求した場合、それぞれのユニークなお得情報を 1 回だけ表示してください。
  30. すべての API 呼び出しの最初に status=error をチェックしてください - これはスキップ可能ではありません。壊れた 3rd パーティ API、レート制限、または一時的なダウンタイムに遭遇するでしょう。応答的に処理してください。
  31. 値下がりしていないものも保持してください - 価格が上昇したばかりのアイテム(priceBefore < price)をアクティブなセールから除外しないでください。これらは潜在的な将来の値下がりであり、近い将来値下がりする可能性が高いです。それらを別のセクションで「セールが終了したばかり – 次の値下がりの可能性が高い」と報告してください。
  32. country パラメータを推測するときは、Debank のユーザープロファイルを使用してください - ユーザーが自分の国を明示的に言及した場合のみ、country を変更してください。そうでない場合は us を使用してください。store を変更するときは、そのストアでサポートされている国を使用してください(ストア列挙値の表を参照)。
  33. /v1/ パスは必須です - https://buster.cheapcharts.de/gptapi/Deals.php にアクセスしないでください(正しくは https://buster.cheapcharts.de/v1/gptapi/Deals.php です)。これは動作せず、静かに失敗します。
  34. すべての limit のデフォルト値はエンドポイントのデフォルトです - デフォルトの limit はエンドポイントごとに異なります。Deals: 20、Search: 20、Charts: 20、Recommendations: 10(テストによる)。API のデフォルトを想定しないでください。ドキュメントを確認するか、適切な limit を明示的に指定してください。
  35. Recommendations は Charts よりも多くのアイテムを返す可能性があります - テストによると、Recommendations は最大 20 アイテムを返すことができます。リストが長くなりすぎるのを避けるために適切な limit を設定するか、賢明に要約してください。
  36. Deals でのレーティングフィルターは、指定された最小値を下回るアイテムを排除します - レーティングが指定された最小値に達しないアイテムは結果から削除されます。このフィルターを元に戻すことはできないため、レーティングフィルター付きで結果が少なすぎる場合は、制限を緩和するようユーザーに提案してください。

関連スキル