Communitygithub.com

Chimarrao/claude-skill-video-editor

建立一個 Motion Canvas 專案,並配上與旁白同步的專業覆疊動畫(影片類型:列表/網誌/無B-roll的論點列表;含B-roll的列表;含B-roll的網誌 + CapCut 專案),背景透明、1920x1080 畫面、輸出含 Alpha 的 4K .mov。當使用者要求根據音訊為 B-roll (CapCut) 製作解說動畫/覆疊時使用。

claude-skill-video-editor 是什麼?

此技能可自動化產生與 .wav 旁白同步的專業 Motion Canvas 動畫覆疊。它支援多種影片類型:無 B-roll 的列表式、網誌、論點列表,以及有 B-roll 的列表與網誌(最終產出 CapCut 專案)。技能會執行語音轉文字(含時間戳記)、覆蓋約 90% 的音訊、在圖形與樹狀結構中整合線條圖示、標誌與照片。它也可產生含透明背景的 4K ProRes 4444 .mov 格式影片。此技能內建針對終端機風格的選單模板、基於使用者先前專案回饋的持續改進學習機制,並支援自動化版本控制發布。技能可與 Claude Code 等平台搭配使用,透過引導式提問來決定影片風格、覆蓋範圍與 B-roll 分析,實現端到端的工作流程。

相容平台✓Claude Code~Codex CLI✓Cursor
npx skills add Chimarrao/claude-skill-video-editor

在你喜歡的 AI 中提問

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

說明文件

與旁白同步的 Motion Canvas 動畫

結果:animacao/ 資料夾內含位於 http://localhost:9000 的 Motion Canvas 專案,以及一個帶透明度的 ProRes 4444 4K .mov 檔案。已在影片「Windows Recall」上驗證(長度 8:43,67 個場景 + 12 個空白,90% 覆蓋率)。

姿態

從頭到尾執行,不做任何詢問;僅在最後通知(場景數量、文字百分比、需要檢查的圖片/照片、轉錄可能錯誤的名稱、如何在 CapCut 中匯入)。僅在使用者未要求渲染時才要求最終渲染。

技能自動發布(使用者規則,2026-10-14)— 務必 COMMIT + PUSH

此技能是一個 git 儲存庫(origin = github.com/Chimarrao/claude-skill-video-editor,分支 master)。對技能任何檔案(SKILL.md、腳本、模板、範例、參考資料、資產、資料庫)所做的每次修改,都必須在修改完成後立即自動提交並推送,無需確認:scripts/publicar.sh "簡短說明變更內容"(重新產生不含轉錄的 banco/assets.publico.db,執行 git add -A、commit 和 push)。請勿提交 banco/assets.db 或 20 分鐘的影片(已在 .gitignore 中)。如果推送失敗(網路/憑證問題),通知使用者並保留本機 commit。在最終摘要中提及技能已發布。

終端機風格選單(變體 V07 "Terminal ls",使用者於 2026-10-14 選擇)

plano_dados.py:MENU_ESTILO = "terminal",TITULO_MENU = "piores-sos"(變為 ~/piores-sos),MENU_DETALHES = ["1994 · 已取消", ...](每行右側欄位),MENU_EXTENSOES = False。元件 src/lib/menuTerminal.tsx(與瀏覽器相同的 API);視窗 880 像素,x=−500,標題過長(> 15 個字元)會縮小為字體 84;LOGOS_COM_PLACA = ["logo_microsoft"] 強制為灰色/深色線條標誌使用白色卡片。首次使用:「史上最爛的作業系統」(5 個系統,含 B-roll 的列表)。

  • 來自模擬器/低解析度螢幕(640×480)的 B-roll 會以「覆蓋」裁切方式放大:可作為唯一素材;但優先使用 1080p+。作業系統影片中的遊戲片段(例如 Vista)— 在交付前,必須透過每個片段中間的螢幕截圖檢查所有片段。

從「史上最爛的作業系統」複審中學到的教訓(2026-10-15)— 技能會從每次編輯中學習

以下每一項都來自使用者的修正,並已成為程式碼或測試中的規則:

  1. 標誌製作不良(例如 Windows ME 帶有重疊的「Microsoft」— 來自 SVG 像素化的 artifacts):在使用前,務必在白色背景上檢查每個標誌;使用 PIL 清理/裁剪影像,並將良好版本儲存在 assets/ 和資料庫中。優先使用乾淨的官方標誌;切勿使用帶有重疊文字的標誌。
  2. Secao(開場/結尾卡片)的標誌:所有標誌必須大小相同 — 3 個小方形(卡片 96 像素,圖片 64 像素);寬標誌(例如 Microsoft wordmark)會變形:改用方形圖示(logo_win11_icone)。plano.py 在長寬比不是 ~1:1 時發出警告。
  3. 語音中的列舉必須在動畫中完整顯示(「錯誤、不穩定、效能、市場排斥、歷史影響」= 5 個項目,不是 4 個)。在 transcricao.txt 中閱讀所說的句子並計算項目數;標籤必須忠於實際用詞(使用所說的術語:「不穩定性」)。測試:scripts/testes/testar_rotulos_vs_fala.py(檢查每個標籤在 [t−4, t+12 秒] 範圍內是否與語音匹配;假陽性在改述時是正常的,請閱讀警告)。
  4. 項目卡片的間距/平衡:兩邊邊距相等,區塊之間留有間隙。終端機 840 像素,x=−450;標題 800 像素,x=+440(左右邊距相同,它們之間約 70 像素)。切勿讓任何一邊貼邊/留空;透過螢幕截圖檢查最長和最短的名稱。
  5. B-roll 中的人物:裁剪並跳轉到沒有人的片段(網路攝影機、主持人、觀眾)。測試 scripts/testes/testar_clipes_sem_pessoas.py(在代理檔案上使用 OpenCV 的 Haar 分類器;需要在 venv 中安裝 opencv-python-headless<4.11)。要找到乾淨的片段,請對來源進行掃描(每 5 秒取樣一次,列出沒有臉部的連續片段,長度 ≥ 40 秒)。撲克牌/圖示可能會導致假陽性。
  6. YouTube 詞彙:避免在標籤中使用可能導致去 monetization 或具有攻擊性的詞彙(「死胎」、「死亡」、「自殺」……):改為中性詞(「滯銷」、「無設備」)。適用於卡片、選單詳細資訊、標題和事實。
  7. 渲染:模板 project.meta 中的 resolutionScale 為 2(4K)— 對於 1080p,在渲染前將其調整為 1,並在前 90 秒使用 ffprobe 確認;計劃可能已改寫 meta。
  8. 務必在渲染前對每個片段的中間進行視覺掃描(遊戲畫面、相機拍攝顯示器、新聞報導);腳本無法取代肉眼。

標準回覆格式(使用者要求 — 在狀態更新中務必使用)

當使用者詢問「目前進度如何?/接下來呢?」或在任何長時間專案的更新中,請以此格式回覆(簡短,葡萄牙語,所有任務都附上大概時間):

  1. 標題:任務狀態(大概時間,包含機器當前負載)。
  2. 表格 | # | 任務 | 狀態 | 時間 | 使用 ✅ 已完成(時間「完成」) · 🔄 進行中(實際進度,例如:「7:53 / 14:29(54%)」,以及剩餘時間) · 🟡 部分完成(缺少什麼) · ⏳ 等待中(依賴於什麼)以及每項任務的預計時間。包含直到最終交付的所有步驟(轉錄、對齊、計劃、在 9000 上驗證、使用者調整、渲染、CapCut、所用影片報告)。
  3. 當你看到某件事時: 下一次視覺驗證和完整交付的預測(加上使用者的時間)。
  4. 如果有任何事停滯/緩慢,說明實際原因(例如:機器負載)和選項(例如:切換到更快的模型),不要獨自決定。 在回覆前,真正衡量進度(最後的時間戳記、檔案百分比);從不未經檢查就重複估計。參考估計:large-v3 轉錄 ≈ 音訊長度的 2–4 倍(機器負載時更長);對齊 ≈ 5 分鐘;1080p 渲染 ≈ 影片長度的 1–2 倍;4K ≈ 5 倍;CapCut ≈ 3–5 分鐘。

第一步:詢問使用者 — 除非使用者已回覆或要求「不要問」

  1. 影片類型(定義風格、場景和模板;當新類型出現時,在此處新增):
    • 無 B-roll 的列表(僅透明覆疊;例如:「所有程式語言」):項目依序編號。每次切換項目時,會出現選單(VS Code 的檔案總管,Monokai 主題),其重點欄會從前一個項目滑動到新項目,旁邊是大型卡片 #NN 名稱(+ 副標題 年份·作者)。然後顯示官方標誌、創作者(照片+姓名)、簡要事實、程式碼視窗、統計資料和標誌圖形(使用這些語言的公司/工具)。主題 Monokai;衝擊性標題採用終端機風格;HUD NN/TT 名稱 顯示在右下角。範例:exemplo/plano_dados_linguagens_LISTA_sem_broll.py。
    • 無 B-roll 的網誌(僅透明覆疊;例如:「Windows Recall」):在深色圓盤上的線條圖示圖形、標誌/照片、報導風格的衝擊性標題(ESTILO_TITULO='reportagem'),語氣嚴肅。範例:exemplo/plano_dados_recall_WEBDOC_sem_broll_*.py。
    • 無 B-roll 的論點列表(僅透明覆疊;「對比」;例如:「Windows 7 比 Windows 11 好」):包含少量項目作為論點/論證(4–6 個),而非物件。與無 B-roll 的列表使用相同引擎:瀏覽器選單(TITULO_MENU="ARGUMENTOS",檔案 hardware.md…),卡片 #NN 主題 + 副標題 論點 N · …,左側為「反派」/主題標誌,右側為事實、比較(A 與 B 的表格,勝出者為綠色,例如:需求)、畫面(帶說明的螢幕截圖/照片)、圖形(標誌/圖示的扇形圖)、使用日曆圖示的時間軸和衝擊性 標題。無程式碼視窗。在論點區塊前/後:背景脈絡(Secao + G 場景)和結論/CTA。覆蓋率 92–100%。範例:exemplo/plano_dados_windows7_ARGUMENTOS_sem_broll.py。
    • 含 B-roll 的列表(例如:替代作業系統;使用者提供的支援影片):與無 B-roll 的列表相同的瀏覽器選單/卡片 #NN/HUD/Monokai,但影片和動畫交替出現(項目以影片開始;短動畫 ≤ ~30%,無程式碼,少量文字;參見「影片 ↔ 動畫交替」)。分析 Assets/ 中的影片(位於音訊旁),僅將 B-roll 放置在項目內部,並交付一個新的 CapCut 專案(基礎音軌 = 連續填充;上方是帶有留空的剪輯;覆疊 .mov alpha;旁白)。參見「類型:含 B-roll 的列表」。B-roll:參見「網路影片」(自 2026-10-12 起已授權)。
    • 含 B-roll 的網誌(敘事性,非列表;例如:電子投票機、帶支援影片/圖片的報導):根據腳本混合網誌動畫(圖形/樹狀圖、箭頭、標誌、人物照片、日期、比較、畫面、標題 ≤5%)、B-roll 影片和圖片(使用者放在 Assets/ 中),以及中間的短列表(「8 層…」;使用 ListaCurta 元件)。輸入:.wav + Assets/(只有這些檔案會變成 B-roll/背景圖片;標誌/圖示/人物照片繼續來自資料庫)。交付:覆疊 + 新的 CapCut 專案(填充 → 帶留空的 B-roll → 覆疊 → 旁白)。參見「類型:含 B-roll 的網誌」。
    • (其他類型會出現;如果使用者要求新的類型,與他們一起定義模板並在此處記錄。)
  2. 覆蓋率百分比 附圖表/動畫(無 B-roll 的網誌預設 90%;無 B-roll 的列表通常 100%;大量螢幕 B-roll 的影片 = 40–60%;含 B-roll 的列表:覆疊覆蓋 100%,但在影片片段中較輕;含 B-roll 的網誌:動畫片段約 90%,影片本身在 B-roll 片段中算作已覆蓋)。記錄在 COBERTURA = (min, max) 中。 如果請求已包含所有資訊,則不要詢問;在最終摘要中確認選擇。

類型:無 B-roll 的列表 — 模板(語言影片,Monokai;也是含 B-roll 的列表的基礎)

  • Monokai 主題(src/lib/monokai.ts:背景 #272822,粉紅 #f92672,綠 #a6e22e,藍 #66d9ef,橘 #fd971f,黃 #e6db74,紫 #ae81ff,註解 #75715e;等寬字型)。面板 rgba(39,40,34,.95) 帶 14% 白色邊框。
  • 每個項目中的程式碼範例:VS Code 視窗(janelaCodigo),包含標題列、活動列、檔案分頁、行號、狀態列和由 highlight.js 著色的 tokens → Monokai(scripts/tokenizar.mjs 讀取 codigos_fonte.json {id:{arquivo,linguagem,hl,cor,codigo}} 並產生 src/scenes/codigos.json;COBOL 有自己的 tokenizer)。簡短片段(4–10 行),具有代表性(例如:Rust move/borrow、TypeScript 類型錯誤、COBOL ADD A TO B GIVING C)。
  • 創作者:真实姓名 + 真实照片(圆形裁剪;群组 = 单张照片 + 多个姓名)。照片來源:Wikipedia REST API(/api/rest_v1/page/summary/<title> → originalimage)+ Special:FilePath/<file>?width=700,帶 User-Agent 和 sleep ≥1s(速率限制 429);GitHub/Bluesky 頭像;官方頁面(例如:lua.org/images/team.jpg)。使用 scripts/recorte_rosto.py(OpenCV Haar;安裝 opencv-python-headless<4.11 — 5.x 沒有 CascadeClassifier)進行自動臉部裁剪。在聯絡表中檢查所有照片(搜尋有時會傳回錯誤的人、標誌或植物)。沒有可靠照片 → 使用 Pessoas([(None, nome, papel)]) 顯示剪影;通知使用者。
  • 真實標誌:Simple Icons(cdn.simpleicons.org/<slug>,名稱:cplusplus、dotnet、vuedotjs、nodedotjs…)— Java/C#/Microsoft/Windows/Blizzard 不存在:使用 Wikimedia(C_Sharp_Logo_2023.svg、Duke_(Java_mascot)_waving.svg、Microsoft_logo_(2012).svg)。標誌以白色卡片形式出現(logoCard/placa=True);沒有官方標誌 → 使用單色縮寫(ASM、COBOL、SQL)。
  • 衝擊性標題(Monokai/終端機):Monokai 面板,帶粉紅色條,// tag,全大寫等寬行,前綴 >,逐字輸入 + 游標閃爍,關鍵字 *rosa* / *v:verde* / *a:azul* / *l:laranja* / *y:amarelo* / *r:roxo*。在項目內部使用 Titulo([...], dur, tag, em)(疊加在頂部並自行消失);在項目之間使用 Tx(...)。最大 TITULOS_MAX%(5)以及對頻道有意義的句子(令人難忘的名言:「沒有函數,只有段落」)。風格參考:程式碼編輯器的打字機效果 + 動態排版(每次少量詞語,強烈對比)。
  • 時間軸(Tempo)緊接在介紹之後(項目按時間順序,交替側,均勻間距)和章節(Secao)卡片用於轉場。
  • 基於句子的錨點 F("所說的段落") 而非秒數:在音訊剪輯後仍能存活。vigiar_audio.sh(在背景執行)檢測 ../pronto.wav 何時變更(穩定 45 秒),複製,重新轉錄(MODELO=medium)並執行 plano.py;然後檢查 plano.log 和編輯器。
  • 轉錄:對於技術性葡萄牙語語音,使用 MODELO=medium(small 會弄錯名稱和術語)。僅在標籤中修正轉錄錯誤的名稱(Bacchus→Backus、「Dennis Rich」→Ritchie、「Liddorff」→Lerdorf),而不是在音訊中。

類型:含 B-roll 的列表(影片分析 + CapCut 專案)

輸入: 使用者指定旁白音訊(.wav);同一資料夾中存在 Assets/ 包含影片(有時有圖片)。僅使用這些檔案。 流程(「無 B-roll 的列表」所做的所有事情 — large-v3 轉錄 + 對齊、plano_dados.py、視覺驗證、資產 — 加上以下步驟;僅在使用者要求時才渲染 4K):

  1. 分析(在規劃之前):python scripts/broll/analisar_broll.py — 掃描 Assets/ 中的每個影片檔案(寬度、高度、fps、長度、無聲部分)。評估 B-roll 質量:解析度(首選 1080p+)、內容類型(螢幕錄影、網路攝影機、遊戲、幻燈片)、有無人臉。產生 broll_report.json。
  2. 在腳本中放置 B-roll:在 plano_dados.py 中,對於每個場景,決定 B-roll 持續時間(通常是場景長度的 30–60%,取決於類型)。僅在填充 B-roll 位置時使用影片片段(場景開始/結束或語音暫停時)。始終保留一部分場景僅使用動畫覆疊。
  3. 手動放置 B-roll(在生成 plano.py 後):執行 scripts/broll/posicionar_broll.py — 分析文字轉語音時間戳記和場景持續時間。為每個場景選擇最佳的 B-roll 片段(優先考慮無聲、高解析度、無人臉)。產生 broll_placement.json 檔案。
  4. 產生 CapCut 專案(在 Motion Canvas 渲染後):scripts/capcut/gerar_projeto.py — 從模板建立新的 CapCut 專案:
    • 基礎音軌:音訊旁白(.wav)連續播放。
    • 影片軌道:B-roll 片段放置在有留空的位置(僅在指定時出現)。
    • 覆疊軌道:從 Motion Canvas 渲染的 .mov 檔案(alpha 透明)— 覆蓋整個時間線。
    • 檔案輸出:projeto_capcut/ 包含 CapCut 專案檔案(.draft)。
  5. 交付:最終交付包含 animacao/(Motion Canvas)+ projeto_capcut/(CapCut)+ broll_report.json。

類型:含 B-roll 的網誌(敘事性影片 + CapCut 專案)

與含 B-roll 的列表類似,但腳本是敘事性的(非列表):

  • 動畫:網誌風格(圖形/樹狀圖、箭頭、標誌、照片、比較、畫面、時間軸、標題)。無列表特定元素(無瀏覽器選單、無 #NN 卡片)。
  • B-roll:混合支援影片和圖片(來自 Assets/)。位置:用於說明具體概念,而非填充。
  • CapCut 專案:與含 B-roll 的列表相同(連續旁白 + 帶留空的 B-roll + 覆疊 .mov)。

從 B-roll 分析中學到的教訓(2026-10-20)

  1. B-roll 的解析度很重要:始終偏好 1080p+ 影片用於 B-roll。如果只有 720p 可用,可以接受,但需通知使用者。
  2. 避免 B-roll 中的網路攝影機鏡頭:網路攝影機錄影(640×480,角落有小視窗)通常畫質低且使人分心。跳過或裁剪這些。
  3. 檢查 B-roll 中的品牌/標誌:如果 B-roll 顯示競爭對手的產品或不相關的品牌,裁剪或模糊它們。
  4. 保持 B-roll 簡短:每個 B-roll 片段最多 5–8 秒。更長的片段會讓觀眾感到無聊。必要時拆分。
  5. B-roll 中的人物:如果 B-roll 包含人物(主持人、觀眾),確保他們與內容相關且授權正確。否則,裁剪他們。
  6. 無聲檢測:使用分析中的無聲部分來放置 B-roll,避免與語音重疊。

測試與驗證

  • scripts/testes/testar_rotulos_vs_fala.py:檢查所有標籤是否與時間戳記 t−4 到 t+12 秒範圍內的語音匹配。報告假陽性(改述)。
  • scripts/testes/testar_clipes_sem_pessoas.py:檢查 B-roll 剪輯中是否有人臉。使用 Haar 分類器,對代理檔案進行操作。需要 opencv-python-headless<4.11。
  • 視覺驗證:在 http://localhost:9000 上檢查 Motion Canvas 專案。檢查所有場景、標籤、標誌、佈局。檢查 B-roll 放置。
  • 渲染驗證:在前 90 秒使用 ffprobe 檢查解析度和編解碼器。
  • 使用者的最終審查:在使用者進行最終審查後,如果需要,根據他們的回饋進行調整。

版本控制與發布

  • 所有變更必須自動 commit 和 push,無需確認。
  • 使用 scripts/publicar.sh "變更訊息"。
  • 不要 commit banco/assets.db(已在 .gitignore 中)或大的影片檔案。
  • 如果推送失敗,通知使用者並保留本機 commit。

終端機風格選單(顯示)

選單顯示為帶有選項的終端機視窗,使用等寬字型。

  • TITULO_MENU:顯示為 ~/piores-sos 風格的路徑。
  • MENU_DETALHES:每行右側的詳細資訊(例如:「1994 · 已取消」)。
  • MENU_EXTENSOES:如果為 false,則不顯示副檔名。
  • LOGOS_COM_PLACA:這些標誌具有白色背景卡。

額外提示

  • 對於 Secao 場景中的所有標誌,保持大小一致(卡片 96 像素,圖片 64 像素)。
  • 在動畫中反映語音中的確切文字。
  • 保持佈局平衡(左右對稱,留白)。
  • 在標籤中使用中性詞彙(避免敏感的 YouTube 詞彙)。
  • 渲染前檢查解析度設定。
  • 在渲染前務必對 B-roll 片段進行視覺掃描。

相關技能