Communitygithub.com

hyqlai/motion-forge

用於從 URL、純音樂、歌曲、主題或混合素材(圖片/影片/旁白)建立或修改程式驅動的影片(Remotion + React 19 + Three.js + SVG + Canvas 2D)。支援紀錄片、科學解說、音樂故事、產品發布、宣傳片與哲學散文。

motion-forge 是什麼?

Motion Forge 是一個工業級的「程式碼轉影片」(Code2Video)技能,專為建立精緻、動態的程式驅動影片而設計。它整合了 Remotion 4.x、React 19、TypeScript、Three.js、Canvas 2D 和 SVG 等技術,提供一個統一且模組化的製作流程。此技能的核心是 265 張預先建構的「動效卡」,涵蓋九個專業領域,如運鏡、文字排印、資料視覺化和特效,讓 AI 代理能像導演一樣組合出豐富的視覺敘事。 為了確保品質並避免浪費運算資源,Motion Forge 強制執行嚴格的兩階段審查流程:G1(分鏡與設計審查)和 G2(樣本鏡審查)。代理必須先提出詳細的分鏡表和視覺設計供使用者批准,然後製作並渲染一個有聲樣本鏡進行最終審查,才能解鎖全片渲染。此系統也支援多種輸入類型,包括 URL、音樂、歌曲、主題和使用者素材,每種都有專屬的處理管道,能靈活應對紀錄片、產品宣傳和音樂 MV 等各種專案。

相容平台~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/hyqlai/motion-forge/tree/HEAD

在你喜歡的 AI 中提問

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

說明文件

Motion Forge:程式碼轉影片(Code2Video)工業級製作技能主指南

本專案本身即為一個完全自包含、可獨立分發的 Code-to-Video 工業級技能。系統基於 Remotion 4.x + React 19 + TypeScript + Three.js (@remotion/three) + Canvas 2D + SVG 統一多技術棧核心,內建 265 張原子解耦動效卡(劃分為 9 大專業領域)、底層視覺基座(_shared/)、可視化本地除錯工作檯與嚴格的 G1/G2 兩道品質確認關卡。


目錄

  1. 核心架構與五大技術鐵律
  2. 兩道品質確認關卡標準作業程序 (G1 & G2 Gates SOP)
  3. 多場景獨立流水線體系 (Scenario Pipelines)
  4. 265 張動效卡全景資產與導演決策心法 (Creative & Open Motion Design)
  5. Film IR 分鏡協議與多技術棧渲染規範
  6. CLI 工具鏈全生命週期與本地工作檯互動
  7. 最終交付與故障排查清單

一、核心架構與五大技術鐵律

在編寫任何影片分鏡或渲染程式碼前,Agent 必須堅守以下五條不可妥協的設計紀律:

  1. 絕對解耦與局部時鐘原則(Local Frame Only):

    • 每個分鏡(Scene)只使用局部幀號(frame 0 到 durationInFrames),嚴禁在分鏡內部硬編碼全片絕對時間戳(absoluteFrame 或 from)。全片絕對時鐘由 Core 層透過時間線累加編譯;
    • 分鏡之間嚴禁跨模組互相 import 內部元件。所有分鏡共享的狀態必須透過 Film IR 的 props 傳入;
    • 動效卡(Cards)只承載運動數學與視覺邏輯,嚴禁將專案專有的具體文案或業務圖片路徑寫死在卡片內部。
  2. 純函數幀時鐘確定性(Frame-Deterministic Execution):

    • 所有的動畫變形、物體位移、透明度變換必須是當前局部幀 frame 的純數學計算函數:$Value = f(frame)$;
    • 嚴禁使用瀏覽器的 requestAnimationFrame、setInterval、setTimeout 或外部自執行時間線;
    • 嚴禁使用未置種子的無參 Math.random()(必須使用 Remotion 內建帶種子的 random(seed)),確保同一幀無論何時 seek 渲染,畫面像素 100% 冪等一致。
  3. 真實素材本地閉環原則(Local Assets Only):

    • 渲染引擎禁止在影片合成中直連外部遠端未經驗證的 URL(防範斷網、防盜鏈與請求延遲);
    • 外部圖片、影片片段、音訊配樂必須由 Providers 提前下載落盤至專案本地目錄,並於 assets.json 中統一註冊管理。缺失的素材必須顯式標記並向用戶申報,嚴禁靜默佔位或假數據糊弄。
  4. 多技術路線統一幀渲染哲學(Multi-Tech Rendering):

    • 排版與互動 UI 採用 HTML/CSS + Spring 彈性動畫;
    • 幾何輪廓、連線、圖表與遮罩採用 SVG 路徑插值;
    • 粒子、流體與數萬高頻運動點採用 Canvas 2D;
    • 3D 立體模型、空間光影與三維運鏡採用 Three.js (@remotion/three)。
    • 所有技術路線統一服從 Remotion 的 useCurrentFrame() 幀同步時鐘。
  5. 專案工程獨立化原則(Standalone Project):

    • 本技能目錄只承載流程規範、動效卡參考、通用執行時模板和 forge create 工程生成器;用戶專案的全部內容(core/、cards/、scenes/、public/ 素材、film.json、package.json、工作檯與渲染產出)必須落位在用戶專案自己的目錄中,獨立 npm ci、獨立校驗和渲染,可脫離技能目錄執行;
    • 嚴禁把專案專屬程式碼/素材寫進技能目錄,也嚴禁用軟連結把專案內容掛回技能目錄——forge create 將執行時、動效卡和預設 Film 以真實檔案拷貝到專案,專案專屬分鏡元件直接寫在專案的 scenes/ 下;
    • 技能目錄內 output/projects/ 與 CLI 的關卡流程僅適用於技能自帶範例;真實專案的 G1/G2 評審記錄保存在專案目錄內。

    新專案初始化(輸入:專案絕對路徑與輸入素材;輸出:可獨立安裝依賴的工程骨架):

    1. 在模板目錄執行 npm run forge -- create --dir /absolute/project --input <輸入> [--audio-kind song|instrumental] [--name <id>]。目標必須是模板之外的空目錄,命令會產生完整執行時副本、複製本地素材到 public/assets/<id>/ 並建立專案草稿;
    2. 初始化完成後進入 PROJECT_ROOT,執行 npm ci、npm run validate -- --project <id>。真實專案的程式碼、素材、Film IR、審批狀態和輸出都由 PROJECT_ROOT/output/projects/<id>/ 與 PROJECT_ROOT/public/ 自包含;
    3. 本地素材只使用 public/ 下的相對路徑;遠端來源僅作為來源元數據記錄,不進入渲染引用。缺素材立即停止,不能讓專案以絕對路徑或外部軟連結冒充獨立工程;
    4. 後續所有命令先執行 cd <PROJECT_ROOT>,再執行專案內腳本。渲染產物與評審記錄不得寫回模板目錄;
    5. 模板目錄僅在 create 時作為唯讀來源。產生後,專案中的 import、npm 依賴、腳本和素材引用不得再指向該目錄。

失敗分支與恢復路徑

觸發條件一線處理仍失敗或需要變更時
專案根目錄不明確,或即將寫入技能目錄停止寫入,與用戶確認專案絕對路徑;後續命令均以該專案目錄為工作目錄未獲得明確路徑前只討論方案,不建立檔案
必需素材缺失、不可讀或授權不明報告具體路徑與原因,暫停受影響分鏡;不得靜默佔位或編造素材由用戶補充素材或明確批准替代方案,並同步修訂 G1
G1 未獲確認或被要求修改停留在設計階段,修訂 film.json 與 design-review.md不製作樣板鏡,不執行 G1 審批命令
樣板鏡出現黑屏、音畫錯位、文字越界或質感不合格保持 G2 鎖定,定位到具體分鏡並修復,只重渲樣板鏡再次提交 G2;不得用全片渲染代替樣板驗證
已審批的敘事、佈局、時長、素材或音訊發生變化使原 G1/G2 結論失效,回到 G1 重新確認受影響範圍新 G1 通過後重新製作並確認有聲樣板鏡
建置、校驗或渲染命令失敗保留完整日誌,修復根因後重跑同一命令;不得註解報錯或跳過校驗仍未通過則停止交付,明確報告阻塞項和已完成的驗證
獨立性掃描發現外部絕對路徑、file: 依賴或指向技能目錄的軟連結將所需程式碼或素材真實拷貝進專案,改為專案內引用在隔離副本中重新安裝並渲染;未通過不得宣稱可獨立執行

二、兩道品質確認關卡標準作業程序 (G1 & G2 Gates SOP)

為了防止 Agent「憑空想像、盲目堆砌程式碼、造成嚴重計算浪費和預期偏離」,系統強制規定兩道確認關卡(Two-Gate Review)。嚴禁跳過關卡直接渲染全片!

[用戶輸入] 
   ↓
[需求分析 & 素材籌備] 
   ↓
[編寫 Film IR 草稿] 
   ↓
【🔴 CHECKPOINT G1:分鏡與設計確認】 → 向用戶呈現排版清晰的劇本與視覺表,STOP 等待批准
   ↓ (用戶確認通過後執行 npm run forge -- approve-design)
[製作真實有聲樣板鏡] 
   ↓
【🔴 CHECKPOINT G2:有聲樣板鏡確認】 → 渲染代表鏡影片,用戶審查真實視聽質感與音畫對齊,STOP 等待批准
   ↓ (用戶確認通過後執行 npm run forge -- approve-sample)
[全片程式碼裝配與批次渲染]
   ↓
[最終交付 (MP4 + 可編輯工程 + 工作檯)]

1. G1 關卡:分鏡與視覺設計確認 (Design Review)

在編寫任何複雜渲染程式碼前,Agent 必須先完成《G1 分鏡與視覺設計方案》,並向用戶呈報一份排版清晰的 Markdown 評審文件,至少包含:

  • 基本屬性:片種類型、目標受眾、畫幅比例(橫屏 16:9 / 豎屏 9:16)、目標總時長與幀率(如 30fps);
  • 視覺主題:主色調、背景色、文字主色、高亮強調色(Accent)、排版字體族;
  • 主時鐘選型:口播語音對齊 / 歌曲歌詞對齊 / 純音樂節拍網格 / 文字閱讀時長;
  • 分鏡劇本詳表(必須嚴格按照下表格式向用戶呈現):
分鏡序號鏡頭名稱敘事目的與語義 (Semantic)旁白實際上屏文字 (On-Screen Text)畫面描述主動效卡 (Primary)運鏡卡 (Camera)轉場卡 (Transition)局部時長 (Frames/Sec)
S01開篇破局Hook 鉤子:製造懸念為什麼九成的企業 AI 轉型,最後都停在演示階段?"為什麼 90% 的企業AI轉型以失敗告終?"居中巨大高對比標題 + 紅色告警發光底板typography/halation-bloomcamera/slow-pushtransition/cube-rotate90f (3.0s)
S02數據展示Data 證明:給出慘烈統計先看兩組數字:七成八停在玩具階段,一成二產生負向回報。"78% 停留在玩具階段12% 產生負向ROI"左右雙列對比面板 + 動態數字與落砂圖表data/particle-sand-fill無transition/whip-pan150f (5.0s)
  • 🔴 CHECKPOINT · STOP:向用戶展示完畢後,必須結束本輪並詢問是否同意分鏡規劃;不得在同一輪執行審批、製作樣板鏡或渲染全片。
  • 通過訊號:只有用戶在後續回覆中明確確認 G1 後,Agent 才在 PROJECT_ROOT 執行:
    npm run forge -- approve-design --project <project-id>
    

2. G2 關卡:有聲樣板鏡確認 (Sample Review)

G1 確認通過後,不得立刻渲染全片。必須挑選全片最具代表性、視覺最複雜、包含真實音畫元素的 1 個分鏡(通常為 Hook 鏡頭或核心高潮鏡頭),製作並渲染為樣板鏡影片:

  • 渲染命令:
    npm run forge -- render --project <project-id> --scope sample
    
  • 質檢要點:
    • 音畫是否精確同步?字幕是否在發音開始前 1~2 幀入場?
    • 畫面文字是否存在遮擋、折行破壞、超出安全區?
    • 動效速度與音樂情緒是否匹配?是否給人呼吸感?
  • 🔴 CHECKPOINT · STOP:提供真實樣板鏡影片與質檢結果後,必須結束本輪並等待用戶審查;不得自行代替用戶批准 G2。
  • 通過訊號:只有用戶明確確認樣板鏡後,才在 PROJECT_ROOT 執行:
    npm run forge -- approve-sample --project <project-id>
    
  • 只有完成 G2 審批後,專案狀態機才解鎖全片最終渲染許可權!

三、多場景獨立流水線體系 (Scenario Pipelines)

不同輸入類型的端到端處理邏輯拆分為獨立的指導檔案,存放於 pipelines/ 目錄下。Agent 應根據用戶輸入的實際類型查閱對應指南:

場景類型適用輸入與片種對應獨立 Pipeline 指南檔案
場景 1:URL 連結成片部落格、公眾號、SaaS Landing Page、技術文件、新聞發布pipelines/url-to-video.md
場景 2:純音樂音訊成片純樂器、電子樂、史詩配樂;哲理片、卡點快閃、意境散文pipelines/instrumental-to-video.md
場景 3:歌曲帶人聲成片完整歌曲(演唱+伴奏);動態歌詞 MV、音樂敘事故事短片pipelines/song-to-video.md
場景 4:純主題自主規劃成片一句話主題/命題;深度科普、人文哲學、商業洞察、通識短片pipelines/theme-to-video.md
場景 5:用戶多模態素材混剪用戶自有圖片、截圖、短影片片段、口播錄音;產品展示、Vlogpipelines/assets-to-video.md
內容策劃通用規範主題/URL 的結構化策劃、敘事弧線、事實追溯與 Film IR 轉換pipelines/content-planning.md
場景擴展指南如何擴展新的輸入(如表格、PPT、雙人播客等)pipelines/extending-pipeline.md

四、265 張動效卡全景資產與導演決策心法 (Creative & Open Motion Design)

系統內建的 265 張原子動效卡 是 Agent 創作影片的視覺畫筆。

1. 開放式選型原則:不設限的藝術想像力

  • 嚴禁生搬硬套與教條限制:本系統絕不限定「某種片種必須使用某些卡片」。相反,我們鼓勵 Agent 依據文案的情感張力、敘事懸念、聽覺節拍自主搭配與創新;
  • Agent 是真正的視覺導演:動效卡是一套模組化積木。你可以用原本用於科技產品的 interaction/command-palette-summon 來表達古代思想家的「知識檢索」;也可以用機場機械翻牌 typography/split-flap-flip 展現時空穿越或生命倒數計時;
  • 自由調節無級參數:每張卡片均暴露了豐富的參數(如彈簧硬度、重力大小、模糊半徑、粒子數量等),Agent 可在 film.json 的 params 中自由定製個性化運動手感。

2. 九大領域動效分類資產全景 (265 張卡)

所有 265 張卡片已完成規範化封裝,支援橫豎屏雙模自適應,按領域完全內聚解耦:

類別 (Kind)目錄與卡片總數核心視覺職能代表性卡片資產 (可在程式碼中直接引用)
camera (運鏡)cards/camera/ (21張)空間推拉搖移、鏡頭焦段、透視畸變,為扁平畫面建立縱深空間dolly-zoom (希區考克滑動變焦), slow-push (深沉慢推), slow-pull (漸遠拉出), shot-crash-zoom-punch (重擊衝擊變焦), space-camera-moves (三維空間翻滾), tension-camera-moves (地平線傾斜張力), overhead-camera-moves (俯視大跨度搖移), whip-pan (甩鏡), orbit-drift (環繞漂移)
typography (文字排印)cards/typography/ (52張)標題入場、字幕律動、金句強化、程式碼終端、字元解碼split-flap-flip (機場復古機械翻牌), scramble-decode (亂碼矩陣解碼), halation-bloom (膠卷紅暈過曝沖光), type-rhythm-sync (節拍字幕對齊), tracking-expand-reveal (字距擴散展開), terminal-typewriter (駭客終端打字), keyword-reveal (關鍵詞漸顯), quote-card (典雅名言卡), highlighter-sweep (螢光筆劃線標記), cel-flash-stomp (定格重擊頻閃)
interaction (元件與互動)cards/interaction/ (58張)擬物實體、互動部件、懸浮卡片、彈窗與游標協作command-palette-summon (Cmd+K 懸浮召喚), stack-reveal (卡片折疊展開), popup-book-rise (紙藝立體書挺立), masking-tape-slap (美紋膠帶拍貼), autolayout-gap-dial (自動佈局撥盤), carousel-3d (3D 輪播圖), theme-switch-moves (主題切換漣漪), collab-cursor-moves (多游標協奏), type-and-filter (輸入過濾), glassmorphism-card (毛玻璃面板)
data (數據與圖表)cards/data/ (20張)物理粒子沉降、動態折線柱狀、儀表板、數字狂飆衝刺particle-sand-fill (重力落砂沉降), counter-confetti (數字衝刺狂飆+綵帶紙屑), number-counter (翻滾計數), chart-grow (柱狀折線生長), chart-live-moves (即時數據流), gauge-readout-moves (儀表指標跳躍), before-after-slider-scrub (前後對比滑桿), scroll-brake-moves (滾動煞車定格)
effects (特效與光影)cards/effects/ (22張)光暈掃光、HUD 掃描準星、三維自轉晶體、氛圍微粒場three-crystal (Three.js 三維自轉晶體), light-play-moves (掃光漫射), spotlight-sweep-moves (探照燈掠影), glow-flyline-moves (發光飛線軌跡), fui-hud-moves (科技線框展開), impact-feedback (動漫重擊衝擊波), canvas-particles (數萬流動微粒), flying-words (詞雲穿梭)
rhythm (剪輯與節奏)cards/rhythm/ (8張)節奏抽幀、快閃打斷、分屏對決、蒙太奇切鏡beat-cut-moves (節拍閃光快切), speed-ramp-freeze (變速定格批註), quad-split-parallel-scenes (四分屏平行視線), panel-grid-moves (漫畫分鏡格重排), rhythm-interrupt-moves (跳切重擊推進), trailer-grammar-moves (預告片重擊黑場)
commercial (商業鏡頭)cards/commercial/ (43張)產品宣講鏡頭、品牌片頭片尾、開場引題、最終落版hook (痛點鉤子鏡頭), price-card (定價與方案卡), features (特性清單流), store-card (門店與位置指引), fact-sheet (事實說明清單), brand-ink-open (墨水擴散片頭), logo-shrink-wordmark-lockup (Logo 收縮落版), ui-to-brand-morph (介面變異為品牌標誌)
transition (鏡頭轉場)cards/transition/ (26張)鏡頭邊界處的時空變換與視線過渡,消除生硬跳切cube-rotate (3D 立方體多維翻轉), clock-wipe (時鐘指標擦除), bubble-swarm-takeover (氣泡群聚遮罩), color-block-step-wipe (色塊步進擦除), paper-plane-messenger (紙飛機穿梭), push-through (穿透推進), whip-pan (高速甩鏡頭模糊), dark-tunnel (暗調隧道穿梭)
media (多媒體展示)cards/media/ (15張)外部圖片、影片片段的入場構圖與畫中畫對比media-pop-in (輕快彈入), split-compare (左右分屏滑塊對比), svg-path (向量路徑延展), video-pip-float (懸浮畫中畫), photo-polaroid-scatter (拍立得照片散落)

底層基座 (cards/_shared/):提供全庫通用的渲染原語(如 SpeedBlur 動態模糊、softShadow 雙層物理柔陰影、Stage 舞台光源反光板)與商業排版字號自適應計算,不作為獨立卡片對外暴露。


3. 六大片種經典靈感組合範式 (僅供啟發,自由創新)

以下僅為常見風格的靈感搭配參考,並非死板規則。Agent 完全可以根據實際創意進行混搭:

  • 科普與硬核通識 (Science Explainer):
    • 靈感搭配:typography/scramble-decode(字元解碼破局) + data/particle-sand-fill(物理落砂示範量級) + media/svg-path(概念連線) + transition/color-block-step-wipe。
  • 哲學思辨與深度散文 (Philosophical Essay):
    • 靈感搭配:typography/halation-bloom(高光膠片沖光) + camera/dolly-zoom(空間縱深抽離) + typography/quote-card(典雅引用) + effects/canvas-particles(微弱浮塵)。
  • 科技產品與功能發布 (Product Promo):
    • 靈感搭配:effects/three-crystal(三維構件亮相) + interaction/command-palette-summon(生產力呼出) + data/counter-confetti(效能破紀錄) + transition/cube-rotate。
  • 商業戰略與數據看板 (Business & Strategy):
    • 靈感搭配:data/gauge-readout-moves(儀表指標) + data/chart-live-moves(曲線生長) + typography/highlighter-sweep(數據標記) + transition/clock-wipe。
  • 音樂情緒與動態 MV (Music Story & Lyrics):
    • 靈感搭配:typography/type-rhythm-sync(主歌節拍字條) + typography/cel-flash-stomp(副歌定格重音) + camera/shot-crash-zoom-punch(重擊衝撞) + transition/whip-pan。
  • 復古手作與剪貼簿 (Scrapbook & Handcrafted):
    • 靈感搭配:interaction/masking-tape-slap(膠帶拍貼) + interaction/popup-book-rise(立體書升起) + typography/split-flap-flip(機械翻牌) + transition/paper-plane-messenger。

4. 四槽位裝配規範與客觀品質紅線

每張分鏡在 film.json 的 motion 屬性中支援四個解耦槽位:

{
  "motion": {
    "camera": { "cardId": "camera/slow-push", "params": { "scale": 1.15 } },
    "primary": { "cardId": "data/particle-sand-fill", "params": { "gravity": 1.2 } },
    "text": { "cardId": "typography/halation-bloom", "params": { "bloomIntensity": 0.8 } },
    "transitionOut": { "cardId": "transition/cube-rotate", "params": { "direction": "left" } }
  }
}
  • 客觀品質紅線(必須堅守):
    1. 明確視覺焦點:同一個分鏡中,畫面應有明確的主角。如果使用了劇烈的 primary 元件動效,運鏡 camera 宜平穩呼吸;若運鏡使用了強烈的 shot-crash-zoom-punch,元件內容宜保持相對靜態,避免群魔亂舞導致視覺暈眩;
    2. 留足認知停留期(Cognitive Hold Time):動效完成入場展開後,畫面文字與核心結構必須保留至少 45~90 幀(1.5s ~ 3.0s)的穩定停留期,確保觀眾能夠從容閱讀和理解,嚴禁剛做完動畫瞬間切走;
    3. 文字長度與畫幅匹配:橫屏單行文字建議不超過 22 個漢字,豎屏單行建議不超過 14 個漢字,防止折行重疊或衝出影片安全區。

五、Film IR 分鏡協議與多技術棧渲染規範

film.json 是全工程的唯一語義事實源。

1. 標準 Film IR 結構

{
  "id": "project-slug",
  "title": "專案影片標題",
  "genre": "explainer",
  "brief": {
    "goal": "核心敘事目標",
    "audience": "目標受眾",
    "tone": "基調氣質"
  },
  "output": { "width": 1920, "height": 1080, "fps": 30 },
  "theme": {
    "background": "#0a0f1d",
    "foreground": "#f8fafc",
    "accent": "#38bdf8",
    "fontFamily": "Inter, PingFang SC, sans-serif"
  },
  "scenes": [
    {
      "id": "scene-01",
      "title": "鏡頭名稱",
      "intent": "敘事意圖",
      "semantic": "hook",
      "durationInFrames": 90,
      "onScreenText": ["實際上屏主標題", "副標題說明文案"],
      "layout": { "kind": "center-headline" },
      "renderer": "html",
      "sceneComponent": "scene/stack-explainer",
      "motion": {
        "camera": { "cardId": "camera/slow-push" },
        "primary": { "cardId": "interaction/stack-reveal" },
        "text": { "cardId": "typography/scramble-decode" },
        "transitionOut": { "cardId": "transition/cube-rotate" }
      },
      "props": {},
      "qa": { "keyFrames": [20, 45, 80] }
    }
  ]
}

2. 雙模自適應機制 (16:9 ↔ 9:16)

所有場景與卡片統一支援響應式縮放。在分鏡程式碼中使用基準比例容器:

import React from 'react';
import { useVideoConfig } from 'remotion';

export const AdaptiveStage: React.FC<{ children: React.ReactNode }> = ({ children }) => {
  const { width, height } = useVideoConfig();
  const isPortrait = height > width;
  const baseWidth = isPortrait ? 1080 : 1920;
  const baseHeight = isPortrait ? 1920 : 1080;
  const scale = Math.min(width / baseWidth, height / baseHeight);

  return (
    <div
      style={{
        width: baseWidth,
        height: baseHeight,
        transform: `scale(${scale})`,
        transformOrigin: 'top left',
        overflow: 'hidden',
      }}
    >
      {children}
    </div>
  );
};

六、CLI 工具鏈全生命週期與本地工作檯互動

1. 命令列表

命令功能使用時機
forge create新專案初始化使用者提供輸入(URL/音訊/主題/素材)後第一時間執行
forge validate專案完整性校驗每次修改 film.json 或素材後
forge approve-designG1 設計審批使用者確認 G1 後執行,寫入審批時間戳
forge render --scope sample渲染樣板鏡G1 批准後,挑選代表性分鏡渲染
forge approve-sampleG2 樣板鏡審批使用者確認樣板鏡後執行,解鎖全片渲染
forge render全片渲染G2 批准後執行,產生最終 MP4
forge preview啟動本地開發工作檯開發除錯階段,提供可互動預覽
forge export匯出可編輯工程最終交付前,為使用者打包獨立工程

2. 工作檯互動

forge preview 啟動的本機開發工作檯提供:

  • 時間軸預覽:可拖拽 seek 到任意幀,查看即時渲染結果
  • 分鏡清單:列出所有分鏡,支援快速跳轉
  • 參數調整面板:即時修改動效卡參數並查看效果
  • 音訊波形:顯示音訊波形,方便對齊視覺節拍
  • 質檢面板:顯示關鍵幀截圖與自動化校驗結果

七、最終交付與故障排查清單

最終交付物

  1. 最終影片 (MP4):位於 output/projects/<id>/final.mp4
  2. 可編輯專案工程:完整的 PROJECT_ROOT 目錄,包含所有原始碼、素材與 film.json
  3. 設計審批記錄:G1-design-review.md 與 G2-sample-review.md,記錄審批過程
  4. 渲染日誌:output/projects/<id>/render-log.txt,包含所有渲染詳細資訊

故障排查清單

  • npm ci 是否成功執行且無錯誤?
  • npm run validate 是否通過?
  • film.json 中的 scenes 陣列是否至少包含一個分鏡?
  • 所有 motion.cardId 是否正確引用存在的卡片?
  • 素材是否已下載到 public/assets/<id>/ 並在 assets.json 中註冊?
  • sceneComponent 路徑是否對應於 scenes/ 下存在的元件?
  • 每張分鏡的 durationInFrames 是否為正整數?
  • 分鏡元件的 props 是否與 Film IR 定義一致?
  • 輸出目錄是否有足夠的磁碟空間?
  • 渲染日誌中是否有任何 ERROR 或 WARNING?

相關技能