影片剪輯
此技能將原始錄影(人物對鏡頭說話)轉換為完成的影片、對應的 SRT 字幕檔與封面,使用一個基於 ffmpeg、Whisper 與 Playwright 的捆綁命令列工具(vedit.py)。它掌控整個剪輯:選擇乾淨的鏡次、乾淨的剪輯、鏡頭變化、圖形與 B-roll 放置、字幕、響度、封面與最終品質保證。它在腳本與剪輯備註上依賴 video-scripting 技能,在顏色、字型與合規字句上依賴 brand/brand-profile.md,在靜態圖片上依賴 image-generation 技能,在獨立檢查上依賴 review-loop 技能,在發布排程上依賴 scheduling 技能。這裡不會進行發布或排程。
權威順序:brand-profile.md 在品牌常數與合規用語上優先;此技能掌控方法。
開始之前
- 找到行銷工作空間(預設
marketing/)。如果沒有,用一句話說明並提供brand-setup技能;工具仍然可以使用中性外觀。 - 找到該內容的資料夾
content/<yyyy-mm-dd>-<slug>/。它應該包含script.txt(每行一句口語;[括號中的備註]與[CHAPTER N • Title]標記永遠不會被唸出),以及理想中的edit-notes.txt(HOOK ON SCREEN:、COVER:、OUTCOME:行)與sources.txt(螢幕上唯一允許的數字)。如果拍攝時沒有腳本,請先轉錄並將清理後的轉錄稿視為腳本。 - 閱讀品牌設定檔中的
## Visual identity、## Compliance、## Boundaries與## CTA & contact,以及brand/voice-learnings.md中關於圖形與封面的用詞與措辭。 - 確認工具已就緒:
python3 <skill>/vedit.py doctor。如果有任何缺失,執行一次bash <skill>/setup.sh(ffmpeg、Node、Python venv、Whisper、Playwright、字型)。Whisper 的 large 模型約 3 GB,在筆電 CPU 上的轉錄速度約為片段長度的 1 到 2 倍,因此請將長時間的步驟在背景執行。
標準
- 每行一次乾淨閱讀。 完成的影片中每行腳本只出現一次:沒有重新開始、沒有「那個、那個」、沒有從廢棄鏡次而來的不完整句子、沒有被截斷的字尾。這是一個障礙,不是修飾。獨立的自然「嗯」可以保留(人們應該聽起來像自己),但絕對不能在開場白中,也不能在一行中出現兩次。
- 遵循口語表達,而非書面腳本。 人們在說話時會改進台詞。現場重述會在鏡次搜尋器中顯示為缺失或低覆蓋率的行;這不是失誤。保留他們的版本,只剪除真正的結巴與重新開始,並修正任何根據腳本撰寫的圖形或鉤卡,使之與實際說出的內容相符。
- 保留能帶來業務的節奏。 如果腳本有早期的「我是誰」台詞或結尾的行動呼籲,請保留在原地。
- 永遠不要只有單一固定鏡頭。 在每次剪輯時交替使用廣角與特寫,在長台詞內部重新構圖,切到 B-roll,用動態圖形來敘述故事。講話者是主幹,不是整支影片。
- 字幕來自完成的音訊,並與腳本比對,確保與聽到的內容完全一致。短片上燒錄;長片僅提供 SRT。
- 響度 -14 LUFS,真實峰值 -1.5 dB,確保在各個平台上都適中。
- 使用真實影格作為封面,標題位於網格安全正方形內,提供一或兩種變體。
- 品質檢查閘通過後才交付任何內容。 它會重新轉錄渲染結果,獨立聽取每個剪輯點,並檢查每個剪輯點是否落在安靜處。
deliver在沒有新的 PASS 狀態時會拒絕。 - 誠實面對耳朵的侷限。 Claude 無法聽見。品質檢查閘檢查的是文字與能量,而非語氣、字詞下的咳嗽或不良的環境音銜接。每次交接時都要這麼說。
方法
每個指令都是 python3 <skill>/vedit.py <command> <slug>。在手動編輯 project.json 之前,請先閱讀 references/project-config.md。
- 先收集所有東西。 列出批次中的所有片段。透過聲音配對第二台攝影機(
scripts/sync_cams.py;真實匹配得分約 0.4 到 0.55,非匹配約 0.03),並透過動作與時間戳記配對靜音攝影機如無人機(scripts/sync_cams_visual.py)。為每張照片與短片段製作接觸表,記錄哪些可用作 B-roll,並立即詢問對方提到的任何但不在資料夾中的攝影機。詳情請開啟references/multicam-and-long-form.md。 - 初始化。
vedit.py init <slug> --raw <cameraA clip> --pack <content folder> [--long] [--cam B=<clip>]。它會複製腳本、讀取剪輯備註,並將品牌設定檔的色盤與字型映射到project.json中。然後在vocab中填入腳本中的所有專有名詞,包括講者自己的名字。 - 預處理(慢速,背景執行):
vedit.py prep <slug>。以攝影機原始幀率生成直立主片、16 kHz 音訊、同步其他攝影機,以及兩個轉錄稿(large-v3 逐字版 與 medium.en)。它會在遇到 HDR 素材、形狀錯誤的素材、以及來自藍牙麥克風的電話品質音訊時停止;references/audio-and-sync.md有救援方法。 - 鏡次。
vedit.py takes <slug>像提詞機一樣將語音對齊到腳本:向後跳代表重新開始,因此每一行每次嘗試都變成一個有評分的鏡次。第二次聆聽會獨立重聽每個鏡次,以找出填充詞、重複與雙重閱讀。閱讀picker/takes_report.txt。在信任之前先驗證:開啟references/whisper-pitfalls.md,因為 Whisper 會丟棄重複的虛假開始、發明結尾詞並分割不熟悉的術語。建議的重新開始修剪應予保留,除非能量圖顯示沒有第二次爆發的語音。 - 挑選。 由人在瀏覽器中挑選(背景執行
vedit.py picker <slug>,然後開啟http://localhost:8765),或者,如果他們要求 Claude 挑選,請自行撰寫picker/picks.json,並在每次偏離機器挑選時加上note。告訴他們哪些行是紅色或琥珀色以及原因。優先選擇與相鄰行來自同一錄影段的鏡次:它們之間沒有剪輯感。永遠不要直接交付機器挑選的結果。 - 設計編排(設計工作,先閱讀
references/style-notes.md)。根據腳本、sources.txt與素材內容:從edit_notes.hook_on_screen生成第 0 幀的鉤卡(3 到 5 個詞,一個承諾而非答案);graphics.json中的資訊卡用於需要它們的節奏點,只使用sources.txt中的數字;cues錨定到台詞或口語詞,永遠不要用固定時間;有動機的 B-roll 切離畫面(在它們說明的詞上,或是在一個眼神或手勢之後);framing.face_x/eye_y在一幀上測量;exit_tail用於走出的結尾。使用vedit.py mg-preview <slug>預覽圖形靜態版本。 - 建構。
vedit.py build <slug> plan是即時的並會印出剪輯摘要;build cues列出任何無法放置的提示(修正它,永遠不要忽略)。在build cut加上scripts/cut_check.py上迭代,直到乾淨為止,然後製作封面(步驟 9)以便海報幀編碼進去,接著build all。建構應用的規則在references/edit-rules.md中。 - 品質檢查閘。
vedit.py gate <slug>。它會在以下情況失敗:一行讀了兩次、結巴或放棄的開始被留下、有語音能量但無文字(隱藏的重新閱讀)、跨剪輯點有重複或跳過(由兩種模型獨立聽取)、廢棄鏡次的殘留詞語在剪輯點上、剪輯點落在聲音上,以及(多機拍攝,如果存在gaze.json)選錯攝影機。修正原因,重新建構,重新過閘。然後進行人類代理檢查:觀看渲染結果的接觸表,閱讀每條字幕(vedit.py captions <slug>),並為你變更的每一行記錄原本的內容與保留的內容。 - 封面。 使用
vedit.py frames <slug> --every 5製作接觸表;選擇一個有眼神接觸、溫暖表情(非說話中)、清晰對焦以及一個能說明故事的物件的影格。設定cover.frame與一或兩個variants(2 到 4 個詞,大字型,一個強調詞,樸素且真實),然後執行vedit.py cover <slug>。它會檢查每個文字框是否位於網格安全正方形內以及人臉附近,並寫出grid_tiles.jpg以顯示個人檔案網格會顯示的內容。 - 審查。 將渲染結果的接觸表、封面、SRT 與剪輯清單交給
review-loop技能。螢幕上的數字需與sources.txt比對,不能只信任。 - 交付與發布。
vedit.py deliver <slug>將影片、SRT、封面、剪輯清單(每行:鏡次、來源範圍、修剪、每次變更及其原因)、QA 報告,以及長片的youtube-chapters.txt寫入content/<date>-<slug>/video/。vedit.py release <slug> --to <folder>將影片、SRT 與 JPG 縮圖複製到同一個檔案名稱下,這是排程工具與 YouTube 所期望的格式。
出貨前的檢查
交接給人員時務必包含以下內容:
- 品質檢查閘 PASS,且為最新(新於渲染結果)。
- 對最終渲染結果測量的唇形同步:在兩到三個臉部對鏡頭的段落上執行
scripts/lipsync.py build/final.mp4 <t0> <t1>,每個段落誤差在 ±40 ms 內。 - 字幕檢查閱讀(
vedit.py captions <slug>,以vN-caption-check.txt交付):FIXes 看起來合理,且每個 CHECK 都被標記為一行供人員聆聽。 - 執行時間與響度。
- 對其挑選所做的每次變更及其原因,以及值得聆聽的台詞。
- 封面 A 與 B,以及網格預覽。
- 「尚未發布或排程任何內容。」
- 「我無法聽見:請在發布前聆聽。」
自訂調整
- 沒有腳本? 先進行轉錄(
prep會生成兩種轉錄稿),將轉錄稿清理成每行一句,存為script.txt,然後執行takes。 - 不同外觀: 所有視覺元素都讀取
project.json中的brand(顏色、字型)與cover.wordmark(可選的小名稱標籤)。在那裡修改,永遠不要在腳本中修改。 - 不同拼寫:
captions.locale設定為en-GB(預設)或en-US。 - 較慢的機器: 在
project.json中設定"whisper": {"large": "small.en", "medium": "base.en"}以犧牲準確度換取速度;品質檢查閘仍然會執行。 - 受監管行業: 將
## Compliance中要求的螢幕用語放入圖形或結尾卡,並確保螢幕上的每個數字都來自sources.txt。 - 新的圖形範本: 將它們加入
scripts/mg/kit.html並在references/project-config.md中記錄。 - 學習: 當人員回報品質檢查閘未偵測到的跳躍或重複時,請在修正影片前記錄該案例,並將你學到的關於其剪輯偏好的資訊加入
brand/performance-learnings.md。SRT 是從他們自己的聲音轉錄的,因此voice-loop技能可以從中學習。
已知限制
- 鏡次搜尋器可能會遺漏大幅改變措辭的重新開始;品質檢查閘的重新閱讀規則是後備防線。在進行任何
nin或修剪變更後,請閱讀build/edl.json並手動檢查你觸及的每個接縫。 - 殘留詞語檢查是透過文字比對保留鏡次的邊緣詞語,因此廢棄鏡次中聽起來像保留鏡次第一個詞的詞語,可能會被通過並標記為「即興發揮」備註。請透過
build/edl.json手動將每個此類備註對應到來源時間。 - 品質檢查閘中沒有自動唇形同步檢查:請在每次最終渲染後執行
lipsync.py。 - 多機拍攝中的攝影機選擇是手動的(在挑選中設定
"cam"),除非你提供gaze.json;請參閱references/multicam-and-long-form.md。 - 不支援逐字「卡拉 OK」字幕;可以將其作為一個想法提出,但永遠不要未經要求就切換字幕樣式。
此技能中的檔案
| 檔案 | 何時開啟 |
|---|---|
references/project-config.md | 編輯 project.json、graphics.json、提示、封面變體或挑選時 |
references/edit-rules.md | 判斷剪輯、字幕、圖形或封面時 |
references/whisper-pitfalls.md | 驗證鏡次、修剪與品質檢查閘備註時 |
references/style-notes.md | 編排剪輯時(鏡頭變化、切離畫面、鉤卡、封面) |
references/multicam-and-long-form.md | 有第二台攝影機、無人機、16:9 長片、章節時 |
references/audio-and-sync.md | 音訊不良、音訊延遲、背景噪音、響度問題時 |
references/project-template.json | 起始的 project.json |
setup.sh、vedit.py doctor | 在機器上首次執行時 |
了解更多
包含範例的更完整指南位於 https://builtnotboosted.com/skills/video-editing