Video Studio - 自動影片剪輯
此技能實際產出成品影片,而非僅提供教學指引。所有工作皆透過單一入口:scripts/autovideo.py。
專業知識(鏡頭角度、節奏、音效、字幕、CapCut、AI 影片、實戰經驗)收錄於 references/ 目錄,
以便在撰寫分鏡腳本與閱讀 QC 報告時做出正確決策。
腳本路徑:此檔案所在目錄的 /scripts/(依照 README 安裝於:~/.claude/skills/video-studio/scripts)。
0. 使用者斜線指令
/video:plan 討論點子 - 腳本 - 分鏡 - 燈光 · /video:make 製作新影片 · /video:revoice 重新配音 ·
/video:subs 字幕 · /video:reframe 轉換直式/方形畫框 · /video:library 素材庫 · /video:qc 檢查 ·
/video:voices 依用途選擇聲線 · /video:fix 修正跳格/fps/抖動 · /video:critic 獨立評論 · /video:slop 偵測與修正「AI 廢文」 · /video:capcut 推送至 CapCut。
使用者即使以自然語言表達(不輸入指令),系統仍會依據下方表格執行。
0b. MCP 工具 video-studio(優先使用)
若工作階段中存在 mcp__video-studio__* 工具,請直接呼叫它們,而非透過 Bash 執行腳本:
- 快速工具:
video_probe、video_qc、contact_sheet、voices_suggest、voices_catalogue、pronunciation_preview、shot_search、motion_stills、slop_check、slop_compare。 - 長時間任務(回傳
job_id,透過job_status/job_list追蹤):make_video、revoice_video、subtitle_video、convert_fps、reframe_video、stabilize_video、motion_graphic、critic_kit、voice_samples。 一次性註冊:claude mcp add --scope user video-studio -e PYTHONIOENCODING=utf-8 -- python <repo>/scripts/mcp_server.py。
1. 依需求選擇指令
| 使用者想要 | 執行 |
|---|---|
| 從點子/腳本 + 素材庫(影片、圖片)製作新影片 | 撰寫 project.json(參照 templates/project_make.json)→ autovideo.py make project.json --out TEN_v1.mp4 |
| 替換現有影片的旁白 / 重新配音 | autovideo.py revoice VIDEO.mp4 --script loi.txt [--voice auto --muc-dich thoi_su] --out TEN_v1.mp4 [--subs] |
| 為影片加入字幕 | autovideo.py subs VIDEO.mp4 --script loi.txt --out TEN_sub.mp4(自動以語音偵測句子時間點) |
| 交片前檢查影片 | autovideo.py qc VIDEO.mp4(+ contact_sheet.py 以肉眼檢查) |
| 任意 fps 轉換(24/25/30/50/60/120)、慢動作、修正跳格節奏 | fps_convert.py convert SRC OUT --fps 24 [--slowmo 4](使用 RIFE GPU) |
| 橫式影片轉直式/方形(自動追蹤主體);虛擬 pan/zoom;防抖 | camera.py reframe / move / stabilize |
| 從素材庫中選出最佳鏡頭、依描述搜尋 | shot_select.py scan / best / search |
| 鏡頭間調色、電影調色 | grade.py match / look / apply |
| 依平台匯出、偵測音樂節拍 | deliver.py export <preset> / beats |
| 討論點子、分鏡、燈光、鏡位(剪輯前) | /video:plan + references/11-dien-anh-cao-cap.md |
| 路線動畫、章節卡、數據圖表(以程式碼製作動畫) | motion_html.py stills/render + templates/motion/*.html,或使用 "nguon": {"html": ...} 鏡頭 |
| 腳本/影片聽起來像「AI 腔」:空話、無來源數字、未經證實的斷言、節奏過於規律、特效浮濫 | /video:slop(slop_guard.py 測量 → 新代理建議修正 → compare 重新測量) |
| 送片前評審(由不同於剪輯者的人員執行) | /video:critic(critic.py + 新代理,持續評審至所有項目 ≥ 8 分) |
| 依用途選擇聲線 | voices.py suggest --muc-dich thoi_su --gioi-tinh nu,生成 2-3 種建議聲線樣本,讓使用者聆聽 |
| 將專案送入 CapCut 進行手動微調 | 在 make/revoice 中加入 --capcut TEN_NHAP,或使用 capcut_api.py build --spec |
| AI 電影 / 微戲劇 | references/09-phim-ai-pipeline.md + storyboard.py jobs |
所有指令皆自動執行:不會覆蓋現有檔案,中間檔儲存於 <out>_work/,並產生 BAO_CAO_QC.md(影像瑕疵、抖動程度、
LUFS、語音與腳本符合度百分比)。提交前請閱讀報告,並在回應中提及各項數據。
2. 為 make 建立 project.json(最重要)
- 每個
canh(鏡頭)對應一句話。nguon(來源)可以是:{"file", "vao", "ra"}(影片)、{"anh", "hieu_ung": zoom_in|zoom_out|pan_left|pan_right}(圖片含效果)、{"mau": "#0E2440"}(純色)。 - 鏡頭時長自動計算 = max(
thoi_luong(指定時長), 語音長度 + 0.9 秒)。影片鏡頭會自動退回到原始鏡頭的範圍內;若來源不夠乾淨,系統會自動縮短鏡頭,不進行凍結。 - 畫面必須與正在說的話匹配(正確的建築、正確的事件)- 使用
probe_qc.py --inventory+contact_sheet.py在來源上選擇,不要憑檔名猜測。 chuyen_canh(轉場):同一個想法內使用cut,更換想法/空間時使用dissolve。鏡頭長度 ≤ 7-8 秒。- 旁白要像說話一樣自然;數字和單位保持原樣(
119 km、100 km/h)-tts_vi.py會自動標準化(連字號/破折號不會被讀成「到」)。 chu_tren_hinh(畫面文字):簡短,只包含旁白中出現的數據/名稱;不要使用「—」。- 進階功能:專案
fps可任意設定(不同 fps 的來源會自動經fps_convert轉換),影片鏡頭可設定slowmo、camera(虛擬推/搖)、on_dinh(穩定)、khung_thong_minh(智慧畫面框,直式匯出時自動追蹤主體);專案可設定mau(調色 + 電影風格)與cat_theo_nhac(依音樂節拍剪輯)。 - 聲線不受限制:
"giong": "auto"(預設)會根據"muc_dich"(用途:doanh_nghiep(企業)、thoi_su(新聞)、tai_lieu(紀錄片)、quang_cao(廣告)、mang_xa_hoi(社群媒體)、huong_dan(教學)、sang_trong(莊重)、tre_em(兒童)、su_kien(活動))加上"gioi_tinh"(性別)、"vung"(地區)、"am_sac"(音色:trầm/trung/sáng), 並依據各聲線的測量檔案(voices.py profile:發音準確度、音高、語速)來選擇。或可指定:VieNeu 聲線名稱、{"edge": "vi-VN-HoaiMyNeural"}(Edge TTS)、{"clone": "mau_giong.wav"}(聲音克隆,需取得說話者同意),或直接為每個鏡頭錄製真實音檔"ghi_am": "cau3.wav"。每個鏡頭/角色可擁有獨立聲線。 務必提供 2-3 種建議聲線(voices.py suggest)讓使用者聆聽後再確認。 - 精確性:發音字典
templates/phat_am.json+ 專案專屬"phat_am"(縮寫、專有名詞);每句話會由 Whisper 回聽, 準確度低於"do_chinh_xac"(0.97)的句子會自動重錄最多"doc_lai"次,並回報每句的準確度;字幕應根據每個字的實際時間點對齊。 - 剪輯風格選項:
"phong_cach":trang_trong(莊重) |dien_anh(電影感,letterbox 2.39,filmic) |tai_lieu(紀錄片) |nang_dong(動感,依節拍剪輯) |mang_xa_hoi(社群媒體,畫面框自動追蹤主體)。每個鏡頭的轉場可單獨設定:cut、dissolve、fade_black、dip_white、wipe_left/right、slide_left/right、zoom_in。 畫面框:"khung":fill(填滿裁剪) |fit_blur(完整顯示,背景模糊) |smart(智慧追蹤主體)。"letterbox": 2.39。所有選項可在每個鏡頭中覆寫。 - 動態圖形:
"nguon": {"html": "templates/motion/route_map.html", "params": {...}}(路線圖逐筆繪製、章節卡...)。make會自動額外產出只有音樂的版本_chi_nhac.mp4。大型專案前需提供導演簡報 +facts.md(參考references/12)。 - AI 廢文防護:
"facts": "facts.md"(每個數字 + 原始句子 + 來源文件 + 日期)以及"luat": ["~/.video_studio/luat/<khach>.json"](客戶專屬規則手冊,存放於 repo 之外)。make會自動檢查並在報告中記錄「AI 廢文防護」章節;"chan_khi_slop": true可在發現虛構數字/違反規則時停止處理。 若客戶手動修改某句話,應將原始文字記錄至規則手冊(slop_guard.py ghi),以便後續影片自動偵測(參考references/13)。 - 自動選鏡:
"kho_canh": "kho.json"(來自shot_select.py scan --clip)與"nguon": {"tim": "aerial view of a highway at sunset"}→ 選取最匹配、長度足夠、未使用過、品質分數高的鏡頭。請使用英文撰寫搜尋描述。
3. 不變規則
- 不刪除/覆蓋交付檔。 新檔案使用
_vN版本號。僅在使用者確認後才取代主要檔案:以mv -n將舊檔更名為_luu_<mo_ta>、以cp -n複製新檔、以cmp驗證。 - 先測量再發言 - 使用
BAO_CAO_QC.md中的數據;尚未測量則如實說明。 - 內容必須真實:正確的建築/單位,不得使用外國素材、QR 碼、廣告、不相干的標語、未經授權的人物。
- 翻譯必須 100% 忠於原意與語境;有疑問的句子應請教。
- 不代為輸入密碼/API 金鑰。
- 僅從可信任來源下載模型,優先使用
.safetensors格式,並安裝於獨立 venv 環境。 - 以越南語溝通。
- 不交付虛構數字:畫面/旁白中的所有數字必須來自
facts或標示為[tính: ...](正在計算)。代理所撰寫的修正版本,必須通過slop_guard.py compare重新測量後才可接受(撰寫者不得自行確認)。
4. 需要時載入參考文件
| 時機 | 文件 |
|---|---|
| 流程、版本、客戶報告 | references/01-quy-trinh.md |
| 鏡頭角度、景別、剪輯節奏、轉場、靜態影像 | references/02-ngon-ngu-hinh-anh.md |
| 抖動、凍結、異常畫面、fps 轉換 | references/03-khung-hinh-chuyen-dong.md |
| 調色、縮放/裁切、Logo、檔案匯出 | references/04-hinh-anh-mau-xuat.md |
| 聲線、TTS、音樂、LUFS | references/05-am-thanh-giong-doc.md |
| 字幕、翻譯、畫面文字 | references/06-phu-de-dich-chu.md |
| CapCut(MCP、VectCutAPI、Web) | references/07-capcut.md |
| 交付前 QC | references/08-qc-giao-file.md |
| AI 電影 / 微戲劇 | references/09-phim-ai-pipeline.md |
| 實戰教訓 | references/10-bai-hoc-thuc-te.md |
| 燈光、鏡頭、光圈/快門/ISO/ND 依情境調整、AI 影片 prompt、鏡位、調色、音效、剪輯 | references/11-dien-anh-cao-cap.md |
| AI 廢文防護:有來源數字、客戶規則手冊、盲審、修正前重新測量 | references/13-chong-ai-slop.md |
| 導演簡報、防「AI 型運動」規則、程式碼動畫、評論迴圈、大型專案(GES、3D、現狀) | references/12-dao-dien-motion-va-phe-binh.md |
5. 腳本清單
| 腳本 | 功能 |
|---|---|
autovideo.py | 主要入口:make、revoice、subs、qc |
voices.py | 各聲線測量檔案、依用途推薦聲線、多種聲線來源(VieNeu、Edge、克隆、錄音) |
accuracy.py | 發音字典、逐句回聽、自動重錄錯誤句子 |
motion_html.py | 以 HTML + seek(t)(Playwright)製作動態圖形,自動子幀運動模糊 |
critic.py | 獨立評論工具組:contact/phone/strip、死幀、字幕停留時間、AI 廢文檢查(搭配 slop_guard) |
slop_guard.py | 確定性 AI 廢文防護:有來源/可推導的數字、空話、未經證實斷言、節奏、過於規律剪輯、客戶規則手冊;compare 功能決定是否接受修正版本 |
mcp_server.py | MCP 伺服器:21 個工具(快速 + 任務佇列)供 Claude 直接呼叫 |
probe_qc.py | 素材盤點 / 影片 QC(異常畫面、閃爍、重複幀、凍結、抖動、cadence、LUFS、黑邊) |
contact_sheet.py | 每鏡頭 3 幀的連環圖,用於肉眼檢查 |
fps_convert.py | fps 轉換 24-120、慢動作、180° 運動模糊、偵測插幀(RIFE/flow) |
camera.py | 智慧重構(人臉 + 顯著性)、虛擬 pan/zoom、vidstab 防抖 |
shot_select.py | 素材庫:分鏡、評分、依描述搜尋(CLIP) |
grade.py | LUT 調色匹配、自動白平衡、電影風格;套用 LUT |
deliver.py | 平台匯出預設、偵測音樂節拍 |
cadence_fix.py | 以光流法修正片段節奏(舊版,無需 GPU) |
tts_vi.py | VieNeu-TTS 越南語(25 種聲線)、文字標準化、自動於獨立 venv 執行 |
speech_check.py | 語音與腳本符合度百分比(Whisper)、方言估計 |
voice_mix.py | 依時間點放置句子、聲線處理鏈、ducking、LUFS、影片合成 |
subs.py | 字幕斷句、SRT/ASS、燒錄字幕 |
demucs_split.py | 分離人聲/音樂 |
capcut_api.py | 透過 VectCutAPI 建立 CapCut 桌面草稿 |
storyboard.py | 分鏡腳本檢查、shotlist、AI 電影工作佇列 |
環境(透過 install.ps1 安裝):ffmpeg 需在 PATH 中;Python 3.12(numpy、opencv、soundfile、librosa、Pillow、faster-whisper、torch、demucs);
VieNeu 位於 ~/tools/venv_vieneu(可透過 VIENEU_PY 變更);RIFE 位於 ~/tools/rife/(RIFE_BIN);YuNet 位於 ~/tools/models/(YUNET_ONNX);VectCutAPI 位於 ~/tools/VectCutAPI(連接埠 9001)。