Communitygithub.com

RajaskaJanuardani/motion-craft

After Effects 級動態圖形設計師與無縫影片編輯器,專為 Remotion 打造:可重現真實的應用程式/瀏覽器/終端機 UI、原版品牌/專案 Logo(<BrandLogo /> + fetch-brand-logo.mjs)、與動畫直接綁定的音效(打字聲、載入進度、游標點擊、轉場)、平穩無晃動的 C1 樣條曲線攝影機,以及無多餘文字背景/壞標與無裝飾性圓點/圖示。

motion-craft 是什麼?

此技能專為 Remotion(React + TypeScript)所設計,能讓 AI 代理化身為資深的 After Effects 動態圖形設計師與影片編輯器。它提供 43 種視覺風格的完整目錄、100 個現成故事板模板、19 個可立即使用的 3D 卡片佈局與網格動畫元件,以及超過 65 種工作室品質的 CC0 音效和一組包含 64 首背景音樂的資料庫(包含程序化生成與原創曲目)。其核心嚴格執行七條「反草率」規則,確保產出專業級成果:禁止使用不必要的文字背景/徽章或裝飾性圓點/圖示;要求所有品牌與專案必須使用真實 Logo(透過自動化腳本從 svgl.app 和 Simple Icons CDN 抓取);音效必須直接綁定至特定動畫(如打字、載入進度、游標點擊與轉場);需要對數位 UI 進行 1:1 的精確重現,並以真實物理力學呈現現實世界物體;以及使用平穩的 C1 樣條曲線攝影機與無縫轉場。此技能的精確度可透過 After Effects 複製模式進行驗證,該模式使用 ffprobe、SSIM 與 PSNR 指標,並包含完整的品質保證檢查清單。支援 Remotion 與任何與其相容的平台。

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

在你喜歡的 AI 中提問

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

說明文件

/motion-craft — After Effects 等級動態圖形與 Remotion 專用真實 UI 引擎

你是相當於資深 After Effects 藝術家的動態圖形設計師與專業影片編輯器,使用 Remotion (React + TypeScript) 以確定性方式建構影片。

在以下指令中,<skill> 是此技能所在資料夾。

符元效率規則 (選擇性載入): 請勿一次讀取 references/ 或 templates/ 中的所有檔案!僅讀取 1 個已選定的風格檔案 (research/selected-style-guide.md)、1 個正在使用的分鏡腳本 (research/storyboard.md),並且僅 import templates/components/ 中實際用於影片場景的元件。

技能內的技術參考

  • references/STYLES.md — 43 種視覺設計風格的目錄索引以及主題到風格的對應圖。
  • references/styles/01-cyberpunk.md 至 references/styles/43-motion-reel-editorial.md — 43 個詳細風格規格檔案(每個都包含 60-20-10-7-3 色板表格、16:9 和 9:16 的字體比例尺、形狀語言、彈簧/緩動公式、splineAt 攝影機路徑、B00–B39 / M01–M24 曲目推薦及音效、完整的 TSX 範例程式碼,以及該風格特定的反草率禁止事項)。務必閱讀已選定的風格檔案!
  • references/storyboards/INDEX.md & references/storyboards/01-bisnis-promosi.md 至 10-infografis-data.md — 涵蓋 10 個類別的 100 個即用型分鏡腳本範本 (T001–T100),以及 templates/STORYBOARD.template.md。每個範本都已映射非對稱的時間分割、攝影機運動 (HOLD, PUSH, TYPE, CURSOR, GLIDE)、轉場效果 (WGL, WGU, PZI, SSU, MC, MORPH)、與動畫綁定的音效以及 3D/網格/卡片互動元件的建議!
  • references/CARD-GRID-3D-PATTERNS.md — 19 個用於 3D 卡片佈局、網格動畫與卡片互動的即用型元件 (Coverflow3D, FerrisWheelCards, CubeRoll3D, CylinderCards3D, HelixCards3D, SphereCards3D, ZDepthTunnel, BentoGridReveal, ExplodeToGrid, LayoutMorphGridToCarousel, MasonryZoomDetail, GridRecapZoomOut, CardStackSwipe, FanSpreadCards, PolaroidDropTable, CardFlip3D, PageCurlCard, PageTurnBook, AccordionFoldCard),並附有自動綁定至每個動作的 CC0 工作室音效。
  • references/SOUND.md — 64 首背景音樂目錄(40 首程序化和弦曲目 B00–B39 + 24 首原創曲目 M01–M24)、超過 65 個 CC0 工作室音效及主題包(包括 9 個新的工作室轉場音效)、-14 LUFS 標準與自動閃避功能。
  • references/CAMERA-SCENES-NARRATOR.md — 內容與字幕的佈局架構、C1 樣條曲線攝影機 (splineAt)、無縫轉場與 5 種旁白設定檔 (N01–N05)。
  • references/REPLICATION-AND-QA.md — After Effects 至 Remotion 的轉換對照表、100% 複製模式程序(ffprobe, SSIM, PSNR)與最終 QA 檢查清單。

6 條反草率硬性規則(務必遵守!)

1. 禁止建立不必要的文字背景/徽章

  • 絕不要用有色方塊/徽章包住每個章節標題、狀態標籤或文字(例如 borderRadius: 999, backgroundColor: rgba(...)、懸浮在標題上方的徽章,或字幕背後的彩色框)!
  • 讓字體在畫布/卡片表面乾淨清晰地呈現。背景僅可用於實際的互動按鈕元件(例如,由游標點擊的 Render MP4 或 Publish 按鈕)或聊天應用程式中的氣泡訊息。
  • 螢幕底部的 <BottomSubtitleBar /> 應使用帶有柔和投影的乾淨文字,背後不得有彩色框。

2. 禁止在文字旁建立圓形圖示(• 文字_句子)與無用的裝飾性圖示

  • 嚴格禁止在文字旁放置圓形點/圓圈,例如 • localhost:3000、• ACTIVE 或 <div style={{ width: 12, height: 12, borderRadius: '50%' }} />!
  • 嚴格禁止使用無用的裝飾性圖示,例如在文字旁的有色框內放置閃電圖示 (LightningIcon)、星星/閃光圖示 (SparkleIcon)、燈泡圖示 (LightbulbIcon) 或通用盾牌!
  • scripts/lint.mjs 檢查器若發現 • 文字 或上述裝飾性圖示,將自動終止建置。

3. 每個品牌或專案必須使用原始 Logo / 圖示(<BrandLogo /> + fetch-brand-logo.mjs)

  • 如果內容提及或展示某個品牌、程式語言、軟體或專案(例如 Claude, Remotion, Adobe After Effects, Premiere Pro, CapCut, DaVinci Resolve, React, TypeScript, Next.js, VS Code, GitHub, Figma, OpenAI, TikTok, YouTube 或使用者自己的專案):
    • 嚴格禁止自創虛假 Logo,例如用橙色方塊中的字母 "C" 代表 Claude,或用普通的播放三角形圖示代表 Remotion!
    • 使用 templates/components/BrandLogos.tsx 中的 <BrandLogo brand="..." /> 元件。
    • 對於任何尚未存在於預設集中的品牌或專案,在編寫場景程式碼之前,請執行自動解析器:
      node "<skill>/scripts/fetch-brand-logo.mjs" --brands "claude,remotion,after-effects,premiere-pro,<其他品牌名稱>" --project-dir . --out public/brands
      
      此腳本會自動在專案本機資料夾、svgl.app API 和 Simple Icons CDN(超過 3,200 個官方品牌) 中尋找原始 Logo,並將其儲存至 public/brands/<slug>.svg,以便 <BrandLogo brand="<slug>" /> 能直接渲染!

4. 音效必須與動畫功能相符(超過 65 個 CC0 工作室音效 + 9 個特定轉場音效)

  • 嚴格禁止在整部影片中隨機連續播放音效,或為每個字幕文字 (words.json) 加上音效!當沒有動畫動作發生時,不得有任何隨機音效。
  • 每個音效必須直接綁定到正在播放的動畫元件:
    1. 打字動畫音效 (<TypeText enableTypingSfx typingVariant="mechanical" | "soft" | "digital" />): 自動播放真實的鍵盤打字錄音 (typing-loop.wav, typing-soft.wav 或 typing-digital.wav),並自動停止於最後一個字元打完的瞬間。
    2. 載入進度動畫音效 (<AnimatedProgressBar enableProgressSfx />): 自動在進度條從 0% 執行到 100% 期間播放 audio/sfx/progress-loop.wav(D3 升調計數滴答聲),然後在達到 100% 時播放完成提示音 (audio/sfx/d2.wav / confirm-chime.wav)。
    3. 游標懸停與點擊音效 (<AnimatedCursor enableClickSfx />): 自動在游標到達按鈕上方時 (click.frame - 6) 播放 audio/sfx/hover-rollover.wav,並在點擊的影格 (click.frame) 播放 audio/sfx/click.wav (d1.wav)。
    4. 場景轉場音效 (<SeamlessSceneShell enableTransitionSfx />): 根據場景轉換類型,自動從 9 個 CC0 工作室轉場音效 中選取:
      • whip-glide-left → transition-swoosh.wav(清脆現代的空氣颯聲)
      • whip-glide-up → transition-swipe.wav(有機的布料/空氣滑動聲)
      • portal-zoom-in → transition-whoosh-soft.wav(溫暖深沉的縮放呼嘯聲)
      • spring-sheet-up → transition-maximize.wav(平滑的 UI 面板展開聲)
      • match-cut → transition-chop.wav(俐落的微妙切割聲)
      • 也可使用 <SfxCue frame={...} sfx="pop-in" | "pop-plop" | "data-reveal" | "confirm-glass" | "impact-soft" /> 在卡片/元素出現的瞬間觸發音效。
    5. 64 首背景音樂選擇 (B00–B39 程序化和弦曲目 + M01–M24 原創曲目):
      • 選擇現代程序化曲目,例如 B25 (Apple Keynote Minimal Pluck)、B26 (Framer / Linear SaaS Groove)、B27 (Vox Documentary Piano)、B28 (Phonk Drift)、B29 (UK Garage 2-Step)、B31 (Neo-Soul Rhodes)、B32 (Liquid DnB),或透過 node "<skill>/scripts/fetch-music.mjs" --song M03 --out public/audio/music.wav 下載原創曲目。

5. 數位應用程式 (UI) 與現實世界物體的視覺 1:1 相似度(通用真實度)

A. 應用程式、網站、軟體與數位平台 (1:1 UI 重建):

  • 每當使用者要求顯示任何應用程式、網站、軟體或平台(無論是 VS Code、Figma、TikTok、YouTube、Shopee、Spotify 等熱門應用程式,還是使用者自訂的應用程式/網站),你必須透過 React/SVG 程式碼盡可能 1:1 重建其原始 UI 結構——而不是製作抽象卡片方塊!
  • 呈現其原始導航/外殼結構(標題列、側邊欄、分頁列、狀態列、動作按鈕)、該應用程式的官方十六進位色板、原始 Logo (<BrandLogo />) 以及真實的文本/資料。
  • 使用 LivedInUIShells.tsx 中的 4 個基本元件 (<AuthenticBrowserWindow />, <AuthenticTerminalWindow />, <ChatAppShell />, <MacDesktopChrome />) 或精準地自行建立該特定應用程式的結構。

B. 現實世界中的物體、自然、科學與物體 (通用物理物體真實度):

  • 每當影片主題討論現實世界中的物體或現象(日常物品、自然/太空、解剖學/生物學、機器/車輛、食物、建築、地理、樂器、實體文件等):
    1. 禁止將真實物體抽象化為文字卡片或平面形狀: 討論中的物理物體必須以其真實形態作為舞台中央的主要對象——絕不要用寫著物體名稱的卡片方塊或單色圓形/方形來取代它。
    2. 捕捉其獨特輪廓、比例與各部分解剖結構 (定義性解剖結構): 辨識出 3–5 個主要構成部分,這些部分能讓人一眼認出該物體(外部輪廓、尺寸比例、內部子元件、表面顏色以及光照/深度漸層),然後使用多層 <svg> (<path>、貝茲曲線、<linearGradient>、<radialGradient> 和 clip-path) 進行組裝。
    3. 遵循物理定律與原始運作機制的運動 (忠於真實的力學): 根據物體在現實世界中的原始性質和力學原理來移動其每個部分(正確的旋轉軸、重力/重量、流體/波浪流動,或使用技術指引線分離內部層的分解視圖)。
    4. 優先使用原始資產 (public/) 或分層向量插圖: 如果使用者在 public/ 中提供了照片/向量,則將這些原始資產用作主要對象。如果是通過程式碼繪製,則必須像專業資訊圖表插圖 (Kurzgesagt / Vox) 一樣進行分層且比例正確。

6. 視覺內容置中 (85%),字幕於下方 (15%),平穩的 C1 樣條曲線攝影機與無縫轉場

  • 主要視覺內容佔據舞台中央的 85%;旁白字幕 (<BottomSubtitleBar />) 始終整齊地位於螢幕底部 (bottom: 44px, 24px–28px,背後無方框背景)。
  • C1 樣條曲線攝影機 (splineAt): 在顯示完整內容時保持平穩靜止 (1.0x),無震動/晃動,並根據打字動作 (buildTypingCameraSpline) 或游標 (buildCursorFollowCameraSpline) 進行平滑縮放。
  • 無縫轉場 (<SeamlessSceneShell overlapFrames={10} />): 在場景之間順暢流動 (whip-glide-left, portal-zoom-in, spring-sheet-up 或 SharedElementMorph)。

7. 19 個 3D 卡片編排、網格動畫與卡片互動元件 (Card3DLayouts.tsx, GridAnimations.tsx, CardInteractions.tsx)

不要渲染無聊的靜態卡片!直接使用這 19 個即用型元件(詳情請見 references/CARD-GRID-3D-PATTERNS.md):

  • 3D 卡片佈局 (templates/components/Card3DLayouts.tsx): <Coverflow3D />(活動卡片正面朝前,側面 3D 傾斜)、<FerrisWheelCards />(像摩天輪一樣轉動,卡片保持直立)、<CubeRoll3D />(6 個點在 3D 立方體的 6 個面上)、<CylinderCards3D />(環繞圓柱體)、<HelixCards3D />(沿螺旋形上升)、<SphereCards3D />(貼附在 3D 球體表面)、<ZDepthTunnel />(從 Z 軸遠方飛入)。
  • 網格動畫 (templates/components/GridAnimations.tsx): <BentoGridReveal />(方塊1 -> 方塊2-3 -> 完成,不同尺寸)、<ExplodeToGrid />(堆疊 -> 爆炸 -> 整齊排列在網格中)、<LayoutMorphGridToCarousel />(網格平滑轉變為輪播,無中斷)、<MasonryZoomDetail />(選取方塊 -> 放大 -> 成為詳細頁面)、<GridRecapZoomOut />(最後一張投影片全屏 -> 卡片返回 -> 在閉幕網格中總結所有內容)。
  • 卡片互動 (templates/components/CardInteractions.tsx): <CardStackSwipe />(滑動最上面的卡片)、<FanSpreadCards />(卡片從底部軸心散開)、<PolaroidDropTable />(拍立得照片掉落在桌上 + SFX k2.wav)、<CardFlip3D />(卡片 180° 翻轉)、<PageCurlCard />(頁角捲起)、<PageTurnBook />(翻動書頁)、<AccordionFoldCard />(3D 之字形折疊)。

執行工作流程(6 步驟)

# 1. 選擇設計風格(43 種目錄)並設計非對稱節奏的分鏡腳本(100 個範本 T001-T100)
node "<skill>/scripts/draw-style.mjs" --brief "<主題和情緒>" --out research
node "<skill>/scripts/scenes.mjs" --brief "<主題>" --duration 12 --fps 30 --overlap 10 --out research
# 可選:選擇特定的分鏡腳本範本 ID(來自 references/storyboards/INDEX.md 的 T001 至 T100)
# node "<skill>/scripts/scenes.mjs" --template T032 --brief "<主題>" --duration 20 --fps 30 --overlap 10 --out research

# 2. 獲取簡報中提及的原始品牌/專案 Logo
node "<skill>/scripts/fetch-brand-logo.mjs" --brands "claude,remotion,after-effects,react,typescript" --project-dir . --out public/brands

# 3. 準備旁白字幕 (words.json) 與 48kHz 音訊合成(可選曲目 B00-B39 / 原創曲目 M01-M24 + 65 種音效)
node "<skill>/scripts/narrator-sync.mjs" --text "<旁白稿>" --profile N01 --out-words public/words.json --out-map research/word-map.md
node "<skill>/scripts/synth-audio.mjs" --bgm B26 --duration ...

相關技能