Communitygithub.com

ビデオプロデューサー

ナレーションとBGM付きの完全な動画を作成するスキルです。

ビデオプロデューサー とは?

このスキルは、スクリプト生成、音声合成、BGM生成、動画クリップ生成、そして最終的なアセンブリを統合して、プロフェッショナルな動画をゼロから作成するためのオーケストレータースキルです。主にClaude Code環境で動作し、Gemini TTS(音声)、Lyria(音楽)、Veo 3.1(動画生成)などの外部AIサービスと、FFmpegを利用したメディア処理を組み合わせます。ユーザーは対話形式で要件を定義し、その後init_project.pyとassemble.pyという2つのスクリプトを実行するだけで、製品動画、説明動画、プロモーション動画など様々なタイプの動画を生成できます。アスペクト比、解像度、動画モデル、音声戦略(カスタム、Veoネイティブ、サイレント)などを細かく設定可能で、既存のアセット(画像、動画クリップ、音声ファイル)を活用することもできます。

対応✓Claude Code~Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/michaelboeding/skills/tree/HEAD/skills/video-producer-agent

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

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

ドキュメント

ビデオプロデューサー は何をしますか?

ナレーション、BGM、およびビジュアルを備えた完全な動画を作成します。

これはオーケストレータースキルです。以下を組み合わせます:

  • スクリプト/ストーリーボード生成 (Claude)
  • ナレーション合成 (Gemini TTS)
  • BGM (Lyria)
  • 動画クリップ生成 (Veo 3.1) または画像アニメーション
  • 最終アセンブリ (FFmpeg via media-utils)

ワークフロー

ステップ 1: 要件の収集 (必須)

⚠️ このステップをスキップしないでください。すべての回答を得るまで init_project.py を実行しないでください。

インタラクティブな質問を使用 — 一度に1つの質問をし、応答を待ってから次の質問をします。これにより、協調的な仕様駆動のプロセスが実現します。

質問フロー

⚠️ 以下の各質問には AskUserQuestion ツールを使用してください。応答に質問を印刷するだけではなく、ツールを使用して、表示されているオプションを含むインタラクティブなプロンプトを作成します。

Q1: 主題

「動画を作成します!まず — 何についてですか?

(例: 製品発表、ブランドストーリー、チュートリアル、説明動画 — または独自のものを説明してください)」

応答を待ちます。

Q2: 長さ

「動画の長さはどれくらいにしますか?

  • 15秒 (クイックフック)
  • 30秒 (標準広告)
  • 60秒 (説明動画)
  • 2分以上 (詳細)
  • または独自の長さを指定」

応答を待ちます。

Q3: スタイル

「どのようなビジュアルスタイルにしますか?

  • プレミアム/高級感
  • 楽しい/遊び心
  • コーポレート/プロフェッショナル
  • ドラマチック/映画的
  • ミニマル/クリーン
  • または独自のスタイルを説明」

応答を待ちます。

Q4: アセット

「使用する既存の画像や動画クリップはありますか?

  • いいえ、すべて生成します
  • はい、画像があります (パスを提供)
  • はい、動画クリップがあります (パスを提供)」

応答を待ちます。

Q5: 音声戦略

「音声はどのように処理しますか?

  • カスタム — ナレーション + BGMを生成
  • Veoネイティブ — Veoの組み込みダイアログ/効果音/アンビエントを使用
  • サイレント — 音声なし、後で追加」

応答を待ちます。

Q6: 声 (カスタム音声の場合)

「ナレーションの声のトーンは?

  • プロフェッショナル
  • フレンドリー/温かみ
  • エネルギッシュ
  • 落ち着いた/心地よい
  • ドラマチック
  • または独自のトーンを説明」

応答を待ちます。

Q7: 音楽 (カスタム音声の場合)

「どのような音楽の雰囲気にしますか?

  • モダンエレクトロニック
  • シネマティック/壮大
  • アップビートポップ
  • アンビエント/チル
  • コーポレート
  • または独自のスタイルを説明」

応答を待ちます。

Q8: フォーマット

「アスペクト比は?

  • 16:9 (YouTube、Web)
  • 9:16 (TikTok、Reels、Shorts)
  • 1:1 (Instagramフィード)」

応答を待ちます。

Q9: 解像度

「解像度は?

  • 720p (より高速な生成)
  • 1080p (標準HD)」

応答を待ちます。

Q10: モデル

「どのVeoモデルを使用しますか?

  • veo-3.1 — 最新、最高品質 (デフォルト)
  • veo-3.1-fast — より高速な生成、若干品質低下
  • veo-3 — 以前の世代
  • veo-3-fast — 以前の世代、高速」

応答を待ちます。

クイックリファレンス

質問決定事項
主題シーンの内容とプロンプト
長さシーン数 (Veoクリップは4、6、または8秒である必要があります)
スタイルビジュアルプロンプトと音楽選択
アセット生成するか既存のものを使用するか
音声custom、veo_audio、またはsilent
声TTS音声選択
音楽Lyriaプロンプト
フォーマットVeoのアスペクト比
解像度720pまたは1080p出力品質
モデルveo-3.1、veo-3.1-fast、veo-3、veo-3-fast

ステップ 2: プロジェクトの初期化

ユーザーの回答を得たら、設定でプロジェクトを初期化します:

python3 ${CLAUDE_PLUGIN_ROOT}/skills/video-producer-agent/scripts/init_project.py \
  --name "製品発表動画" \
  --duration 30 \
  --aspect-ratio 16:9 \
  --audio-strategy custom \
  --scenes 5

ステップ 3: project.json の設定

ユーザーの回答に基づいて、シーンプロンプト、ナレーションテキスト、音楽スタイルを project.json で編集します。

ステップ 4: 動画のアセンブル

python3 ${CLAUDE_PLUGIN_ROOT}/skills/video-producer-agent/scripts/assemble.py \
  --project ~/my_video_project/

プロジェクト構造

プロジェクトを初期化すると、次のフォルダ構造が作成されます:

my_project/
├── project.json          # 設定: シーン、ナレーション、音楽、設定
├── storyboard.md         # 動画の計画ドキュメント
├── scenes/               # Veoから生成された動画クリップ
│   ├── scene1_intro.mp4
│   ├── scene2_features.mp4
│   └── scene3_cta.mp4
├── audio/                # 音声アセット
│   ├── voiceover.wav     # 生成されたナレーション
│   ├── background_music.wav  # 生成された音楽
│   └── final_mix.mp3     # ミックスされた音声トラック
├── work/                 # 中間ファイル (自動生成)
│   ├── silent_scene1.mp4
│   ├── video_concatenated.mp4
│   └── ...
└── output/               # 最終成果物
    └── product_launch_video_final.mp4

スクリプト

init_project.py

フォルダ構造とテンプレートで新しいビデオプロジェクトを初期化します。

# 基本プロジェクト
python3 init_project.py --name "My Video" --duration 30

# 特定のディレクトリに作成
python3 init_project.py --name "Demo Video" --output ~/Videos/

# ソーシャル縦型動画
python3 init_project.py --name "Instagram Reel" --aspect-ratio 9:16 --duration 15

# Veoのネイティブ音声を使用 (カスタムナレーション/音楽なし)
python3 init_project.py --name "Cinematic Scene" --audio-strategy veo_audio

# より多くのシーン
python3 init_project.py --name "Long Video" --duration 60 --scenes 5

オプション:

オプションデフォルト説明
--name必須プロジェクト名
--outputカレントディレクトリ親ディレクトリ
--duration30ターゲット時間 (秒)
--aspect-ratio16:916:9、9:16、1:1、4:3
--audio-strategycustomcustom、veo_audio、silent
--scenes3シーンプレースホルダー数

assemble.py

動画アセンブリパイプライン全体をオーケストレーションします。

# フルパイプライン (すべて生成 + アセンブル)
python3 assemble.py --project ~/my_project/

# 生成をスキップ (既存のシーン/音声ファイルを使用)
python3 assemble.py --project ~/my_project/ --skip-generation

# ドライラン (実行内容を表示)
python3 assemble.py --project ~/my_project/ --dry-run

パイプラインステップ:

  1. 動画シーンの生成 (Veo 3.1)
  2. シーンから音声を抽出 (カスタム音声の場合)
  3. ナレーションの生成 (Gemini TTS)
  4. BGMの生成 (Lyria)
  5. ナレーション + 音楽のミックス
  6. 動画クリップの連結
  7. 音声と動画のマージ
  8. 最終動画の出力

project.json 設定

{
  "name": "製品発表動画",
  "duration_target": 30,
  "aspect_ratio": "16:9",
  "resolution": "720p",
  "audio_strategy": "custom",
  
  "scenes": [
    {
      "id": 1,
      "name": "scene1_hero",
      "prompt": "プレミアム製品のシネマティックなスローズーム、ドラマチックな照明、高級感あふれるコマーシャルスタイル",
      "duration": 6,
      "notes": "音楽のみ、ナレーションなし"
    },
    {
      "id": 2,
      "name": "scene2_features",
      "prompt": "製品機能のデモンストレーション、洗練されたアニメーション、モダンなテクノロジー美学",
      "duration": 8,
      "notes": "ここからナレーション開始"
    },
    {
      "id": 3,
      "name": "scene3_cta",
      "prompt": "クリーンな背景にロゴと製品、コールトゥアクションの瞬間",
      "duration": 6,
      "notes": "音楽が盛り上がり、ナレーション終了"
    }
  ],
  
  "voiceover": {
    "enabled": true,
    "text": "オーディオの未来をご紹介します。クリスタルクリアなサウンド。一日中快適な装着感。違いを体感してください。",
    "voice": "Charon",
    "style": "プロフェッショナル、自信に満ちた、プレミアムブランドの声"
  },
  
  "music": {
    "enabled": true,
    "prompt": "モダンエレクトロニック、プレミアム、洗練された、製品ショーケース、控えめなベース",
    "duration": 35,
    "bpm": 100,
    "brightness": 0.6
  },
  
  "assembly": {
    "transition": "fade",
    "transition_duration": 0.5,
    "music_volume": 0.3,
    "fade_in": 1.0,
    "fade_out": 2.0
  }
}

音声戦略

戦略説明使用タイミング
customVeo音声を削除し、カスタムナレーション+音楽を追加ほとんどの動画
veo_audioVeoの生成音声を保持 (ダイアログ、効果音)映画的なシーン、ダイアログ
silent音声を削除し、無音動画を出力後で音声を追加する場合

ワークフロー: 動画の作成

ステップ 1: プロジェクトの初期化

python3 init_project.py --name "ワイヤレスイヤホンプロモ" --duration 30

ステップ 2: ストーリーボードの計画

storyboard.md を編集して動画の構成を計画します:

## シーン 1: ヒーロー公開 (0-5秒)
- ビジュアル: 影から浮かび上がるイヤホン、プレミアムな照明
- 音声: 音楽のみ (ドラマチックなイントロ)

## シーン 2: 音質 (5-12秒)
- ビジュアル: 音波、音楽を楽しむ人
- 音声: ナレーション: 「クリスタルクリアなサウンド。没入感のあるベース。」

## シーン 3: 快適性 (12-20秒)
- ビジュアル: フィット感のクローズアップ、ランニング中の人
- 音声: ナレーション: 「一日中快適。しっかりフィット。」

## シーン 4: CTA (20-30秒)
- ビジュアル: 製品 + ロゴ
- 音声: ナレーション: 「違いを体感してください。」 + 音楽が盛り上がる

ステップ 3: project.json の設定

ストーリーボードに基づいて、シーンプロンプト、ナレーションテキスト、音楽スタイルを記入します。

ステップ 4: アセンブル

python3 assemble.py --project ~/wireless_earbuds_promo/

ステップ 5: 確認と反復

output/ の出力を確認します。調整が必要な場合:

# 既存のシーンで再実行 (音声のみ再ミックス)
python3 assemble.py --project ~/wireless_earbuds_promo/ --skip-generation

作成可能な動画

タイプ例
製品動画30秒のヒーロー動画で製品を紹介
説明動画使い方や機能の説明
プロモ/広告動画マーケティング広告
デモ動画製品デモンストレーション
トレーニング動画社内トレーニングコンテンツ
お客様の声顧客の引用スタイルの動画
ブランド動画会社/ブランドストーリー

前提条件

  • GOOGLE_API_KEY - Veo (動画)、Gemini TTS (音声)、Lyria (音楽) 用
  • FFmpeg インストール: brew install ffmpeg

動画スタイルと音楽の組み合わせ

スタイル音楽プロンプト声
プレミアム/高級感"エレガント、ミニマル、アンビエント、洗練された"Charon (情報提供)
テック/モダン"エレクトロニック、未来的、クリーン、革新的"Kore (しっかり)
楽しい/遊び心"アップビート、陽気、アコースティック、ポジティブ"Puck (明るい)
コーポレート"プロフェッショナル、感動的、オーケストラライト"Orus (しっかり)
ライフスタイル"チル、アスピレーショナル、インディー、温かみ"Aoede (さわやか)
ドラマチック/映画的"壮大、オーケストラ、感情的、構築的"Gacrux (成熟)

一般的な動画構成

製品動画 (30秒)

0-5秒:   ヒーローショット (音楽のみ)
5-15秒:  機能 (ナレーション + 音楽)
15-25秒: ライフスタイル/使用例 (ナレーション + 音楽)
25-30秒: ロゴ + CTA (音楽フェード)

説明動画 (60秒)

0-5秒:   フック/問題提起
5-20秒:  ソリューションの紹介
20-45秒: 仕組み (3ステップ)
45-55秒: メリットのまとめ
55-60秒: CTA

お客様の声動画 (45秒)

0-5秒:   イントロ/ネームカード
5-35秒:  お客様の声 (複数シーン)
35-45秒: 製品ショット + ロゴ

手動ワークフロー (スクリプトなし)

各ステップを手動で実行したい場合:

シーンの生成:

python3 ${CLAUDE_PLUGIN_ROOT}/skills/video-generation/scripts/veo.py \
  --batch scenes.json

ナレーションの生成:

python3 ${CLAUDE_PLUGIN_ROOT}/skills/voice-generation/scripts/gemini_tts.py \
  --text "ナレーションテキスト..." \
  --voice Charon \
  --style "プロフェッショナル、温かみ"

音楽の生成:

python3 ${CLAUDE_PLUGIN_ROOT}/skills/music-generation/scripts/lyria.py \
  --prompt "モダンエレクトロニック、プレミアム" \
  --duration 35

クリップから音声を抽出:

python3 ${CLAUDE_PLUGIN_ROOT}/skills/media-utils/scripts/video_strip_audio.py \
  -i scene*.mp4

動画の連結:

python3 ${CLAUDE_PLUGIN_ROOT}/skills/media-utils/scripts/video_concat.py \
  -i silent_*.mp4 --transition fade -o video.mp4

音声のミックス:

python3 ${CLAUDE_PLUGIN_ROOT}/skills/media-utils/scripts/audio_mix.py \
  --voice voiceover.wav --music music.wav -o audio.mp3

音声+動画のマージ:

python3 ${CLAUDE_PLUGIN_ROOT}/skills/media-utils/scripts/video_audio_merge.py \
  --video video.mp4 --audio audio.mp3 -o final.mp4

提供可能な入力ファイル

ファイルタイプ使用方法
製品画像Veoで最初のフレームとしてアニメーション
ロゴ (PNG)最終シーンにオーバーレイ
既存のナレーションaudio/voiceover.wav に配置
ブランド音楽audio/background_music.wav に配置
動画クリップscenes/ フォルダに配置
スクリプト/コピーナレーションテキストとして使用

制限事項

  • Veo動画時間: クリップあたり最大8秒 (連結して長時間化)
  • Veo 3.1には音声が含まれます: すべてのクリップに生成された音声があります (カスタムの場合は抽出)
  • 処理時間: 動画生成にはクリップあたり1〜3分かかります
  • 解像度: 現在は720pまたは1080p (1080pは8秒のみ)

エラーハンドリング

エラー解決策
"GOOGLE_API_KEY not set"READMEに従ってAPIキーを設定
"FFmpeg not found"インストール: brew install ffmpeg
"project.json not found"最初に init_project.py を実行
動画生成タイムアウト再試行、またはより短い時間を使用
音声/動画の同期問題シーン時間を調整

プロンプト例

シンプル:

「新しいコーヒーメーカーの30秒製品動画を作成してください」

詳細:

「新しいワイヤレスイヤホンの45秒製品動画を作成してください。プレミアムで高級感のある雰囲気。製品写真を添付します。プロフェッショナルな男性のナレーション。モダンエレクトロニック音楽。YouTube用16:9。」

プロジェクト指定:

「'App Demo'というビデオプロジェクトを初期化してください。シーン数は5、合計時間60秒、TikTok用の縦型フォーマットで。」

関連スキル