Communitygithub.com

eduardogalbiati/fabrica-videos-corte

自動剪輯口語錄製內容。去除靜音、錯誤、口吃和重複錄製,保留每個句子的最佳版本,並生成剪輯報告。當要求清理、剪掉停頓或去除影片錯誤時使用。

fabrica-videos-corte 是什麼?

這是一個專為「代理影片工廠」設計的 AI 技能,用於自動清理口語錄製的影片。它能去除靜音、錯誤、口吃和重複的鏡頭,只保留每個句子的最佳版本,同時不修改原始檔案。該技能支援透過命令列操作,工作目錄為 `trabalho`。其運作流程包括:將錄製內容轉換為標準格式、轉錄音訊、分析語句以標記可能的錯誤或重複、讓使用者決定哪些部分需要刪除(透過編輯 JSON 剪輯檔案),最後套用剪輯並產生詳細報告。使用者可以匯出乾淨的影片和包含刪除原因的文字報告。支援 `pausaMin`(最小停頓長度)、`folga`(剪輯前後的呼吸空間)等可調參數,以微調結果。已知限制包括 Whisper 時間戳記可能的偏移,以及對超過 150 個片段的拒絕(可透過提高 `pausaMin` 解決)。此技能可與 `fabrica-videos-rapido` 和 `fabrica-videos-reels` 等其他技能搭配使用。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/eduardogalbiati/fabrica-de-video-skills/tree/HEAD/.claude/skills/fabrica-videos-corte

在你喜歡的 AI 中提問

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

說明文件

/fabrica-videos-corte — 自動剪輯

代理影片工廠的技能。清理口語錄製:去除靜音、錯誤、口吃和重複鏡頭,只保留每個句子的最佳版本。原始檔案永遠不會被修改。

你是影片剪輯師。請在專案根目錄使用終端命令。TRABALHO = trabalho 資料夾。

何時使用

  • 客戶發送錄製內容並說「清理」、「剪掉停頓」、「去除錯誤」。
  • 在 fabrica-videos-rapido 和 fabrica-videos-reels 技能內部,在同步動畫之前使用。

運作方式

停頓會自動去除:腳本透過音訊檢測靜音。錯誤或重複鏡頭則由你(閱讀文字的人)決定。客戶將透過報告和聽取結果來確認。

逐步操作

  1. 工作室格式的錄製內容。 如果來自手機:將原始檔案複製到 TRABALHO\originais\,然後執行 npm run converter -- "<original>" <slug>(會生成 TRABALHO\public\gravacao-<slug>.mp4)。也適用於非 4K HDR 的錄製內容:轉換器會將影片旋轉為縱向,裁剪為 1080×1920,並轉為 30 fps。從轉換後的檔案和原始檔案中各提取一個畫面(ffmpeg -ss 20 -i <arquivo> -frames:v 1 ...)並進行比較:旋轉和顏色必須一致。
  2. 轉錄: npm run legendar -- "trabalho\public\gravacao-<slug>.mp4"(背景執行;錄製 2 分鐘約需 1 分鐘)。
  3. 分析: npm run cortar -- analisar "trabalho\public\gravacao-<slug>.mp4" → 產生 cortes\gravacao-<slug>.cortes.json 和 cortes\gravacao-<slug>.falas.md(將錄製內容以表格形式呈現,包含時間、停頓和「似乎在第 N 句重複」的提示)。
  4. 決定要移除的內容。 閱讀整個語句表格,並填寫 .cortes.json 中的 remover 列表:
    • 重複鏡頭:保留最後一個完整的鏡頭(當他出錯時會重新開始);之前的鏡頭移除:{ "falas": [2, 3], "motivo": "errou e recomeçou" };
    • 同一句話完整說了兩次,中間有長時間停頓(在實際錄製中可能是最後的 CTA):他不喜歡第一次所以重複了。保留最後一次,並在給他的訊息中說明哪一次被刪除,以便他可以替換;
    • 開始前的熱身(「來吧」、「好」、「聊天」)以及 CTA 之後的所有內容:移除;
    • 一句話中間的口吃或單個詞:npm run cortar -- palavras cortes\gravacao-<slug>.cortes.json <nº> 會逐字顯示時間;使用 { "de": 12.30, "ate": 13.10, "motivo": "gaguejou" };
    • 腳本外的評論(「不,等等」、「再來」、「停」):移除;
    • 有意的停頓(數字前的懸念):放入 manter,例如:{ "de": 20.1, "ate": 21.4 };
    • 如果存在腳本(roteiros\<slug>.md),進行比較:保留的鏡頭是說出腳本文字的那個,或者如果他改變了台詞,則是最完整的那個。 如果在兩個都說了不同內容的好鏡頭之間猶豫,不要剪:去問他。
  5. 套用: npm run cortar -- aplicar cortes\gravacao-<slug>.cortes.json → 產生 TRABALHO\public\gravacao-<slug>-limpa.mp4 和 cortes\gravacao-<slug>.relatorio.md(移除了什麼、時長、原因以及原本的文字)。
  6. 無需聽取即可確認: 轉錄乾淨的影片(npm run legendar -- "<...-limpa.mp4>"),然後閱讀 npm run falas -- legendas\gravacao-<slug>-limpa.json。三件事要檢查:
    • 文字必須是他想說的,沒有單詞被從中間切斷,也沒有錯誤遺留(在第一次實際處理時,遺留了一個「好。」的熱身內容:缺陷就是這樣出現的);
    • 「之後的停頓」列不能有任何大於約 0.8 秒的內容:乾淨影片中的長停頓是兩個剪輯之間遺留的部分;
    • 開頭和結尾:從乾淨影片中提取一張畫面拼貼(ffmpeg -i <limpa> -vf "fps=1/2.5,scale=180:-1,tile=7x2" -frames:v 1 <folha.jpg>),並檢查他是否在畫面內且從第一幀到最後一幀都在說話。 如果有遺留,調整 remover 並重新套用;如果缺陷來自腳本,修正 cortar.mjs 並在此處記錄。
  7. 展示給他: 發送乾淨的影片以及報告摘要:剪輯前後的時長、剪輯次數、你決定移除的語句(非停頓)、以及乾淨影片中每個接合點的位置(從 .cortes.json 的 resultado.fica 中加總保留片段的時長)。聽覺確認由他負責。

調整(在 .cortes.json 的 config 中修改,然後重新套用)

欄位預設值功能
pausaMin0.5 秒從此大小的靜音開始被剪掉。數值越大,聽起來越自然,剪輯越少。
folga0.12 秒每次剪輯前後保留的呼吸空間。如果語句聽起來太連貫,調高到 0.18。
folgaFinal0.35 秒影片結尾保留的靜音。
ruidoDb自動判定為靜音的門檻。房間嘈雜時,在命令結尾用更高的數值重新執行 analisar(例如:-32)。

腳本如何進行剪輯(根據第一次實際錄製進行審查)

  • 停頓: 根據音訊中測量的靜音。同一停頓中被最多 0.1 秒的爆音分開的部分會合併為一個停頓。
  • 開頭和結尾: 第一個單詞之前和最後一個單詞之後的所有內容(他調整姿態、走出畫面)會被移除,開頭保留 0.12 秒,結尾保留 folgaFinal。
  • 標記在 remover 中的語句: 剪輯從保留的最後一個單詞之後的第一個停頓開始,到保留的下一個單詞之前的最後一個停頓結束。主導的是音訊的靜音,而不是 Whisper 的時間。

已知限制

  • Whisper 的時間戳記:在實際錄製中,長時間停頓後的語句開頭可能延遲約 0.4 秒,而單詞結尾可能有 ±0.25 秒的誤差。剪掉整個語句會接觸到靜音,不受此影響。但是,在句子中間(口吃,兩側都沒有靜音)的剪輯僅依賴 Whisper 的時間:需更仔細檢查這些點,並請他聆聽。這種情況在實際錄製中尚未出現。
  • 小於 pausaMin 的停頓會保留(這是句子之間自然的呼吸)。
  • 畫面中的生硬剪輯:在分割畫面中這是正常的。如果跳躍令人困擾,直接告訴他,而不是發明轉場。
  • 單次處理超過 150 個片段時,腳本會拒絕:請提高 pausaMin。

Individual skills in this repo

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

相關技能