remotion-video 标准
Remotion video production best practices — spring animations, interpolation patterns, SVG draw-on effects, scene transitions, chart animations, audio integration, and rendering. Use when building programmatic videos with Remotion, creating animated content, or producing marketing videos with code.
安装方式
cp -r skills/remotion-video ~/.claude/skills/remotion-video把该 skill 目录放进客户端 skills 目录。不同客户端的目录可能不同,Claude Code 默认是 ~/.claude/skills/
https://raw.githubusercontent.com/thatrebeccarae/claude-marketing/a8a63ec1341f05ec9c1e9cb52b4edeb14e3bdcba/skills/remotion-video/SKILL.md下载后另存为 ~/.claude/skills/remotion-video/SKILL.md。链接锁定采集时的 commit,内容与本站展示一致。
整仓一次性获取:git clone --depth 1 https://github.com/thatrebeccarae/claude-marketing.git
依赖与权限
- 无需 API Key
- 需要联网访问外部服务
- 依赖外部命令:
git - 以上为按正文与 frontmatter 自动推断的信号,仅供参考;安装前建议先阅读原文。
SKILL.md 正文
Remotion Video Production
Best practices for building programmatic videos with Remotion — animations, transitions, charts, and rendering.
Install
git clone https://github.com/thatrebeccarae/claude-marketing.git && cp -r claude-marketing/skills/remotion-video ~/.claude/skills/
Core Capabilities
- Spring animation presets (bouncy, smooth, crisp, staggered)
- Interpolation patterns (camera zoom, parallax, scroll simulation)
- SVG draw-on animations (path tracing, stroke reveal)
- Scene transitions via TransitionSeries
- AbsoluteFill layering for compositing
- Chart animations (bar grow, line draw-on, pie reveal, count-up numbers)
- Audio integration and sync
- Rendering configuration
Spring Presets
Use spring() from Remotion for physics-based animations:
| Preset | Config | Use Case |
|---|---|---|
| Bouncy | mass: 0.5, damping: 8, stiffness: 120 | Playful reveals, logo bounces |
| Smooth | mass: 1, damping: 15, stiffness: 80 | UI transitions, slide-ins |
| Crisp | mass: 0.8, damping: 20, stiffness: 200 | Snappy interactions, toggles |
| Staggered | Any preset with frame offset per item | List reveals, grid animations |
import { spring, useCurrentFrame, useVideoConfig } from "remotion";
const frame = useCurrentFrame();
const { fps } = useVideoConfig();
const scale = spring({
frame,
fps,
config: { mass: 0.5, damping: 8, stiffness: 120 },
});
Interpolation Patterns
Camera Zoom
import { interpolate } from "remotion";
const zoom = interpolate(frame, [0, 30], [1, 1.5], {
extrapolateRight: "clamp",
});
Parallax Layers
const bgX = interpolate(frame, [0, 100], [0, -50]);
const fgX = interpolate(frame, [0, 100], [0, -150]);
Scroll Simulation
const scrollY = interpolate(frame, [0, 90], [0, -800], {
extrapolateRight: "clamp",
});
SVG Draw-On
Animate strokeDashoffset to reveal SVG paths:
const pathLength = 500;
const draw = interpolate(frame, [0, 60], [pathLength, 0], {
extrapolateRight: "clamp",
});
<path
d="..."
strokeDasharray={pathLength}
strokeDashoffset={draw}
/>
Chart Animation Patterns
| Pattern | Technique |
|---|---|
| Bar grow | Animate height from 0 to target, stagger each bar by 3-5 frames |
| Line draw-on | SVG path with strokeDashoffset animation |
| Pie/donut reveal | Animate conic-gradient stop or SVG arc path |
| Count-up numbers | Interpolate from 0 to target, Math.round() for display |
Scene Transitions
import { TransitionSeries, linearTiming } from "@remotion/transitions";
import { fade } from "@remotion/transitions/fade";
<TransitionSeries>
<TransitionSeries.Sequence durationInFrames={90}>
<SceneOne />
</TransitionSeries.Sequence>
<TransitionSeries.Transition
timing={linearTiming({ durationInFrames: 15 })}
presentation={fade()}
/>
<TransitionSeries.Sequence durationInFrames={90}>
<SceneTwo />
</TransitionSeries.Sequence>
</TransitionSeries>
Performance Rules
- No
useEffectfor animations. UseuseCurrentFrame()+interpolate(). - Memoize static components.
React.memofor anything that does not depend on frame. - Preload assets.
staticFile()for local,prefetch()for remote URLs. - Keep compositions under 30s for fast render iteration during development.
- Test at target resolution (1920x1080 or 1080x1080) before final render.
Anti-Patterns
- No CSS
transitionoranimation— use Remotioninterpolate()andspring() - No
setTimeoutorsetInterval— frame-based timing only - No absolute pixel positioning for responsive layouts — use
AbsoluteFill+ flex - No inline
styleobjects recreated every frame — extract to constants oruseMemo - No uncontrolled audio — always set explicit
volumeandstartFrom
For complete code examples and composition templates, see [REFERENCE.md](REFERENCE.md).
质量与来源
- 所属仓库
- thatrebeccarae/claude-marketing
- 仓库星标
- 163
- 最近更新
- 5 个月前
- 采集时间
- 今天
- commit
- a8a63ec1341f
- 内容指纹
- sha256:c41f70dfb1e64ca
- 文件路径
- skills/remotion-video/SKILL.md