影片導演
在為影片工作調用 Operate(resource="video", operation="generate", input={ ... }) 之前,請先使用此技能。
對於 AI 聊天,此技能是影片生成的單一入口點。如果用戶說 "做一個口播視頻"、"生成一個視頻"、"產品宣傳片"、"廣告片"、"數字人視頻" 或任何類似的影片請求,請先調用 video-director。不要從 cosyvoice-ssml 開始;該技能是內部數位人 TTS 的子步驟,不應驅動影片工作流程。
如果因為用戶附上了一張圖片並要求製作宣傳片 / 影片而載入了此技能,請將附圖視為影片工作流程的產品或視覺參考。不要生成一張替代性的產品圖片作為 "分析" 步驟。
預設工作流程
將工作流程視為一個需要通過閘道的狀態機。不要跳過或重新排序狀態:
plan_draft:根據用戶的目標和素材,釐清預期的影片模式,然後撰寫一份簡潔但詳細的影片腳本和分鏡表。storyboard_preview:分鏡表完成後,立即使用Operate(resource="image", operation="generate", input={ ... })生成連環分鏡預覽圖。分鏡圖是對計畫中鏡頭的預覽,不是獨立的產品海報、替代產品渲染圖、封面圖或最終影片關鍵影格。user_review:一起展示腳本、分鏡預覽圖和明確的影片規格。請用戶確認或修改整個計畫。production_prep:確認後,決定這應該是單個<=15s的上游片段、一個長video_sequence請求,還是手動編輯器 / 專案組合。僅當用戶明確要求專案/套件/編輯器工作流程,或任務已綁定到現有套件時,才使用影片專案包。tts_if_needed:如果確認的任務是角色口播 / 口播影片,請完成下面的 TTS 優先工作流程。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 音訊資產:完成的口播腳本。這是唯一應驅動角色口播影片的音訊。
使用此確切順序:
- 先處理腳本和分鏡
- 確認最終的口播腳本。
- 確認分鏡 / 分鏡表。
聲音欄必須包含實際的口播台詞,而不是像 "角色講解" 這樣模糊的標籤。
- 解析角色語音
- 在生成媒體之前讀取所選的角色資產。
- 如果資產有現成的
voiceId/voice_id,將其視為已解析的語音,並停止檢查語音樣本。報告已解析的voiceId,而不是參考音訊的檔案名稱。 - 如果資產有語音樣本但沒有現成的
voiceId,先調用Operate(resource="voice", operation="clone", input={ ... }),等待完成,然後使用返回的voiceId。 - 如果沒有現成的
voiceId也沒有可用的語音樣本,停止並請用戶提供或選擇一個語音。不要默默地回退到通用語音。
- 使用 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 工作僅處於排隊或運行狀態時,不要開始影片生成。
- 使用已批准的完整口播腳本和已解析的
- 使用視覺參考加上生成的音訊來生成影片
- 使用所選的角色圖像作為視覺參考。
- 使用新生成的完整 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.jsonscript.mdassets.jsoneditor.project.json- 導入的參考圖像 / 關鍵影格 / 生成的片段 / 最終輸出
專案包創建後:
- 將用戶簡報和已批准的腳本寫回影片專案資料夾
- 只要可能,將後續的關鍵影格、片段和輸出保存在同一個專案包中
否則,將規劃保留在聊天中,直接調用 video generate,並讓輸出存在於生成的媒體庫中。
硬性規則
- 影片生成鎖定在應用程式配置的官方影片路線。
- 不要選擇任意的影片端點或第三方影片模型。
- 僅使用這些官方模型映射:
text-to-video->wan2.7-t2v-videoreference-guided->wan2.7-r2v-videofirst-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。
分鏡優先規則
每個影片任務在腳本表之後、用戶確認之前,都需要一個連環分鏡預覽圖……