mcpField
R
remotion

remotion

github.com/oakossCreative & media20124 installsUpdated 11w ago
Repository

About remotion

Remotion is a React-based toolkit for creating videos from components, intended for developers building animated or data-driven video compositions. It uses frame-based timing for animation and supports media, captions, transitions, and rendering.

Key features

  1. 01React component-based video compositions
  2. 02Frame-driven animation with interpolation and springs
  3. 03Sequencing and scene transitions
  4. 04Audio, video, images, and GIF handling
  5. 05Captions and text animation
  6. 06Video rendering and dynamic metadata

Use cases

  1. 01Create animated videos from React components
  2. 02Build multi-scene videos with transitions and audio
  3. 03Generate captions and word highlighting
  4. 04Render videos with content-dependent duration

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/oakoss/agent-skills --skill remotion

After installing, type/remotionin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

references/
advanced-features.md
animations-and-timing.md
captions-and-text.md
compositions-and-sequencing.md
media-and-assets.md
transitions.md

Details

From the project README

Remotion

Overview

Remotion enables programmatic video creation using React components. Compositions define renderable videos with explicit width, height, fps, and duration. All animations must be driven by useCurrentFrame() -- CSS animations and Tailwind animation classes are forbidden as they cause rendering artifacts. Use this skill for Remotion compositions, animations, audio, captions, transitions, media handling, or rendering. Not intended for general React UI development.

Quick Reference

PatternAPI / ApproachKey Points
Basic animationuseCurrentFrame() + interpolate()Always clamp with extrapolateRight: 'clamp'
Spring animationspring({ frame, fps }){ damping: 200 } for smooth, no-bounce motion
Composition<Composition id, component, durationInFrames, fps, width, height>Always set explicit dimensions
Dynamic metadatacalculateMetadata on <Composition>Set duration, dimensions, props before render
Sequencing<Sequence from, durationInFrames>useCurrentFrame() returns local frame (starts at 0)
Series<Series> with <Series.Sequence>Sequential playback; negative offset for overlaps
Transitions<TransitionSeries> with fade(), slide(), wipe()Total duration = sum of scenes minus transition durations
Audio/Video<Audio> / <Video> from @remotion/mediaUse staticFile() for local assets
CaptionscreateTikTokStyleCaptions()Token-level word highlighting via page.tokens
Images<Img> from remotionNever use native <img> or Next.js <Image>
GIFs<AnimatedImage> from remotionSynced with timeline; playbackRate for speed control
Fonts@remotion/google-fonts or @remotion/fontsCall loadFont() at top level; blocks rendering until ready
3D content<ThreeCanvas> from @remotion/threeMust set width/height; useFrame() from R3F is forbidden
Text measurementmeasureText(), fitText() from @remotion/layout-utilsLoad fonts first; match properties for measurement and render
ParametersZod schema on <Composition schema>Top-level must be z.object(); exact Zod version required (check Remotion docs)
Transparent video--pixel-format=yuva420p --codec=vp9WebM for browser; ProRes 4444 for editing software
MapsMapbox with useCurrentFrame()Set interactive: false, fadeDuration: 0; render with --gl=angle --concurrency=1

Common Mistakes

MistakeCorrect Pattern
Using CSS animations or setTimeoutUse interpolate() and useCurrentFrame() for timeline-synced animations
Using native <img>, <video>, <audio> tagsUse <Img>, <Video>, <Audio> from Remotion for proper preloading
Hardcoding video durationUse calculateMetadata to dynamically set duration from content
Not specifying width/height on compositionsAlways define explicit dimensions to avoid rendering issues
Using useFrame() from React Three FiberUse useCurrentFrame() from Remotion inside <ThreeCanvas>
Forgetting premountFor on sequencesAlways premount sequences to preload components before playback
Not clamping interpolate() outputSet extrapolateRight: 'clamp' to prevent values exceeding target range
Placing <Sequence> in <ThreeCanvas> without layout="none"Set layout="none" on any <Sequence> inside <ThreeCanvas>

Delegation

  • Discover available Remotion components and their props: Use Explore agent to search the codebase for composition definitions and asset usage
  • Build a multi-scene video with transitions and audio: Use Task agent to compose sequences, transitions, and audio tracks step by step
  • Plan a video generation pipeline with dynamic data: Use Plan agent to design the architecture for parametrized compositions and rendering workflow

References

  • Animations and Timing -- Interpolation, springs, easing, and frame-driven animation patterns
  • Compositions and Sequencing -- Defining compositions, stills, folders, sequences, series, and trimming
  • Media and Assets -- Audio, video, images, GIFs, fonts, and static file handling
  • Captions and Text -- Transcription, SRT import, TikTok-style captions, and text animations
  • Transitions -- Scene transitions with fade, slide, wipe, flip, and duration calculation
  • Advanced Features -- 3D content, charts, maps, parameters, transparent video, and DOM measurement

Comments

Markdown supported