Communitygithub.com

ビデオディレクター

AIチャットにおける全ての動画生成リクエスト(プロモーション、広告、ショート動画、商品動画、画像-to-動画、口ビデオ、分鏡図など)の正規エントリポイント。スクリプトとショットテーブルを草案し、ストーリーボードのコンタクトシートプレビュー画像を生成し、ユーザーに確認を求め、その後に動画生成を実行します。

ビデオディレクター とは?

このスキルは、AIチャットにおいて動画生成を依頼するすべてのリクエストを処理するための正規エントリポイントとして機能します。ユーザーが「動画を作って」や「プロモーション動画を生成して」などと依頼した場合、まずこのスキルを起動し、スクリプトとショットテーブルを草案します。その後、`image.generate`オペレーションを呼び出して、コンタクトシート形式のストーリーボードプレビュー画像を生成します。これにより、ユーザーは動画全体の方向性、構図、商品配置、連続性を事前に確認できます。最後に、スクリプトとストーリーボードの両方がユーザーに確認されてから、初めて`video.generate`を呼び出して動画を生成します。このスキルは、キャラクターの口ビデオ(口播き)における音声トラックの適切な処理(音声クローン、TTS生成)や、複雑なワークフロー(長い動画の自動セグメント化、手動プロジェクト管理など)もサポートしています。CosyVoice-SSMLのような他のスキルは、このワークフローの明確なサブステップとしてのみ呼び出されます。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Jamailar/Beav/tree/HEAD/desktop/builtin-skills/video-director

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

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

ドキュメント

ビデオディレクター は何をしますか?

動画作業を行う前に、このスキルを使用してから Operate(resource="video", operation="generate", input={ ... }) を呼び出してください。

AIチャットにおいて、このスキルは動画生成のための単一エントリポイントです。ユーザーが「口ビデオを作って」、「動画を生成して」、「製品プロモーション動画」、「広告動画」、「デジタルヒューマン動画」、または同様の動画リクエストを行った場合、最初に video-director を呼び出してください。cosyvoice-ssml から開始しないでください。そのスキルは内部のデジタルヒューマンTTSサブステップであり、動画ワークフローの開始点としては使用しないでください。

ユーザーが画像を添付し、プロモーションフィルム / 宣传片 / 動画をリクエストしたためにこのスキルが読み込まれた場合、添付画像を動画ワークフローの製品またはビジュアルリファレンスとして扱ってください。分析のステップとして、代替の製品画像を生成しないでください。

デフォルトワークフロー

ワークフローをゲート付きステートマシンとして扱います。状態をスキップしたり、順序を変更したりしないでください。

  1. plan_draft: ユーザーの目標とアセットから目的のビデオモードを明確にし、簡潔で詳細なビデオスクリプトとショットテーブルを草案します。
  2. storyboard_preview: ショットテーブルが存在したらすぐに、Operate(resource="image", operation="generate", input={ ... }) を使用してストーリーボードのコンタクトシートプレビュー画像を生成します。ストーリーボード画像は計画されたショットのプレビューであり、独立した製品ポスター、代替製品レンダリング、カバー画像、または最終ビデオキーフレームではありません。
  3. user_review: スクリプト、ストーリーボードプレビュー画像、および明示的なビデオ仕様を一緒に表示します。ユーザーに計画全体を確認または修正するよう求めます。
  4. production_prep: 確認後、これが <=15s の単一アップストリームクリップなのか、長い video_sequence リクエストなのか、手動編集者/プロジェクトアセンブリなのかを決定します。ビデオプロジェクトパックは、ユーザーが明示的にプロジェクト/パッケージ/エディターワークフローを要求した場合、またはタスクが既存のパックにバインドされている場合にのみ使用します。
  5. tts_if_needed: 確認されたタスクがキャラクターの口ビデオ / 口播 である場合、以下のTTSファーストワークフローを完了します。
  6. video_generate: 確認と必要なTTSオーディオが完了した後にのみ、Operate(resource="video", operation="generate", input={ ... }) を呼び出します。

ユーザーがスクリプトをまだ確認していない場合は、動画を生成しないでください。

ユーザーがストーリーボードプレビュー画像を見て承認していない場合は、動画を生成しないでください。

ショットテーブルは存在するが、ストーリーボードのコンタクトシート画像がまだ生成されていない場合、次のツール呼び出しは image.generate でストーリーボードプレビューを生成することであり、video.generate、voice.speech、tts-director、または cosyvoice-ssml ではありません。

ストーリーボードのコンタクトシートプレビューは、最初のショットスクリプトが作成された後に必須です。これは最終ビデオのキーフレームとは異なります。計画されたショットシーケンスの迅速な視覚的証明であり、ユーザーが動画生成前に方向性、構図、製品配置、連続性を承認できるようにするためのものです。

添付/参照画像からの製品プロモーションビデオの場合:

  • 最初の image.generate 呼び出し(ある場合)は、スクリプトとショットテーブルが存在した後のストーリーボードコンタクトシート用である必要があります。
  • ストーリーボードのプロンプトは、これがビデオ用のマルチパネルストーリーボードプレビューであることを明示的に示し、添付/参照製品の目に見える形状、素材、色、および特徴的な詳細を保持する必要があります。
  • 製品参照を「分析」、「抽出」、「強調」、または再作成するためだけに image.generate を呼び出さないでください。
  • ユーザーがストーリーボードの方向性を確認するまで video.generate を呼び出さないでください。

アセットライブラリキャラクター口ビデオルール

ユーザーがアセットライブラリのキャラクターを使用して口ビデオ / 口播 / プレゼンター / ライブストリームウェルカムビデオを希望する場合、キャラクター画像はビジュアルアイデンティティの参照に過ぎません。これは音声トラックではありません。

これら3つの入力を別々に保ちます:

  • voiceId: キャラクターアセットに保存されている再利用可能なクローン音声ID。これは将来のTTS呼び出しのための主要な音声フィールドです。
  • 音声サンプル / 参照オーディオ: 準備済みの voiceId が存在しない場合のクローン作成用のフォールバックソースマテリアル。準備済みの voiceId が見つかったら、それを分析したり提示したりし続けないでください。
  • 生成されたTTSオーディオアセット: 完成した話されたスクリプト。これはキャラクター口ビデオを駆動する唯一のオーディオです。

この正確な順序を使用します:

  1. 最初にスクリプトとストーリーボード
    • 最終的な話されたスクリプトを確認します。
    • ストーリーボード / ショットテーブルを確認します。
    • Sound 列には実際の話された行を含める必要があり、「キャラクター説明」のような曖昧なラベルは使用しないでください。
  2. キャラクターの音声を解決する
    • メディアを生成する前に、選択したキャラクターアセットを読み取ります。
    • アセットに準備済みの voiceId / voice_id がある場合、それを解決済みの音声として扱い、音声サンプルの調査を停止します。解決された voiceId を報告し、参照オーディオファイル名は報告しません。
    • アセットに音声サンプルはあるが準備済みの voiceId がない場合、最初に Operate(resource="voice", operation="clone", input={ ... }) を呼び出し、完了を待って、返された voiceId を使用します。
    • 準備済みの voiceId も使用可能な音声サンプルもない場合、停止してユーザーに音声を提供または選択するよう求めます。黙って汎用音声にフォールバックしないでください。
  3. TTSで完全な音声トラックを生成する
    • 承認された完全な話されたスクリプトと解決された voiceId を使用して Operate(resource="voice", operation="speech", input={ ... }) を呼び出します。
    • ユーザーが明示的に別々のクリップを希望する場合を除き、口ビデオセグメント全体に対して1つの完全なオーディオアセットを優先します。
    • 表現力豊かなナレーション、長いスクリプト、詩、広告、またはこの確認されたデジタルヒューマン / VideoRetalk フロー内での複数の感情表現については、最初に Operate(resource="skills", operation="invoke", input={ "name": "tts-director" }) で tts-director をアクティブにし、そのガイダンスを使用して承認されたスクリプトを意味的なビートに分割し、モデルに適したデリバリーコントロールを割り当てます。
    • 選択されたTTSモデルがCosyVoiceの場合、tts-director はここでのみ cosyvoice-ssml をアクティブにすることができます。これは、video-directorワークフローがこれがデジタルヒューマン / VideoRetalk / アセットライブラリ口ビデオであり、スクリプトと役割の音声が解決されたことを確認した後です。
    • 承認されたパフォーマンスを向上させる場合に、抑制されたデリバリーコントロールを追加します:speed でペース、pitch でトーン、emotion で気分、~、?、!、…… などの表現力豊かな句読点、および <#0.6#>、(laughs)、(sighs)、(breath) などのMiniMaxテキストマーカーを、話されるリズムで必要な場合にのみ input 内で使用します。
    • 話されるテキストに制御指示を書き込まないでください。例えば、キャラクターに「明るく速い口調で言って」と言わせる代わりに、"emotion":"happy" と speed:1.08 を渡します。
    • 承認された音声トラックに複数の感情的なビートが必要な場合は、順序付けられた segments を持つ1つの voice.speech 呼び出しを送信します。メディアランタイムは各セグメントを生成し、最終的なオーディオをマージします。繰り返し voice.speech 呼び出しを行い、手動でマージしないでください。
    • TTS結果に使用可能なオーディオアセットパス、URL、またはアセットIDが含まれるまで待機します。
    • TTSジョブがキューに入れられているか実行中の場合、動画生成を開始しないでください。
  4. ビジュアル参照と生成されたオーディオを使用して動画を生成する
    • 選択したキャラクター画像をビジュアル参照として使用します。
    • 新しく生成された完全なTTSオーディオアセットを drivingAudio として使用します。
    • プロンプトの前置きで、生成されたスピーチオーディオとして識別します。例:Audio 1: generated Jamba TTS speech for lip-sync / speaking rhythm。
    • 次に、Operate(resource="video", operation="generate", input={ ... }) を呼び出します。通常は reference-guided モードで行います。

これは必須です。ビデオモデルは、承認されたスクリプトに合致する完成したオーディオ波形を必要とするためです。キャラクターの voiceId はオーディオではありません。音声サンプルは承認された話された行ではありません。ビデオプロンプト内の話されたテキストはTTSの代わりにはなりません。

禁止されるショートカット:

  • キャラクター画像とスクリプトのみでキャラクター口ビデオの動画生成を呼び出さないでください。
  • voiceId、音声サンプルオーディオ、または「音色素材」を drivingAudio として渡さないでください。
  • generateAudio に依存して口ビデオ作業のキャラクターボイスを作成しないでください。
  • 意図されたスピーチをビデオプロンプトでのみ説明し、ビデオモデルがそれを合成することを期待しないでください。
  • ユーザーが個別に編集可能なオーディオクリップを要求するか、ビデオが複数の独立したスピーチクリップからアセンブルされる場合を除き、ストーリーボードの行ごとにTTSを分割しないでください。

推奨されるTTSペイロード形状:

{
  "voiceId": "voice_xxx",
  "segments": [
    {
      "input": "完全で確認済みの口演のオープニング。<#0.5#>",
      "speed": 0.98,
      "pitch": 0,
      "emotion": "calm"
    },
    {
      "input": "自然にもっと影響力のある要点に入る(laughs)。",
      "speed": 1.05,
      "pitch": 0,
      "emotion": "happy"
    }
  ],
  "title": "Jamba welcome voiceover",
  "waitForCompletion": true
}

TTS完了後の推奨ビデオペイロード形状:

{
  "generationMode": "reference-guided",
  "referenceImages": ["/absolute/path/to/jamba.png"],
  "drivingAudio": "/absolute/path/to/generated-jamba-tts.mp3",
  "drivingAudioLabel": "Generated Jamba TTS speech from the approved script",
  "storyboardShots": [
    {
      "time": "0-3s",
      "picture": "Jamba faces camera in the livestream room and smiles naturally.",
      "sound": "ライブ配信へようこそ。今日は超実用的な良いものを用意しました。",
      "shot": "Medium close-up, stable presenter framing."
    }
  ]
}

ビデオプロジェクトパックルール

ビデオプロジェクトパックはデフォルトのパスではありません。

以下の場合にのみ作成します:

  • ユーザーが明示的に ビデオプロジェクト / ビデオエンジニアリング / プロジェクトパック を要求した場合
  • ユーザーが後でビデオエディター / プロジェクトワークベンチ内で続行することを明示的に要求した場合
  • タスクが既存のビデオプロジェクトパックにすでにバインドされている場合

リクエストに複数のショット、長いコンテキスト、継続性のリスク、ストーリーボードの必要性、または改訂の可能性があるからといって、作成しないでください。

明示的に必要な場合、次のように作成します:

  • Operate(resource="video", operation="create", input={ "explicitProjectWorkflow": true, "title": "...", "duration": "...", "aspectRatio": "...", "mode": "..." })

プロジェクトフォルダは次の場所にあります:

  • manuscripts/video/<project-name>/

これを使用して、これらのファイルを一緒に保持する必要があります:

  • manifest.json
  • script.md
  • assets.json
  • editor.project.json
  • インポートされた参照画像 / キーフレーム / 生成されたクリップ / 最終出力

パックが作成された後:

  • ユーザーの概要と承認されたスクリプトをビデオプロジェクトフォルダに書き戻します
  • 可能な限り、後続のキーフレーム、クリップ、出力を同じパックに保持します

それ以外の場合は、計画をチャットに保持し、video generate を直接呼び出し、出力を生成されたメディアライブラリに保存させます。

ハードルール

  • 動画生成は、アプリによって設定された公式のビデオルートにロックされています。
  • 任意のビデオエンドポイントやサードパーティのビデオモデルを選択しないでください。
  • これらの公式モデルマッピングのみを使用します:
    • text-to-video -> wan2.7-t2v-video
    • reference-guided -> wan2.7-r2v-video
    • first-last-frame -> wan2.7-i2v-video
  • 最初/最後のフレーム遷移は、画像-to-ビデオ作業のサブタイプとして扱います。
  • 単一のアップストリームビデオ生成セグメントは 15 秒を超えてはなりません。
  • 最終ビデオが 15 秒より長い場合、最終的な durationSeconds または明示的な videoSegments のいずれかを含む1つの video.generate リクエストを送信します。メディアキューは <=15s のセグメントを生成し、1つの最終ビデオアセットに連結します。
  • アップストリームの 15 秒セグメント制限を回避するためだけに、video.generate を繰り返し呼び出さないでください。
  • リクエストが明白に聞こえるからといって、スクリプトレビューのステップをスキップしないでください。
  • ユーザーが明示的に長い連続ショットを要求しない限り、単一のショットは通常 1-3 秒である必要があります。
  • 明示的なユーザー承認なしに、単一のショットが 5 秒を超えてはなりません。

モード選択

  • ユーザーがテキストのみを提供し、新しいビデオショットを希望する場合は、text-to-video を使用します。
  • ユーザーが1つ以上の参照画像を提供し、ビデオがそれらの画像から被写体要素、スタイルの手がかり、小道具、シーンモチーフ、または構図のヒントを吸収することを希望する場合は、reference-guided を使用します。
  • 2つの画像に「AからBへ」、「最初のフレーム/最後のフレーム」、「開始/終了」、または「開始状態/終了状態」などの明示的な開始/終了セマンティクスがある場合にのみ、first-last-frame を使用します。
  • ユーザーが2つの画像を提供したが、それらがスタイル参照にすぎない場合は、first-last-frame を使用しないでください。代わりに reference-guided セマンティクスを維持します。

制作戦略

  • 单视频模式:

    • 1つの生成されたビデオクリップを使用します。
    • リクエストがシンプルで、アクションが短く、完全なアイデアが1つの一貫したクリップに収まる場合のデフォルト。
    • 単一の生成クリップは 15 秒を超えてはなりません。
  • 长视频队列模式:

    • 最終的なAI生成ビデオが 15 秒より長い場合に使用します。
    • durationSeconds > 15 を含む1つの video.generate リクエストを送信します。ランタイムは video_sequence キュージョブを作成し、生成を <=15s セグメントに分割し、各セグメントを待機し、セグメントを連結し、1つの最終ビデオアセットを返します。
    • ストーリーボードでシーンごと、ビートごと、参照画像、最初/最後のフレーム、またはドライビングオーディオの制御が必要な場合は、明示的な videoSegments を使用します。
    • 各 videoSegments[] アイテムは <=15 秒でなければならず、承認されたストーリーボード行の一貫したグループに対応する必要があります。
    • ユーザーが明示的に長い生成をバックグラウンドで実行することを要求しない限り、waitForCompletion: true を保持します。
  • 手动多视频工程模式:

    • ユーザーが明示的に別々のクリップ、プロジェクト/エディターワークフロー、インポートされたクリップアセンブリ、手動ポストプロダクション、または個別に編集可能な出力を要求する場合にのみ使用します。
    • 通常のチャット/エージェントビデオ生成では、手動で一度に1つのクリップを生成し、ffmpeg で連結しないでください。代わりに 长视频队列模式 を使用します。
    • 手動アセンブリが明示的に必要な場合、各クリップを意図的に生成し、すべてのクリップが成功した後にストーリーボードの順序で連結します。
  • リクエストに複数のショット、明確な連続性要件、または視覚的ドリフトのリスクがある場合は、コンタクトシートプレビューを表示した後にもう1つの質問をします:

    • ビデオ制作の前に、個別のストーリーボードキーフレームも生成する必要があるかどうか。
  • 個別のストーリーボードキーフレームが生成された場合、後続の動画生成は優先的に画像ベースのモードを使用し、トランジションの多いセグメントでは first-last-frame を優先します。

ストーリーボードファーストルール

すべてのビデオタスクには、スクリプトテーブルの後、ユーザー確認の前にストーリーボードのコンタクトシートプレビューが必要です。

これは重要です。なぜなら、ビデオモデルは承認されたストーリーボード方向性と整合性のある出力を必要とするためです。コンタクトシートをスキップすると、ユーザーがビデオの品質や構成に驚くことになります。

ストーリーボード画像は、ショットのシーケンスと遷移を示すマルチパネルプレビューである必要があります。写真のように正確である必要はなく、各計画されたショットのレイアウト、被写体、アクション、カメラワークを明確に伝える必要があります。

ストーリーボードプロンプトは、これがビデオストーリーボードプレビューであることを明示的に述べる必要があります。

ストーリーボード画像を、ビデオフレームとして渡すことはできません。プロンプトで明確に区別し、ビデオモデルに渡す場合は「ビデオストーリーボードプレビュー」または同様のラベルを付けてください。

特別な動画タイプ

口播视频(トーキングヘッドビデオ)

これはキャラクター口ビデオの通常の処理であり、アセットライブラリルールを使用します。

数字人视频(デジタルヒューマンビデオ)

これはアセットライブラリの口ビデオと同様に扱いますが、wait_for_emotion または emotion_markers などの人間らしい配信パラメータに注意してください。

第一帧/尾帧(最初のフレーム/最後のフレーム)

これらは、特に明示的な遷移ビデオ用の画像-to-ビデオモードです。

分镜图(ストーリーボード画像)

これは storyboard_preview フェーズで生成されるコンタクトシートであり、最終ビデオのキーフレームではありません。

产品宣传片(製品プロモーションビデオ)

製品画像が添付されている場合、それはビジュアル参照です。スクリプトとストーリーボードは製品の機能と利点を説明する必要があります。

宣传片 / 广告片 (プロモーションビデオ / 広告)

一般的なプロモーション。ワークフローは同じです。

短视频(ショートビデオ)

通常は 单视频模式 で、ショートであり(<=15 秒)、迅速なペースです。

重要な注意事項

  • 常にスクリプトテーブルを最初に書いてください。
  • 常に画像生成でストーリーボードを生成してください。
  • ユーザー確認前にビデオを生成しないでください。
  • 口ビデオの場合、常にTTSを最初に完了してください。
  • voice.speech からのオーディオアセットを drivingAudio として使用してください。
  • ビデオモデルとして voiceId を使用しないでください。
  • reference-guided モードを使用してキャラクタービデオを生成してください。

関連スキル