Communitygithub.com

sridhar-raj/video-craft

專業影片剪輯與製作工具:從逐字稿編輯、去除停頓與贅詞,到自動生成字幕、調整畫面比例、聲音優化,並提供最終品質檢測。

video-craft 是什麼?

Video Craft 是一套專為 AI 代理設計的影片編輯與製作自動化流程。它涵蓋兩大核心任務:**剪輯**既有素材(如談話性影片、教學錄製、Podcast 或螢幕錄影),以及**製作**全新影片(如品牌片頭、產品發表、社群廣告、動態字卡等)。剪輯流程從逐字稿轉寫開始,自動規劃剪輯點(去除停頓、贅詞與重拍),再進行渲染與品質檢測。製作流程則透過 HTML + JavaScript 影片引擎,讓每個像素與音效完全由時間函數控制,實現精準的動態設計與音效合成。支援的平台包括 Claude Code、Cursor 等命令列環境,並整合 ffmpeg、Python、Node.js 與 Playwright。最後透過 `qa.py` 輸出檢測報告,確保影片在格式、音量、黑畫面、凍結畫面、與文字錯誤上皆符合標準。

相容平台~Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/sridhar-raj/video-craft/tree/HEAD

在你喜歡的 AI 中提問

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

說明文件

影片工藝(Video Craft)

兩項任務,同一標準。剪輯他人錄製的素材,或製作從品牌工具包和文案產生的影片。無論哪種,工作都在渲染前先規劃、透過精確的腳本進行渲染,並在告知任何人完成前,先以測量結果進行檢查。

讓影片看起來專業的要素,依序為:

  1. 結構。 前 3 秒要有鉤子,一個想法,任何不值得花時間的東西都刪掉。
  2. 節奏。 剪切與移動落在人聲和節拍上;沒有死寂,沒有匆促。
  3. 工藝細節。 每個剪切周圍保留呼吸空間,字幕易讀,動畫減速到位,聲音夠大且從不爆音。
  4. 驗證。 qa.py 通過,且聯絡表已檢視過。

快速路徑

需求操作
「剪輯/清理這段錄音」轉寫 → 規劃剪輯 → 檢視 EDL → 渲染 → QA
「從這段製作 Short/Reel/TikTok」同上,再加上 captions.py --style punch、render.py --preset shorts --fit crop(螢幕錄影則用 blur)
「加入字幕」transcribe.py → captions.py → render.py --captions(或輸出 .srt 檔案)
「加入音樂」render.py --music bed.mp3(自動降低音量以配合人聲)
「讓它夠大聲/修復音訊」render.py --voice --denoise,目標請參閱 platforms.md
「品牌片頭/Logo 揭示/短動畫」複製 films/brand-sting,填寫品牌工具包,靜態圖 → 草稿 → 主版 → QA
「發表影片/宣傳片/廣告」複製 films/launch,撰寫文案,選擇格式,靜態圖 → 草稿 → 主版 → QA
「檢查這部影片」qa.py video.mp4 --sheet sheet.jpg [--safe]
專案已在使用 Remotionreferences/remotion.md

需求

編輯需要 ffmpeg 6+ 和 Python 3.9+。轉寫:pip install faster-whisper(或 openai-whisper、whisper.cpp)。影片製作:Node 18+ 和 Playwright(npm i -D playwright && npx playwright install chromium)。字幕使用 libass 燒錄(當 ffmpeg 有編譯時),否則使用 Pillow 繪製(pip install pillow)。執行 python3 scripts/doctor.py 來查看已安裝的項目。

所有腳本都接受 --help。每個工作請在專屬資料夾中進行:work/ 儲存中間檔,out/ 儲存最終成品。

剪輯素材

python3 scripts/transcribe.py raw.mp4 -o work/words.json            # 逐字稿(含時間點)
python3 scripts/plan_cuts.py raw.mp4 --words work/words.json -o work/edl.json
python3 scripts/captions.py work/words.json --edl work/edl.json --style clean -o work/cap
python3 scripts/render.py work/edl.json -o out/final.mp4 --preset youtube \
        --captions work/cap.cues.json --music bed.mp3 --voice --zoom auto
python3 scripts/qa.py out/final.mp4 --edl work/edl.json --sheet out/sheet.jpg \
        --words work/words.json --words-check
  1. 先閱讀逐字稿,決定結構:哪些段落完全移除(段落剪輯看起來乾淨;許多句中剪輯看起來急促),以及鉤子是什麼。必要時,將整個段落的決定手動放入 EDL 的 segments 中。
  2. plan_cuts.py 移除靜音(縮短為一次呼吸,而非歸零)、填充詞和廢棄的重拍(保留最後一次拍攝)。靜音是根據每段錄音測量,每個邊界都對齊實際音訊,前後間距不對稱(前 80 毫秒,後 140 毫秒),且絕不延伸到已移除的字詞中。閱讀它的清單:強調性的重複可能看起來像重拍。
  3. 任何較長的工作,與專案負責人確認:剪輯前/後的持續時間、刪除的段落、放棄的重拍。他們的註記會變成 EDL 編輯。
  4. render.py 在一個 ffmpeg 圖表中完成所有工作:幀精確修剪、每個剪輯處 8 毫秒淡入淡出、固定幀率、推近、重新構圖、字幕、聲音優化、壓低音樂音量以及兩次通過的響度設定。
  5. qa.py,然後查看聯絡表。--words-check 會重新轉寫結果,並標出任何被剪切吞掉的字詞。

判斷、數字與失敗模式:references/editing.md。音訊:references/sound.md。

製作影片(品牌片頭、發表廣告、廣告)

cp -r films/brand-sting my-film && python3 scripts/sfx.py --out my-film/sfx
# 編輯 my-film/index.html 中的 PARAMS(或傳遞 --params '{"name": "...", ...}')
node scripts/render_film.mjs my-film/index.html --stills 0.5,1.6,2.4,3.5 -o work/stills  # 檢視它們
node scripts/render_film.mjs my-film/index.html --draft -o work/draft.mp4                 # 判斷節奏
node scripts/render_film.mjs my-film/index.html --blur 4 -o out/intro.mp4                 # 主版
python3 scripts/qa.py out/intro.mp4 --no-gaps --sheet out/intro.sheet.jpg --safe
  1. 品牌工具包優先(references/brand-intro.md):官方 Logo 檔案、十六進位色碼、字型、確切的文字、語域、格式、聲音,以及每個數字的來源。絕不重繪或重新著色 Logo;絕不編造聲稱、客戶或產品 UI。
  2. 先有拍點表再有程式碼: 每個拍點包含其時間、移動內容、緩動及音效。選擇一個語域(高端、乾淨、科技、大膽、趣味),並以此縮放整個時間軸。
  3. 基於 assets/film.js 建立: 每個像素都是 t 的函數。使用 Film.tween、Film.spring、Film.stagger、Film.random(seed);不使用 CSS 動畫、計時器或 Date.now。在瀏覽器中開啟 HTML 即可即時拖曳時間軸。
  4. 在每個拍點輸出靜態圖,然後是草稿,最後才是主版。 在渲染影片前,先修正靜態圖顯示的內容。主版渲染速度約每秒 2–5 幀;草稿則快 10 倍。
  5. 聲音是影片的一部分。 scripts/sfx.py 合成音效工具包(撞擊聲、轟鳴聲、咻聲 ×3、上升音、爆音、滴答聲、鈴聲、背景音);提示點位於影片設定檔中,由渲染器混合並設定響度。撞擊聲的峰值會落在揭示畫面上。

模板:films/brand-sting(3–7 秒 Logo 揭示,五種語域,16:9 / 9:16 / 1:1)和 films/launch(15 秒鉤子 → 問題 → 揭示 → 證明 → 行動呼籲,三種格式,9:16 在平台安全區域內,*word* 強調)。將它們作為起點;當簡報需要時,可以改變結構。

原則(時間點、依角色緩動、交錯、字體大小、顏色、有原因的轉場、應避免的通用風格以及可捕捉它們的測試):references/motion.md。

始終適用的規則

  • 每個修剪都重新編碼。 直接複製串流修剪會對齊關鍵幀。
  • 所有輸出檔案使用固定幀率;採用 H.264 + yuv420p + AAC + +faststart。
  • 以測量為基礎的響度:網頁與社交平台目標 -14 LUFS / ≤ -1 dBTP,Podcast 目標 -16。
  • 文字在安全區域內:對 9:16 影片,頂部 288 px、底部 672 px、右側 192 px(在 1080×1920 解析度下)之內不要有文字。1080 解析度下字體 ≥ 28 px。
  • 誠實的內容:使用真實 Logo、附來源的真實數字、真實的產品 UI;若音樂、人聲或素材為生成內容須明確標示。
  • 僅使用授權音樂。 絕不從影片或串流服務中擷取音訊。
  • 完成即意味著已檢查:qa.py 通過、聯絡表已檢視,並且任何無法檢查的項目都已清楚說明。

檔案

路徑用途
scripts/transcribe.py產生含有字詞時間點的 words.json(faster-whisper / whisper / whisper.cpp)
scripts/plan_cuts.pyEDL:移除停頓、填充詞、重拍,並附帶原因
scripts/captions.py在編輯後的時間軸上產生 SRT、樣式化 ASS 與提示 JSON
scripts/render.pyEDL → 完成影片(預設集、重新構圖、字幕、音樂、響度)
scripts/qa.py檢查格式、長度、黑畫面、凍結、靜音、響度、字詞、聯絡表
scripts/sfx.py合成音效工具包
scripts/render_film.mjsHTML 影片 → MP4(草稿、含動態模糊的主版、靜態圖、海報)
scripts/doctor.py查看已安裝與缺少的項目
assets/film.js確定性動畫引擎 + 含拖曳時間軸的瀏覽器預覽
films/brand-sting 與 launch 模板
references/剪輯、動畫、品牌片頭、聲音、平台、ffmpeg、Remotion 參考文件

相關技能