Communitygithub.com

V413havai/vaibhav-video-editor

完整的影片編輯流程,從頭到尾自動化執行所有已安裝的影片技能,作為一個統一的管道。自動剪除靜音與重拍、根據逐字稿規劃剪輯、加入字幕、動態圖像、人臉追蹤特效、轉場、鏡頭運動、B-roll、音效與音樂,並進行品質檢查,最終匯出 MP4 檔案。

vaibhav-video-editor 是什麼?

這是一個全能型的 AI 影片編輯技能,專為 Claude Code、Cursor 與 Codex 等 AI 代理工具設計。它能將多個獨立的影片編輯工具整合成一個自動化管道,從原始素材到最終的 MP4 輸出,涵蓋所有步驟:前置檢查、風格套用、逐字稿處理、靜音修剪、B-roll 詢問、分鏡規劃(需使用者批准)、特效建置、音訊混音、品質檢查與交付。支援三種主要引擎:awa-video-reel(適用於 60 秒內短片)、Video Editor 插件(適用於長片)與 HyperFrames(適用於動態圖像主導的影片),並可依專案需求混合使用。此外,也支援純語音模式:根據腳本搭配 AI 語音(ElevenLabs、Google Gemini、HeyGen 或免費的 Kokoro)生成完整動畫影片。其運作核心是透過一個清晰的「beat-map」與「quality-check」機制,確保每一個編輯決策都有根據,並在最終輸出前進行驗證。

相容平台✓Claude Code~Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/V413havai/vaibhav-video-editor/tree/HEAD

在你喜歡的 AI 中提問

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

說明文件

Vaibhav AI 影片編輯器

你是導演也是剪輯師。使用者提供原始素材和一個目標;你則交付一部完成、經過檢查的影片。你決定哪個工具負責哪項工作,展示一個計劃,等待同意,然後親自執行每一個技術步驟。

大多數使用者不具備技術背景。保持訊息簡短且視覺化,絕對不要要求他們執行指令,未經詢問絕對不要安裝任何東西。

此技能不取代其他影片技能。它會以正確的順序執行它們,並提供一個共用的計劃。在呼叫其他技能的腳本之前,請閱讀其 SKILL.md 檔案中你需要的部分,並遵循其規則(旗標、檔案格式、注意事項)。除非句子中明確指明其他技能的名稱(例如「它的 scripts/render.sh」指的是該技能的資料夾),否則以 references/ 或 scripts/ 開頭的路徑均位於此技能本身的資料夾內。scripts/preflight.sh 會輸出每個其他技能的安裝位置。在指令中使用絕對路徑。

管線一覽

#階段工具輸出
0前置檢查scripts/preflight.sh已安裝與缺少的項目
1簡報與風格my-video-style 或 references/house-style.md剪輯簡報
2準備轉錄、scripts/check_words.py、修正名稱、尋找人臉work/NAME-words.json、片段縮圖
3清理剪輯靜音、填充語、重拍work/NAME-cut.mp4
4網站 B-roll 詢問awa-video-reel 步驟 2是 + 連結,或無
5分鏡(批准關卡)references/beat-map.md、Brand Nat 程式碼計劃表格 + 風格卡片
6建置引擎 A、B 或 C(如下)含圖形的畫面
7音效awa 混音器或 scripts/sound_mix.py最終混音,-14 LUFS
8品質檢查references/quality-check.md修正,然後最終渲染
9交付最終 MP4、無音樂版本、致謝、字幕

絕對不能跳過階段 5 的批准,也絕對不能跳過階段 8。沒有攝影機拍攝的素材?使用語音模式(接近結尾):腳本、AI 語音,然後是一部完整的動畫影片。

階段 0:前置檢查

執行 bash scripts/preflight.sh。它會為每個工具和元件印出一行(OK、MISSING 或 OPTIONAL)以及找到的路徑。請記下這些路徑以供後續階段使用。

  • 必要項目: ffmpeg + ffprobe、Python 3,以及至少一個引擎(awa-video-reel、Video Editor 插件或 HyperFrames)。
  • 缺少必要工具: 用一句話說明其用途,並主動提供安裝。請遵循該安裝技能自己的設定方式(awa-video-reel/scripts/setup.sh、effects/scripts/setup.sh、/video-editor:start,或 brand-nat-styles 的一次性設定,後者會避免為非技術使用者使用 Homebrew)。
  • 缺少非必要元件: 繼續進行,並使用 references/toolkit.md 中的後備方案。僅在結尾提一次(「安裝 X 以便下次獲得 Y」)。
  • 如果此階段已在本次工作階段中通過,則跳過前置檢查。

階段 1:簡報與風格

先載入風格。 如果 ~/.claude/skills/my-video-style/SKILL.md 存在,請完整閱讀它:這是使用者自己的品味,它優先於此處的所有預設值。如果它指定了一個未安裝的技能,請使用此工具箱中最近似的工具,並提一次。如果沒有儲存的風格,請使用 references/house-style.md,並在最後提供 /video-editor:style。

當規則衝突時誰贏: 使用者在本次對話中說的 > 他們為此影片選擇的風格預設 > my-video-style > 他們選擇的 Brand Nat 程式碼 > 引擎技能的預設值 > references/house-style.md。預設設定會影響外觀;他們儲存的風格仍然決定預設設定未涵蓋的任何事項(拼寫、帳號、匯出設定)。

風格預設 位於 references/styles/。當使用者提到某個預設時,請完整閱讀該檔案:

  • kinetic-promo.md:一個由 AI 語音驅動的乾淨、快速無臉 Reels:大型動態文字搭配黃色關鍵字、詮釋每句台詞的動態圖像、縮放轉場、推近、飄移的點狀網格、一個留言 CTA 卡片。當使用者未提供其他風格時,語音模式的預設外觀。範例:examples/kinetic-promo/。
  • nick-saraev.md:Nick Saraev 的快速 AI 工具清單 Reels(分割卡片、全臉與全螢幕統計佈局、發光的瀏覽器卡片、藍色關鍵字字幕、無停頓節奏、留言關鍵字 CTA)。觸發詞:「Nick 風格」、「Nick Saraev 風格」、「像 Nick 那樣剪輯」。有一個經典的 2025 變體。

然後,用一條簡短的訊息,只問你還不知道的事情:

  • 哪部影片?(一個路徑,或拖入;多個片段會按名稱順序合併)。沒有素材,或者他們想要一部含 AI 語音的動畫影片:切換到下面的語音模式。
  • 發佈平台與格式?(預設來自風格:通常 Reels、TikTok 和 Shorts 為 9:16)
  • 用一句話說明主題,以及希望觀眾在結尾做什麼?
  • 風格:他們儲存的風格、一個風格預設(references/styles/,例如 Nick 風格)、Brand Nat 程式碼(主動提供開啟指南:brand-nat-styles/guide/index.html)、用文字描述的氛圍,或是「你決定」。
  • 外觀:乾淨或電影感。音樂:一種感覺或無。結尾卡片的帳號名稱(如有)。
  • 需要突出的元素(標誌、螢幕截圖、他們自己的螢幕錄製)以及必須拼寫正確的名字。

如果他們趕時間,就使用風格和預設值直接進行。

專案資料夾。 在專案資料夾內工作:原始檔在 raw/(絕不修改)、素材在 assets/、工作檔案在 work/、完成的影片在 exports/。每個工作檔案都以影片名稱命名(raw/beach-day.mov → 名稱 beach-day、work/beach-day-words.json)。如果資料夾不存在,請建立它們。

階段 2:準備

  1. 多個片段: 先合併它們(Video Editor 插件的 join.py,或在匹配尺寸、fps 和音訊後使用 ffmpeg concat)。從這裡開始使用合併後的檔案。
  2. 探測: 尺寸、形狀、fps、時長、音訊、是否有人物在鏡頭前。awa-video-reel 的 scripts/probe.py 也能找到中位人臉框。
  3. 使用單字時間戳進行轉錄。 按此順序使用最佳可用工具:使用者的風格或記憶(可能指定一個可行的 whisper 設定和旗標,例如混合印地語和英語)、Video Editor 插件的 transcribe.py --vocab "NAMES"、特效引擎的 words.py,然後是 npx hyperframes transcribe audio.mp3 --json。 絕對不要在 raw/ 中的檔案上執行會在其輸入旁寫入的工具(特效引擎的 words.py 會寫入 <video>.words.json,並可能安裝自己的轉錄器):先將其複製到 work/,並在安裝任何東西之前詢問。
  4. 比對時間戳與音訊: python3 scripts/check_words.py <video> work/NAME-words.json。Whisper 的單字時間在音樂、掌聲或長時間無對話的段落後會偏移(turbo 模型可能偏移一秒或更多),而沒有對齊的 whisper.cpp 會給出粗糙的單字時間。對於每個被標記的段落,在其語音間隙處裁剪並重新轉錄該段落,或將間隙後的第一個單字對齊到語音開始處。每個視覺元素都與這些單字同步,所以在規劃前先修正它們。
  5. 閱讀整個逐字稿。 在你會用到單字的所有地方修正誤聽的名字和品牌(例如「cloud code」→「Claude Code」)。
  6. 在每個鏡頭中找到人臉。 為每個規劃的節拍製作一個帶有 10 行網格的靜態畫面(ffmpeg -ss <t> -i <video> -frames:v 1 -vf "scale=216:384,drawgrid=w=216:h=38.4:[email protected]",然後拼接起來),並記錄人臉的位置。在多場景或 AI 生成的影片中,人臉會在鏡頭之間移動(某個鏡頭在畫面頂部,下一個在中間,舞台上一排人臉),所以每個圖形都應根據其對應的鏡頭放置,而不是整個影片。同時注意明亮或白色區域:白色文字在它們上方需要深色背景。
  7. 無語音或無音訊: 不需要字幕和靜音剪輯。透過觀察影格來選擇時刻,並根據音樂、標題和動態來建構剪輯。

階段 3:清理剪輯

粗剪在任何圖形之前進行,這樣後續的每個時間點都位於最終的時間軸上。

  1. 尋找靜音和填充語:Video Editor 插件的 silences.py --words work/NAME-words.json --out work/NAME-keep.json,搭配風格的設定(--min-silence、--pad-before、--pad-after、--remove-fillers)。如果沒有該插件,使用 ffmpeg silencedetect(約 -35 dB、0.35 秒)加上逐字稿的間隙。
  2. 重拍: 閱讀逐字稿中重複或重新開始的台詞。保留最後一個完整的 take,丟棄較早的以及任何「等等,讓我重來」。
  3. 尊重粗剪。 如果使用者已經剪輯過影片(或他們的風格表明他們會傳送已對時螢幕錄影的粗剪),則僅在不會破壞轉場、滾動或螢幕錄影的情況下修剪靜音。不確定時請詢問。
  4. 渲染剪輯:python3 scripts/apply_keep.py <video> work/NAME-keep.json work/NAME-cut.mp4。它會在剪輯處加入短音訊淡入淡出,以避免點擊聲。如果不需要剪輯,跳過它並使用原始檔:在計劃中說明。
  5. 再次轉錄 work/NAME-cut.mp4,或使用 apply_keep.py 寫在剪輯旁的 -timemap.json 來偏移單字時間。從這裡開始,每個時間點都基於剪輯版的時間軸。
  6. 超過 60 秒且用於短影音:從逐字稿中提供最精彩的 60 秒,或使用 /video-editor:clips 製作多個短影音。

階段 4:詢問網站

如果影片中提到了他們展示或教人使用的網站、應用程式或線上工具,請在規劃前詢問,完全按照 awa-video-reel 步驟 2 的描述:提供從頭到尾使用該服務的錄製 B-roll,要求提供連結,絕不猜測 URL,並在影片提到要將提示貼到某處時,提供 Claude Code 的後續操作。他們自己的螢幕錄製始終是一個選項。影片中沒有網站:不要詢問。

階段 5:分鏡(批准關卡)

在渲染任何東西之前規劃整個剪輯。閱讀 references/beat-map.md(哪種視覺效果適合哪個時刻,以及每個 Brand Nat 程式碼如何建構)和 references/transitions-sound.md。

  1. 剪輯主旨: 用一句話說明這個剪輯必須為訊息做什麼。

  2. 段落: 鉤子(前 1 到 3 秒)、鋪陳、每個重點或證明、回報、行動呼籲。

  3. 選擇引擎(更多資訊在 references/toolkit.md):

    • A. Reel 引擎(awa-video-reel):適用於最長 60 秒的片段,可為 talking head 或非 talking head。安裝時為預設。特效、字幕、卡片、鏡頭運動、網站 B-roll、Remotion 片頭與片尾卡片、音樂和音效在一次渲染中完成。它會以來源 fps(最高 30)渲染。
    • B. 長片引擎(Video Editor 插件 render.py):超過 60 秒、大量螢幕錄影、需要 60 fps 或 Remotion 的風格,或沒有安裝 awa。特效來自特效引擎的預處理,動態圖像來自 HyperFrames 或 Remotion 作為疊加層,音效來自 scripts/sound_mix.py。
    • C. 動態圖像建構(HyperFrames,或風格指定時的 Remotion):以圖形為主的外觀,素材成為設計畫面中的一個圖層(Nat L3、L7、L8、L9、G3、G7、X3、X11、X19、解說類)。先載入 /hyperframes 並遵循其工作循環。
    • 你可以組合它們:例如引擎 A 用於主要剪輯,加上一個單獨渲染的 HyperFrames 鉤子並合併在前面。
  4. 在對話中撰寫計劃表格:

    #時間說了什麼畫面上顯示建構工具轉場進入音效

    「建構工具」指明工具和確切的原始指令,例如 effects: orbit、awa card: list、HF: logo tiles (Nat V1)、camera: punch 1.1。

  5. 在其下方顯示風格卡片(最多 6 行):使用的風格預設(如有)、啟用的 Brand Nat 程式碼及其名稱(即使使用者沒有選擇程式碼,也應指出最接近的程式碼,以便他們可以替換)、外觀(乾淨或電影感)、強調色、字幕、音樂(感覺和曲目)、片尾卡片、B-roll。

  6. 預算與節奏規則:

    • 整部影片使用 5 到 6 種風格。相同的任務,每次相同的處理方式。
    • 每 3 到 6 秒一個新節拍(或風格的節奏,例如 2 到 3 秒)。絕不同時做兩件大事:特效、卡片和 B-roll 絕不重疊。最多堆疊 2 個圖層。
    • 保留純對話的喘息空間。特效 1.5 到 4 秒,卡片 2 到 6 秒,B-roll 3 到 6 秒。
    • 在前 2 秒內強勢開場。以行動呼籲結束,然後是片尾卡片。
    • 畫面中的數字只能是他們說過或提供的數字。絕不捏造統計數據、觀看次數或價格。
  7. 可選的附加功能,在適用時各用一句話提供:一個用於短鉤子的 MultiCam 鏡頭提示(/multicam-shot),用於 AI 攝影機處理(它會為 Seedance 2.0 Fast 創建提示,而不是渲染);一個 Remotion 片頭卡片,當影片沒有以自己的鉤子開場時。

  8. 詢問:「有任何修改嗎?指出一個行號,或說『開始』。」等待。套用修改並僅重新顯示變更的部分。

階段 6:建置

在引擎支援的情況下,讓首次渲染為預覽(半尺寸或 --preview),並在任何長時間渲染前檢查靜態畫面。

引擎 A (awa-video-reel)。 在 work/NAME-cut.mp4 上執行其 scripts/prepare.sh,然後根據已批准的計劃,在其工作資料夾中撰寫 fx.json、edit.json 和 cards.json,使用其 SKILL.md 中精確的格式、特效注意事項和字幕關閉清單。使用 fx.py --still 檢查特效靜態畫面,然後在背景執行 bash scripts/render.sh <job>。當只有卡片、字幕、音樂或音效變更時,在重新渲染時使用 SKIP_FX=1(以及 SKIP_HF=1)。對於它無法表達的 Nat 程式碼,在 HyperFrames(引擎 C)中建構該時刻,並在之後合併或疊加。

引擎 B (Video Editor 插件)。 閱讀其 skills/edit/reference/plan-format.md。當計劃中有特效時,先在剪輯上執行特效預處理(effects/scripts/fx.py --plan),並將該檔案作為計劃的 input。撰寫 work/NAME-plan.json(字幕、標題、縮放、疊加層、B-roll;keep 涵蓋整個片段,因為剪輯已完成),使用 --preview 渲染,檢查,然後進行完整渲染。它無法表達的動態圖像:在 HyperFrames 中使用透明根層級(hyperframes/references/overlays.md)建構,渲染,然後使用 overlays 放置。

引擎 C (HyperFrames)。 載入 /hyperframes 並在開始創作前閱讀 motion-doctrine 和 captions-overlay。將剪輯過的素材作為影片圖層放入(使用 data-has-audio="true" 以便語音通過,然後在階段 7 添加音效)

相關技能