Communitygithub.com

omniharmonic/agentic-video-editor

為粗剪、終剪、選輯或短影音產生、檢查並燒錄字幕(SRT 側邊檔案 + 樣式化 ASS),或透過重新轉錄已渲染影片來重建精確的 SRT。請在剪輯完成(粗剪或之後)且最終渲染之前,當使用者要求字幕、卡拉 OK 風格短字幕或進行字幕檢查時使用。

agentic-video-editor 是什麼?

此技能專注於影片剪輯流程中的字幕生成與燒錄,適用於已完成的剪輯(如粗剪、終剪、選輯及短影音)。它能從 `work/transcript.json` 計算字幕,並透過編輯的對話段落進行分段,移除無效詞彙與環境音。技能支援多種樣式(如 podcast、short、minimal),這些樣式定義在 `config/captions.styles.yaml` 中,並可透過每集專用的 policy 檔案覆蓋。輸出包含 SRT 與 ASS 檔案,並能直接透過 ffmpeg 燒錄到最終影片中,完全獨立於 Resolve 等非線性剪輯軟體。技能也提供檢查功能(`ave captions check`),能檢測字幕是否符合規則(如行長度、閱讀速度、重疊等),以及重新轉錄功能(`ave captions retranscribe`),可基於最終渲染的影片產生精確對白的 SRT 側邊檔案。主要支援的命令列工具為 `ave`,適用於 Linux、macOS 與 Windows 等平台。此外,技能還包含處理常見失敗模式的指引,例如 ASR 引擎回退、字型問題、對話段落無語音等情況。

相容平台~Claude Code✓Codex CLI~Cursor✓Antigravity
npx skills add https://github.com/omniharmonic/agentic-video-editor/tree/HEAD/skills/ave-captions

在你喜歡的 AI 中提問

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

說明文件

字幕

字幕是從 work/transcript.json 計算而來,透過編輯的對話段落進行映射(移除的詞語會消失,環境音填補段落永遠不會被字幕化),根據 config/captions.styles.yaml 中的規則進行分段,以純文字檔案形式寫入,並由 ffmpeg 燒錄。Resolve 不參與此過程。

命令

ave captions <ep> --stage rough --style podcast        # -> captions/rough.srt + .ass,新的 edits/rough.vN.json 帶有字幕設定
ave captions <ep> --stage rough --name s2              # 工作階段的編輯(與 --stage rough:s2 相同)-> captions/rough.s2.srt,新的 rough.s2.vN.json
ave captions <ep> --stage select:<name> --style short  # 垂直短片:卡拉 OK ASS(每個字 ),區塊位於 65% 高度
ave captions <ep> --stage final --burn [--video exports/final.mp4]   # 同時燒錄到渲染影片 -> <video>.captions.mp4
ave captions check <ep> captions/rough.srt             # 若有任何規則違反(SRT 或 ASS),則退出碼為 1 並輸出 JSON 問題
ave captions retranscribe <ep> exports/final.mp4 [--srt-out f.srt] [--asr whisper] [--diarize]

樣式:podcast(底部居中,白色,細輪廓)、short(粗體,單字高亮,安全區域避開底部 25% 及右側 120 像素(以 1080 寬度為基準))、minimal(小型,低調)。尺寸為畫布的分數,因此相同樣式在 1920x1080 和 1080x1920 都正確。在 YAML 中調整數值,或在每集的 <ep>/policy/captions.styles.yaml 中覆蓋(深度合併)。

判斷輸出

  1. 閱讀 JSON 中的 problems。類型:line_too_long、too_many_lines、orphan_line、too_short、too_long、reading_speed、overlap、empty。reading_speed 出現在被下一個提示框限制住的提示框時是真實的(說話快):告知人類,不要隱藏它。
  2. 閱讀 SRT。檢查斷句是否落在標點符號/子句處,而非短語中間(「大部分 / 的」)。如果許多斷句不當,請在 YAML 中調整 avoid_ending_with/clause_starters,而非手動編輯檔案。
  3. 查看帶有燒錄字幕的影格(在燒錄影片上使用 ave frame):文字在複雜背景上可讀,在安全區域內,不遮蓋下方三分之一處。
  4. 專有名詞:將其加入 episode.json 的 glossary 並重新執行。可以是 {"glossary": {"open ai": "OpenAI"}}(錯誤 -> 正確,支援多詞)或正確大寫的名稱列表 ["Maren", "Cloudflare"](不區分大小寫比對)。避免列出也是常見詞語的名稱。
  5. drop_fillers(嗯、啊...)預設會被聽到但不被字幕化;設定 drop_fillers: [] 可保留逐字內容。

最終渲染流程

字幕時間取決於最終剪輯。剪輯批准後:先渲染,然後對渲染影片執行 ave captions retranscribe,並將該 SRT 用作側邊檔案(完全匹配聽到的文字和時間)。ASR 引擎是 FluidAudio Parakeet;如果未建置,命令會回退到 whisper.cpp 並在 warnings 中告知。發布前請檢查重新轉錄的 SRT 中是否有誤聽的名稱。

失敗模式

  • 重新轉錄的 SRT 看起來全部小寫、無標點、提示框長達 5 秒且時間偏移數秒:這是 whisper.cpp 回退(未找到 FluidAudio;若在工作目錄中,請設定 AVE_FLUIDAUDIO)。重新執行 ave captions retranscribe ... --asr fluidaudio --srt-out <新檔案>。在真實集數上測量:whisper 中位數提前 0.55 秒(第 10 百分位 1.4 秒),Parakeet 在 0.13 秒內。

  • JSON 中的字型警告:樣式偏好的字型未安裝;它會回退到系統字型(永遠不會失敗)。將 OFL 字型放入 motion-kit/brand/fonts 中,以確保跨機器輸出一致。

  • No speech falls inside this edit's dialogue:編輯中只有填補段落或缺少轉錄;請先執行 ave transcribe。

  • 燒錄影片尺寸與文件畫布不同(例如代理檔案):ASS 會自動根據影片實際尺寸重新生成。

  • 永遠不要覆蓋現有編輯:每次執行都會建立下一個 vN。captions/ 中的字幕檔案是衍生檔案,會被取代。

檢查點

在燒錄整個最終影片或發布短片之前,暫停並向人類顯示樣式選擇和一個已燒錄字幕的影格。

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

相關技能