Communitygithub.com

video-breakdown

將參考影片逐鏡頭拆解,命名其使用的技術,讓使用者能重現類似效果。測量剪輯、轉場、攝影機運鏡、文字樣式及音效等細節。

video-breakdown 是什麼?

video-breakdown 是一款 AI 代理技能,能夠將任何參考影片(透過本機檔案)逐鏡頭拆解,並精確命名其中的剪輯技巧。它利用 `analyze.py` 等 Python 腳本測量像素與音訊取樣,偵測轉場類型(如淡入淡出、擦拭、形狀遮罩)、攝影機運鏡(如急推、搖晃、變速)、文字樣式(包括漸層、外框、發光與免費相似字型),以及節奏與音效落點。它深度整合 EditAtlas 資料庫,透過 MCP 或 REST API 搜尋比對技術名稱與音效 ID,最終產出包含逐鏡頭報告與重現步驟的 `breakdown.md` 檔案。此技能適合用於逆向工程剪輯或回應「這用了什麼效果?」等問題,支援 Claude Code、Cursor、Codex 等平台。

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

在你喜歡的 AI 中提問

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

說明文件

影片拆解:從喜歡的影片到命名技術與製作指南

這是 video-breakdown 0.4.1 版。

使用者有一段喜歡的影片,但無法說出其中使用了哪些技術。你要逐鏡頭為他們提供:每個轉場、攝影機運鏡、文字風格與音效的正確名稱,對應的 EditAtlas 技術,以及用他們自己的素材重現類似效果的步驟。

以下三點在整個過程中必須遵守:

  • 數字是線索,影格是證據。analyze.py 測量像素並取樣。它可能會把急推(crash zoom)誤判為銜接(join)、把圓形遮罩(iris)誤判為黑場淡出(dip to black)、把老電影的閃爍誤判為切換(cut)。你命名的每個元素都必須來自你用讀取工具打開的影格。請說明哪些元素是僅透過測量得到的。
  • 你無法聽到聲音。音訊數字只能告訴你某處發生了突發事件、音量大小、亮度高低以及節奏速度。它們無法告訴你那是什麼聲音。對於尚未識別的瞬態音,切勿直接寫「咻」;請寫「在 4.9 秒處,靠近縮放處,有短而亮的撞擊聲」。
  • 切勿編造。只處理使用者給你的檔案。報告中的每個技術代碼(technique slug)和音效 ID 都必須來自本次對話中的 EditAtlas 搜尋或取得呼叫。如果找不到匹配的,請如實說明。

腳本位於 scripts/ 目錄中(需 Python 3.9+、numpy、Pillow、FFmpeg 及 ffprobe 位於 PATH 環境變數中)。請在你自己建立的工作目錄 (work/) 中執行,使用技能資料夾的路徑;切勿寫入使用者的資料夾。

python SKILL/scripts/analyze.py VIDEO --out work/bd                      # breakdown.json + sheets
python SKILL/scripts/frames.py VIDEO --at 6.8 --span 0.6 --step 0.04 --out work/look   # 產生銜接部分的每一影格
python SKILL/scripts/frames.py VIDEO --at 7.9 --crop 0,60,100,40 --out work/look      # 畫面下方 40%,用於讀取文字
python SKILL/scripts/text_look.py VIDEO --at 3.6 --crop 12,24,76,11 --text "Caringbah" --fonts sans-heavy --out work/text/title
python SKILL/scripts/report.py work/bd/breakdown.json work/bd/notes.json --out result/breakdown.md --check-api

當輸入缺失時

  • 無檔案,只有連結(TikTok、Reels、YouTube):請使用者下載影片並提供檔案路徑。此技能不從平台擷取內容。螢幕錄製的影片也可以接受。
  • 完全沒有影片:請使用者提供。不要描述這類影片「通常」有什麼。
  • 影片很長(超過 5 分鐘):analyze.py 只會讀取前 300 秒。請詢問哪部分重要,或傳遞 --max-seconds 參數。

拆解的目的是為了學習影片是如何剪輯的。製作指南應使用使用者自己的素材;請勿建議重複使用參考影片的素材、音樂或角色。

1. 測量

執行 analyze.py。它會列印摘要並寫入 breakdown.json,其中包含:

部分內容
format尺寸、形狀 (9:16, 16:9)、fps、時長
pacing鏡頭數、每分鐘銜接次數、中位數/最短/最長鏡頭長度、前 3 秒內的銜接次數、規律性
joins每個鏡頭切換:時間、長度、類型 (cut、cross-dissolve、dip to black、white flash、bright flash、帶有邊界來源方向的 wipe、帶有輪廓和邊界的 shape wipe(平面形狀在畫面上生長)、帶有方向的 push or slide、zoom transition、blur transition、snap zoom or punch-in、jump cut、gradual (other))
shots每個鏡頭:測量到的攝影機動作 (push in、fast zoom、pan、shake、hold、speed change)、色調 (dark、warm、black and white、black bars、dark corners),以及對於靜止鏡頭:元素出現的時間、停留時間、消失方式
overlaysevents:畫面中某一區域變化而其他區域保持不變的時刻(文字、貼紙、圖形出現或消失);persistent:跨銜接持續存在的區域(標誌、邊框、字幕欄)
audio音量、類似語音的比率、候選節奏以及剪輯是否落在節拍上、瞬態音(突發聲音)及最近的畫面事件、漸強音(進入某個時刻的上升音)

每個數字的含義及其可能出錯的地方:請參閱 references/reading-the-numbers.md。請在每次進行第一次拆解前閱讀此文件。

2. 觀察

按以下順序使用讀取工具開啟:

  1. overview.png:整個影片以 24 個或更多影格呈現(短片每 0.15 秒一個,長片每秒一個或更少)。先了解故事和風格,以及每個文字出現的位置。
  2. shots_NN.png:每個鏡頭的第一、中間和最後一個影格。檢查每個鏡頭是否真實:急推、閃爍或閃爍可能會將一個鏡頭分成兩個;來源素材中的淡入淡出可能看起來像一個銜接。
  3. joins_NN.png:每個非單純切換的銜接的六個相鄰影格。根據這些影格命名轉場。
  4. events.png:每個疊加事件前後的影格。這裡是字幕、貼紙和圖形出現的地方。

如果不確定,請使用 frames.py:--step 0.04(在 25 fps 下每個影格)橫跨一個銜接以查看其形狀,--crop 讀取小文字或查看單詞如何進入(彈出、彈跳、滑入、打字機效果),--times 並排顯示幾個時刻。正常情況下需要兩到三個近距離觀察;特效較多的短片可能需要更多。

對比格式和畫面。一個 9:16 的影片,其鏡頭看起來像是從更寬的素材(電影、Podcast、遊戲:臉部和物體被裁剪在兩側,每個鏡頭中畫框的位置不同)中裁剪出來的,這是重新取景:請說明,並搜尋 reframe to vertical。帶有黑邊的寬素材則是信箱模式或柱狀模式。

對於每個元素,在尋找名稱之前,先用簡單詞語描述你看到的:「舊畫面被壓縮成一條水平線,而新畫面顯示在它後面」,而不是「擠壓」。

螢幕上的文字

文字是人們最先複製的東西,也是重製最容易出錯的地方:使用了錯誤的字體、在原始影片有漸層的地方使用純色、將文字放在人物前面而原始影片放在後面。對於每個非單純字幕的文字,請找出以下五點:

  1. 圖層。 人物或物體是否遮蓋了字母的一部分(頭髮遮住單詞底部,手在前面)?那麼文字是在主體後面:compositing-text-behind-object。查看它們重疊區域的裁剪。檢查每個標題,而不只是第一個:一個影片可能將幾個單詞放在主體後面。
  2. 入場。 frames.py --at <出現時間> --span 0.6 --step 0.04 --crop ...:帶有動態模糊滑入(從哪一側)、從上方落下、彈出(縮放)、淡入、打字機效果、逐詞或一次全部出現,以及單詞落地後是否再次移動。疊加事件會錯過在攝影機移動時出現的文字;使用總覽來找到這些時間點。
  3. 顏色。 在文字完全顯示且靜止時對其裁剪區域執行 text_look.py。裁剪一行文字,在每一側留一點背景。它會列印填充色(純色,或帶有方向和十六進制顏色停止點的漸層)、外框或偏移陰影、字母周圍的發光或黑暗光暈,以及字母的傾斜程度。打開 look.png:「被視為文字」區域必須只顯示字母,沒有其他東西。如果它捕捉到了臉部或遺漏了漸層的一部分,請使用 --text-clusters 和屬於文字的叢集編號重新執行(其下方的面板會顯示每個叢集)。每個單詞可以有自己的顏色:分別測量每個標題。
  4. 字體。 先描述字母:無襯線、襯線或手寫體;對於手寫體:均勻筆畫(刷子、記號筆、隨意)或粗下筆與細上筆(正式、書法);粗細;直立或傾斜;大寫或小寫;寬或窄。text_look.py 會列印筆畫粗細和對比度,這可以區分書法手寫體(對比度 2.2 或更高)和刷子手寫體。然後添加 --text "<與顯示完全相同的文字>" --fonts <組> (--list-fonts 顯示它們),選擇一個或兩個匹配的組,並用肉眼比較字母:大寫、a、g、t 的形狀、連筆。匹配數字對於無襯線和襯線字體有幫助,但對於手寫體較弱。命名一個或兩個免費的相似字體,並說明它們是相似字體,不是創作者使用的字體。
  5. 位置和大小: 文字所在位置、相對於畫面的高度比例,以及停留時間。

設計好的動畫

對於標誌、標題、圖表和圖形影片,時機是讓它們看起來完整且重製時最容易出錯的地方。閱讀每個鏡頭的 timing(comes in over 0.7 s, fast, then settles; still for 71 % of the shot; leaves over 0.8 s, slow, then speeds up)和 format.loops,在影格中檢查它們,並將數字放入元素的 seen 或 note 以及製作指南中。在純色背景上,一個放大或出現的圖形可以被報告為銜接(jump cut、snap zoom、zoom transition):如果背景保持不變,那就是元素的入場。詳情請參閱 references/reading-the-numbers.md 中的「設計好的動畫」部分。

3. 使用 EditAtlas 命名

對於每個元素,請根據結果進行搜尋,而不是根據猜測的名稱:

  • 使用 search_techniques,並使用簡單描述(「圓圈閉合變黑然後打開」、「單詞一次一個彈入」、「突然快速縮放進入主體」)。使用 category 進行縮小範圍(transition, captions, motion, vfx, color)。每個分析器標籤適用的搜尋詞位於 references/reading-the-numbers.md 中。
  • 對最佳的一個或兩個結果使用 get_technique,並保留描述與你看到的內容相符的那個。精確複製其 slug 和 name。將匹配度標記為 exact、close(想法相同,細節有差異)或 partial。
  • 音效:使用 search_sfx,根據該時刻的需求進行搜尋(文字出現用 pop,撞擊前的上升音用 riser,推動時用 whoosh)。參考中的聲音你無從得知;你是在為相同時刻建議一個 EditAtlas 音效,所以要這樣說明。
  • 根據影片類型(short_vertical、product_ad、food_review 等)使用 get_workflow 來獲取 EditAtlas 推薦的節奏和結構;並與你測量的結果進行比較。

如果沒有 MCP,REST API 可以回應相同的搜尋:https://edit.trysometh.ing/api/v1/techniques?q=... 和 /api/v1/sfx?q=...。

單純的切換、說話段落或素材本身不需要技術:使用 gap 來說明。當 EditAtlas 中沒有任何內容符合真實效果時,請在 gap 中寫下你搜尋過的內容;這會告訴 EditAtlas 缺少什麼。

4. 撰寫筆記和報告

在 breakdown.json 旁邊寫入 notes.json(格式和範例:references/notes-format.md):每個鏡頭中顯示的內容,每個元素及其時間、簡單描述、證據和 EditAtlas 技術或音效,測量錯誤的修正,製作指南,以及你未檢查的內容。將 lang 設定為使用者的語言(vi 或 en)。

執行 report.py ... --check-api。它會拒絕跳過某個鏡頭、未為元素提供技術或原因、或未說明未檢查內容的筆記。使用 --check-api 時,它會確認每個代碼和音效 ID 都存在於 EditAtlas 上,並且名稱相符。修正它列出的問題並重新執行。

交付

首先,進行版本檢查。 如果 EditAtlas MCP 已連接,請呼叫 get_skill 而不指定名稱。如果它列出 video-breakdown 0.4.1 以上的版本,你回覆的第一行應說明存在更新版本及其更新方式(在 Claude Code 中:/plugin,然後 Marketplaces,editatlas-skills,Update marketplace;在其他地方使用 get_skill 搭配名稱 video-breakdown 會提供步驟)。如果沒有 MCP,則跳過此步驟。

以使用者的語言提供:

  1. 兩到三句話:這屬於哪種剪輯類型以及它的成功之處(節奏、一個標誌性效果)。
  2. 按時間順序排列的元素及其名稱和連結:報告的表格,或其主要的行。
  3. 製作指南:使用他們自己素材的逐步步驟,每個技術一個步驟。主動提出可以進行剪輯,這需要從 get_workflow 開始;對於音效,可以使用 sound-design 技能(get_skill)。
  4. 測量的內容、你觀察的內容以及未知的內容:創作者實際使用的字體(你提供了免費的相似字體)、精確的緩入緩出曲線(timing 提供持續時間和形狀,而不是曲線)、每個聲音的實際內容、素材是拍攝的還是生成的。
  5. 報告檔案(result/breakdown.md)。

交付後,詢問名稱和技術是否正確,並在該工具可用時使用 send_feedback 發送答案。

參考資料

  • references/reading-the-numbers.md:每個測量值、已知錯誤以及每個標籤的搜尋詞。請在每次進行第一次拆解前閱讀。
  • references/notes-format.md:notes.json 的欄位及完整範例。請在撰寫筆記前閱讀。

Individual skills in this repo

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

EditAtlas/sound-design

Sound-design a finished video with real sound effects from the EditAtlas library (2,278 described sounds, public, downloadable from GitHub with SHA-256 checks). Finds the moments in the picture, lets you look at them as frame sheets, picks sounds by description and measured numbers, places each on its exact frame at a level set by its role, keeps or replaces the film's own music and voice, renders a new MP4 plus a separate SFX WAV, and checks the result in numbers (sync, pace, holes, loudness, m

video-check

Check a finished video before the person sees it or posts it, then fix what is wrong. Measures the file (size, frame rate, pixel format, length), picture faults (black or white frames, frozen stretches, one-frame glitches, stutter, a loop that jumps or repeats a frame), and sound (loudness, clipping, silences, audio that ends early or stops abruptly); makes frame sheets at phone size with the caption-safe area marked; then a reviewer who has not seen your plan looks at the sheets and lists problems with a time and a fix. Fix the worst three, render again, check again, at most three rounds. Use it after rendering any edit, and when someone asks to check a video before sending or posting it, says "kiểm tra video trước khi gửi", "xem lại bản dựng", "video này có lỗi gì không", "review my edit", "QA this render". Works on a local file. Not for breaking down someone else's video (use video-breakdown) or for judging footage the person has not edited.

相關技能