Communitygithub.com

gustavopascaner/edicion

編輯一段 Gus Pascaner 的原始直式影片(適用於社群媒體、醫療行銷的談話性內容),包含精準剪輯、動態圖像、動態字幕、語意 B-roll 與 Envato 音樂、自動音效設計,並輸出附帶所有素材連結的 Adobe Premiere XML 檔案(不預先渲染)。

edicion 是什麼?

這項技能專為 AI 代理(如 Claude Code、Cursor、Codex)設計,可將 Gus Pascaner 的原始直式談話影片自動化後製處理。它會先進行語音轉錄與腳本決策,刪除重複、錯誤的開場,並根據使用者偏好(如「send me a message(ito)」)選擇結尾行動呼籲(CTA)。接著,它執行精準的對話剪輯,消除所有停頓,產生無聲版本,並為每個邏輯片段創建時間碼。之後,它設計動態圖像:最多 3 個全螢幕覆蓋和 3 個疊加圖形,同步於關鍵字,並根據場景目錄採用固定的美學風格(奶油色卡片、Bricolage 字體、橙色強調)。它還整合了自動音效設計(最多 5 個 SFX,從技能庫中選取)、B-roll 和音樂(透過 Envato MCP 瀏覽,但不下載,使用預覽版),以及智慧型重新構圖與鏡頭縮放,以隱藏跳接並強調重點。最終產出一個 Adobe Premiere XML 檔案,所有素材皆以外部連結方式引用,並報告整個流程的總花費時間。此技能完全離線運作,僅依賴 Shell 命令和 Python 腳本,支援 macOS 和 Windows,並在整個過程中提供明確的進度更新。

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

在你喜歡的 AI 中提問

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

說明文件

/edicion — 含動態圖形 + Premiere XML 的編輯流程

輸入:一段原始影片(或一個包含原始影片 + 支援素材的資料夾:Kling/AI 剪輯、PNG、音樂、SFX)。 輸出:在影片所在資料夾中建立 <NAME>_EDIT/,內含 <NAME>_v1_premiere.xml、Assets/{MG,Subtitulos,SFX,Envato}、LEEME.md。不預先渲染 MP4 預覽(使用者要求以加快速度):透過步驟 5 的連絡表單進行視覺檢查。 以 rioplatense 西班牙語(voseo)與使用者溝通。在較長的步驟之間簡短通知進度。

路徑:SK = 此技能的資料夾,內含此 SKILL.md(Claude Code:~/.claude/skills/edicion;Codex:~/.codex/skills/edicion)· 腳本在 $SK/scripts · 引擎在 $SK/engine/engine.html · 目錄在 $SK/reference/escenas.md · 範例在 $SK/reference/ejemplo_jobs.js。 專案工作目錄:<carpeta>/<NAME>_EDIT/.work(持久化,允許在另一個會話中製作 v2)。 一律使用 python3 -I 執行 Python(Windows:py -3 -I)。傳遞含空格的路徑時請使用引號。支援 macOS 和 Windows:在 PowerShell 中使用 \ 的路徑,$env:VAR 取代 VAR=...,以及腳本的標誌(例如 --t=end-0.4)取代環境變數。

0 · 準備

  1. 計時器:一旦知道名稱,立即建立工作目錄並執行 python3 -I $SK/scripts/timing.py start "<work>"。腳本會自動記錄每個步驟花費的時間。
  2. 相依性:python3 -I $SK/scripts/doctor.py(Windows:py -3 -I $SK\scripts\doctor.py)。如果任何項目顯示 ✗,執行其指示的命令(通常為安裝程式:在 Mac 上為 bash $SK/scripts/install.sh,在 Windows 上為 powershell -ExecutionPolicy Bypass -File $SK\scripts\install.ps1),然後再次檢查。
  3. 資料夾清單:使用 ffprobe 檢查每個影片(時長、fps、旋轉角度、nb_frames)、PNG 大小、音訊時長。原始影片通常為 1920×1080,旋轉 90 度(= 直式 1080×1920,30 fps)。
  4. 檢查支援素材:ffmpeg -vf "fps=2,scale=150:-1,tile=10x2" → 檢視圖像。辨識每個剪輯/照片說明了什麼(鉤子、笑點、隱喻)。如果有場景,使用 scdet 偵測剪輯點。
  5. 檢視原始影片的一個影格(衣服顏色 → 字幕顏色,請參閱 escenas.md)。

1 · 轉錄

python3 -I $SK/scripts/transcribe.py "<crudo>" "<work>" → 附帶時間碼的片語列表。 Whisper 會對雜訊產生幻覺("Gracias"、"Gracias por ver el video"、"Suscríbete al canal"、"CC por…"):使用以下指令驗證這些區域以及任何疑問: python3 -I $SK/scripts/check.py "<work>" 21.9-26.3 ...(語音 ≈ −5…−25 dB;雜訊 ≈ −48…−70 dB)。

2 · 決定腳本(編輯標準)

  • 刪除重複的片語、假開頭、不完整的鏡次以及失誤。面對同一內容的多個鏡次,保留最後一個完整的。
  • 修正字幕文字(voseo:"querés"、"tenés"、"dejá";"método IDEAS";專有名詞)。
  • CTA:如果錄製了多個替代方案,預設使用 "mandame un mensaje(ito)"(使用者明確選擇)。其他的在 LEEME 中列出其原始影片時間碼。如果有一個不重複的 CTA 列表(不同的選項,沒有相同的開頭),可以全部保留為 OPCIÓN 01/02…。在最終回覆中說明你選擇了哪一個。
  • 寫入 <work>/segs.json:邏輯片段列表(每個 = 共享一個圖形的想法),每個包含從轉錄/檢查結果中取得的 [a, b, "texto"] 片語。

3 · 精準剪輯(必須)

python3 -I $SK/scripts/tighten.py "<work>" 根據語音的真實能量裁剪每個片語,並刪除 ≥ 0.25 秒的內部停頓(閱讀、側視、呼吸)。使用者明確要求無靜音剪輯:不要留下任何停頓。 建立 <work>/config.json(如下)並執行 python3 -I $SK/scripts/edl.py "<work>" → 輸出每個片段的時長和時間碼,並重新轉錄該剪輯:確認沒有遺漏或多出任何單詞。如果開頭遺失,使用 check.py 檢查並調整 segs.json。

{ "name": "SIGN_SPINNER", "version": 1, "fps": 30, "tail": 1.2,
  "src": "/abs/crudo.mp4", "edit_dir": "/abs/carpeta/SIGN_SPINNER_EDIT",
  "caption_colors": {"act":"var(--hot)","kwAct":"var(--lime)","kw":"#FFB08A"},
  "keywords": ["pacientes","scroll","correctas"],
  "broll": { "kl": {"path":"/abs/kling.mp4","frames":97,"rate":24,"w":1080,"h":1916},
             "s1": {"path":"/abs/foto.png","still":true,"w":941,"h":1672} },
  "music": {"path":"/abs/musica.wav"},
  "face": {"top": 0.22},
  "markers": [["HOOK",0],["CTA · Mandame un mensaje",17]] }

tail = 最後的額外秒數(對著鏡頭),以便閱讀最後一個圖形。 face.top = 頭頂在畫面中的高度(0–1)(在步驟 0.4 的影格中檢視):限制最大縮放以避免裁切到頭頂。music 由 envato.py use 補全(或來自影片資料夾的路徑)。可選:sfx_max(整個編輯中 SFX 的最大數量,預設為 5)、sound_design: "manual"、max_zoom。

4 · 設計動態圖形 → <work>/jobs.js

基於 reference/ejemplo_jobs.js 和 reference/escenas.md。固定風格(使用者很喜歡,不要更改):帶有單色引導句和橙色點的奶油色卡片、大寫的 Bricolage 標題、橙色強調、✓ 青檸色、帶有顆粒感和分層擦拭的全螢幕。 規則:

  • 使用者限制(必須遵守):3 個全螢幕 (fs) 和整個編輯中最多 3 個疊加動態圖形 (ov/ov2:卡片、列表、貼紙、標章…)。其餘為字幕、重新構圖和 B-roll。為那些能從視覺呈現中獲得最大效益的想法選擇 3 個 MG(正在構建的列表、一個數據、CTA),而不是重複已經說過的話。
  • 字幕 vs. MG:字幕全程運行,但當有 MG(ov、ov2 或 fs)時會自動消失以避免競爭;MG 一結束字幕就會恢復。無需採取任何動作:render.js 會處理。因此每個 MG 必須能夠獨立說明該段落的內容,且最好不超過相應想法的時長(2–5 秒)。
  • 將每個 MG 與觸發它的詞語同步(W(seg,'palabra'))。
  • 在 3 個最強的收尾處使用覆蓋臉部的全螢幕 (fs),持續 1 到 3 秒,分散放置。交替使用墨水 / 橙色 / 奶油色背景。
  • 在前 2 秒內使用強力的鉤子:上方大文字,如果有一個有趣的或視覺化的支援剪輯,讓它進入鉤子(加上貼紙和箭頭或 HUD)並配上強勁的音樂。
  • B-roll:首先使用資料夾中的素材(Kling/AI 剪輯、照片),用來說明所說的內容(隱喻:倉鼠輪、標誌、X 光)。靜止照片使用 Ken Burns 效果 [100,112]。此外,3 個 Envato 片段(步驟 4a)。在 B-roll 之上,僅使用貼紙/HUD/標章。
  • 來自影片資料夾的額外音訊(相機、腳步聲等)使用 X()。
  • SFX:自動(步驟 4b)。除非要更改音效,否則無需提供 J() 的最後一個參數。
  • 當隱喻需要時使用新場景(按照 escenas.md 將它們添加到 engine.html)。不要重複使用來自其他不適用場景的固定文字(例如 hook 顯示 MARKETING DESDE CERO)。
  • 僅在一個卡片必須放在另一個疊加層之上時(例如 tracker)使用 ov2 軌道。

4a · 語意 B-roll + Envato 音樂

Envato MCP 僅用於搜尋(不下載也不授權)。envato.py 透過 HTTP 呼叫它,因此在 Claude 和 Codex 中即使未配置 MCP 也能運作。

  1. 選擇腳本中的 3 個時刻,其中真實圖像會有所幫助:一個具體情況(診間中的患者、某人在滾動)、一個視覺隱喻或一個透過視覺更容易理解的數據。分散放置(前三分之一、中間、CTA 之前),持續 1.5–3.5 秒,絕不能在全螢幕期間或最終 CTA 中,並且在該時刻的卡片可以是貼紙/HUD 或沒有卡片的段落中。
  2. 搜尋(使用具體的英文術語,描述圖像,而非腳本中的詞語):python3 -I $SK/scripts/envato.py search "<work>" video "<terms>" --vertical [--sub Medical]。如果結果很少,在不加 --vertical 的情況下重複(橫向影片將裁切為中央)。檢視 <work>/envato/<search>.jpg 工作表(第 n 行 = 候選 #n)並選擇:真實(非庫存姿勢)、主體居中且適合 9:16、光線和顏色與原始影片相似、無文字,並且擴展所說的內容而非重複。
  3. 使用:python3 -I $SK/scripts/envato.py use "<work>" <key> <search>#<n>(將預覽註冊到 config.broll)並在 jobs.js 中使用 B('<key>', seg_origen, inicio, dur) 定位它。
  4. 音樂:python3 -I $SK/scripts/envato.py search "<work>" music "<sty>" --mood <mood> --tempo "<bpm>" [--genre <genre>](始終為純器樂)。根據影片基調和其呈現的能量曲線(平穩,無長時間下降;對於充滿活力的影片使用 Upbeat (110-140 BPM),對於溫暖的影片使用 Medium (90-110 BPM))進行選擇,並執行 envato.py use "<work>" music <search>#<n>。如果使用者在資料夾中留有音樂,則使用該音樂("music": {"path": ...})。音量在 XML 中自動設定:鉤子處大聲,語音下降低,結尾處升高(hook_gain 0.3 · bed_gain 0.08 · outro_gain 0.22 · offset = 歌曲中開始的秒數,以便進入一個有能量的部分)。
  5. 授權和下載:同時,XML 使用帶水印的預覽(前綴 PREVIEW_)。如果代理有瀏覽器且已登入 Envato 會話:顯示列表(envato.py report "<work>")並僅要求一次確認;然後,在每個連結上:Download → 為以影片名稱命名的專案授權 → 下載原始檔案(影片使用最高解析度的直式/HD;音樂使用 WAV)。如果沒有瀏覽器或沒有會話,向使用者提供連結表。然後執行 python3 -I $SK/scripts/envato.py collect "<work>"(在 ~/Downloads 中搜尋,解壓縮,複製到 Assets/Envato 並取代預覽),然後重新執行 build_xml.py。絕對不要使用來自其他素材庫的素材或跳過搜尋。

4b · 音效設計(自動,使用技能庫)

所有 SFX 都存在於 $SK/assets/sfx/<category>/<id>.wav,歸一化為 −16 LUFS,並在 catalog.json 中描述(時長、各類別的音量和 anchor = 正好落在事件上的擊中點或起點)。查看完整列表:python3 -I $SK/scripts/sfx_import.py --list。在組建 XML 時,只有使用到的 SFX 會被複製到 Assets/SFX。

類別何時使用
whoosh全螢幕進入、擦拭、強烈的卡片轉換
build在剪輯或收尾之前(reverse-whoosh;riser ≈ 6 秒,僅透過 ID 用於最大的收尾)
pop卡片、貼紙、列表項目的出現
click介面:搜尋、DM、追蹤按鈕、勾選
ding✓ 勾選、成功、想法、正面數據
error✗、刪除線、迷思、錯誤的事物(game-over 是機器人語音:幽默使用)
hit收尾、標章、衝擊 fs(bass-drop 僅透過 ID,每個影片最多 1 個)
glitch · poof某些東西出錯、損壞或消失
zoom · bounce · wind推近或放大鏡 · 幽默彈跳 · 魔法出現
foley · splash · car字面意義上的:僅當所說或所見的內容相符(書寫、關閉、拉伸、馬桶、水、汽車)

使用者規則:整個編輯中最多 5 個效果,巧妙選擇。 超過此數量會顯得很突兀。 自動(預設):收集候選時刻(每個圖形的進入及其內時刻:✓ → ding,標章/收尾 → hit,搜尋/DM/追蹤 → click,全螢幕 → whoosh,切換到 B-roll → whoosh),並僅選擇最重要的 5 個:收尾和全螢幕 > 鉤子 > CTA > 切換到 B-roll > 卡片 > 內部細節,彼此間隔至少約 6 秒(在短影片中 ≥ 3 秒)。音量較低(相對於語音約 −11 到 −14 dB)。變體交替使用。 在審查計劃時,思考每個效果是否有增益;如果沒有,則移除它(J(..., null))。少即是多:3 個恰到好處的效果勝過 5 個。 手動(覆蓋該圖形的自動設定;計入 5 個的上限):

  • 特定類別或 ID:J(..., 'pop') · J(..., 'bass-drop') · J(..., null) = 無聲。
  • 在時間線的某個秒數上放置獨立的音效:S('splash', W(4,'水')) · S('car-pass-2', t, {增益:.25, 時長:3})。 字面 SFX(foley、splash、car)永遠不是自動的:僅在它們有助於笑點或隱喻時使用 S() 放置它們。node render.js --plan 列出所有 SFX(自動的標記為 (auto))。 要添加新的音效:python3 -I $SK/scripts/sfx_import.py <file> --id <id> --cat <category> [--anchor peak|onset] [--max 4] --desc "..."(裁剪、歸一化並註冊)。

4c · 重新構圖和縮放(根據話語自動)

render.js 決定 V1 每個剪輯的縮放比例並寫入 framing.json;XML 使用關鍵影格應用它:

  • snap(快速縮放 100→118 %)用於鉤子 · punch(124 %)用於強調的片語:帶有 !、在短剪輯中帶有關鍵詞、或在標章/bigword 下方(最多每 6 秒一個) · push(慢速靠近)用於問題和 CTA · tight(114 %)/ wide(100→103 %)交替使用以掩蓋跳接(連續剪輯之間始終 ≥ 8 % 的差異) · 被 fs 或 b-roll 覆蓋的剪輯保持 wide。
  • 最大縮放來自 config.face.top(不裁切頭部);預設為 124 %。
  • 要強制一個構圖:在 jobs.js 中使用 F(seg, 'punch') 或 F.clip(i, 'wide')。

5 · 創意指導、測試和渲染

  1. node $SK/scripts/render.js "<work>" --plan(列出圖形、SFX 和構圖及其時間碼;偵測未找到的詞語)。
  2. 創意指導:node $SK/scripts/director.js "<work>" → 報告(direction.md)+ 時間線(timeline.png,檢視它)。檢查是否有任何衝突:超過 3 個 MG 或 3 個全螢幕、MG 下方可見的字幕、同時出現兩個卡片、卡片遮擋 B-roll、B-roll 覆蓋全螢幕、兩個 SFX 重疊、SFX 距離太近(< 6 秒)、音訊剪輯交叉、構圖衝突(punch 覆蓋 push)。解決所有衝突(調整時間、移除 SFX、更改圖形類型)。之後,如果已選擇 Envato 素材,調整 direction.md 的 B-roll 部分:在每個 B-roll 片段附近添加一個帶有 T 秒圖示(🔶)的註釋,表示 B-roll 何時開始和結束,並驗證它不會與同一片段中的其他 MG 或字幕重疊。
  3. 測試:node $SK/scripts/render.js "<work>"(僅建立 XML)。python3 -I $SK/scripts/tighten.py "<work>" --frames 驗證剪輯點。如果可能,最後再次執行 director.js — 可以對最終 XML 進行最後一次自動檢查。
  4. 總結:python3 -I $SK/scripts/timing.py stop "<work>"(顯示總時間)並向使用者回報所用的總時間以及 LEEME.md 中可能包含的關鍵決策。

相關技能