Communitygithub.com

motion-craft

After Effects 级别的动态图形设计师与无缝视频编辑器,基于 Remotion:可真实复刻应用/浏览器/终端 UI,使用原生品牌/项目 Logo(<BrandLogo /> + fetch-brand-logo.mjs),SFX 与动画直接绑定(打字、加载进度、光标点击、转场),C1 相机样条平滑无抖动,无垃圾文字/标签背景,无圆点/装饰图标。

motion-craft 是什么?

motion-craft 是一个高级 AI 技能,专为 Remotion(React + TypeScript)设计,使开发者能够创建 After Effects 级别的动态图形和专业视频。它提供了完整的工具集,包括 43 种视觉风格目录、100 个预制作故事板模板、19 个现成的 3D 卡片布局和网格动画组件,以及一个包含 64 首背景音乐和 65 多个 CC0 SFX 的音效库。该技能强制执行六条“反杂乱”规则,以确保输出干净、专业:禁止使用不必要的文字标签/徽章、禁止在文本旁放置装饰性圆点/图标、所有品牌/项目必须使用真实 Logo(通过自动获取脚本)、SFX 必须与具体动画帧绑定(打字、加载、光标点击、转场)、对 UI 和物理对象进行 1:1 真实复刻,以及使用中央视觉(85%)与底部字幕(15%)的布局,配合 C1 相机样条实现平滑无缝的转场。它支持 Claude Code、Cursor 和 Codex 等 AI 代理平台,通过命令行脚本和预定义组件简化了复杂视频的生成流程。

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

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

/motion-craft — After Effects 级别动态图形与真实 UI 引擎(基于 Remotion)

你是动态图形设计师和视频编辑专业人士,相当于高级 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 的版式比例、形状语言、spring/easing 公式、splineAt 相机路径、B00–B39 / M01–M24 的音乐推荐 + SFX、完整的 TSX 代码示例以及针对该样式的特定防垃圾规则)。必须读取选定的样式文件!
  • references/storyboards/INDEX.md & references/storyboards/01-bisnis-promosi.md 到 10-infografis-data.md — 100 个即用型分镜模板 (T001–T100),分布在 10 个类别中,以及 templates/STORYBOARD.template.md。每个模板已映射了不对称的秒数分配、相机运动(HOLD、PUSH、TYPE、CURSOR、GLIDE)、退出转场(WGL、WGU、PZI、SSU、MC、MORPH)、动画绑定的 SFX 以及推荐的 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 工作室 SFX。
  • references/SOUND.md — 64 首背景音乐目录(40 首多和弦程序化音乐 B00–B39 + 24 首工作室音乐 M01–M24)、65 多个工作室 CC0 SFX 和主题包(包括 9 个新的工作室转场 SFX)、-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 /> 渲染干净的文本,带有柔和的 drop-shadow,单词后面没有彩色框。

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,例如为 Claude 在橙色框中放置字母 "C",或为 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. SFX 必须与动画功能匹配(65 多个工作室 CC0 SFX + 9 个特定转场 SFX)

  • 严禁在整个视频中随机连续播放 SFX,或为每个字幕单词(words.json)放置 SFX!当没有动画动作时,不得有杂乱的 SFX。
  • 每个 SFX 必须直接绑定到正在运行的动画组件:
    1. 打字动画时的 SFX(<TypeText enableTypingSfx typingVariant="mechanical" | "soft" | "digital" />): 自动播放真实的键盘打字录音(typing-loop.wav、typing-soft.wav 或 typing-digital.wav),从第一个字符开始打字时开始,并在最后一个字符完成时自动停止。
    2. 加载进度动画时的 SFX(<AnimatedProgressBar enableProgressSfx />): 在进度条从 0% -> 100% 运行时,自动播放 audio/sfx/progress-loop.wav(D3 上升计数滴答声),然后在达到 100% 时播放完成提示音(audio/sfx/d2.wav / confirm-chime.wav)。
    3. 光标悬停和点击时的 SFX(<AnimatedCursor enableClickSfx />): 当光标到达按钮上方时(click.frame - 6),自动播放 audio/sfx/hover-rollover.wav,并在点击帧(click.frame)时播放 audio/sfx/click.wav(d1.wav)。
    4. 场景转场时的 SFX(<SeamlessSceneShell enableTransitionSfx />): 根据场景切换类型自动从 9 个工作室 CC0 转场 SFX 中选择:
      • 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" /> 在卡片/元素出现时触发 SFX。
    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
# 可选:从 references/storyboards/INDEX.md 中选择特定的分镜模板 ID(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 多个 SFX)
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 ...

相关技能