Communitygithub.com

MostaDaoud/video-reel-studio

將一句話轉為完整直式影片的協調器:撰寫brief、選擇模式(談話Reels、蒙太奇、Podcast、動畫影片、網頁/App展示、僅封面),並端到端執行影片廣告編輯流程,同時委派全新的阿拉伯語字幕與視覺審查,並在自動閘道失敗時拒絕交付(來源、剪輯、字幕、影格、音量、真實峰值、安全區、封裝)。

video-reel-studio 是什麼?

Video Reel Studio 是一個用於 Claude Code、Cursor、Codex 和 Gemini CLI 等 AI 代理的高階協調技能。它不會直接繪製或編輯影片,而是作為監督者,協調五個專門的子技能(video-ad-editor、montage-video、podcast-video、motion-video、thumbnail-video)以將單一的用戶意圖(例如「把這影片變成 Reel」)轉化為一個完成的、經過品質驗證的垂直影片。其核心是一系列強制性的「閘道」(G-2 到 G8),在交付前檢查環境、時間碼、字幕、畫面、音量、安全區域和封裝;只要有任何阻擋閘道開啟,就拒絕交付。此技能支援 Windows 和 macOS,並根據平台自動調整命令和路徑(例如 macOS 用 python3、Windows 用 python)。它還會引導使用者選擇品牌色彩、AI 模型(根據模型能力調整場景複雜度),並對每個請求強制執行嚴格的約束:字幕必須忠於口語內容、數字只能來自提供的來源、顏色只能來自主題檔案,且最終輸出的檔案尺寸、LUFS 和真實峰值都必須符合規範。

相容平台✓Claude Code✓Codex CLI✓Cursor✓Gemini CLI✓OpenCode
npx skills add https://github.com/MostaDaoud/video-reel-studio/tree/HEAD/skill/video-reel-studio

在你喜歡的 AI 中提問

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

說明文件

Video Reel Studio — 單一監督,嚴格的閘道

這個技能不負責繪製或剪輯。它是一個監督多個現有技能的協調者:

技能協調者用它來…
video-ad-editor所有腳本 (scripts/)、談話 Reels、字幕、封面
montage-video無對話的節奏式片段剪輯
podcast-video雙攝影機 → Reels 或 16:9 完整集數
motion-video從文字產生的動畫影片(motion/ 引擎)
thumbnail-videoReel 封面和 YouTube 縮圖

腳本根目錄:.opencode/skills/video-ad-editor/ — 請傳遞完整路徑。

平台:Windows 和 Mac

這個技能旨在同時適用於兩個平台。唯一的差異在於如何呼叫工具,而非邏輯本身:

WindowsMac
Pythonpythonpython3
.sh 腳本& "C:\Program Files\Git\bin\bash.exe" … (⛔ 不是一般的 bash = WSL)bash …
ChromeC:\Program Files\Google\Chrome\Application\chrome.exe/Applications/Google Chrome.app/Contents/MacOS/Google Chrome
3DGL=gpu (ANGLE/D3D11)Metal 自動
路徑D:/work/x 或 D:\work\x/Users/you/work/x

開始任何工作前,在會話中執行一次:

python scripts/preflight.py        # Mac: python3

它會檢查:Python、ffmpeg/ffprobe、node、bash、Chrome、numpy/scipy、相關技能、字型和品牌資料夾 — 然後為每個系統印出正確的安裝指令(Windows 用 winget,Mac 用 brew)。閘道 G-2。

腳本本身會自動偵測平台:_vision.py 在 Mac 上選擇 Apple 工具,在 Windows 上選擇開源替代方案; _chrome_flags.js 在 Mac 上選擇 Metal,在其他平台上選擇 SwiftShader;31_device3d.js 和 motion/render.js 會在兩個系統的路徑中搜尋 Chrome。

合約:一句話 → 完成檔案

使用者給你一個檔案或連結以及一句話。你掌控所有步驟。不要給他們指令,也不要問 任何你可以自己檢查的事情。只問一個問題,當決定是品味問題而非技術問題時 (哪個角度、哪個鉤子、刪除哪句話)。

埃及阿拉伯語指令 — 如果他們說了這些,這就是模式

如果他們說…模式
「把這影片產出」·「把它變成 Reel」·「剪掉空白片段」·「給我看字幕」talking-reel
「把這些片段拼成 montage」·「把它們對音樂節拍組合」montage
「從這集節目做 Reels」·「我有雙攝影機」·「完整集數」podcast
「從這段文字做動畫影片」·「用動畫解釋」·「動態圖形」motion
「用影片解釋這個網站」·「App 展示」·「這個連結」web-demo
「做封面」·「YouTube 縮圖」·「縮圖」cover-only
「我想自己編輯」·「在 CapCut 中打開」·「打開工作室」基礎模式 + CapCut / Studio

他們不需要指定模式。如果句子包含動詞 + 檔案,你從上面的表格推斷模式並繼續。

快速管線

#階段產出閘道
-2環境檢查:preflight.py (Windows/Mac)工具報告G-2
-1品牌識別(選擇性):先問 — 已儲存 / 新建 / 預設theme.json + brand.mdG-1
0讀取請求並寫入 brief.jsonpromise + mode + lengthG0
1來源:複製、檢查影格、亮度src.movG1
2剪輯 + 轉錄 + 修正 + 字幕cut.json a.json caps.jsonG2 · G3 · G3b
3設計:動畫、場景、預覽scenes*.js + sheet.jpgG4b
4完整渲染out/ = 時長×30G4
5編碼 + 母版 + 翻譯ad-master.mp4 .srtG5
6封面 + 縮圖 + 行動裝置預覽cover.jpg …G6 · G6b
7交付報告gates.mdG8

詳細資訊和精確指令 ← references/pipeline.md。 角色以及何時委派給代理 ← references/roles.md。 每個閘道的條件和限制 ← references/gates.md。 藝術方向: 在設計第一個場景之前,從 styles/pack.json (10 種) 中選擇一種風格 — python scripts/style_pack.py apply "<work>" <id> — 風格控制動畫和紋理,品牌控制顏色 ← references/styles-adapted.md。

-1a) 代理和模型 — 在品牌之前

ai.json 在任何事情之前寫入:代理 從環境中已知(你在它內部運行),所以不要問。 如果模型不明確,只問一個問題:

「你要用哪個模型?只要名字 — 這樣我才能調整場景數量和審查流程。」

回答即時影響
模型強大 + vision6–8 個場景、深度時刻、由子代理進行視覺審查
強大但無 vision4–6 個場景、僅數字審查 + 使用者對 sheet.jpg 的人工檢查
快速/便宜3–5 個來自固定模板的場景、一次預覽、每個閘道一次
小上下文分段轉錄、不要一次讀取整個文字
  • 代理:opencode · claude-code · codex · cursor · gemini-cli — 而 preflight.py 將專案標記與 ai.json 進行比較。
  • 如果功能未知,保持為 null → 技能採取保守方法(數字 + 人眼)。
  • 詳細資訊和完整矩陣 ← references/ai-fit.md。

-1b) 品牌識別 — 選擇性入職(不要強迫)

對於第一個影片請求,在任何腳本之前,只問一個問題:

「開始之前:我們要一次性設定你的品牌(5 分鐘:顏色、字體、語氣、禁用內容), 還是使用已儲存的品牌,或者繼續使用預設值稍後再改?」

他們回覆你做什麼
「有已儲存的品牌」python scripts/onboard.py list ← 列出名稱 ← apply <work> <slug>
「設定它」七個問題 ← new ← card ← 顯示卡片 ← apply
「用預設值」在同一專案中不再問;預設值 #0B0C0C · #F4F2EE · #19C3AE · Cairo · chunk
「我很忙」開始影片,並在第一次交付後提供品牌設定
  • 七個問題(名稱、帳號、受眾、語氣、行動呼籲、顏色、禁用內容)← references/onboarding.md。
  • 有圖片/標誌?使用 scripts/00_theme_refs.py 提取色板,而不是猜測。
  • G-1: ink/bg 對比度 ≥ 4.5,acc/bg ≥ 3,onAcc/acc ≥ 4.5。如果失敗,onboard.py new 將拒絕儲存。
  • 品牌儲存在 ~/.config/opencode/brands/<slug>.json 並在之後的每個專案中使用。

⛔ 未經詢問不要開始入職流程,不要因為顏色問題而停止專案,也不要問超過 7 個問題。

G0 — 簡報(不要跳過)

在任何腳本之前寫入 <work>/brief.json。範本:assets/brief.template.json。

  • promise = 觀眾在前 3 秒理解的內容。一句話。如果你無法寫出來,代表你沒理解請求。
  • mode 從六個中選擇。如果請求暗示兩種模式,選擇最接近使用者意圖的,並用一句話告訴他們你理解的情況。
  • length_s = 實際的範圍(Reel 45–90 秒;較長的片段 → 多個 Reels,不是一個)。
  • must_keep = 不應被刪除或更改的名稱和數字。

閘道 G0:三個項目都存在嗎?如果沒有,問一個問題然後繼續。

領導層:誰做決定

你領導。不要等待每個步驟的許可,也不要將工作交給代理來管理你。

  • 自行檢查所有技術事項:時長、影格、音訊、大小、安全區域。
  • 僅在判斷受益於乾淨上下文時才委派判斷:阿拉伯語審查、圖片審查。
  • 代理只會閱讀和判斷 — 不會寫或繪製。提示範本在 references/roles.md 中。

閘道:預設失敗關閉

python scripts/gate_runner.py "<work>" --safe
  • 它會列印一個表格,寫入 gates.json + gates.md,並在存在阻擋者時以代碼 1 退出。
  • 在有任何阻擋閘道開啟時不交付。 沒有「試試看再說」。
  • 每個閘道最多兩次嘗試。 第三次 = 原因不明 ← 停止並向用戶詢問證據(截圖 + 閘道文字)。
  • 禁止停用閘道、提高 --maxmb 或忽略「因為它很小」的警告。這是偽造。

嚴格規則

  1. 字幕是其話語的真實副本 — 不要發明、不要無故刪除任何單詞,且修正必須保持單詞計數。
  2. 安全區域優先 — y 0–150 或 y 1620–1920 中無文字,也不在右側按鈕列中。
  3. 顏色僅來自 theme.json;未經其同意,對其圖像進行零顏色調整。
  4. 螢幕上的每個數字都來自 facts.md 或其話語 — 不要自己發明數字。
  5. 不發布、不排程。 交付是檔案。
  6. 強制性封面 — 第一影格,且在手機尺寸下可讀 (cover_phone.jpg)。
  7. 大小和響度是品質的一部分:≤29 MB,−14 LUFS,峰值 ≤ −1.0 dBTP。

操作模式

  • 談話 Reel(預設):talking-reel — 完整影片全螢幕,圖形在頂部條帶或後面。
  • 無對話片段:montage — 需要 10–20 個片段 + 音軌。不重複使用鏡頭。
  • Podcast:podcast — 雙攝影機。書面鉤子是強制性的。
  • 動畫影片:motion — 預設無旁白 (audio.py --no-bed --lufs -20)。3D 需要 GL=gpu。
  • 網站/應用程式:web-demo — 27_web_capture.js 然後 30_demo.js(或 31_device3d.js)。
  • 僅封面:cover-only。

交付報告

兩行,然後是一個簡短表格:

時長 · 剪輯數 · 大小 · 響度 · 峰值
閘道 7/7 ✅(或可接受的警告 + 原因)
檔案:mp4 · srt · txt · cover.jpg
未發布任何內容。

Token 經濟

  • 每個階段一個命令,而不是 41 個分散的命令。
  • 一個 contact sheet (sheet.jpg) 而不是 6 張圖片。
  • 不要讀取整個檔案:grep -n 查找函數,tail -5 查看日誌。
  • 僅在需要時才查閱參考資料 — 這個檔案 + 一個適合當前階段的參考資料。
  • 僅在沒有其他方式回答視覺問題時才顯示圖片。

預期失敗(不要驚訝)

症狀原因解決方案
UnicodeEncodeError在 Windows 上未使用 utf-8 寫入設定 PYTHONUTF8=1(腳本已修復,但不要依賴)
3D 掛起Chrome 路徑 /work 路徑CHROME 設定正確 + GL=gpu(已在 31_device3d 中修復)
字幕延遲/截斷字幕後剪輯發生變化重新執行 02_captions.py 然後 G3
壓縮後峰值高AAC 提升峰值在封面路徑中使用 alimiter 或 06c_loudfix.sh
轉錄產生幻覺方言/英語術語02a_whisper_check.py --fix 然後以固定單詞計數進行修正

相關技能