はじめに

筆者は技術ブログを882本(日英バイリンガル)運営しています。これらの記事をYouTube動画として展開するため、Claude Codeの並列エージェント機能とVOICEVOX音声合成を組み合わせた自動動画生成パイプラインを構築しました。

結果として、Claude Codeの週間利用制限(全ユーザーの上位2%が該当)に到達するという珍しい体験をしたので、パイプラインの構成と実績を共有します。

パイプラインの全体像

ブログ記事 (.md)
    ↓ Claude Code 並列エージェント (10本同時)
対話台本 (sections.json)
    ↓ VOICEVOX × 3並列ワーカー
解説動画 (video.mp4)
    ↓ YouTube API
YouTube公開

1. 台本生成(Claude Code)

各記事を読み込み、2キャラクターの掛け合い形式の台本(sections.json)を生成します。Claude CodeのAgentツールを使い、10本のエージェントを同時に起動して並列処理します。

[
  {
    "section_title": "セクション名",
    "slide_points": ["スライドに表示するポイント1", "ポイント2"],
    "lines": [
      {"speaker": "usagi", "text": "カタカナヨミアゲテキスト", "display_text": "画面表示テキスト"},
      {"speaker": "sora", "text": "カタカナヨミアゲテキスト", "display_text": "画面表示テキスト"}
    ]
  }
]
  • text: VOICEVOX読み上げ用(英語技術用語はカタカナ表記)
  • display_text: 画面表示用(英語技術用語はそのまま)
  • 1記事あたり6〜10セクション、各セクション6〜8セリフ

2. キャラクターペアシステム

4組のVOICEVOXキャラクターペアを用意し、記事ごとにローテーションで割り当てます。

ペアID質問役解説役スタイル
zundamon_metanずんだもん四国めたん素朴×丁寧
tsumugi_kiritan春日部つむぎ冥鳴ひまりギャル×クール
usagi_sora中国うさぎ九州そら控えめ×おっとり
hau_whitecul雨晴はうWhiteCUL元気×知的

立ち絵素材は坂本アヒルさんの素材を使用しています。

3. 動画生成(VOICEVOX並列処理)

VOICEVOX EngineをDockerコンテナで3インスタンス起動し、multiprocessing.Queueでタスクを分配します。

# 3つのVOICEVOXインスタンス
docker run -d --name voicevox_50021 -p 50021:50021 voicevox/voicevox_engine:cpu-ubuntu20.04-latest
docker run -d --name voicevox_2 -p 50022:50021 voicevox/voicevox_engine:cpu-ubuntu20.04-latest
docker run -d --name voicevox_3 -p 50023:50021 voicevox/voicevox_engine:cpu-ubuntu20.04-latest

各インスタンスが約600MB RAM、400% CPUを使用するため、16コアマシンでは4ワーカーが上限です。

実績データ

指標数値
総記事数882本
生成済み台本659本
生成済み動画542本
動画の平均時間約4分45秒
動画の平均サイズ15.1MB
動画の合計サイズ約8.2GB
逐次処理速度約13本/時
3並列処理速度約40本/時

ペア分布

台本生成時にzundamon_metan以外の3ペアを均等にローテーションしました(初期に生成した分はzundamon_metanが多め)。

ペア本数
hau_whitecul215
tsumugi_kiritan189
usagi_sora177
zundamon_metan94

Claude Codeの利用制限に到達した話

経緯

筆者は最上位のMax 200プラン(月額200ドル、Proプランの20倍の利用量) を契約しています。Claude Codeには週間の利用制限があり、公式ドキュメントによると全ユーザーの上位2%程度が制限に該当するとのことです。Proの20倍の利用枠でも制限に到達したという点で、今回の使い方がいかに大量消費だったかがわかります。

今回のケースでは、以下のような使い方で制限に到達しました:

  1. 10並列エージェントをバッチ単位で連続起動
  2. 各エージェントが記事(数千文字)を読み込み、JSON台本(数千文字)を生成
  3. バッチ22〜27で計60エージェントを数時間内に起動
  4. 前セッションからの累計では数百エージェントを起動

制限到達時の挙動

バッチ28(10エージェント同時)を起動したところ、全エージェントが以下のメッセージで失敗しました:

You've hit your limit · resets 8am (Asia/Tokyo)

制限はローリングウィンドウ方式で計算され、直近の利用量が動的に評価されます。制限解除後も利用率80%と表示されたため、しばらく並列エージェントの使用を控えることにしました。

学んだこと

  • 通常の開発作業(コード編集、質問、デバッグ)では制限に到達することはまずない
  • 並列エージェント × 大量バッチ処理が最も消費が激しい
  • 制限に近づいたら並列数を減らす(10→5)ことで延命できる
  • 台本生成とは独立した動画生成(VOICEVOX)はClaude API無関係なので影響なし

動画の構成

生成される動画は以下の構成です:

OP (6秒) → 本編 (掛け合い + スライド) → ブリッジ (4秒) → ED (15秒)
  • 2キャラクターの立ち絵が交互に表示
  • テロップ(字幕)とスライドポイントを同時表示
  • VOICEVOX音声合成(24000Hz mono)
  • BGM: Kevin MacLeod (incompetech.com) CC BY 3.0

まとめ

Claude Codeの並列エージェント機能は、大量のコンテンツ生成タスクに非常に強力です。882本の記事に対して台本生成を自動化し、VOICEVOXの並列処理と組み合わせることで、人手では現実的でない規模の動画生成が可能になりました。

ただし、並列エージェントを大量に使う場合は週間利用制限に注意が必要です。バッチサイズと並列数を調整しながら計画的に進めることをおすすめします。

関連リンク