关于 remotion-animation-rules
面向 Remotion 动画创作的 Claude 技能,指导使用 Remotion 原生的逐帧动画方式,适用于制作字幕、转场和动态图形,并强调确定性渲染与布局稳定。
主要功能
- 01使用 useCurrentFrame() 控制动画时间
- 02以 spring() 和 interpolate() 实现运动
- 03避免 CSS 过渡和浏览器计时
- 04验证字幕同步与逐帧稳定性
适用场景
- 01为视频制作逐帧同步的动画字幕
- 02构建可复用的场景动画与转场
- 03排查 Remotion 动画渲染不一致
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ composio-community/ opencode-skills --skill remotion-animation-rules安装后在 Claude Code 中输入/remotion-animation-rules确认已加载。
详细介绍
Remotion 动画规则
概述
此技能可帮助 Claude 遵循 Remotion 原生的渲染和动画原则,创建技术上正确的动画。
与传统的前端动画工作流不同,Remotion 完全依靠确定性的逐帧渲染,而非浏览器驱动的动画系统。
此工作流重点关注:
- 正确使用
useCurrentFrame() - 由弹簧驱动的运动系统
- 确定性渲染
- 布局稳定性
- 基于帧的计时
- 避免使用不受支持的动画模式
目标是确保动画流畅、稳定、渲染安全,并在所有帧中保持一致。
设置
开始之前:
-
安装 Node.js: https://nodejs.org
-
验证安装:
node -v
npm -v
- 创建 Remotion 项目:
npm init video
- 启动开发服务器:
npm run dev
- 在 VS Code 中打开项目。
推荐工具:
- VS Code
- Remotion Preview
- React 知识
- Prettier 扩展
所需输入
- 动画概念
- 视频时长
- 场景结构
- 资源:
- 文本
- 字幕
- 图片
- 音频
可选:
- 品牌指南
- 现有动态效果参考
- 分镜脚本
何时使用此技能
在以下情况下使用此技能:
- 创建 Remotion 动画
- 构建字幕系统
- 实现转场效果
- 设计动态图形
- 创建可复用的动画逻辑
- 调试不稳定的动画
- 优化渲染一致性
何时不使用
以下情况请勿使用此技能:
- 基于 CSS 的动画系统
- 浏览器驱动的转场工作流
- 静态设计任务
- 不使用 React 工作流的传统视频编辑器
使用示例
为创业公司发布视频创建动态字幕。
Claude 应该:
- 使用
useCurrentFrame()处理所有动画计时 - 使用弹簧物理效果实现字幕运动
- 完全避免 CSS 转场
- 逐帧同步字幕显示
- 保持布局尺寸稳定
- 确保导出时渲染保持确定性
最终输出应:
- 渲染一致
- 避免计时故障
- 保持动作流畅
- 防止布局不稳定
- 确保可安全导出
Remotion 核心原则
1. 所有内容都应基于帧
在 Remotion 中,动画计时应始终由当前帧决定。
推荐的 API:
useCurrentFrame()interpolate()spring()
示例:
const frame = useCurrentFrame();
这可确保:
- 确定性渲染
- 精确同步
- 导出一致性
避免使用:
setTimeout- 浏览器计时系统
- 不受控的动画
2. 使用弹簧物理效果实现运动
应尽可能使用弹簧驱动的系统来实现运动。
推荐方式:
spring({
frame,
fps,
config: {
damping: 200,
},
});
弹簧系统可提供:
- 更流畅的缓动效果
- 可预测的运动
- 自然的运动表现
适用场景:
- 缩放
- 淡入
- 字幕显示
- 滑动动画
- 转场
避免使用:
- CSS 缓动转场
- 不受控的插值
- 浏览器驱动的动画计时
3. 完全避免 CSS 转场
在 Remotion 工作流中,CSS 转场并不可靠。
错误方式:
transition: all 0.3s ease;
CSS 转场会导致的问题:
- 渲染不一致
- 导出结果不匹配
- 计时不稳定
- 行为取决于浏览器
推荐方式:
- 直接根据帧值计算运动
- 使用插值或弹簧效果
4. 控制布局稳定性
Remotion 中一个常见问题是动画期间布局发生偏移。
问题示例:
- 播放打字动画时文本跳动
推荐修复方法:
- 在背景中渲染不可见的完整文本
- 单独叠加动画文本
- 保持布局尺寸稳定
Claude 应主动防止:
- 文本重新排版
- 动画期间尺寸改变
- 定位不稳定
- 布局动态偏移
稳定的布局有助于:
- 提高渲染一致性
- 提高字幕可读性
- 让动画更加流畅
5. 保持动画具有确定性
每次渲染时,动画的表现都应完全一致。
运动系统应:
- 使用可预测的时序
- 避免随机性
- 保持由帧控制
- 与音频准确同步
确定性渲染有助于提升:
- 导出可靠性
- 调试效率
- 同步效果
- 生产稳定性
工作流
1. 定义动画结构
首先确定:
- 视频时长
- 场景划分
- 字幕时序
- 转场需求
将动画组织为可复用的场景组件。
结构示例:
scenes/
Intro.tsx
Features.tsx
CTA.tsx
2. 实现帧逻辑
在场景中使用 useCurrentFrame()。
示例:
const frame = useCurrentFrame();
所有动画状态都应根据帧的推进来计算。
3. 添加运动系统
使用:
spring()interpolate()
推荐的动画效果:
- 平滑移动
- 可控缩放
- 定时转场
- 字幕同步
避免使用:
- CSS 动画系统
- 由浏览器控制的时序
- 不受控的缓动
4. 验证布局稳定性
检查是否存在:
- 文本跳动
- 尺寸变化
- 字幕偏移
- 位置不稳定
渲染前先解决不稳定问题。
5. 渲染最终视频
导出前验证:
- 时序一致性
- 动作流畅度
- 字幕同步
- 布局稳定性
渲染输出:
npm run build
或:
npx remotion render
推荐的导出格式:
- MP4
- 针对平台优化的设置
输出要求
最终输出应包含:
- 流畅的基于帧的动画
- 确定性渲染
- 稳定的布局
- 同步的字幕
- 可用于生产的视频导出
工作流本身应保持:
- 可复用
- 模块化
- 易于维护
- 渲染安全
执行策略(适用于 AI Agent)
Agent 应:
- 仅使用 Remotion 原生动画系统
- 逐帧控制所有动作
- 避免使用不受支持的浏览器动画模式
- 保持确定性的渲染行为
- 主动检测并防止布局不稳定
- 在导出前验证动画一致性
工作流应优先优化:
- 渲染一致性
- 时序精度
- 布局稳定性
- 动作流畅度
- 导出可靠性
最佳实践
- 使用
useCurrentFrame()控制所有时序 - 优先使用弹簧动画,而非手动缓动
- 保持场景模块化
- 逐帧验证动画
- 避免依赖布局的运动
- 保持字幕系统稳定
- 在不同场景中复用运动模式
注意事项
useCurrentFrame()是 Remotion 工作流的核心- 切勿依赖 CSS 过渡
- 弹簧系统可实现更自然的动作
- 稳定的布局能显著提升渲染质量
- 确定性渲染对于专业视频工作流至关重要