従量課金ではなく1日10,000ユニットのポイント制。使い切ると課金されるのではなく、ただ403エラーで止まる。だからAPIキーが流出しても金銭被害はゼロ(最悪、当日の枠が焼かれるだけ)。リセットは太平洋時間の深夜0時=日本時間16時(夏)/ 17時(冬)。
| 操作 | ユニット | 備考 |
|---|---|---|
| キーワード検索 (search) | 100 | 突出して高い。1回で最大50件 |
| 動画統計 (videos) | 1 | IDをカンマ連結して50本まとめて1回で取る |
| チャンネル統計 (channels) | 1 | 同上。登録者数はここ |
| 投稿一覧 (playlistItems) | 1 | チャンネル監視はこれ。searchでやると100倍のコスト |
「どの窓口から取るか」でコストが桁で変わる。チャンネル監視をsearchでやるかuploads(playlistItems)でやるかで同じ結果が100 vs 2ユニット。
searchが返すのはタイトル・チャンネル名・投稿日まで。再生数が欲しければ、searchで得たvideoIdをvideosに投げ直す二段取得が必須。ここを知らないと「API使ってるのに数字がない」と混乱する。
APIはランキングをくれない。指標は2つ組み合わせる。
キー管理は3レイヤー。
Google Cloud(発行・API制限・無効化・使用量の正本)
↓
macOS Keychain(暗号化保管。gitの外なのでコミット事故が構造的に起きない)
↓
スクリプト(キー本体は書かず、実行時に解決する)
スクリプト側の解決はこの1行。${変数:-フォールバック} はbashの定番イディオム:
KEY="${YOUTUBE_API_KEY:-$(security find-generic-password -s youtube-api-key -w)}"
security add-generic-password -a "$USER" -s youtube-api-key -w 'キー' -U実装はClaude CodeのSkill youtube-research(dotfiles内 ~/.claude/skills/youtube-research/)として済んでいる。「YouTubeで◯◯調べて」で検索クエリ設計→取得→伸び率計算→チャット報告まで動く。