Communitygithub.com

motion-choreographer

將已鎖定的靜止圖像與 12 區塊場景藍圖,轉換為針對 Veo/Kling/Sora 等影片生成器調校的動態提示,涵蓋鏡頭、主體動作、物理約束與音訊同步。

motion-choreographer 是什麼?

這個技能負責將已批准的靜止圖像和結構化的 12 區塊場景藍圖,轉換為專為目標影片生成器(如 Veo、Kling、Sora)調校的動態提示。它會根據生成器的能力(透過 `adapter-contract.md` 讀取)來決定輸出內容,包括鏡頭運動、主體與環境動作、物理約束,以及當生成器支援原生音訊時的同步音訊指示。整個過程完全不呼叫任何網路 API,僅處理純文字與 JSON。它確保鏡頭運動的類型(如推、拉、平移)對應到特定生成器的語法(例如 Kling 使用強度值 0-1,Sora 使用自然語言),並在生成器能力不足時(例如無法處理音訊對話)輸出降級警告。最終產出三個檔案:`motion-prompt.json`(供生成器使用)、`motion-prompt.txt`(供操作員檢視的文字區塊)、以及 `adapter-notes.md`(記錄選擇的生成器與調校理由)。此技能嚴格遵循上游藍圖的約束,例如不修改角色身份標記、尊重透明度與揭露政策,並在發現政策漏洞時拒絕輸出。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/event4u-app/agent-config/tree/HEAD/dist/agent-src/skills/motion-choreographer

在你喜歡的 AI 中提問

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

說明文件

motion-choreographer 是做什麼的?

將已批准的靜止圖像 + 12 區塊場景藍圖轉換為 針對特定影片生成器調校的動態提示,供目標影片適配器使用。 涵蓋鏡頭編排、主要主體動作、次要環境動作、物理約束, 以及當適配器宣告 audio: native 時,加入同步的音訊指示區塊。 從 adapter-contract.md 讀取適配器能力; 絕不呼叫網路 API。

使用時機

  • 圖像已鎖定(操作員已透過 operator-pick.sh 選定一個候選),下一步是為影片適配器產生動態 + 音訊方向。
  • 藍圖存在於 scenes/<id>/blueprint.json,但動態提示尚未輸出。
  • 更換影片生成器(Veo → Kling, Sora → Higgsfield)時,需要針對新適配器的能力描述檔重新調校同一場景。

請勿在以下情況使用:

  • 藍圖仍僅為文字稿時——請先執行 scene-expander → parse-blueprint.sh。
  • 尚未鎖定靜止圖像時——必須先完成操作員選擇檢查點。
  • 輸出為靜態圖形時——請使用 canvas-design。

步驟

步驟 0:檢查

  1. 讀取 scenes/<id>/blueprint.json——若檔案缺失則報錯終止。
  2. 讀取 scenes/<id>/selection.json——若檔案缺失則報錯終止;需要鎖定的圖像路徑作為動態錨點。
  3. 透過 scripts/ai-video/adapters/<id>.sh capability 讀取目標適配器的能力。快取 audio=* 以供步驟 3 使用。
  4. 若 character.json 鎖定存在,則逐字載入——身份標記是不可變更的。
  5. 是否要求連續拍攝或連接器?先讀取模型的 start_frame / end_frame—— scripts/ai-video/adapters/<id>.sh capability --model <m>。null 表示未知,絕非 true。無法鎖定影格的模型會被以一行原因拒絕,絕不在此處替換 (adapter-contract.md#end_image)。

步驟 1:鏡頭編排

輸出一個 CAMERA MOTION 區塊,包含移動類型、距離、以秒為單位的速度,以及開始與結束的取景。

  • 移動類型:鎖定靜止、平移、傾斜、推軌前進、推軌後退、橫移、升降、推鏡、拉鏡、手持、雲台滑動、吊臂、甩鏡。
  • 以每拍秒數表示速度(0.4s 推入,暫停 1.6s,0.4s 拉回)。
  • 命名開始與結束的取景(MS → CU, WS → MS)。

藍圖意圖類別解碼——藍圖 CAMERA 區塊命名六種生成器無關的意圖類別之一;在編碼之前先對應到上述移動類型:

意圖類別移動類型對應
靜態保持鎖定靜止
推入推鏡 / 推軌前進
拉回拉鏡 / 推軌後退
橫向跟隨橫移 / 平移
手持晃動手持 / 雲台滑動
環繞吊臂 / 弧形(透過橫移+平移)

適配器特殊處理(針對對應移動類型的各生成器編碼)。這些未標註日期且未經生成器文件驗證——請先檢查模型能力條目(verified, recheck_by)再信任:

  • Veo——接受命名移動;偏好 ≤ 8 秒片段。
  • Kling——動態強度 0–1 標記;將我們的速度對應到該值。
  • Sora——自然語言描述移動 + 持續時間;無標記。
  • Higgsfield——預設驅動;選擇與移動匹配的預設;在動態提示中記錄預設 ID。
  • 鏡頭處理——藍圖中的毫米數 + 光圈值轉換為該生成器最接近的鏡頭 / 視角慣用語;切勿將原始毫米數傳遞給不具備鏡頭語法的生成器。
  • 持續時間處理——藍圖值可自由設定;在此處限制在生成器上限內,並在 review.md 中記錄限制(未記錄的限制是漂移錯誤)。

步驟 2:主要 + 次要動作

兩個區塊:

  1. PRIMARY MOTION——主體的行為,以拍數計量,附帶物理錨點(質量、接觸點、動量)。重複使用藍圖中的 ACTION;根據生成器偏好的動詞密度進行精煉。
  2. SECONDARY MOTION——環境中的動態(頭髮、布料、樹葉、水、灰塵、粒子、呼吸)。每行一個圖層。
  3. TIMED SEGMENTS(可選,當片段包含多個節拍時)——0–3 秒:…, 3–7 秒:…,覆蓋整個持續時間且無空隙;每個片段說明變化的內容,絕非情緒。

步驟 3:音訊方向(條件性)

若適配器能力為 audio: native 且藍圖中的 audio.enable_native_audio 為 true:

輸出一個 AUDIO DIRECTION 區塊,包含:

  • DIALOGUE TIMING——每條對話條目的 說話者 @ 0.4s: "台詞"。提示本身為英文;每句口說台詞保留其原始語言與文字,並加上標籤([de] "…")。絕不翻譯使用者寫的台詞。
  • AMBIENT LAYERS——從藍圖複製;每行一個圖層。
  • SYNC CUES——哪個動作拍對應哪個音訊提示(腳步聲 @ 1.2s, 關門聲 @ 2.1s)。

若適配器能力為 audio: none:

  • 輸出一個 # AUDIO: ffmpeg-mux 備援 註解,包含藍圖中排隊等候拼貼時混音的音訊路徑。
  • 在動態提示 JSON 中設定 enable_native_audio: false。
  • 藍圖包含對話 → 混音備援無法朗讀文字台詞。在 motion-prompt.txt 及 adapter-notes.md 中輸出強制的 AUDIO DOWNGRADE 警告區塊,列出所有無法呈現的對話台詞。此決策是否可接受由協調器閘門決定(adapter-contract § 音訊所有權)——本技能僅負責轉譯,不進行驗證,且絕不靜默地移除對話。

步驟 4:物理約束

輸出 PHYSICS——模型必須遵守的簡短清單:重力方向、接觸摩擦力、流體行為、頭髮 / 布料慣性、鏡頭視差。每行一個約束。

然後是 NEGATIVE LOCKS——必須避免的事項,每行一個:身份飄移、藍圖未要求的可讀文字、多餘的肢體或手指、鏡頭清單中不存在的切換、非使用者的標誌。僅鎖定藍圖提供理由的項目。

步驟 5:輸出動態提示 JSON

將 scenes/<id>/motion-prompt.json 寫入符合 adapter-contract 標準輸入格式的內容。協調器會將此內容輸送到影片適配器的 submit 子命令。

步驟 6:驗證

  1. JSON 可解析(jq .)。
  2. requires.audio_native 與所選適配器的能力一致。
  3. 動態提示中的持續時間與藍圖持續時間完全一致(±0)。
  4. 身份標記(若 character.json 存在)為逐字內容。

輸出格式

  1. scenes/<id>/motion-prompt.json——adapter-contract 標準輸入。
  2. scenes/<id>/motion-prompt.txt——標記的文字區塊(CAMERA MOTION · PRIMARY MOTION · SECONDARY MOTION · AUDIO DIRECTION · PHYSICS),供操作員審閱。
  3. scenes/<id>/adapter-notes.md——使用哪個適配器、哪個能力、哪個預設 / 模型,附帶理由。

陷阱

  • 模型傾向於「改進」藍圖中的 SUBJECT 區塊——身份標記是不可變更的;拒絕此誘惑。
  • 在返回 audio: none 的適配器上選擇 audio: native 會產生無聲影片——務必先讀取能力,切勿從適配器名稱猜測。
  • Higgsfield 預設 ID 必須記錄;否則重新執行時會漂移到模型下次呼叫時選擇的任何預設。
  • Sora 持續時間 > 8 秒通常會品質下降——限制在適配器表格限制內;將限制情況呈現給操作員。

禁止事項

  • 請勿為此回合未查詢能力的適配器輸出動態提示。
  • 請勿跳過圖像鎖定檢查——沒有錨定圖像的動態方向每次呼叫都會發散。
  • 請勿改寫 character.json 中的身份標記。
  • 請勿呼叫任何網路 API——本技能僅處理針對生成器調校的文字。

政策

路徑、執行模型及完整集合:媒體政策前言。

動態提示繼承上游藍圖的所有約束。在輸出針對生成器調校的文字之前:

  • 揭露——每個分發的片段都帶有不可移除的 AI 生成揭露;拒絕可能抑制它的適配器標誌。
  • 透明度——保留生成器來源資訊(C2PA / SynthID);拒絕其效果為剝奪來源資訊的重新編碼標誌。
  • 聲音複製——當動態提示要求以命名語音進行 audio: native 旁白時。
  • 品牌冒用——當動態提示複製知名品牌的標題 / 吉祥物 / 招牌轉場時。

拒絕並呈現;動態提示不能洗白上游技能應已捕捉到的政策漏洞。

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

相關技能