コマンド1行で、台本が生成されて、ナレーション音声が作られて、スライドができて、動画が完成して、そのままYouTubeにアップロードされました。それが77秒で終わりました。「動くものをつくる」を信条にしてきた私ですら、正直、唸りました。専門学校生向けのIT教育コンテンツを量産するために始めたこの実験が、予想をはるかに超えた結果になったので、その全工程を公開します。

何を作ったのか

専門学校生向けのIT教育動画を自動で量産するパイプラインです。テーマを1行渡すだけで、台本生成から動画エンコード・YouTube投稿まですべてが自動で完結します。

全工程の流れ: テーマ入力 → Claude Sonnet 4.6が台本とプロンプトをJSON生成 → gTTSが日本語ナレーション音声を生成 → DALL-E 3がAI背景画像を生成(Shorts時) → Pillowでスライド画像を合成 → ffmpegで動画エンコード → YouTube Data API v3でアップロード完了

通常の横型動画だけでなく、YouTube Shorts(縦型)にも対応しています。--shortsフラグを付けるだけで、解像度・レイアウト・動画尺がShortsの仕様に切り替わります。AI背景画像を使うかどうかも、コマンドライン引数で制御できる設計にしました。

個人開発の観点で言うと、この仕組みは「コンテンツ制作そのものをAPI呼び出しに変換した」ものです。動画制作のノウハウがなくても、テーマさえ決まれば動画が出てきます。非エンジニアでも使えるものを目指して構築しました。

使ったAPIと役割

4つのAPIを組み合わせて動かしています。それぞれの役割と費用をまとめます。

Anthropic API
Claude Sonnet 4.6で台本と画像プロンプトをJSONで生成。構造化されたデータとして出力するため、後工程のコードが非常にシンプルになる。
OpenAI API
DALL-E 3でAI背景画像を生成。1枚あたり約$0.04。Shorts(4枚)では1本あたり約$0.16のコストがかかる。
YouTube Data API v3
動画のアップロードと公開設定を担当。無料で使えるが、1日のアップロード上限は6本。クォータ管理に注意が必要。
gTTS
Google Text-to-Speechを使った日本語ナレーション生成。完全無料。機械的な読み上げだが、教育コンテンツとして十分に実用的。

Claudeが返すJSONの中に、セクションごとのテキスト・ナレーション文・画像プロンプトがすべて入っています。後続の処理はこのJSONを読むだけでよく、AIが「設計書」を自動生成する構造です。コーディングの難易度が下がり、バグが入り込む余地も減ります。

環境構築の手順

macOSでの構築手順です。Homebrewとpip3が入っていれば、30分程度で完了します。

1. ffmpegのインストール

brew install ffmpeg

2. Pythonライブラリのインストール

pip install anthropic openai gTTS Pillow \
  google-api-python-client google-auth-oauthlib python-dotenv

3. Google Cloud ConsoleでYouTube APIを有効化

  1. Google Cloud Console でプロジェクトを新規作成する
  2. 「APIとサービス」から YouTube Data API v3 を検索して有効化する
  3. 「認証情報」から OAuth 2.0 クライアントID(アプリの種類:デスクトップアプリ)を作成する
  4. ダウンロードした JSON ファイルを credentials/client_secret.json として配置する
  5. OAuth 同意画面のテストユーザーに自分のGoogleアカウントを追加する

OAuth同意画面の注意点: 同意画面が「テストモード」のままだと、登録済みのテストユーザー以外はアップロードできません。自分のアカウントをテストユーザーに追加してから実行してください。

4. APIキーの設定

プロジェクトルートに .env ファイルを作成して、以下を記述します。

ANTHROPIC_API_KEY=sk-ant-xxxxx
OPENAI_API_KEY=sk-xxxxx

初回実行時はブラウザでのOAuth認証が求められます。認証後は token.pickle が生成されて、以降は自動認証です。このファイルには有効期限があるため、認証エラーが出たら削除して再実行すると解消します。

コマンド1行で動かす

基本的な使い方は3パターンです。すべて pipeline.py に引数を渡すだけで動きます。

通常動画(横型・16:9)

python3 pipeline.py --topic "Pythonとは何か?初心者向け3分解説" --privacy private

YouTube Shorts(縦型・1080×1920 + AI背景画像)

python3 pipeline.py --shorts --with-images --image-style anime \
  --topic "Claude Code で変わるコーディング!専門学校生必見" --privacy private

ローカルテスト(アップロードなし)

python3 pipeline.py --topic "テーマ名" --skip-upload

--privacy private を付けると非公開でアップロードされます。内容を確認してから公開に変更できるので、最初はこの設定で動かすのがおすすめです。--skip-upload はAPIキーなしで全工程のローカルテストができるため、動作確認に使います。

検証結果

2種類の動画で検証した結果を報告します。

1

通常動画(横型)——77秒で完結

テーマ「Pythonとは何か?初心者向け3分解説」で実行。台本はClaude Sonnet 4.6が7セクション構成で生成し、最終的な動画尺は2分50秒、ファイルサイズは3.3 MBで収まりました。台本入力からYouTubeアップロード完了まで76.7秒——コマンドを実行してからYouTubeのダッシュボードに動画が出現するまで、1分17秒です。

2

YouTube Shorts(縦型 + AI背景画像)——約2分で完結

テーマ「Claude Code で変わるコーディング!専門学校生必見」でShortsを生成。解像度1080×1920、動画尺は約37秒。DALL-E 3のアニメ風画像を4枚生成してスライドに合成し、最終ファイルサイズ1.3 MB。所要時間は約2分で完了。画像生成の分だけ時間がかかりますが、それでも人手で作れば数時間かかる作業が2分で終わります。

実際にかかったコストと時間

1本あたりのAPIコストを整理しました。

API 用途 コスト(通常動画) コスト(Shorts+画像)
Anthropic API 台本・プロンプト生成 数円程度 数円程度
OpenAI(DALL-E 3) AI背景画像生成 なし 約$0.16(4枚×$0.04)
YouTube Data API v3 動画アップロード 無料 無料
gTTS 音声合成 無料 無料

コスト的に最も大きいのはDALL-E 3の画像生成です。--with-images を省略すると、代わりにPillowでシンプルな背景を生成するため、AI画像なしのShortsであれば追加コストはほぼゼロです。

YouTube APIには1日あたりのアップロード上限が6本あります。大量テストは --skip-upload で動画ファイルだけをローカルに生成して、上限を温存することをおすすめします。

ハマりポイントと対策

実際に構築する中で詰まったポイントを共有します。同じところで止まらないよう、先にまとめておきます。

認証エラー:token.pickleの期限切れ

token.pickle はOAuth認証のトークンを保存したファイルです。有効期限が過ぎるとアップロード時にエラーになります。token.pickle を削除して再実行すると、ブラウザが開いて再認証できます。

テストモードのOAuth同意画面

Google Cloud Consoleで作成したOAuthクライアントは、デフォルトで「テストモード」です。この状態では、OAuth同意画面に登録したテストユーザー以外のアカウントではアップロードできません。自分のGoogleアカウントをテストユーザーとして追加してください。

セキュリティ:.envのGitコミット禁止

.env にはAPIキーが入っています。絶対にGitにコミットしてはいけません。.gitignore.envcredentials/token.pickle を、最初に必ず追加してください。これを忘れると、公開リポジトリにAPIキーが露出します。

音声品質:gTTSは機械的

gTTSは無料で使えますが、読み上げが機械的です。教育コンテンツとして実用できるレベルですが、もっと自然な音声が必要な場合はVOICEVOX(無料・オープンソース)への切り替えを検討してください。コードの差し替え箇所は音声生成の1関数だけで済みます。

動画品質の調整

動画の速度・画質(CRF値)・fps は config.yaml で設定できます。コードを変更せずにパラメータを調整できるので、クオリティを上げたい場合はまずここを触ってください。

全部まとめると: .envcredentials/token.pickle.gitignore に入れる。OAuth同意画面にテストユーザーを追加する。認証エラーは token.pickle 削除で解消。この3点を最初に押さえれば、あとはスムーズに動きます。

まとめ——動くものをつくることの意味

台本の入力からYouTube投稿まで、完全自動化に成功しました。通常動画は77秒、Shortsは約2分。コストは1本あたり数円から、AI背景画像ありでも$0.16程度です。なお、このパイプライン自体はClaude Codeを使って設計・実装しました。

私が「動くものにしか、人は興味を持たない」と言うとき、その意味は「完璧でなくていい、まず動かせ」ということです。このパイプラインも、最初から完璧な動画が出てくるわけではありません。gTTSの音声は機械的だし、スライドのデザインもシンプルです。でも、動いた。テーマを渡したら動画になった。YouTubeに上がった。 この事実が、次の改善のモチベーションになります。

高速開発と個人開発の本質は、「完成させてから考える」ではなく、「動かしてから磨く」です。Claude Codeを使ったAI開発でも、このパイプラインでも、同じ考え方で進めています。エンジニアじゃなくても、コマンド1行で動画をYouTubeに上げられる時代になりました。ぜひ一度、試してみてください。