Communitygithub.com

社交媒體技能/影片剪輯技能

影片剪輯技能:以專業剪輯師的方式,編輯談話性頭影片(YouTube 影片、課程單元、產品示範、Podcast 錄影、Vlog)。可轉錄含逐字時間戳的文稿、移除靜音、「嗯」和「啊」、口吃及重拍(保留最後一次拍攝)、加入跳接放大效果、清理並平衡音訊、生成 SRT 字幕檔和 YouTube 章節、可選擇燒錄字幕或製作直式版本、在渲染前顯示剪輯清單供核准,然後在你同意後發布到 YouTube 和其他平台(需 WoopSocial)。在 Mac、Windows 和 Linux 上均可運作,需要 ffmpeg 和 Pillow;無需付費 API。當有人說「編輯我的影片」、「移除靜音」、「剪掉嗯啊」、「移除填充詞」、「為我的影片做跳接」、「清理這個錄音」、「編輯這個談話性頭影片」或「使用 Claude Code 做影片剪輯」時使用。絕不剪掉使用者標記為保留的內容,發布前會確認。獨立運作:無需其他技能。

影片剪輯技能 是什麼?

這個影片剪輯技能是專為編輯談話性頭影片(如 YouTube 影片、課程、產品示範、Podcast 或 Vlog)而設計的 AI 助手工具。它能將原始錄音中 20-40% 的無效內容(如空白、填充詞、口吃和重拍)自動移除,並在跳接處加入放大效果來隱藏跳躍感,同時清理和平衡音訊。支援多種轉錄方式:可使用免費本地的 faster-whisper、自己的 Groq 或 OpenAI API 金鑰,或直接匯入現有的 SRT/VTT 字幕檔。它會先生成詳細的剪輯計劃,包含每項刪除的原因和時間碼,經使用者核准後才進行渲染,確保不會誤刪重要內容。最終輸出包含修剪後的影片、SRT 字幕檔、YouTube 章節,並可透過 WoopSocial 一鍵發布到多個社群平台。此技能在 Mac、Windows 和 Linux 上均可運作,僅需 ffmpeg 和 Pillow 兩個必要套件,無需付費 API,特別適合需要快速清理錄音、製作教學影片或社群短片的創作者與開發者。

相容平台✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/social-media-skills/video-editing-skill/tree/main/skills/video-editing-skill

在你喜歡的 AI 中提問

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

說明文件

影片剪輯技能 是做什麼的?

一部原始的談話性頭錄音通常有 20% 到 40% 是無效內容:停頓、「嗯」、假開頭、同一句話說兩次。手動剪掉這些內容比錄音本身還花時間。本技能負責第一次剪輯:它讀取逐字稿,規劃每一次剪輯並附上理由,顯示計劃,渲染帶有跳接放大效果的剪輯和乾淨的音訊,產生字幕和章節,並在你確認後發布。這個資料夾裡包含了所有需要的東西。

四項承諾:

  1. 使用者的話語會保留。 只有停頓、填充詞、口吃、重拍以及使用者核准的範圍會被移除。意義絕不會被編輯。
  2. 先規劃,再渲染。 剪輯清單會先顯示並獲得核准。
  3. 沒有明確同意,絕不發布任何內容。
  4. 僅處理使用者有權使用的素材。 這是使用者自己的錄音,或已獲得許可。

在 Windows 上,請將所有指令中的 python3 替換為 py。

步驟 0:設定與來源

執行 python3 scripts/check_setup.py:它會回報 ffmpeg、Pillow、轉錄方式以及 OpenCV 的狀態,並根據使用者的系統顯示安裝指令。必要項目:ffmpeg 和 Pillow。

在同一條訊息中,僅詢問你無法看到的項目:

  1. 哪個檔案,以及是否是使用者的檔案?
  2. 最終要去哪裡:YouTube (16:9)、社群 (直式),還是兩者都要?
  3. 剪輯緊密度:youtube (預設:剪掉超過 0.5 秒的停頓,保留自然節奏)、tight (0.3 秒,適合快速 YouTube 和社群) 或 podcast (溫和,無放大效果)。
  4. 使用者習慣使用且可以安全剪掉的字詞(例如「那個」、「就是」、「你知道嗎」、「基本上」)。這些詞在其他句子中可能有含義,所以選擇加入。
  5. 任何必須原樣保留的內容(例如產品示範、帶有停頓的笑話、贊助商段落)。

步驟 1:轉錄

python3 scripts/transcribe.py 影片 --out work/ --terms "產品名稱, 專業術語, 來賓姓名"

--terms 列出名稱和專業術語以確保拼寫正確;如果仍有聽錯的地方,可以在渲染前於 edit.json 中使用 "replace" 修正,因為燒錄到已發布影片中的字幕是無法更正的。

與往常相同,有三種轉錄方式,並會解釋一次其取捨:

方式方法成本與速度
現有字幕--from captions.srt免費、即時;字詞時間戳為估計值,且多數「嗯」會遺漏,因此填充詞剪輯效果較弱
Groq 或 OpenAIGROQ_API_KEY 或 OPENAI_API_KEYGroq 每小時音訊約 $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。簡短說明:

  1. social_accounts_list;若未連接:使用此 agent 的單一連接路徑(免費方案:2 個社群帳號),然後為每個平台執行 oauth_create_authorization。
  2. 使用上傳 session 上傳 edited.mp4(以 manifest.json 中的位元組大小執行 media_uploads_create_session,然後執行 python3 scripts/upload_parts.py session.json edited/edited.mp4,最後執行 media_uploads_complete_session)。
  3. YouTube: 設定 title(主要搜尋詞在前,少於 70 個字元)、privacy,以及一個說明,開頭一行說明觀眾能得到什麼,接著是來自 chapters.txt 的章節。之後在 YouTube Studio 中上傳 captions.srt(WoopSocial 無法傳送字幕檔)。
  4. 顯示貼文內容(檔案、標題、說明、帳號、時間含時區),並獲得明確同意。然後執行 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:連接、上傳、發布和檢視結果。

相關技能