Communitygithub.com

FnSGit/video-craft-skill

將任意主題製成影片,依內容形態自動選擇渲染後端:黑底 MG 概念科普(Remotion)、連續公式推導證明(Manim)、真實終端操作教學(asciinema,V2)、產品宣傳短片(Hyperframes,V3)。內含渲染器無關的公共層、路由決策樹、可插拔後端及多代理建置/QC 協定。

video-craft-skill 是什麼?

video-craft 是一個多代理 AI 技能,能將任意主題自動轉譯成有旁白的解說影片。其核心特色是根據內容形態(如概念講解、公式推導、終端操作教學或產品宣傳)智慧選擇最適合的渲染後端:Remotion 適合動態圖形概念科普、Manim 適合連續公式推導、asciinema 用於真實終端錄影教學(V2)、Hyperframes 用於產品宣傳短片(V3)。該技能包含一套渲染器無關的公共工作流程,涵蓋調研、口播文案原則、TTS 配音與時間軸建置、分鏡令牌系統以及跨後端的讀幀 QC 腳本,並透過路由決策樹實現後端自動判定。它支援 Claude Code、Cursor、Codex 等代理協作平台,採用 8 階段流程與 4 個關鍵確認點,確保使用者能夠在主體渲染前先審視樣片並調整風格,從而降低後期修改成本。此外,技能內建硬性原則(原創、事實可溯源、貫穿範例、定稿後不更動詞彙),並為不同後端提供可調的 QC 閾值與詳細的目錄結構,適合開發者與 AI 代理協同產出高品質教學或宣傳影片。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add FnSGit/video-craft-skill

在你喜歡的 AI 中提問

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

說明文件

video-craft

將任意主題製成影片。先依內容形態選渲染後端,再走共用的生產流水線。

前身是 anything2explainer(只做 Remotion 科普片)。本次拆分把渲染器無關的資產抽到 core/,把渲染相關的隔離到 backends/,新增 routing/ 做後端選擇。

何時用

  • 使用者給出主題要求一條講解/推導/教學/宣傳影片;或給一篇文章要求改成影片。
  • 不適用:複刻某條現有影片、真人口播、實拍為主的片子。

四個確認點(必須停下來等使用者回話)

  1. 時長與語言 + 後端推薦(階段 1 派調研的同時問):把 routing/router.md 的判定結果 和時長表一起給使用者,一問兩答。使用者否決推薦就照他的來。
  2. 解說詞定稿(階段 2,配音之前):全文 + 章節劃分 + 字數/預估時長,問「這版文案可以嗎」。 章名與 HUD 小節名單獨列一行。多章片再把每個章界的兩句並排列出。定稿後幀號全變,別改詞。
  3. 配音(跑 tts_build.py 之前):預設中文 edge-tts 雲希、英文 kokoro am_liam。 有偏好就讓使用者自備 wav 放 script/audio.wav,手填時間軸。
  4. 前 30 秒樣片(階段 5a,派其餘各組之前):問「風格 / 字號 / 配音語速 / 節奏可以嗎」。 在這裡改是 1 個組的成本,等整片渲完再改是全部組。

流程(8 階段)

階段 0  建專案      → 按路由結果調對應 backend 的 new_project.sh
階段 1  調研        → core/research-brief.md(並行 1 agent)      【確認點 1】
階段 2  解說詞+時間軸 → core/narration-guidance.md + tts_build.py 【確認點 2、3】
階段 3  分鏡        → 按後端的格式寫,core/render_storyboard.py
階段 4  圖元        → 按後端補(remotion: ui.tsx / manim: figures.py)
階段 5a 打樣        → 先做第 1 組,preview.sh 出前 30 秒          【確認點 4】
階段 5b 並行構建    → 各組 1 agent,用後端的 agent-build-rules.md
階段 6  渲染        → 後端的 render.sh → mp4 + fin_frames/
階段 7  QC 與修復   → core/motion_check.py + frame_metrics.py + 後端的 qc-rules
階段 8  交付        → 交付說明.md(記錄所用後端與判定理由)

路由:先選後端

必讀 routing/router.md。 簡短版:

內容形態後端狀態
連續公式推導 / 證明 / 符號變形manim✅ V1
概念科普講解(X 是什麼 / 怎麼運作 / 為什麼)remotion✅ V1
真終端操作教學(安裝 / 配置 / 命令執行)terminal⏸ V2
產品宣傳 / 社交短影片 / PR walkthroughhyperframes⏸ V3

判定不是看題材名,是看解說是否在連續操作符號: 「傅立葉變換在幹什麼」→ remotion(講直覺);「從傅立葉級數推導傅立葉變換」→ manim(連續推導)。

未實現的後端命中時,必須告知使用者並說明降級方案,不能靜默換後端。

前置依賴(新機器必讀)

所有後端

# core/ 的 Python 腳本需要這些。用 3.13 建 venv(3.14 缺 wheel 有風險)
uv venv --python 3.13 ~/.venvs/video-craft
uv pip install --python ~/.venvs/video-craft/bin/python numpy pillow scipy edge-tts

⚠ 沒有這個 venv,tts_build.py / motion_check.py / frame_metrics.py 全都跑不起來。 這是 anything2explainer 踩過的坑:未文件化的 venv 依賴導致新機器上全流程卡死。

remotion 後端

brew install ffmpeg          # 抽幀用
# Node 22+;專案由 new_project.sh 自動 npm install

manim 後端

brew install pkg-config cairo pango     # pycairo 編譯必需,缺了 manim 裝不上
brew install --cask basictex            # MathTex 真公式排版必需;缺了退回 ASCII 近似

不裝 basictex 也能跑(自動 MANIM_TEX=text),但公式只能用 a/b 這種 ASCII 近似。 推導片必須裝 basictex——公式排版品質是推導片的生命線。

目錄結構

video-craft/
├── SKILL.md                   ← 本檔案
├── routing/
│   └── router.md              後端判據樹 + 覆蓋機制 + 邊界案例
├── core/                      渲染器無關,所有後端共用
│   ├── research-brief.md          調研流程與事實規則
│   ├── narration-guidance.md      13 條口播文案原則
│   ├── narration-storyboard.md    解說詞/分鏡格式與令牌系統
│   ├── tts_build.py               配音 + timeline.json
│   ├── render_storyboard.py       分鏡令牌替換
│   ├── motion_check.py            節奏 QC(讀幀,跨後端)
│   ├── frame_metrics.py           構圖 QC(讀幀,跨後端)
│   ├── sheet.py                   縮圖網格(讀幀)
│   └── lessons.md                 踩坑與根因
└── backends/
    ├── remotion/              概念科普片(原 anything2explainer)
    │   ├── template/               React 工程
    │   ├── scripts/                render/preview/still/test_render/new_project/selfcheck
    │   ├── reference/              style-guide/motion-vocabulary/composition-and-light/
    │   │                            agent-build-rules/agent-qc-rules/prompts/math-physics
    │   └── examples/rag/           樣片(品質標尺)
    ├── manim/                 推導片
    │   ├── template/               Python 工程(common/ + scenes/)
    │   ├── scripts/
    │   ├── reference/
    │   └── README.md               環境實測結論(cairo/latex/pycairo)
    ├── hyperframes/           V3 預留
    │   └── README.md
    └── terminal/              V2 預留(使用者已確認必做)
        └── README.md

核心檔案速查

想幹什麼用哪個
判定該用哪個後端routing/router.md
派調研 agentcore/research-brief.md
寫解說詞先讀 core/narration-guidance.md,格式看 core/narration-storyboard.md
生成配音 + 時間軸core/tts_build.py
生成分鏡表core/render_storyboard.py
節奏 QCcore/motion_check.py
構圖 QCcore/frame_metrics.py
通讀成片core/sheet.py
建專案backends/<後端>/scripts/new_project.sh
派構建 agentbackends/<後端>/reference/agent-build-rules.md
派 QC agentbackends/<後端>/reference/agent-qc-rules.md

後端特定的分鏡格式

後端分鏡單元格式
remotion一個鏡頭(一句解說配一個畫面)backends/remotion/reference/narration-storyboard.md 的 {S12.from-8} 令牌
manim一個推導步backends/manim/reference/storyboard.md 的 DP 格式

QC 閾值按後端調

core/motion_check.py 的預設閾值是為 remotion 概念片定的,其它後端要調:

# remotion(預設)
python3 core/motion_check.py --frames fin_frames

# manim 推導片:靜止上限放寬到 5s(操作後要留時間看清),關掉 hold 判據(無離場概念)
python3 core/motion_check.py --frames fin_frames --shots DP01:1-170 --still-max 5.0 --no-hold

# terminal 教學片(V2):等命令輸出時靜止更久,預計 8-10s

硬性原則(所有後端通用)

  1. 原創:畫面全部程式碼繪製或真實錄製;不得使用任何現有影片的幀或片段。
  2. 事實有出處:畫面上每個數字、術語、年份、人名必須能在調研文件裡找到來源 URL。
  3. 全片一個示例語境:解說與畫面用同一個貫穿例子。
  4. 定稿後不改詞:幀號會被硬編碼,改一個字全片重對位。
  5. 後端要告知:路由判定結果、降級方案,都必須讓使用者知道,不靜默決定。

樣片與品質標尺

  • remotion 後端:backends/remotion/examples/rag/(4′35″,44 句、44 鏡頭) —— 開工前先看 examples/rag/frames/overview_*.jpg 建立標尺。
  • manim 後端:V1 無樣片,只驗證了最小閉環。完整標尺樣片留 V2。
  • 反面參照:backends/remotion/examples/contrast/

從 anything2explainer 遷移來的專案

~/Projects/ai-video/ 下的 linear-function / transformer / a2e-fourier / py-course 都是原 skill 做的,仍用舊佈局(template/scripts/)。它們繼續可用—— 原 skill 保留為 deprecated 狀態,不要刪。

新專案一律用本 skill 的新佈局。

相關技能