影片剪輯技能 是做什麼的?
一部原始的談話性頭錄音通常有 20% 到 40% 是無效內容:停頓、「嗯」、假開頭、同一句話說兩次。手動剪掉這些內容比錄音本身還花時間。本技能負責第一次剪輯:它讀取逐字稿,規劃每一次剪輯並附上理由,顯示計劃,渲染帶有跳接放大效果的剪輯和乾淨的音訊,產生字幕和章節,並在你確認後發布。這個資料夾裡包含了所有需要的東西。
四項承諾:
- 使用者的話語會保留。 只有停頓、填充詞、口吃、重拍以及使用者核准的範圍會被移除。意義絕不會被編輯。
- 先規劃,再渲染。 剪輯清單會先顯示並獲得核准。
- 沒有明確同意,絕不發布任何內容。
- 僅處理使用者有權使用的素材。 這是使用者自己的錄音,或已獲得許可。
在 Windows 上,請將所有指令中的 python3 替換為 py。
步驟 0:設定與來源
執行 python3 scripts/check_setup.py:它會回報 ffmpeg、Pillow、轉錄方式以及 OpenCV 的狀態,並根據使用者的系統顯示安裝指令。必要項目:ffmpeg 和 Pillow。
在同一條訊息中,僅詢問你無法看到的項目:
- 哪個檔案,以及是否是使用者的檔案?
- 最終要去哪裡:YouTube (16:9)、社群 (直式),還是兩者都要?
- 剪輯緊密度:youtube (預設:剪掉超過 0.5 秒的停頓,保留自然節奏)、tight (0.3 秒,適合快速 YouTube 和社群) 或 podcast (溫和,無放大效果)。
- 使用者習慣使用且可以安全剪掉的字詞(例如「那個」、「就是」、「你知道嗎」、「基本上」)。這些詞在其他句子中可能有含義,所以選擇加入。
- 任何必須原樣保留的內容(例如產品示範、帶有停頓的笑話、贊助商段落)。
步驟 1:轉錄
python3 scripts/transcribe.py 影片 --out work/ --terms "產品名稱, 專業術語, 來賓姓名"
--terms 列出名稱和專業術語以確保拼寫正確;如果仍有聽錯的地方,可以在渲染前於 edit.json 中使用 "replace" 修正,因為燒錄到已發布影片中的字幕是無法更正的。
與往常相同,有三種轉錄方式,並會解釋一次其取捨:
| 方式 | 方法 | 成本與速度 |
|---|---|---|
| 現有字幕 | --from captions.srt | 免費、即時;字詞時間戳為估計值,且多數「嗯」會遺漏,因此填充詞剪輯效果較弱 |
| Groq 或 OpenAI | GROQ_API_KEY 或 OPENAI_API_KEY | Groq 每小時音訊約 $0.04 美元,每小時音訊只需一到兩分鐘處理 |
| 本機 | pip install faster-whisper | 免費且私密;使用 --model small 約需影片長度的一半到一倍時間 |
轉錄器會被提示寫下填充詞;否則 Whisper 會忽略它們。剪輯器會透過分析音訊本身,找出仍然遺漏的聲音(例如未寫下的「嗯」、呼吸聲)。
步驟 2:規劃剪輯
完整閱讀 work/transcript.txt 一次。然後編寫 edit.json(格式在 scripts/edit_video.py 頂部):
- 風格:
"style": "youtube"、"tight"或"podcast"(閾值在references/editing-rules.md中)。超過限制的停頓會縮短為自然的節拍:句子中間較短,句子結尾較長,主題轉換時最長。 - 填充詞: 預設清單(「嗯」、「啊」、「呃」、「嗯哼」、「呣」)是安全的。僅在使用者要求時,將使用者的習慣用語加入
extra_fillers。 - 離題與無用段落: 離題內容、「聽得到我說話嗎?」、進入正題前的冗長鋪陳。將它們加入
cut並附上理由,並告知使用者。 - 保護任何必須保留的內容,使用
keep,包括靜音段落。 - 含提詞卡或可見主持人的訪談: 除非使用者另有指示,否則保留問題(每個提詞卡約 3 秒加入
keep);沒有這些問題,每個回答都會以「所以...」開頭且缺乏上下文。 - 聽錯的名稱:
"replace": {"賽勒斯王": "OSIRIS-REx"}。 - 章節(適用於 YouTube):根據主題變化設定 3 到 10 個章節,第一個從 0:00 開始,每個至少間隔 10 秒,名稱要讓觀眾知道能得到什麼(例如「為什麼相機壞了」,而不是「第二部分」)。時間基於原始影片;腳本會自動調整。
然後產生計劃:
python3 scripts/edit_video.py edit.json --transcript work/transcript.json --out edited/ --plan
edited/edit-plan.md 會給出新長度、刪除的內容來自談話內部、長停頓還是提詞卡的比例、語速(每分鐘字數),以及每次超過一秒的刪除動作,附上原因和文字。請閱讀每一行關於重拍和口吃的描述,以及「可能的重拍」清單:兩個起頭方式相同的完整句子絕不會被自動剪除;請逐一判斷,如果是真正的重拍,就將其加入 cut。向使用者顯示摘要、重拍、你所選擇的離題內容以及章節,並獲得同意。
步驟 3:渲染
python3 scripts/edit_video.py edit.json --transcript work/transcript.json --out edited/
渲染流程:
- 將超過閾值的停頓縮短為自然的節拍,加上填充詞、口吃、重拍以及所有
cut範圍。短於該風格最短時間(youtube 風格為 0.4 秒)的移除動作會保留原樣:跳接的成本高於其效益。 - 透過聆聽音訊來精確定位每個剪輯點:字詞邊緣會移動到聲音實際停止和開始的位置,因此不會截斷字尾,並且能找到轉錄稿遺漏的聲音(例如未寫下的「嗯」)。
- 也會分析畫面:提詞卡和鏡頭切換處會被整潔地剪輯,絕不會留下提詞卡的殘影。
- 將片段分組,每次一個 pass 進行渲染,因此無論有多少剪輯點,聲音和畫面都能保持同步。
- 放大效果: 在需要隱藏跳接處時,於全畫面與 1.1 倍放大畫面之間切換:僅在剪輯移除了一秒或更長時間時使用,否則只在同一構圖持續 4 秒後才使用,絕不應用於切換到不同攝影機畫面的剪輯點。
"punch_in": 0可關閉此功能。 - 音訊: 將增益調整至工作電平、套用低頻濾波器、根據測量的環境噪音設定降噪(若環境已很安靜則跳過)、溫和的壓縮、峰值限制器,以及兩次 loudness 處理達到 -14 LUFS。
- 字幕: 總是產生
captions.srt(每行最多 42 個字元,共兩行;每段顯示 1 到 7 秒;不在小詞後或名稱內斷行),以便上傳至 YouTube。"captions": {"burn": true}會將字幕繪入影片中,適用於許多人靜音觀看的社群平台;直式版本預設會燒錄字幕。不要將字幕燒錄到同時也會上傳 SRT 檔案的 YouTube 影片中:否則開啟字幕的觀眾會看到雙重字幕。 - 直式:
"format": "vertical"會以focus_x為中心裁切,產生 1080x1920 的版本。
它會產生 edited/edited.mp4、captions.srt、chapters.txt、edit-report.md 和 manifest.json。
在向使用者展示之前先檢查: 開啟 cuts.jpg(顯示最大剪輯處前後的幀畫面:檢查是否有提詞卡的閃現、不同鏡頭之間的跳動、凍結的表情),並閱讀 manifest.json 中的警告(同步問題、語速超過每分鐘 190 字、音量)。如果重拍保留了錯誤的鏡頭、語速令人喘不過氣(改用較溫和的風格),或者某個剪輯點效果不佳(對該處使用 keep),請修正並重新渲染。
步驟 4:使用 WoopSocial 發布
如何連接、上傳和發布:references/woopsocial.md。簡短說明:
social_accounts_list;若未連接:使用此 agent 的單一連接路徑(免費方案:2 個社群帳號),然後為每個平台執行oauth_create_authorization。- 使用上傳 session 上傳
edited.mp4(以manifest.json中的位元組大小執行media_uploads_create_session,然後執行python3 scripts/upload_parts.py session.json edited/edited.mp4,最後執行media_uploads_complete_session)。 - YouTube: 設定
title(主要搜尋詞在前,少於 70 個字元)、privacy,以及一個說明,開頭一行說明觀眾能得到什麼,接著是來自chapters.txt的章節。之後在 YouTube Studio 中上傳captions.srt(WoopSocial 無法傳送字幕檔)。 - 顯示貼文內容(檔案、標題、說明、帳號、時間含時區),並獲得明確同意。然後執行
posts_create和posts_get。
步驟 5:檢視結果
一週後,執行 social_account_posts_list:檢視觀看次數、按讚數、有回報的留言數,並附上收集日期;若無資料則表示「未回報」。留存率和平均觀看時長可在 YouTube Studio 中找到;請向使用者詢問。如果觀眾在早期就流失,下一次剪輯需要更緊湊的開頭;如果他們在某個章節流失,表示該段落太長了。
品質標準
專業剪輯師會交出這個結果嗎?如果出現字詞被截斷、剪輯點落在呼吸聲上導致爆音、放大效果每隔幾秒就變化、節奏快得讓人無法思考、或者意義被改變,就拒絕這個結果。
邊緣案例
- 兩人同時出現在鏡頭前: 保持
format為原始比例;放大效果在廣角鏡頭上仍然有效。 - 含旁白的螢幕錄影: 設定
"punch_in": 0。 - 背景音樂搭配人聲: 靜音偵測會將音樂視為聲音;請設定
"voiced_gaps": false。 - 非常長的錄音(超過一小時): 仍然可以運作,但渲染時間約等同於影片長度;先規劃,再渲染一次。
- 故意有段時間沒有說話(例如產品示範):使用
keep保留。
參考資料
references/editing-rules.md:閾值、填充詞、重拍模式、放大效果、音訊處理鏈、字幕和章節,附有來源。references/woopsocial.md:連接、上傳、發布和檢視結果。