code-video-infinite 是做什麼的?
畫面不是「生成」出來的,是「寫」出來的。 這裡沒有生圖/生影片模型:一支片是一個網頁或一個 Remotion 工程,給它一個時間 t,它畫出那一幀;無頭瀏覽器或 Remotion 逐幀渲染,ffmpeg 合音畫。 聲音同樣可以程式碼合成。所以每支片都能任意 seek、任意重渲、改一版不會把上一版帶偏。
本 skill 是五個引擎的合併體:一個入口、一套流程、三條閘,五個引擎各自保留全部縱深文件與素材。
0 · 開工先跑這兩條(30 秒,不要跳)
node scripts/doctor.mjs # 環境:Node / ffmpeg / ffprobe / Python / Chrome / 五個引擎是否齊全
node scripts/find.mjs --stats # 目錄:880 條素材按來源、集合清點
doctor 有 FAIL 就先修環境,再談創作。缺 Chrome 的裝 Chrome 或 npx playwright install chromium;
Windows 上 npm 被執行策略攔掉時用 npm.cmd。
1 · 先選引擎,再談風格
使用者的需求決定引擎,不由目錄豐盛程度決定。一個片子預設只用一個主引擎,第二個引擎只用來取素材。
| 需求長什麼樣 | 引擎 | 它強在哪 | 開箱要付的代價 |
|---|---|---|---|
| 15–30 秒產品/發佈/技能動效片,要節奏、要運鏡、要「不像 PPT」 | onetake | 單 HTML 合成、真實快門運動模糊、合成音效、節奏與承接的 oracle | Python + Chrome;4K60 渲染慢(先報時) |
| 產品宣傳片、影視感、真實網頁畫面、多鏡頭敘事、要剪映再改、要發佈社交平台 | shotcraft | 124 張鏡頭配方卡 + Ink Press 模板 + 真實頁面捕獲 + Freesound 選音 + 工作台 | Node + Remotion(npm 安裝);Remotion 有獨立許可 |
| 要具體造型、材質、3D 物件、角色與動物、手繪紙藝、可直接運行的場景 | claude-motion | 47 套原始碼案例 + 20 個原始碼元件 + 30 個物件模型 + 14 個場景起點,保真原始碼而非畫風標籤 | Node ≥ 22 + Playwright Chromium + ffmpeg;素材體量大 |
| 要 MG 風格(扁平/線描/等軸/3D 渲染/逐幀/拼貼/液態/形變/包浩斯/Synthwave/玻璃/花字/貼紙/像素/賽博 HUD) | mg-motion | 15 種可檢驗的簽名技法 + 103 採樣配樂工具包 + 10 道機器閘 + 兩輪評審 | 需 Chrome(MG_CHROME)+ ffmpeg + 字體自舉 |
| 只要一個動作、轉場、文字動效的真實原始碼,交給別的工程用 | wise-motion | 462 條動效條目、預覽、真實原始碼入口與匯出腳本 | 只交素材,不替你設計整片 |
路由細節、被否證的組合、以及每個引擎的明確邊界見 references/engine-selection.md。
檢索任何素材都用同一條命令(跨五個引擎):
node scripts/find.mjs "HUD 雷達"
node scripts/find.mjs "咖啡 手繪" --limit 5
node scripts/find.mjs fade --source wise-motion
node scripts/find.mjs "標題 入場" --collection shot-card --json
2 · 六段流水線(順序固定,可以刪段但不能跳閘)
| 段 | 做什麼 | 縱深文件 |
|---|---|---|
| 0 需求 | 問清交付規格(時長/畫幅/fps/有無配音字幕/語言)、素材來源、受眾與投放位;一次問完,不逐條追問 | references/pipeline.md §0 |
| 1 參考 | 有參考片就實測它:能量圖、切點、靜止比例、t80 與拖影(onetake analyze_ref.py);沒有參考就寫下一組可複核的數字目標 | references/motion-grammar.md |
| 2 概念 | 三個互不相同的中心思想,使用者選一個;同時按名選定 look/風格,不靜默套預設 | onetake §2 / mg-motion §2 |
| 3 節奏與承接 | 分鏡按節奏和承接兩條腿設計:不許等長鏡頭、不許一個 beat 替換上一個 beat | references/motion-grammar.md |
| 4 素材與鏡頭 | 真實頁面捕獲 / 截圖還原 UI / 物件模型 / 鏡頭卡 / 動效條目;先取一個最小的可跑片段 | 各引擎 ENGINE.md |
| 5 實現 | 每幀都是時間的純函數;動作從庫裡選,曲線按 t80 定;先出靜幀再整片 | 各引擎 ENGINE.md |
| 6 渲染與交付 | 1080p30 草稿 → 驗收 → 4K60/終版;過三條閘;按交付契約報告 | references/delivery.md |
3 · 鐵律(五家合併去重,每條都是別人踩過的)
- 每幀只依賴 t。 禁
Date.now()、禁 rAF 累積狀態、禁狀態觸發的 CSS 動畫;偽隨機用固定種子。 - 不要把模板的故事當使用者的故事。 概念三選一;新片套模板的 beat 就會讀成模板。
- 不要把上一支片的 look 帶進下一支。 look/風格必須被按名選擇,靜默默認不允許。
- 不要按節拍器等分切。 等長鏡頭無論單鏡多好都讀成幻燈片。
- 不要替換 beat,要承接它。 每個段落邊界都得有東西活下來並可見地運動/縮放到下一段;
互斥場景(
display:none換頁)即使節奏完美也是 PPT。硬切爆點與片尾卡除外。 - 留白是爆點落地的條件。 參考片約 1/3 時間是靜止的;整片不停 = 沒有高潮。
- 小元素,大地面。 這類片的畫幅常是 70% 白/底色;滿屏素材是例外,不是預設。
- 成因必須看得見。 手從錄製路徑畫出來、球落地、點分裂——頁面自己動起來讀成螢幕保護程式。
- 快動作必須有快門。 超過 ~80 px/幀沒有運動模糊就會頻閃成重影;用渲染器的快門,不用 CSS blur。
- 運鏡要追主角。 靜止機位會被評價成「就缺靈動的跟蹤運鏡」;宣告
inFrame,讓相機滯後、傾斜、落定。 - 草稿 1080p30。 未經接受的剪輯不渲 4K60。
- 不用粒子/彩紙/碎屑當裝飾。 讀起來就是模板;要花活就讓字自己落地。
- 聲音一個房間、一套材質。 每個事件一條合成音 = 音頻版的幻燈片。
- 不偽造: 沒跑過的樣片不叫復現,無聲片不叫有聲片,技術通過不等於審美達標。
4 · 三道閘,缺一不可
| 閘 | 誰判 | 判什麼 | 不過怎麼辦 |
|---|---|---|---|
| 機器閘 | node scripts/qc.mjs gate <video> | 時長/畫幅/fps/有無音軌/LUFS/真峰值/黑幀/靜幀比例 | 改片子重渲,不改標準 |
| 靜幀閘 | 你自己 read_image | 6–10 張關鍵幀能不能當海報:構圖/層次/留白/文字排版 | 重排畫面 |
| 評審閘 | 乾淨上下文的獨立 subagent | 7 維打分 + 帶幀號的修改清單;改完再評一輪 | 按影響排序改 |
機器閘只測機器能測的;審美一律交給獨立評審,製作者的自檢有確認偏差。
各引擎自帶的閘(mg-qc.mjs、verify_promo.py、final-review.md、jury.md)用法與判定口徑見
references/quality-gates.md。
5 · 聲音
- 目標:一個房間、一套材質,事件數少於 beat 數;音樂預設只用允許商用的曲目並記帳。
- 常用落點:
−14 LUFS(社交/網頁)、−16 LUFS(長片/播客式),真峰值≤ −1 dBTP(AAC 編碼後還會抬); 要留更多餘量按−3.5走。 - 三家的現成工具:onetake
sfx_palette.py/score.py(合成 + 錄製混音),mg-motionaudio.py+ 103 採樣, shotcraftsound-design.md+sfx-source.py(Freesound,CC0 預設)。 - 細節與許可紅線見
references/sound.md。
6 · 交付契約
每支片都要齊這七項(缺一項就是沒做完):概念兩句話 / 帶時間碼 beat sheet / 簽名技法逐條對應 / 用了哪幾種風格與怎麼交接 / 技術路線 / 實測數字(時長 畫幅 fps LUFS 真峰值 黑幀 靜幀比例)/ 誠實的 top-3 弱點。
引擎額外交付物:onetake 多語言同源(?lang= 不分叉)、claude-motion ADAPTATION.md(保留/改寫/許可/未解決問題)、
shotcraft 動效工作台與剪映工程、mg-motion 版本目錄 v1/ v2/。見 references/delivery.md。
7 · 目錄地圖
Code-Video-Infinite.skill/
├── SKILL.md # 本文件:路由 + 鐵律 + 閘 + 交付
├── README.md # 人看的:五個引擎是什麼、怎麼裝、許可表
├── LICENSES.md # 逐引擎許可與第三方宣告
├── references/ # 合併後的共享知識(本層新寫,只放跨引擎判斷)
│ ├── engine-selection.md # 決策矩陣與邊界
│ ├── pipeline.md # 六段流水線的每段縱深
│ ├── motion-grammar.md # 節奏/曲線/承接/運鏡的統一詞彙
│ ├── sound.md # 聲音與許可紅線
│ ├── quality-gates.md # 三道閘的判定口徑
│ ├── delivery.md # 交付契約
│ ├── assets-and-licenses.md# 素材在哪、能不能再分發
│ └── provenance.md # 五個來源、版本、合併做了什麼
├── catalog/
│ ├── INDEX.md # 880 條素材清單(生成物)
│ ├── index.json # 同一份資料的機器可讀版
│ └── assets-index.json # 537 個重型素材清單
├── scripts/
│ ├── doctor.mjs # 環境自檢
│ ├── find.mjs # 跨引擎檢索
│ ├── qc.mjs # 統一機器閘(measure / gate / delegate)
│ ├── build-catalog.mjs # 重建索引
│ └── check-links.mjs # 文件互鏈體檢
└── engines/ # 五個引擎原樣保留(含各自的文件/素材/許可)
├── onetake/ ENGINE.md + lib/motion.js + scripts/ + looks/ + cases/
├── shotcraft/ ENGINE.md + references/shots(124) + template/ + demos/ + assets/
├── claude-motion/ ENGINE.md + references/*.json + assets/{cases,extensions,models,scenes}
├── mg-motion/ ENGINE.md + mg-styles-15/{harness,assets} + references/ + scripts/
└── wise-motion/ ENGINE.md + catalog/registry.json + references/effects(462) + scripts/
8 · 什麼時候讀哪個檔案
| 時機 | 讀 |
|---|---|
| 不知道該用哪個引擎 | references/engine-selection.md |
| 要開工,需要每段的具體動作與命令 | references/pipeline.md |
| 節奏不對、像 PPT、動作太軟/太硬 | references/motion-grammar.md |
| 配音/音效/配樂/響度 | references/sound.md |
| 片子做完了,怕不過閘 | references/quality-gates.md |
| 要交片、要報告、要再改 | references/delivery.md |
| 用某引擎的素材,不確定能不能商用 | references/assets-and-licenses.md |
| 要升級某個引擎或追問來源 | references/provenance.md |
| 引擎縱深(唯一權威) | engines/<engine>/ENGINE.md 及其 references/ |
9 · 許可與素材邊界(一句話版)
五個引擎許可各不相同,合併倉庫不改變各自的許可:onetake 是 PolyForm Noncommercial(非商用免費),
wise-motion 是 Apache-2.0,claude-motion 與上游 mg-styles-15 是 MIT(第三方資產各自保留許可),
shotcraft 自帶許可且 Remotion 另有獨立許可(公司商用需自行確認)。字體、模型、音效、BGM 的授權
逐條記在 references/assets-and-licenses.md 與各引擎的 LICENSE / ATTRIBUTION / NOTICE 裡。
品牌名一律虛構,不要用真商標。