mcpField
E
extreme-motion-design

extreme-motion-design

github.com/dev-isaacmello创意与媒体6748 次安装2 周前更新
代码仓库

关于 extreme-motion-design

Motion Design 是一项通过代码制作动态图形视频的技能,涵盖视觉方向、音频、渲染和质量检查。它引导 Agent 按审批流程制作,并在交付前执行可量化的检查。

主要功能

  1. 01通过代码制作动态图形视频
  2. 02动画制作前规划视觉方向
  3. 03生成旁白和音频提示
  4. 04检查画面布局与设计一致性
  5. 05交付前执行质量门槛检查

适用场景

  1. 01制作品牌短动态图形视频
  2. 02依据提供的视频参考改编作品
  3. 03渲染前检查文字布局和视觉一致性

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/dev-isaacmello/extreme-motion-design --skill extreme-motion-design

安装后在 Claude Code 中输入/extreme-motion-design确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

agents/
openai.yaml
assets/
lexicon.pt-BR.json
assets/template/
direction.json
gitignore
package.json
remotion.config.ts
roteiro.json
assets/template/public/
brand.json
cues.json
timeline.json
assets/template/public/audio/
credits.json
narration.words.json
assets/template/src/blocks/
BarChart.tsx
Callout.tsx
Captions.tsx
Checklist.tsx
CodeWindow.tsx
Cursor.tsx
DeviceFrame.tsx
Donut.tsx
index.ts
LineChart.tsx
LogoSting.tsx
LowerThird.tsx
Marquee.tsx
QuoteCard.tsx
shared.tsx
StatCounter.tsx
Steps.tsx
assets/template/src/components/
Camera.tsx

详细介绍

动态设计

通过代码制作带有音频和验证的动态设计视频。Agent 编写代码时看不到视频:因此,工作流会在动画制作前声明设计方向(direction.json),在渲染前进行测量(lint.py),测量帧中的文本(layout.py),测量作品是否具有独特的设计方向,还是落入模型的默认框架(design.py),交由未编写代码的审核者审查,并且只有通过数值门槛后才交付(qa.py)。如果用户提供了参考视频,就会将其结构转化为测量标准,并为新作品生成一个保真度评分(reference.py)。

路径相对于此技能文件夹(<skill>)。带有依赖项的脚本会内联声明所有依赖项(PEP 723):使用 uv run <skill>/scripts/x.py 运行。voice.py、lint.py 和 gl.py 仅使用标准库,可通过 python3 运行;stills.cjs 和 render.cjs 在项目文件夹中通过 node 运行。

必须遵循的工作流

  1. 5 行简报:目标、受众、格式(16:9、9:16、1:1)、时长、语气和品牌。如果缺少格式或时长,默认采用 16:9、30 fps、15 到 30 秒,并说明默认值。
  2. 品牌:如果有网站、代码库或产品截图,请运行 uv run <skill>/scripts/brand.py,并使用它生成的 brand.json(颜色、字体、logo,以及每个值的来源)。如果已有之前视频的 brand/ 文件夹,请重复使用。如果没有任何来源,请向用户询问颜色和字体;不要臆造品牌信息。详情见 references/brand.md。
  3. 语音问题(始终询问):运行 python3 <skill>/scripts/voice.py,并向用户提出它打印的问题,包含三个选项:无语音、使用 ElevenLabs 语音或本地语音。如果有 Agent 提问工具,请使用该工具并等待回复。不要替用户选择。仅当用户的请求已明确回答此问题时,才可省略。详情见 references/narration.md。
  4. 项目:将 <skill>/assets/template/ 复制到视频文件夹,将 gitignore 重命名为 .gitignore,把 brand.json 复制到 public/,并运行 npm install。项目结构见 references/template.md。
  5. 方向(任何场景制作之前):阅读 references/design.md、references/direction.md 和 references/doctrine.md。如果用户提供了参考视频,请先运行 reference.py analyze 并遵循 references/reference.md。准备 2 到 3 个不同方向(使用 design.md 末尾的方向卡,或根据主题衍生;绝不能采用“超大压缩字体、近乎纯黑加一种点缀色、角落里的等宽字体”这一默认组合),每个方向各制作一张风格帧,用 contact_sheet.py --images 合并后展示给用户选择。将选择记录到 direction.json(概念、视觉规则、理由,以及每个场景的布局、入场方式和主视觉元素)。如果用户明确委托你选择,请自行选择,记录 "approved_by": "agent",并在交付时说明。
  6. 脚本和配乐谱:编写 roteiro.json(场景、台词、命名标记、SFX)。uv run <skill>/scripts/score.py --dry 会显示需要消耗多少付费字符;告知用户数量并等待其同意,然后才能使用 --yes。脚本会逐句生成语音、配乐谱(public/timeline.json)和标记(public/cues.json)。音频是计时依据:视觉内容应据此调整。不得在场景中手动写入帧数。格式见 references/score.md。
  7. 配乐和 SFX:使用 music.py(Incompetech,然后 Openverse,最后本地生成);需要卡点剪辑时使用 beats.py。所有下载的文件都要记录到 credits.json。详情见 references/audio.md。 音频审批(有语音时):运行 mix.py,并在动画制作前将 public/audio/mix.wav 交给用户试听。若请求仅修改语音,则重新运行 score.py 和 mix.py,然后交由用户试听;不要渲染,也不要制作联系表。
  8. 场景:<Scene id> 和 useScene(id).at('marca') 用于获取时间;theme.ts 提供颜色和字体;useFormat() 提供缩放比例和安全区域。先在 references/blocks.md 中查找现成模块,之后再使用基本图元组合。只阅读你将采用的技术对应的参考文档(见下方路由)。
  9. Lint(每次渲染前):在项目文件夹中运行 python3 <skill>/scripts/lint.py。修复所有 FAIL;评估每个 WARN。
  10. 每日预览:node <skill>/scripts/stills.cjs <Composition> 会在一个进程中渲染每个场景的开头、中间和结尾,并测量每帧的文本。uv run <skill>/scripts/layout.py out/stills --timeline public/timeline.json 会将裁切、重叠、过小、对比度不足或超出安全区域的文本判定为不合格,并提示构图相同的场景。uv run <skill>/scripts/design.py out/stills --timeline public/timeline.json 会统计模型默认画面的特征:如果结论为“模型默认”,请返回方向阶段后再进行润色。contact_sheet.py --stills out/stills 会生成联系表。查看图像,按照 references/qa.md 中的清单进行检查,修正并重复,直到没有 FIX。绝不要在循环中调用 remotion still。
  11. 独立审阅者:将联系表和简报连同 references/critic.md 中的文本一起交给上下文干净的子 Agent。编写场景的人不能审批该场景。如果没有可用的子 Agent,请在交付时说明未进行独立审阅。
  12. 混音、渲染、交付和验收门槛:
    uv run <skill>/scripts/mix.py public/timeline.json
    python3 <skill>/scripts/gl.py Showcase                      # 每个项目运行一次:测量图形后端
    node <skill>/scripts/render.cjs Showcase                    # 或 --formats reels,square,youtube
    uv run <skill>/scripts/deliver.py out/render.mp4 -o out/final.mp4
    uv run <skill>/scripts/qa.py out/final.mp4 --profile youtube --timeline public/timeline.json --stills out/stills
    uv run <skill>/scripts/contact_sheet.py out/final.mp4 --timeline public/timeline.json -o out/sheet.png
    
    如果有参考视频,请使用 reference.py compare reference/reference.json out/final.mp4 --timeline public/timeline.json 完成比对,并报告评分。 渲染后修正:render.cjs Showcase --scene <id> 只会重新渲染该场景并重新组装主视频。完整渲染次数有预算限制(budget.full_renders,默认值为 4),超出时脚本会拒绝执行。只有 qa.py 没有 FAIL 时才能交付。
  13. 如实交付:MP4、联系表、积分说明,以及 WARN 清单、方向审批者、所有改用替代方案的资源(语音、配乐、格式、简化场景)和所有未经验证的事项。

不可妥协的规则

  • 所有视觉状态都必须由 useCurrentFrame() 推导。禁止:CSS 过渡或动画、animate-* 类、setTimeout、Date.now()、Math.random()(请使用 random(seed))、React Three Fiber 的 useFrame()。否则渲染会闪烁或与预览不一致。lint.py 会判定不通过。
  • 曲线和弹簧只能使用 src/lib/motion.ts 中的令牌:入场用 enter 或 sharp,出场用 exit,位置或形状变化用 move,缩小和显现用 settle,场景主角用 easeX.emphasized,linear 仅用于连续旋转和循环。绝不使用 bounce 或 elastic。超调只能有一个(easeX.overshoot 或 springs.snappy),且仅用于焦点元素。不带 easing 的 interpolate() 是线性的:请使用 tween() 或 keys()。
  • 时间取自分镜表,颜色取自主题。场景中不得直接填写帧数或十六进制颜色:使用 useScene(id).at('marca') 和 C.*。
  • 每个场景都有自己的布局、入场和主角,并在 direction.json 中声明。相邻场景不得重复相同的布局与入场组合。视觉母题应贯穿整个作品,而不是在每个场景中都变成同一张卡片。
  • 真实图片只能来自已核实许可的素材库(stock.py)或用户提供的素材。商业作品中不得出现可识别的人脸、品牌或第三方近期作品。
  • 参考作品只可借鉴结构、节奏和技法。不得复用其中的画面、素材、标志、文字、配乐或声音。
  • 每次只突出一个主要动作;次要动作的幅度不得超过主要动作的 30%,环境动效不得超过 5%。错峰总时长不超过 500 ms。出场时长约为入场时长的 75%。切镜后 0.1 到 0.3 s 开始首次动画。每次元素到位后停留 0.4 到 0.8 s;高潮前停顿 0.3 到 0.75 s。
  • 文字至少停留 1.5 s + 每个单词 0.3 s,且 pt-BR 文本每秒最多 17 个字符。最多 2 行,每行 32 到 42 个字符。
  • 安全区域:动作内容位于画面 90% 范围内,文字位于 80% 范围内。对于 9:16(1080x1920),文字应位于 y 360 到 1420 之间。短边为 1080 时,字号至少为 28 px。故意溢出画面的装饰文字需标记 data-decor。
  • 每段视频仅在 1 到 3 个快速节拍中使用动态模糊,绝不能用于需要阅读的文字。
  • 避免任何 AI 生成感:不得使用全屏紫色渐变、所有元素都淡入、通用光晕、表情符号或全部居中。只使用一种强调色,并确保对比度符合 WCAG AA。
  • 画面中不得出现虚构的数字、标志或事实。只能使用用户提供或有来源支持的数据。
  • 配乐仅可使用许可为 cc0、pdm 或 by 的素材(或生成的配乐)。不得使用 nd、sa、nc、sampling+ 或许可未知的素材。
  • API 密钥绝不能出现在聊天、命令、日志或受版本控制的文件中。用户应将密钥写入项目的 .env 文件。

技法路由器

技法参考资料原语或脚本
图表、计数器、设备外框、图例、代码窗口、光标、下三分之一字幕、Logo 演绎references/blocks.mdsrc/blocks/*
关键帧、运动平滑、缓动、弹簧references/techniques-motion.mdkeys()、tween()、pop()、springs
放大、缩小、推进、平移、甩镜、视差、手持摄影references/techniques-motion.md<Camera>、<Layer depth>、wiggle()
动态图形(形状、线条、数据、Logo)references/techniques-motion.mdshapes.ts、strokeDashoffset、@remotion/shapes
动态排版references/techniques-motion.md<KineticWords words={WORDS}>
变形references/techniques-motion.mdmorphPath()(flubber)
无缝循环references/techniques-motion.mdloopPhase()、loopNoise()、qa.py --loop
UX/UI 动效与微交互references/techniques-motion.mdsprings.snappy、弧形光标、涟漪
预备动作、过冲、跟随动作、挤压与拉伸、拖影references/techniques-advanced.mdanticipate()、easeX、lag()、squash()、smear()
级联、速度渐变、时间重映射、速度曲线references/techniques-advanced.mdcascade()、timeRemap()、velocity()
匹配剪辑、变形剪辑、无痕剪辑、J-cut 和 L-cut、光圈、形状转场和液态转场references/techniques-advanced.md<IrisReveal>、<GooeyFilter>、@remotion/transitions
遮罩、修剪路径、重复器、基线显现、计数器、回声、光泽、镜头质感references/techniques-advanced.md<MaskReveal>、ticker()、<Echo>、<Shine>、<Grain>
逐帧动画、赛璐珞动画、定格动画references/techniques-character.mdstepped()、<BoilFilter>、jitter()
绑定、IK、唇形同步references/techniques-character.mdtwoBoneIK()、fabrik()、forwardKinematics()、visemeFor()
3D 动效references/techniques-3d-compositing.md@remotion/three + <ThreeCanvas>
合成、将实拍视频作为图层references/techniques-3d-compositing.md混合模式、遮罩、<Grain>、色度键
免费真实照片和视频、Ken Burns、照片 2.5D 视差、双色调、字母内部的视频references/stock.md 和 references/design.md(第 6 节)scripts/stock.py
复现参考视频的结构references/reference.mdscripts/reference.py
动作跟踪、附着在人脸或手部的图表references/techniques-3d-compositing.mdscripts/track.py(--point、--face、--hand)+ <Tracked>
匹配移动references/techniques-3d-compositing.mdtrack.py --quad + <CornerPin>、scripts/matchmove.py
rotoscopingreferences/techniques-3d-compositing.mdscripts/roto.py(带 alpha 的 PNG 或 SVG 轮廓)

画面设计与六种艺术指导方向(references/design.md)、指导与约定(references/direction.md)、参考模式(references/reference.md)、免费素材库(references/stock.md)、脚本与乐谱(references/score.md)、品牌(references/brand.md)、模块(references/blocks.md)、旁白(references/narration.md)、音频(references/audio.md)、QA、预算与交付(references/qa.md)、审阅者(references/critic.md)、运动原则(references/doctrine.md)、模板地图(references/template.md)。

语音和音频命令

python3 <skill>/scripts/voice.py                                   # mede o hardware e monta a pergunta de voz
python3 <skill>/scripts/voice.py --check-key                       # valida a chave da ElevenLabs sem gastar
python3 <skill>/scripts/voice.py --audition "Primeira frase." -o out/vozes   # mesma frase em cada voz local
uv run <skill>/scripts/score.py --dry                               # custo e o que seria gerado, sem gastar
uv run <skill>/scripts/score.py --yes                               # voz frase a frase + partitura + marcas
uv run <skill>/scripts/align.py public/audio/narration.wav roteiro.txt    # tempos por palavra para qualquer WAV
uv run <skill>/scripts/align.py filmagem.mp4 --transcribe -o public/audio/fala   # fala de uma filmagem, sem roteiro
uv run <skill>/scripts/tts.py --normalize-only "Plano de R$ 49,90 às 14h30 com IA"                  # confira a pronúncia
uv run <skill>/scripts/music.py incompetech --feel calm --bpm 70-110 --min-sec 60 -o public/audio/music.mp3
uv run <skill>/scripts/music.py generate --sec 30 --bpm 84 --mood calm -o public/audio/music.wav    # offline
uv run <skill>/scripts/beats.py public/audio/music.mp3 --fps 30                                   # cortes na batida
uv run <skill>/scripts/sfx.py --all public/audio/sfx                                              # whoosh, pop, click...

何时停止并提问

  • 第 3 步的语音问题和第 5 步的方向选择。
  • 用户未提供的 Logo、品牌、数字或证言。
  • 在调用付费 API(语音、音乐)之前:告知 score.py --dry 的数字,并等待用户确认。
  • 许可类型不同于 cc0、pdm 或 by 的配乐。
  • 完整渲染超出预算:说明还需核对哪些内容,以及为什么静帧不够。
  • 用户的公司有超过 3 人使用 Remotion:提醒他们需要 Company License。

评论

支持 Markdown