YouTube Data APIで自動コメント投稿を組むとき、コスト設計の主役は「投稿」ではなく「検索」です。1日10,000ユニットの枠を、search.listがどれだけ食うのか。実際に2チャンネルを別プロジェクトで動かして分かった配分を書きます。
クォータは「回数」ではなく「ユニット」で減る
YouTube Data APIには、1日あたり10,000ユニットという上限があります。ここで勘違いしやすいのが、「10,000回叩ける」わけではないという点です。エンドポイントごとに消費ユニットが違い、しかもその差がかなり大きい。
私が実際に使っている3つを並べるとこうなります。
| エンドポイント | やること | 消費ユニット |
|---|---|---|
search.list |
動画を検索する | 100 |
commentThreads.insert |
コメントを投稿する | 50 |
videos.list |
動画情報を取る | 1 |
channels.list |
チャンネル情報を取る | 1 |

「何に返信するか探す」処理のほうが、「実際に書く」処理よりも高い——これがこのAPIの一番大事な性質だと思っています。書き込みという、いかにも重そうな操作が50。読み取りのはずの検索が100。直感と逆です。
コスト設計を「投稿を何件までにするか」から始めると、たいてい見積もりを外します。先に決めるべきは検索を1日何回叩くかです。
1日5件コメントする設計の実際の消費
私が組んでいるのは、1日5件コメントする構成です。内訳はこうなります。
search.list 100 × 1回 = 100 commentThreads.insert 50 × 5回 = 250 ------------------------------------ 合計 350
350ユニットは10,000のうち3.5%です。枠を使い切る心配より先に、検索1回で拾ってきた候補をどう捌くかを考えたほうがいい水準でした。
逆に言うと、検索を増やす設計にした瞬間にコストが跳ねます。キーワードを5本に分けて毎回検索する、というような作りにすると、それだけで500ユニット。投稿5件分の倍です。私は検索を1回に絞り、そこから得た動画IDに対してvideos.list(1ユニット)で詳細を補う形にしています。検索は最小、周辺情報は安いエンドポイントで埋めるという方針です。
「取得件数を増やす」のと「検索回数を増やす」のは、コスト上まったく別物です。1回のsearch.listで多めに拾うほうが、同じ100ユニットで済みます。
チャンネルが増えたら、プロジェクトを分ける
複数チャンネルを回すようになると、10,000という枠を共有するのが気になってきます。ここで効いたのが、Google Cloudプロジェクトを分けるという手です。
クォータはプロジェクト単位で管理されるので、チャンネルごとにプロジェクトを分ければ、クォータも別々になります。私は現在2チャンネルを、それぞれ別プロジェクトで運用しています。片方の処理が暴走しても、もう片方の投稿が止まらない。この隔離が実運用ではありがたいです。
2チャンネルを別プロジェクトに分離。1チャンネルあたり350ユニットなので、どちらも上限に対して余裕を持ったまま並走しています。
ただし、これは私が「クォータが別々になる」という挙動を実際に確認した、というだけの話です。この分け方が規約上どこまで許容されるのかは、私は確認できていません。そこを保証するつもりはないので、同じことをする方はご自身で確認してください。
分かっていないこと
- なぜsearch.listが投稿の2倍のコストなのか、その理由
- プロジェクト分割が規約上どう扱われるか
- クォータを使い切ったときの挙動(350ユニット運用なので、まだ到達していません)
上限に当たっていないので、上限に当たった話は書けません。逆に言えば、1日5件・350ユニットという設計は、上限を意識せずに済む水準だったということです。
設計の順番
- 検索を1日何回叩くかを先に決める(ここが100ユニット単位で効く)
- 投稿件数×50を足して、1日の合計ユニットを出す
- 足りない情報は
videos.listやchannels.list(1ユニット)で補う - チャンネルが増えたら、プロジェクトを分けて枠を独立させる
- 1日の上限は10,000ユニット。回数ではなくユニットで減る
- search.listは100、commentThreads.insertは50。探すほうが書くより高い
- videos.list / channels.listは1ユニット。周辺情報はこちらで埋める
- 1日5件の設計で、検索100+投稿250=350ユニット。上限には余裕がある
- チャンネルごとにGoogle Cloudプロジェクトを分けると、クォータも別々になる
- 上限到達時の挙動は未確認。規約上の扱いも私は確認していない


