Communitygithub.com

Jamailar/Beav

影片導演:為所有 AI 聊天中的影片製作請求(包括廣告、商品宣傳、圖片轉影片、口播影片等)提供統一的標準化流程,從腳本、分鏡到最終生成。

Beav 是什麼?

這個技能是 AI 聊天中所有影片生成請求的單一入口點。它建立了一個嚴謹的閘道狀態機工作流程,確保任何影片任務(從促銷片、廣告、口播影片到圖片轉影片)都按照正確的步驟進行:首先規劃並撰寫詳細的腳本與分鏡表,然後透過 `image.generate` 生成連環分鏡預覽圖供用戶確認,最後才調用正式的影片生成 API。此技能支援多種生成模式(文字轉影片、參考引導、首尾幀轉場),並特別針對資產庫中的角色口播影片提供了嚴格的語音合成(TTS)先行流程,確保在影片生成前先完成經過用戶批准的完整語音軌道。所有不符合此標準化流程的捷徑(例如跳過分鏡確認或直接將角色圖像用作影片生成)都將被禁止,以維持最終影片的品質與一致性。

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

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

影片導演

在為影片工作調用 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。

資產庫角色口播規則

當用戶想要使用資產庫中的角色製作口播 / 演示 / 直播歡迎影片時,角色圖像僅作為視覺身分參考。它不是語音軌道。

將這三個輸入分開:

  • voiceId:存儲在角色資產上的可複用克隆語音身分。這是未來 TTS 調用的主要語音欄位。
  • 語音樣本 / 參考音訊:當沒有現成 voiceId 時用於克隆的備用來源材料。一旦找到現成的 voiceId,就不要繼續分析或展示它。
  • 生成的 TTS 音訊資產:完成的口播腳本。這是唯一應驅動角色口播影片的音訊。

使用此確切順序:

  1. 先處理腳本和分鏡
    • 確認最終的口播腳本。
    • 確認分鏡 / 分鏡表。
    • 聲音 欄必須包含實際的口播台詞,而不是像 "角色講解" 這樣模糊的標籤。
  2. 解析角色語音
    • 在生成媒體之前讀取所選的角色資產。
    • 如果資產有現成的 voiceId / voice_id,將其視為已解析的語音,並停止檢查語音樣本。報告已解析的 voiceId,而不是參考音訊的檔案名稱。
    • 如果資產有語音樣本但沒有現成的 voiceId,先調用 Operate(resource="voice", operation="clone", input={ ... }),等待完成,然後使用返回的 voiceId。
    • 如果沒有現成的 voiceId 也沒有可用的語音樣本,停止並請用戶提供或選擇一個語音。不要默默地回退到通用語音。
  3. 使用 TTS 生成完整的語音軌道
    • 使用已批准的完整口播腳本和已解析的 voiceId 調用 Operate(resource="voice", operation="speech", input={ ... })。
    • 除非用戶明確想要分離的片段,否則對於整個口播部分,偏好使用一個完整的音訊資產。
    • 對於在此已確認的數位人 / VideoRetalk 流程中的表現性旁白、長腳本、詩歌、廣告或任何多情緒表演,請先使用 Operate(resource="skills", operation="invoke", input={ "name": "tts-director" }) 激活 tts-director,然後使用其指導將已批准的腳本分割為語義段落,並分配模型適當的表達控制。
    • 如果選擇的 TTS 模型是 CosyVoice,tts-director 僅在此時(在 video-director 工作流程已確認這是數位人 / VideoRetalk / 資產庫口播影片,且腳本和角色語音已解析後)才能激活 cosyvoice-ssml。
    • 當它們改善已批准的表演時,加入剋制的表達控制:使用 speed 控制節奏,pitch 控制音調,emotion 控制情緒,表現性標點如 ~、?、!、……,以及僅在口語節奏需要時於 input 內使用的 MiniMax 文字標記如 <#0.6#>、(laughs)、(sighs) 或 (breath)。
    • 不要將控制指令寫入口語文字中。例如,傳遞 "emotion":"happy" 和 speed:1.08,而不是讓角色說 "用開心快速的語氣"。
    • 如果已批准的語音軌道需要多個情緒節拍,提交一個帶有有序 segments 的 voice.speech 調用;媒體執行時間將生成每個片段並合併最終音訊。不要重複調用 voice.speech 然後手動合併。
    • 等待直到 TTS 結果包含可用的音訊資產路徑、URL 或資產 ID。
    • 當 TTS 工作僅處於排隊或運行狀態時,不要開始影片生成。
  4. 使用視覺參考加上生成的音訊來生成影片
    • 使用所選的角色圖像作為視覺參考。
    • 使用新生成的完整 TTS 音訊資產作為 drivingAudio。
    • 在提示前言中將其識別為生成的語音音訊,例如 音訊 1:生成的 Jamba TTS 語音,用於唇形同步 / 說話節奏。
    • 然後調用 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
  • 將首尾幀轉場視為圖片轉影片工作的子類型。
  • 單個上游影片生成片段不得超過 15 秒。
  • 對於長於 15 秒的最終影片,提交一個帶有最終 durationSeconds 或明確 videoSegments 的 video.generate 請求;媒體佇列將生成 <=15s 的片段並串聯成一個最終影片資產。
  • 不要僅僅為了繞過上游 15 秒片段限制而重複調用 video.generate。
  • 不要因為請求聽起來很明顯就跳過腳本審查步驟。
  • 除非用戶明確要求更長的連續鏡頭,否則單個鏡頭通常應為 1-3 秒。
  • 在沒有明確用戶批准的情況下,任何單個鏡頭不得超過 5 秒。

模式選擇

  • 當用戶僅提供文字並想要一個全新的影片鏡頭時,使用 text-to-video。
  • 當用戶提供一張或多張參考圖像,並希望影片吸收這些圖像中的主體元素、風格提示、道具、場景主題或構圖提示時,使用 reference-guided。
  • 僅當兩張圖像具有明確的開始/結束語義時使用 first-last-frame,例如 "從 A 到 B"、"首幀/尾幀"、"開頭/結尾" 或 "起始狀態/結束狀態"。
  • 如果用戶提供了兩張圖像但它們只是風格參考,不要使用 first-last-frame;請堅持使用 reference-guided 語義。

製作策略

  • 單視頻模式:

    • 使用一個生成的影片片段。
    • 當請求簡單、動作簡短且完整想法適合單個連貫片段時為預設。
    • 單個生成的片段不得超過 15 秒。
  • 長視頻隊列模式:

    • 用於長於 15 秒的最終 AI 生成影片。
    • 提交一個帶有 durationSeconds > 15 的 video.generate 請求;執行時間將創建一個 video_sequence 佇列任務,將生成拆分為 <=15s 的片段,等待每個片段,串聯這些片段,並返回一個最終影片資產。
    • 當分鏡需要場景級、節拍級、參考圖像、首尾幀或驅動音訊控制時,使用明確的 videoSegments。
    • 每個 videoSegments[] 項目必須 <=15 秒,並應對應於一組已批准的連貫分鏡行。
    • 保持 waitForCompletion: true,除非用戶明確要求後台運行長生成。
  • 手動多視頻工程模式:

    • 僅當用戶明確要求分離的片段、專案/編輯器工作流程、導入片段組合、手動後期製作或可單獨編輯的輸出時使用。
    • 在正常的聊天/代理影片生成中,不要手動一個接一個地生成片段然後用 ffmpeg 串聯;請改用 長視頻隊列模式。
    • 當明確需要手動組合時,精心生成每個片段,然後在所有片段成功後按分鏡順序串聯它們。
  • 如果請求有多個鏡頭、明確的連續性要求或視覺漂移的風險,在展示連環分鏡預覽後再問一個問題:

    • 在影片製作之前,是否也應生成獨立的分鏡關鍵影格。
  • 如果生成了獨立的分鏡關鍵影格,後續的影片生成應優先使用基於圖像的模式,對於轉場較重的部分,應優先使用 first-last-frame。

分鏡優先規則

每個影片任務在腳本表之後、用戶確認之前,都需要一個連環分鏡預覽圖……

相關技能