Communitygithub.com

/video-edit

將原始 9:16 談話片段自動化處理為高品質的 Instagram Reels:挑選最佳鏡次、剪除靜音、放大素材、去背、添加三種設計風格、動畫 UI 疊加與音效設計,並在 Reels 安全框內逐格檢查。

video-edit 是什麼?

**/video-edit** 是一個專業的 AI 代理技能,專為將原始 9:16 豎屏談話片段自動化處理為完整的、可發布的 Instagram Reels 而設計。使用者無需手動編輯,只需提供原始素材並給予反饋即可。此技能支援 macOS、Linux 和 Windows 三大平台,並透過一個自動化的 `setup.py` 腳本完成初始設置和環境檢測,確保命令在不同作業系統上的相容性。 該技能的核心工作流程包含多個自動化步驟:第一步「攝入」會根據使用者指定的檔案或預設目錄獲取最新影片;第二步「攝取」會對素材進行分析,生成佈局快照和逐字稿;第三步「挑選鏡次」會自動從多次拍攝中選出最好的段落,並生成編輯決策列表(EDL)。 在後續處理中,它會進行畫面組裝、去背、頭部位置追蹤,並同時在背景啟動子代理生成動畫 UI 疊加(如螢幕錄影、IG 個人檔案動畫等)。最後透過內建的 HyperFrames 渲染引擎進行高品質渲染,並使用腳本進行逐格退場檢查和音訊峰值分析。此技能內建三種視覺風格:動感字卡(bold)、溫暖女孩(cool girl)與暗黑編輯風(cool dude),所有處理都嚴格遵守 Reels 的安全框限制,確保最終輸出適合 Instagram 平台。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Robbert-Sombrio/VideoEdit-/tree/HEAD/.claude/skills/video-edit

在你喜歡的 AI 中提問

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

說明文件

video-edit 是做什麼的?

原始素材進,成品 Reel 出。使用者無需開啟任何編輯軟體:只需在手機上檢查成品並提供意見;每一輪調整約需 2 分鐘重新渲染。

開始之前,請務必閱讀:references/looks.md(三種風格的確切數值)、references/layout.md(安全框、放置位置、頭後字詞公式)、references/gotchas.md(已經遇到過的所有陷阱)。當腳本要求動畫插入時,請閱讀 references/overlays.md。

適用於 macOS、Linux 和 Windows。setup.py 會在每次執行開始時偵測目前機器,以下所有指令都來自該記錄,因此永遠不要猜測路徑或 shell:請參閱「本機器」小節(緊接在步驟 0 之後)。

步驟 0:首次設定(僅執行一次)

SK 是本技能的資料夾(即存放此 SKILL.md 的資料夾),以完整路徑表示。通常是 ~/.claude/skills/video-edit;在 Windows 上則是 C:/Users/<name>/.claude/skills/video-edit。

尋找 SK/config.json。

如果存在: 載入它(包含名稱、Instagram 帳號、預設風格、資料夾),然後按照下面步驟 3 的方法執行設定腳本(只需幾秒鐘:它只會檢查並在更新後修復環境),接著閱讀「本機器」小節,一旦程式印出 READY 就進入步驟 1。

如果不存在:

  1. 顯示訊息:「歡迎使用 /video-edit!讓我們幫你完成設定。大約需要 2 分鐘,只會發生一次。」
  2. 在一個訊息中詢問:
    • 你的名字(用於 Instagram 個人檔案插入)
    • 你的 Instagram 帳號(用於個人檔案插入,以及下拉你的 Reels 來製作環繞效果)
    • 預設風格:bold(動感字卡在頭後)、cool girl(暖色、黃色襯線斜體、你的 Reels 環繞你)、cool dude(暗黑編輯風、全大寫+襯線)。如果不確定,推薦 bold。
    • 你的原始素材通常存放在哪裡(預設 ~/Downloads)以及專案應該放在哪裡(預設 ~/reel-edits)
  3. 用機器上可用的 Python 執行設定腳本。依序嘗試以下指令,直到某個指令印出 STATUS 行: python3 "SK/scripts/setup.py",然後 python "SK/scripts/setup.py",然後 py -3 "SK/scripts/setup.py"。 (在 Windows 上,python3 通常是 Microsoft Store 的存根,會印出「找不到 Python」:直接嘗試下一個即可。) 如果都沒成功:表示缺少 Python。根據系統提供修復方法並停止(Windows:winget install --id Python.Python.3.12 -e,Mac:brew install python,Linux:sudo apt install python3 python3-venv)。 然後閱讀 STATUS 行:
    • 如果 ffmpeg / node / Python venv MISSING:行尾會顯示適用於「本機器」的確切修復方法(Windows 上為 winget,Mac 上為 brew,Linux 上為 apt)。將其提供給使用者並停止,直到腳本印出 READY。
    • Windows:使用者將 winget 指令貼到自己的 PowerShell 視窗中(winget 首次執行時會要求同意條款),然後完全退出 Claude Code 並重新開啟,否則找不到新的程式。
    • 腳本會自行下載 6 種音效。如果仍報告 MISSING(離線狀態),這是可選的:Reel 只會沒有音效,直到加入為止。
  4. 可選:Apify(自動下拉 Reels 和個人檔案統計):嘗試簡單的 Apify MCP 呼叫。如果未連線,說明這是可選的,並提供如何新增:
    1. 在 https://apify.com 建立免費帳戶,並從「設定 > API 與整合」複製 API 權杖。
    2. 在終端機中,貼上這一行並將 YOUR_TOKEN 替換為你的權杖: claude mcp add apify -e APIFY_TOKEN=YOUR_TOKEN -- npx -y @apify/actors-mcp-server (注意:Claude Code 會以純文字形式將權杖儲存在 ~/.claude.json 中;請將該檔案保密)。
    3. 重新開啟 Claude 並再次執行 /video-edit。 如果沒有 Apify,該技能會要求使用者將他們的 Reel 檔案放入專案中。
  5. 儲存 SK/config.json(絕對不能包含機密):
    {"name": "...", "instagram": "handle-without-@", "defaultLook": "bold", "clipsDir": "~/Downloads",
     "projectsDir": "~/reel-edits", "setupComplete": true, "setupDate": "YYYY-MM-DD"}
    
  6. 顯示訊息:「設定完成!現在執行 /video-edit...」,然後繼續。

本機器(每次執行時閱讀)

讀取 SK/.platform.json(由 setup.py 寫入)。它記錄了作業系統(os:macos、linux 或 windows)、CPU 以及此電腦的準確指令:

  • PY = 其 python 值:本技能自己的 Python(在 Mac 和 Linux 上是 .venv/bin/python,在 Windows 上是 .venv/Scripts/python.exe)。使用它執行本技能的每個 Python 腳本,永遠不要使用裸的 python3。
  • HF = PY "SK/scripts/hf.py":在任意作業系統上使用正確的 Node 啟動固定的 HyperFrames(npx --yes [email protected] ...)。沒有 nvm use,沒有 npx.cmd 問題。
  • cutout:CoreML(Apple Silicon)或 CPU(Windows、Linux、Intel Mac:沒有 GPU 加速,因此去背步驟是慢的;告知使用者,讓它在背景執行並繼續建構)。

setup.py 會在每次執行時重寫此檔案(步驟 0),因此它始終是最新的。如果檔案遺失,或 PY 不再存在:表示設定未執行或未達到 READY 狀態;請按照步驟 0.3 執行並遵循其修復方法。

一種在 zsh、bash、Git Bash 和 PowerShell 中都能使用的指令風格:

  • 使用雙引號和正斜線的完整路徑(在 Windows 上也可以):"PY" "SK/scripts/ingest.py" "<project>"。
  • 在 PowerShell(沒有 Git for Windows 的 Windows,或當你只能使用 PowerShell 工具時)前面加上 &:& "PY" "SK/scripts/ingest.py" "<project>"。
  • 每次呼叫一個指令。不要使用 &&、VAR=1 command、~ 在參數內、source、zsh。
  • ffmpeg 和 ffprobe 在所有作業系統的 PATH 中(setup 會檢查),因此一次性的 ffmpeg 指令在所有地方都相同。

硬性規則

  1. 所有內容都必須在 Reels 安全框內:頂部 220,底部 450(y 1470 以下無任何內容),側邊 35,y 1155 右側 100。
  2. 永遠不要用文字或卡片遮蓋臉部。頭後字詞至少顯示每個字母的 ~70%。
  3. 字幕必須顯示實際說的內容:修正 Whisper 對名字和關鍵詞的誤聽(「Claude」常被誤聽為「cloud」/「claws」,「skill」被誤聽為「scale」)。畫面上文字中不要使用破折號。
  4. 音效需輕柔(模板 SFX_GAIN = 0.75 的基礎音量),永遠不要比語音大聲。
  5. 每當使用其他創作者的 Reels 時,必須在畫面上標註出處 (@handle)。使用者自己的個人檔案顯示真實數字;其他任何內容(評論者、聊天記錄)必須使用通用佔位符,永遠不要使用真實人物或偽造證明。
  6. 從最終渲染而非快照證明退場。
  7. 永遠不要刪除使用者的檔案。原始檔案僅供讀取,絕不修改。

工作流程

1. 攝入

  • 素材:使用者指定的檔案,否則為 clipsDir 中最新的影片檔案。建立 <projectsDir>/<short-slug>/。 (config.json 中的 ~ 是使用者的家目錄,在 Windows 上是 C:/Users/<name>。技能腳本會對其進行展開。)
  • 風格參考連結(IG Reels、Pinterest pin):在設計任何內容之前,先下載它們並查看影格(參閱 overlays.md 了解如何獲取它們)。

2. 攝取

PY SK/scripts/ingest.py <project> <clips or folder> [--newest 5]

查看 work/sheets.jpg(佈景和角度)並閱讀 transcript.txt(每個素材的行數、帶有時間戳記的單詞、語音地圖)。

3. 挑選鏡次 -> <project>/edl.json

  • 從這些鏡次重建腳本:人們會重複一句話直到成功為止。使用最後一個完整、乾淨的鏡次,除非使用者另有指示(「更好的部分從 0:47 開始」表示從該處開始連續拍攝)。
  • 根據語音地圖決定入/出點:從第一個單詞前約 0.05-0.07 秒開始,在最後一個單詞後的靜音開始處結束。刪除段落之間的停頓;在修剪前使用 silencedetect 確認短暫暫停(Whisper 可能會在剪輯處憑空添加一個開頭詞)。
  • 如果連續兩個段落來自同一個角度:將其中一個放大(從 4K 原始素材縮放 1.3-1.9 倍,cx/cy 位於胸部)。
  • 對於不確定的單詞(關鍵詞、CTA 觸發詞):使用 medium.en 模型和包含這些名稱的提示詞重新轉錄該片段。
  • 格式:[{"id": "hook", "clip": "c1", "in": 12.66, "out": 15.72, "zoom": 1.0, "cx": 0.5, "cy": 0.5, "line": "..."}]
  • 將 EDL 以簡短表格形式(行、素材、每段的風格)發送給使用者,然後繼續進行;不要等待。

4. 組裝、轉錄、去背

PY SK/scripts/assemble.py <project>                 # aroll.mp4 乾淨 30fps CFR + segments.json 包含精確影格
PY SK/scripts/transcribe_cut.py <project> "<names and keywords in the script>"
PY SK/scripts/cutout.py <project>                   # 在背景執行;斷言去背影格數 == aroll 影格數
PY SK/scripts/headpos.py <project>                  # 去背後:每段的頭部/身體位置

一次只執行一個去背任務(約佔用 1.5 GB 記憶體)。它會每 30 秒列印一次進度行。

5. 平行插入(在 EDL 鎖定後立即開始)

針對腳本要求的每個動畫插入(螢幕上的應用程式、CTA 上的個人檔案追蹤、檔案滾動),在背景生成一個子代理,使用 references/overlays.md 中的簡報範本:固定大小、固定時長、節拍對齊單詞時間、輸出透明 webm。在主編輯建構的同時繼續進行。

6. 建構

將 SK/assets/template/ 複製到專案中(build.py、hyperframes.json、package.json、assets/fonts、assets/sfx),然後調整 build.py。這是實際 Reel 的最終建構:保留機制,重寫內容(其 docstring 列出了哪些是內容)。

  • 哪些部分使用哪種風格:整個 Reel 使用 defaultLook;如果某一行指定了風格名稱,則切換該部分的風格。
  • 環繞效果和個人檔案網格使用使用者自己的 Reels(overlays.md:使用他們帳號的 Apify 文章爬蟲,或他們放入 assets/reels/ 的檔案)。
  • 從專案資料夾中迭代:HF lint(0 個錯誤),然後 PY build.py --safe,然後 HF snapshot --at <10-20 moments> --no-end --describe false。閱讀聯繫表、修正佈局、可讀性和安全框。(HF 會自行選擇正確的 Node,因此不需要 nvm use。) 從舊版此技能複製的 build.py 會忽略 --safe:如果快照中缺少紅色導引線,則以舊方式建構該專案:SAFE=1 "PY" build.py(此類專案僅存在於 Mac 和 Linux 上)。

7. 渲染與 QA

PY build.py           # 不加 --safe
HF render -o renders/<slug>-vN.mp4 --quality high      # Apple Silicon 上 25 秒 Reel 約需 1.5-2 分鐘
PY SK/scripts/check_cuts.py <project> renders/<slug>-vN.mp4 --phone

查看 work/cut_check.jpg:每個剪輯後的影格都應清晰顯示新鏡頭。檢查音訊峰值(volumedetect,最大值約在 -2 到 -5 dB 之間),以及段落連接處的靜音。

8. 交付

發送或指向手機版本(720p)和全品質渲染。以簡單明瞭的術語報告有哪些變更,以及任何需要使用者決策的事項。將每個版本保留在 renders/ 中;在重新組裝前,將 assets/ + segments.json 備份到 work/vN/。

從實際反饋中得出的預設值(無需重新討論)

  • 透過調色和字幕來建立風格;不要用 AI 生成的房間取代背景。
  • 不要添加底片顆粒。暗色可以,但要保持主體明亮,且膚色不要偏紅。
  • 引言字幕置中在說話者前方,比固定在左邊緣更容易閱讀。
  • 頭後字詞是招牌動作,但僅限於可讀時。

由 @tenfoldmarc 建構。追蹤以獲取每日 AI 自動化建構、真實系統,而非理論。

相關技能