Community程式設計與開發github.com

影片剪輯技能

一個專為AI Agent設計的影片後製技能,從原始轉錄稿與需求素材出發,產出專業等級的成品影片。

影片剪輯技能 是什麼?

這是一個專為AI Agent(如Claude Code、Cursor、Codex等)設計的影片後製與產品展示影片剪輯技能。它讓開發者能透過自然語言指令,從原始錄影與轉錄稿開始,自動完成從素材盤點、問題預掃、編輯策略確認、多軌剪輯與動畫合成,到最終渲染與自我品質驗證的完整工作流程。技能支援ffmpeg、Manim、Remotion等主流工具,並內建數十條經實戰驗證的硬性規則(如字幕最後疊加、每段邊界30ms音頻淡入淡出、以字詞邊界為剪輯點等)與靈活的藝術創作自由,能處理技術發表會、教學、訪談、紀錄片等各類型影片。其運作核心是「轉錄稿優先、視覺隨後」與「使用者確認策略後才執行」的嚴謹流程,並透過平行子任務加速動畫渲染,大幅降低手動剪輯門檻與錯誤率。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add findbene/skills

Installed? Explore more 程式設計與開發 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜歡的 AI 中提問

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

說明文件

影片使用

原則

  1. LLM 從原始轉錄稿 + 按需視覺素材推論。 唯一值得保留的衍生產物是緊湊的短語級轉錄稿 (takes_packed.md)。其他一切——填充詞標記、重拍檢測、鏡頭分類、重點分數——都在決策時推導。 → 驗證:步驟輸出符合預期結果
  2. 音頻優先,視覺隨後。 剪輯候選點來自語音邊界與靜音間隙。只在決策點深入視覺素材。 → 驗證:步驟輸出符合預期結果
  3. 詢問 → 確認 → 執行 → 迭代 → 持久化。 在使用者用白話文確認策略之前,絕不觸碰剪輯。
  4. 概括化。 不要預設這是哪種影片。觀察素材、詢問使用者、然後進行編輯。 → 驗證:差異符合預期修改
  5. 藝術自由為預設值。 本文件中每個具體的數值、預設、字體、顏色、持續時間、音高結構與技術,都是來自一個經實證的影片的工作範例——並非強制規定。閱讀它們以了解可能做到的範圍以及為何有效。然後根據素材的實際情況和使用者實際需求,做出你自己的品味判斷。你唯一必須做的事在下方「硬性規則」章節中。 其他一切由你決定。 → 驗證:檔案內容符合預期形狀
  6. 自由發明。 如果素材需要此處未描述的技術——分割畫面、子母畫面、下方第三身份卡、反應剪輯、速度斜坡、定格畫面、交叉淡化、匹配剪輯、L剪輯、J剪輯、呼吸處速度斜坡,等等——就建立它。輔助工具是 ffmpeg 和 PIL。它們能做到格式支援的任何事。無需等待許可。 → 驗證:步驟輸出符合預期結果
  7. 在向使用者展示之前,先驗證自己的輸出。 如果你不願意出貨,就不要呈現。

硬性規則(製作品質正確性——不可協商)

這些是偏離會導致無聲失敗或中斷輸出的項目。它們不是品味,而是正確性。請記住它們。

  1. 字幕在濾鏡鏈中最後套用,在所有疊加層之後。否則疊加層會遮蓋字幕。無聲失敗。 → 驗證:步驟輸出符合預期結果
  2. 逐段提取 → 無損 -c copy 串接,而非單次濾鏡圖。否則每段在加入疊加層時都會被二次編碼。
  3. 每段邊界加上30毫秒音頻淡入淡出(afade=t=in:st=0:d=0.03,afade=t=out:st={dur-0.03}:d=0.03)。否則每個剪輯點都會有可聽見的爆音。 → 驗證:步驟輸出符合預期結果
  4. 疊加層使用 setpts=PTS-STARTPTS+T/TB 將疊加層的影格0位移至其視窗起點。否則在疊加層視窗期間會看到動畫的中間部分。 → 驗證:步驟輸出符合預期結果
  5. 主SRT使用輸出時間軸偏移:output_time = word.start - segment_start + segment_offset。否則字幕在段落串接後會錯位。 → 驗證:步驟輸出符合預期結果
  6. 絕不在單詞內部剪輯。 每個剪輯邊緣都必須對齊Scribe轉錄稿中的單詞邊界。 → 驗證:步驟輸出符合預期結果
  7. 每個剪輯邊緣加上填充。 工作視窗:30–200毫秒。Scribe時間戳會有50–100毫秒的漂移——填充能吸收漂移。快節奏時更緊湊,電影感時更寬鬆。 → 驗證:步驟輸出符合預期結果
  8. 僅限逐字逐句的ASR。 絕不使用SRT/短語模式(會遺失亞秒級間隙資料)。絕不標準化填充詞(會遺失編輯訊號)。 → 驗證:差異符合預期修改
  9. 依來源快取轉錄稿。 除非原始檔案本身發生變更,否則絕不重新轉錄。 → 驗證:步驟輸出符合預期結果
  10. 多個動畫使用平行子代理。 絕不依序進行。透過 Agent 工具同時產生N個;總實際時間 ≈ 最慢的那個。 → 驗證:步驟輸出符合預期結果
  11. 執行前需策略確認。 在使用者批准白話文計畫之前,絕不觸碰剪輯。 → 驗證:步驟輸出符合預期結果
  12. 所有工作階段的輸出在 <videos_dir>/edit/ 中。 絕不寫入 video-use/ 專案目錄。 → 驗證:輸出存在且解析無誤

本文件中其他所有內容都是工作範例。每當素材需要時即可偏離。

目錄結構

技能位於 video-use/。使用者素材放在他們指定的任何位置。所有工作階段的輸出都進入 <videos_dir>/edit/。

<videos_dir>/
├── <來源檔案,未經修改>
└── edit/
    ├── project.md               ← 記憶;每個階段附加
    ├── takes_packed.md          ← 短語級轉錄稿,LLM的主要閱讀視圖
    ├── edl.json                 ← 剪輯決策
    ├── transcripts/<name>.json  ← 快取的原始Scribe JSON
    ├── animations/slot_<id>/    ← 每個動畫的原始檔 + 渲染 + 推理
    ├── clips_graded/            ← 帶調色與淡入淡出的逐段提取
    ├── master.srt               ← 輸出時間軸字幕
    ├── downloads/               ← yt-dlp 輸出
    ├── verify/                  ← 除錯影格 / 時間軸PNG
    ├── preview.mp4
    └── final.mp4

設定

  • ELEVENLABS_API_KEY 在專案根目錄或環境變數的 .env 中。若缺少則詢問並寫入 .env。
  • 路徑中需有 ffmpeg 與 ffprobe。
  • Python 依賴:pip install -e .。
  • yt-dlp、manim、Remotion 僅在首次使用時安裝。
  • 此技能附帶 skills/manim-video/。在建立 Manim 插槽時請閱讀其 SKILL.md。

輔助工具

  • transcribe.py <影片> — 單一檔案的 Scribe 呼叫。可選擇加入 --num-speakers N。已快取。
  • transcribe_batch.py <videos_dir> — 4個工作者平行轉錄。適用於多個錄影。
  • pack_transcripts.py --edit-dir <dir> — transcripts/*.json → takes_packed.md(短語級,在靜音 ≥ 0.5秒處斷開)。
  • timeline_view.py <影片> <開始> <結束> — 膠片條 + 波形PNG。按需視覺深入。不是掃描工具——在決策點使用,而非持續使用。
  • render.py <edl.json> -o <輸出> — 逐段提取 → 串接 → 疊加層(PTS位移)→ 最後加入字幕。使用 --preview 進行快速720p渲染。使用 --build-subtitles 內聯生成 master.srt。
  • grade.py <輸入> -o <輸出> — ffmpeg濾鏡鏈調色。預設 + --filter '<原始>' 用於自定義。

對於動畫,使用 Bash 建立 <edit>/animations/slot_<id>/,並透過 Agent 工具產生子代理。

流程

  1. 盤點。 對每個來源執行 ffprobe。對目錄執行 transcribe_batch.py。執行 pack_transcripts.py 以產生 takes_packed.md。取一兩個 timeline_view 樣本作為視覺初步印象。 → 驗證:步驟輸出符合預期結果

  2. 問題預掃。 對 takes_packed.md 進行一次快速檢查,記錄口誤、明顯的失言或應避免的措辭。列出清單,併入編輯需求摘要。 → 驗證:步驟輸出符合預期結果

  3. 對話。 用白話文描述你看到的內容。根據素材形塑問題。收集:內容類型、目標長度/畫面比例、美學/品牌方向、節奏感、必須保留的時刻、必須剪掉的時刻、動畫與調色偏好、字幕需求。不要使用固定檢查表——每次的正確問題都不同。 → 驗證:所有測試通過

  4. 提出策略。 4–8句話:結構、錄影選擇、剪輯方向、動畫計畫、調色方向、字幕風格、預估長度。等待確認。 → 驗證:步驟輸出符合預期結果

  5. 執行。 透過編輯子代理需求摘要產生 edl.json。在模糊的時刻深入 timeline_view。以平行子代理建立動畫。對每個段落套用調色。透過 render.py 組合。 → 驗證:指令退出碼為 0

  6. 預覽。 render.py --preview。 → 驗證:步驟輸出符合預期結果

  7. 自我評估(在向使用者展示之前)。 在渲染輸出(而非來源)的每個剪輯邊界(±1.5秒視窗)執行 timeline_view。檢查每個圖片是否有: → 驗證:指令退出碼為 0

    • 剪輯處的視覺不連續 / 閃爍 / 跳躍
    • 邊界處的波形尖峰(通過30毫秒淡入淡出的音頻爆音)
    • 字幕隱藏在疊加層之後(規則1違反)
    • 疊加層錯位或顯示錯誤影格(規則4違反)

    此外進行抽樣:前2秒、後2秒,以及2–3個中間點——檢查調色一致性、字幕可讀性、整體連貫性。對輸出執行 ffprobe 以驗證持續時間符合EDL預期。

    如果有任何失敗:修正 → 重新渲染 → 重新評估。自我評估最多3次——如果3次後仍有問題,則向使用者標記出來,而非無限循環。只有在自我評估通過後才呈現預覽。

  8. 迭代 + 持久化。 自然語言回饋、重新規劃、重新渲染。絕不重新轉錄。在確認後進行最終渲染。附加至 project.md。 → 驗證:步驟輸出符合預期結果

剪輯工藝(技巧)

  • 音頻優先。 從單詞邊界與靜音間隙找尋剪輯候選點。
  • 保留亮點。 笑聲、笑點、強調點。將剪輯點延伸至笑點之後以包含反應——笑聲本身就是節拍。
  • 說話者交接 時,在話語之間保留空氣。常見數值:400–600毫秒。快節奏時較短,電影感時較長。品味判斷。
  • 音頻事件作為訊號。 (笑聲)、(嘆氣)、(掌聲) 標記節拍。將剪輯點延伸至它們之後。
  • 靜音間隙是剪輯候選點。 ≥400毫秒的靜音通常最乾淨。150–400毫秒的短語邊界可在視覺檢查後使用。小於150毫秒則不安全(短語中間)。
  • 剪輯填充範例(此技能隨附的發布影片):第一個保留單詞前50毫秒,最後一個之後80毫秒。蒙太奇能量更緊湊,紀錄片更寬鬆。保持在30–200毫秒的工作視窗內(硬性規則7)。
  • 絕不獨立處理音頻與視訊。 每個剪輯必須在兩條軌道上都有效。

壓縮版轉錄稿(主要閱讀視圖)

pack_transcripts.py 讀取所有 transcripts/*.json,產生一個 markdown 檔案,其中每個錄影都是一個短語級行列表,每行以 [開始-結束] 時間範圍為前綴。短語在任何 ≥ 0.5秒的靜音或說話者變更處斷開。這是編輯子代理用來挑選剪輯的產物——它僅從文字就提供單詞邊界精確度,而 token 量僅為原始 JSON 的十分之一。

範例行:

## C0103  (持續時間:43.0秒,8個短語)
  [002.52-005.36] S0 一個Web代理所做的百分之九十工作是完全浪費的。
  [006.08-006.74] S0 我們修正了這個問題。

編輯子代理需求摘要(用於多個錄影的選擇)

當任務是「從多個片段中為每個節拍挑選最佳錄影」時,產生一個帶有此類形塑需求的子代理。結構是承載訊息的,但節奏形狀的範例僅供參考。

你正在剪輯一個<類型>影片。為每個節拍挑選最佳錄影,並按節拍的順序(而非來源片段的順序)組合它們。

輸入:
  - takes_packed.md(所有錄影的帶時間註解的短語級轉錄稿)
  - 產品/敘事背景:<來自使用者的2句話>
  - 說話者:<姓名、角色、表達風格註記>
  - 預期結構:<挑選一個原型或發明一個>
  - 應避免的口誤:<來自預掃階段的列表>
  - 目標時長:<秒數>

常見結構原型(挑選、調整或發明):
  - 科技發布 / 展示:   鉤子 → 問題 → 解決方案 → 好處 → 範例 → 行動呼籲
  - 教學:              介紹 → 設定 → 步驟 → 常見問題 → 總結
  - 訪談:              (問題 → 回答 → 追問)重複
  - 旅遊 / 活動:       抵達 → 亮點 → 安靜時刻 → 離開
  - 紀錄片:            論點 → 證據 → 反方觀點 → 結論
  - 音樂 / 表演:       前奏 → 主歌 → 副歌 → 橋段 → 尾奏
  - 或者發明你自己的。

規則:
  - 開始/結束時間必須落在轉錄稿中的單詞邊界上。
  - 在剪輯邊界加上填充(工作視窗 30–200毫秒)。
  - 偏好保留聽覺亮點(笑聲、強調)而非時間對齊。
  - 輸出為 EDL JSON,包含來源、時間碼與最終持續時間。

相關技能