Communitygithub.com

FunkePublishing/skill-promo-video

從原始影片片段組裝短版宣傳影片(直式/正方形/橫式)— 代理技能。

skill-promo-video 是什麼?

此技能可讓 AI 代理從一組原始影片片段(支援直式、橫式或正方形)組裝短版宣傳影片。它能處理片段選擇、修剪、速度調整,並可選地透過 Suno AI 生成背景音樂,以及使用 Blender 渲染的片頭/片尾。此技能設計為與代理無關,可在任何實現 Agent Skills 標準的執行環境中運作,包含 Claude、Claude Code、OpenAI Codex、Gemini CLI、Cursor、GitHub Copilot 等,確保了可移植性與一致性。其主要流程為對話式,引導使用者指定輸出格式、來源目錄、目標長度,以及音樂和片頭/片尾偏好。進階功能包括可選的「導演模式」,該模式會啟動一系列代理角色來引導創作流程,以及可選的「Blender MCP」整合,用於生成高品質的 3D 片頭/片尾。此技能會自動偵測環境變數 (如 `SUNO_API_KEY`) 並相應調整其行為,若缺少必要依賴項也會提供清晰的錯誤訊息。

相容平台✓Claude Code✓Codex CLI✓Cursor✓Gemini CLI✓OpenCode
npx skills add FunkePublishing/skill-promo-video

在你喜歡的 AI 中提問

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

說明文件

promo-video

從原始影片片段組裝短版宣傳影片。支援直式、正方形或橫式。可選用 Blender 渲染的片頭/片尾,以及可選的 AI 生成音樂。

此技能與主機代理無關:它在每個實作 Agent Skills 標準 (https://agentskills.io) 的執行環境中必須運作一致 —— Claude、Claude Code、OpenAI Codex、Gemini CLI、Cursor、GitHub Copilot、Cline、OpenCode、OpenHands、Goose、Kiro、Junie 及其他。切勿依賴主機專屬工具(除非明確可用,否則不使用 AskUserQuestion、斜線命令或 MCP)。所有使用者互動均以一般聊天訊息進行。

使用時機

  • 「將這些片段剪接成一段 30 秒的短片。」
  • 「幫我做一支直式的黑客松宣傳影片。」
  • 「我有一個手機影片的資料夾 —— 製作一段 1080x1920 的社群影片加上音樂。」
  • 「製作一支有 Logo 片頭 + 愛心片尾 + 背景音樂的宣傳片。」
  • 使用者提及一個包含 .mov/.mp4 檔案的目錄,並期望得到一個完整的輸出檔案。

前置需求

  • 在 PATH 環境變數中可用的 ffmpeg,需編譯支援 libx264、aac 和 prores_ks(最後一個僅在需要 Alpha 色版片頭/片尾 MOV 時需要)。
  • Python 3.9+。
  • 一次性安裝 Python 依賴:在技能目錄內執行 pip install -r requirements.txt。
  • 可選:在專案根目錄放置包含 SUNO_API_KEY 的 .env 檔案,以啟用音樂生成功能。技能會自動偵測是否設定此金鑰,並僅在已設定時提供音樂生成選項。
  • 可選:在主機代理中設定 Blender MCP,以製作片頭/片尾渲染。請參閱 references/blender_mcp.md。

預設流程(對話式)

步驟 0 — 偵測片段自上次執行後是否變更

在詢問任何問題之前,先檢查使用者是否從先前的對話繼續。如果 gallery/.clips_snapshot.json 存在(或者使用者指向之前用過的片段資料夾),則執行:

python scripts/clip_diff.py <clips_dir>
  • 退出碼 0 — 片段資料夾與最後的快照相符。繼續。
  • 退出碼 1 — 有變動。報告會列出新增/移除/修改的片段。向使用者顯示,然後提議重新執行 scripts/gallery.py,以便圖庫更新片段。仍存在的片段的現有選取內容會保留不變。
  • 退出碼 2 — 尚無快照。正常首次執行,繼續。

在繼續現有專案時,請勿跳過此步驟 —— 在未察覺的情況下對著過期圖庫/selection.json 工作,正是經典的「我的新片段跑去哪了?」錯誤來源。

問題

開始時,依序詢問使用者以下問題。接受自然語言回答;除非主機支援,否則不要使用多重選項 UI。對於每個問題,也接受「你決定」並套用合理的預設值。

  1. 目標格式。 1080x1920 直式(預設)、1920x1080 橫式、或 1080x1080 正方形。允許自訂尺寸。
  2. 片段來源。 包含原始片段目錄的絕對或相對路徑。支援 .mov、.mp4、.m4v 格式。
  3. 目標長度(秒)。(典型值:20–45 秒)
  4. 音樂。 選項之一:(a) 現有音訊檔案、(b) 透過 Suno 生成(僅在設定 SUNO_API_KEY 時提供)、(c) 無音樂。
  5. 片頭。 選項之一:無、靜態圖片(路徑)、Blender MCP 生成。
  6. 片尾。 與片頭相同的選項。
  7. 導演模式。 是或否。如果是,請遵循 references/director_mode.md,而非繼續線性進行。

然後處理片段選擇。提供兩種途徑:

A) 視覺圖庫(當片段超過 10 個或使用者希望在選擇提示之前看到影格時,建議使用)。 執行 scripts/gallery.py <clips_dir> --resolution WxH --fps 30 --target-length N —— 它會生成包含縮圖、IN/OUT 滑桿、速度滑桿和範圍預覽的 gallery/gallery.html。告知使用者在瀏覽器中開啟,挑選片段、設定提示,然後點擊「匯出 selection.json」。下載的檔案即可供 build.py 使用。

B) 內嵌對話(適用於少量片段或無法使用瀏覽器時)。 自行逐步處理每個片段:

  • cue_in 和 cue_out(秒,修剪範圍)
  • speed 倍率(1.0 = 原始速度)
  • fixed: true 如果時間/速度是人工挑選的,false 則為自由填充項目(預設:從中間取 0.6 秒,速度 1.0)

提供「直接使用預設值」選項 —— 按字母順序選取每個片段、使用自由預設值、填滿至目標長度。

不論採用何種方式,結果都是符合 templates/selection.schema.json 的 selection.json。請在繼續前進行驗證。

建置

一旦 selection.json 驗證通過,執行:

python <skill>/scripts/build.py <selection.json> --out output/<name>.mp4

build.py 會在建置目錄(相對於目前工作目錄)下寫入中間產物:build/normalized/、build/trimmed/、build/montage.mp4、build/composed.mp4。刪除 build/ 目錄可強制完整重新渲染。

scripts/ 下的每個子模組也可獨立執行 —— 適用於迭代單一步驟而無需重建整個管線。每個模組都支援 --help 參數。

導演模式(選用)

選擇加入。請參閱 references/director_mode.md 的角色提示。此技能會產生四個依序執行的角色 —— 敘述者 → 剪輯師 → 作曲家 → 監督者 —— 它們共享 selection.json 作為狀態。每個角色讀取目前的 JSON 並將其更新寫回。當使用者要求「更有引導性的流程」或「像製作人一樣帶領我」時,請使用此模式。

音樂生成(選用)

如果使用者選擇「透過 Suno 生成」,請將音樂步驟委派給 references/song_builder_agent.md 中定義的 Song-Builder 子代理。該子代理:

  1. 詢問使用者風格、情緒、BPM 範圍、段落結構、是否純音樂,並將影片長度作為持續時間。
  2. 制定 Suno 提示和樣式標籤。
  3. 呼叫 scripts/music.generate_song(spec) —— 如果使用者想比較選項,請提供 takes > 1。
  4. 將選定的錄製修剪並淡入淡出至影片長度。
  5. 將最終的 mp3 路徑寫入 selection.json 作為 audio。

如果主機提供子代理機制(例如 Claude Code 的 Agent 工具),請使用它。否則,請在同一執行緒內以內嵌方式扮演該角色。

Blender MCP 整合(選用)

僅提供協助 —— 此技能不包含 Blender 場景。

如果使用者希望使用 Blender 渲染的片頭或片尾,請將任務委派給 references/blender_builder_agent.md 中定義的 Blender-Builder 子代理。它負責整個流程:前置檢查(確認此主機上 Blender + MCP 確實可連線)、設計訪談(視覺方向、顏色、持續時間)、場景建置、迭代預覽、渲染為 ProRes 4444 Alpha MOV,並將 MOV 路徑移交至 selection.json。

如果主機提供子代理機制(例如 Claude Code 的 Agent 工具),請啟動它。否則,請以內嵌方式扮演該角色。當使用者在問卷步驟 5 中為片頭或片尾選擇「Blender MCP 生成」時,主要對話流程應呼叫 Blender-Builder。

設定文件(安裝 Blender、安裝 MCP 伺服器、向主機註冊)位於 references/blender_mcp.md。當使用者需要首次設定堆疊時,Blender-Builder 子代理會參考該文件。

錯誤復原

  • 如果某個片段正規化失敗(編碼器/解析度邊界案例),build.py 會以非零退出碼和明確的標準錯誤訊息退出,指出問題檔案。詢問使用者是要跳過該片段還是進行調查。
  • 如果 Suno 回傳 4xx 狀態碼或逾時,請提供使用者重試、切換至「現有檔案」、或無音樂繼續進行的選項。
  • 絕不悄無聲息地遺失片段。除非傳遞 --force 參數,否則絕不覆蓋現有輸出檔案而不經確認。

此技能的風格注意事項

  • 絕不假設主機專屬工具。 所有對話均為純文字聊天。
  • 展示你的工作。 修剪時,在建置前告知使用者你最終確定的提示點。
  • 大聲失敗。 如果缺少 ffmpeg,請明確指出並顯示適用於該使用者平台的安裝指令。

相關技能