mcpField
V
Video Producer

Video Producer

github.com/casperliu7クリエイティブ・メディア038 回インストール18 週間前に更新
リポジトリ

Video Producer について

Video Producerは、台本や素材から短編動画を作るためのワークフロースキルです。絵コンテを作成して要所で確認を待ち、音声生成、動画生成ツール、FFmpegで素材を処理し、編集と字幕付けを行います。

主な機能

  1. 01素材の確認と絵コンテ作成
  2. 02要所でユーザー確認を待機
  3. 03連続ナレーションと同期字幕の生成
  4. 04UI素材とAI Bロールの個別処理
  5. 05FFmpegによる形式統一、結合、ミックス
  6. 06字幕を焼き込みMP4を出力

活用シーン

  1. 01台本から短編動画を制作
  2. 02画面録画、スクリーンショット、Web素材の利用
  3. 03短編動画のナレーション、字幕、音楽の生成
  4. 04AI Bロールと実用映像の組み合わせ

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/casperliu7/small-company-agent --skill video-producer

インストール後、Claude Code で/video-producerを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

scripts/
audio_subtitle_gen.sh
ffmpeg_assembly.sh
record_scroll.py

詳細

スキル:動画プロデューサー(工業レベルのショート動画自動化ワークフロー)

前提条件

  • ffmpeg(動画のアスペクト比、カメラワーク、連結、ミキシングの処理)
  • edge-tts(感情豊かな連続したメイン音声トラックを生成)
  • 組み込みツール generate_video(テキストを含まない、実演ではない、感情や人物を題材とする空撮映像の生成にのみ使用)

ワークフロー(手順)

ユーザーがショート動画の生成を依頼した場合は、以下の手順に厳密に従い、重要な段階では必ずユーザーの確認を待ってください。

Step 0: 素材の確認と承認(アセットチェック)
  • ユーザーが文案のみを提供した場合、**まず【必ず一時停止】**して、ユーザーに次のように尋ねます:「動画に挿入する参考素材(画像、画面録画、公式動画、Webページの URL など)はありますか?」
  • ユーザーが「ありません」と回答した場合は、100% AI 生成映像のみで構成する絵コンテを計画します。
  • ユーザーが「あります」と回答した場合、または素材をアップロード済みの場合は、まず元の素材の内容を分析します。ユーザーがアップロードした動画素材については、必ず ffprobe を使用して正確な実時間(秒単位)を取得してください。Web ページの URL が提供された場合は、ブラウザー自動化ツールを呼び出してスクリーンショットの撮影または録画を行う準備をします。
Step 1: 絵コンテの作成と脚本の確認(Human-in-the-loop による確認待ち必須)
  • Step 0 の素材確認に基づいて、文案を具体的な絵コンテ(Blocks)に分割します。
  • 【動画の長さに応じた文字数制約】:ナレーションを計画する際は、元動画素材の実時間に合わせてセリフの文字数を厳密に調整してください。中国語 TTS の通常の読み上げ速度(約 4.5 字/秒)を基準に計算します。たとえば、10 秒の画面録画クリップに割り当てるセリフは 40~45 字以内にし、映像と音声の大幅なずれを防ぎます。
  • 【テンポの速さと静止画の表示時間制限】:ショート動画のテンポを保つため、静止スクリーンショットや画像の表示時間は必ず 3 秒以内にしてください。その部分のナレーションが 3 秒を超える場合は、必ず絵コンテを分割してください。最初の 3 秒はスクリーンショットを表示し、残りの時間は関連する AI 生成の動的映像(B-roll)でシームレスに補います。元のナレーションを削除したり、1 枚の画像を長時間静止表示したりしてはいけません。
  • 【エンディング CTA の動的表現】:動画の最後に表示する Call to Action(CTA)やロゴは、静止画像 1 枚だけで表現してはいけません。ロゴ素材を添付ファイル(attachment)として使用し、generate_video で生成する 3D 動画クリップとして計画し、エンディングの商業的な印象を高めてください。
  • 【標準絵コンテ表のレイアウト】:絵コンテは見やすい Markdown 表で出力してください。簡潔にするために映像プロンプトの詳細を省略してはいけません。表には以下の列を含め、それぞれの内容は次の要件を満たす必要があります。
    • カット番号:例:Block 1。
    • ナレーション(VO)/区切り:15 字以内ごとに厳密に改行し、演技指示や不要な感情表現は一切加えません。
    • 長さ:推定時間、または実測した正確な時間。
    • 映像素材とビジュアル表現(Visuals & Prompts):
      • 実演素材の場合は、切り出す区間と処理方法(例:縦横比を維持して中央に配置+ガウスぼかし背景)を明記します。
      • AI 生成映像の場合は、非常に詳細な英語の Prompt を記載してください。被写体、動作、環境、照明(例:volumetric lighting, cinematic)、カメラワーク(例:fast-paced dolly zoom)、スタイル(例:Pixar 3D animated style)を必ず含めます。
  • 【必ず一時停止】:この詳細な絵コンテ表をユーザーに送り、次のように明確に尋ねます:「絵コンテと映像の計画に修正が必要か、確認してください。」
  • **注意:**ユーザーから「確認しました」と明確な回答を得るか、問題がないことを確認できてから、後続の手順に進んでください。この段階を飛ばして、独断でレンダリングや総合編集を開始することは絶対に禁止です。
Step 2: メイン音声トラックの生成と正確な字幕(Master Audio & Subtitles)
  • 音声を分割して生成することは厳禁です。
  • 【長文の分割制約】:音声を生成する前に、縦画面または 3:4 比率の場合、長文の文案を非常に短い区切り(1 文あたり 12~15 文字以内を目安)に分割する必要があります。たとえば、「它自带云端电脑Yolo模式下写代码全包了」を複数の文に分割します。これにより、字幕が画面端からはみ出すのを防ぎ、動画のテンポも小気味よくなります。
  • edge-tts を使用して全文を 1 つの音声ファイル(例:master_audio.mp3)として一括生成し、必ず --write-subtitles subtitles.srt パラメーターを追加して、音声と完全に同期する字幕ファイルを抽出してください。
  • zh-CN-XiaoxiaoNeural や zh-CN-YunxiNeural など、感情豊かな音声の使用を推奨します。ショート動画の速いテンポに合わせて、読み上げ速度を適度に上げてもかまいません(例:--rate=+10%)。
Step 3: 元の画質を保った素材の処理(UI/スクリーンショット/URL)- FFmpeg/Playwright

テキスト、コード、UI を含むスクリーンショットや動画は、絶対に AI 生成に回さないでください。

  • 通常の画像/スクリーンショット:該当する絵コンテのナレーションの文字数に基づいて、画像の表示時間を計算します(例:3~5 秒)。FFmpeg を使用して静止動画に変換します。【動きの追加は厳禁】:ゆっくり拡大する Zoom-in や呼吸するような動きなど、微細な動きも絶対に加えないでください。処理はシンプルにし、元画像を中央に配置して、下層にその画像のガウスぼかし(Gaussian Blur)背景を敷き、余白を埋めます。元の画面をそのまま安定して表示し、シンプルで美しい見た目を完全に保ってください。
  • Web ページ URL 素材(高速スクロール録画):ユーザーが URL を提供した場合は、Playwright などのブラウザー自動化ツールを呼び出してページを開きます。スクロール動画を録画する際は、通常のワイド画面または画面に合わせた比率を維持してください(左右の情報が強制的に切り取られないよう、3:4 や狭い比率での録画は厳禁です)。録画時は次の原則に従います。
    1. 最初の画面では待たない:ネットワークの読み込みや長時間の表示を無視し、すぐに本題へ進みます。
    2. 高速かつ頻繁なスクロール:自動化スクリプト(例:setInterval 制御)を書く際は、スクロール幅を大きくし(例:12 ピクセル)、間隔を短く(例:16ms)して、高速かつ滑らかなスクロールを実現します。
    3. 冒頭と末尾をカット:録画後は必ず FFmpeg/ffprobe を使用して、冒頭の読み込み中画面や白画面を正確にカットします。情報密度の高いスクロール映像のみを残し、ショート動画の非常に速いテンポに合わせて 5 秒以内に収めます。
  • 動画と画面録画素材の処理(ガウスぼかし背景):サイズが異なる実演画面録画や、上記の方法で生成した URL スクロール動画を目標比率(例:3:4)に変換する際、黒帯で余白を埋める(黒帯の Pad)は絶対に使用しないでください。スクリーンショットと同様に、元動画を縦横比を維持して中央に表示し、下層にその動画映像のガウスぼかし(Gaussian Blur)背景を敷いて、余白を動的に埋めてください。これにより、映像のつながりと高級感を完全に保てます。
Step 4: AI 雰囲気映像の生成(B-roll/キャラクター)- generate_video

フック、トランジション、人物がコーヒーを飲むシーンなど、複雑なテキストを含まない感情的なショットには、次のように対応します。

  • 【長さの厳守、簡潔で無駄のない映像】:generate_video を呼び出す際、durationSeconds パラメーターは、その部分のナレーションに必要な絵コンテ上の実時間に厳密に合わせてください(API で許可される範囲は 4~15 秒です)。ナレーションが終わった時点で映像も終了し、長すぎる無駄な映像を生成してはいけません。
  • 【コストと解像度の制御】:API コストを厳密に抑え、生成効率を大幅に高めるため、generate_video を呼び出す際は、resolution パラメーターを最低画質(つまり 480p)に設定してください。ただし、ユーザーが明確に高画質での納品を希望している場合は除きます。
  • 【具体的な Prompt の作成】:AI 動画生成の Prompt は非常に詳細にし、ビジュアル表現をナレーションの概念に正確に対応させてください。曖昧で抽象的な言葉は厳禁です。たとえば、ナレーションで「微信と飛書」に言及する場合、「social media integration」とだけ書くのではなく、「a glowing green chat bubble and a blue paper plane icon floating in a 3D tech space」と記述してください。「AI の脳」に言及する場合は、「a glowing futuristic mechanical brain pulsing with neon blue lights」と具体的に記述してください。
  • 【動作のテンポ制約】:AI 動画にありがちな「スローモーションのように冗長な動き」を避けるため、Prompt に fast-paced, decisive action, quick motion などの言葉を積極的に含め、AI の動作を速くしてください。
  • generateAudio: false(音声なし生成)を設定します。
  • 実在人物のプライバシー審査を回避し、人物の一貫性を保つため、Prompt に "Pixar style 3D animated character" を加え、ユーザーの「人物カード」を attachments として渡します。
  • 適切な aspectRatio を設定します。
Step 5: 標準化の徹底と最終連結(Normalization & Assembly)
  • 【フォーマットの完全統一】:最終的な連結の前に、生成したすべての素材(静止画、スクリーンショット、生成動画を問わず)を FFmpeg で強制的に統一された**目標解像度(例:720x960)と目標フレームレート(例:-r 30)**に変換してください。パラメーターが一致しない場合、後続の合成で黒画面や音声の途切れが必ず発生します。
  • concat_list.txt を作成し、標準化したすべての動画クリップを順番に並べて、音声なしの 1 本のメイン動画に連結します。
Step 6: 混音与商业字幕烧录 (Final Mix & Hardcoded Subtitles)
  • BGM (全自动配乐):必须自动添加 BGM,绝不要向用户索要。用 curl/wget 从公共库下载带有明显节奏感的真实 BGM,截取对应时长并加上音频淡入淡出(afade)。
  • 全局混流:使用 FFmpeg amix 滤镜,将 100% 音量的原声主音轨(master_audio.mp3)与降至 15%-25% 音量的 BGM 进行平滑混合,确保不会覆盖人声。
  • 商业字幕参数:调用 FFmpeg subtitles 滤镜,将 Step 2 提取的 .srt 烧录进画面底端。
    • 绝不溢出的防翻车设置:竖屏短视频中,必须设置相对适中的字号(如 FontSize=14)、留出底部安全区避开评论栏(如 MarginV=35),并开启描边和阴影确保任何背景下都可见。
    • 推荐模板:subtitles=subtitles.srt:force_style='Fontname=SimHei,FontSize=14,Bold=-1,PrimaryColour=&H00FFFFFF,OutlineColour=&H00000000,BorderStyle=1,Outline=1,Shadow=1,MarginV=35,Alignment=2'
  • 使用 -shortest 截断多余的音频或画面,输出带字幕与精美配乐的终极版成片 MP4。

Notes

  • 永远记住:AI 只负责生成“气氛”和“非特定人脸”,FFmpeg 负责保障“信息清晰度(文字/UI)”和“全局对齐”。
  • 处理素材时,严格使用 force_original_aspect_ratio=decrease 防止任何素材被拉伸变形。

コメント