Remotion Video Creator
Prerequisites
Check if the remotion-best-practices skill is installed (look in both .claude/skills/remotion-best-practices/ and ~/.claude/skills/remotion-best-practices/). If not found, prompt the user to install it - it provides essential Remotion technical knowledge (spring configs, transitions API, sequencing, text animations, etc.).
Workflow
Creating a Remotion video involves these steps:
- Gather requirements (story, assets, aspect ratio)
- Analyze reference images
- Break down into scenes
- Recreate images as animated TSX components
- Extract reusable components
- Sequence scenes with transitions
- Preview, iterate, and export
1. Gather Requirements
Ask the user:
- What should the video communicate?
- Any images/assets to use? (screenshots, logos, mockups)
- Aspect ratio? 16:9 (YouTube), 9:16 (Reels/Shorts), 4:3, 1:1 (Instagram)
2. Analyze Reference Images
When the user provides UI screenshots or mockups:
- Read each image to understand its content, layout, colors, and typography
- Identify the story - what flow or process do the images represent?
- Extract details - exact text, amounts, colors, element positions, branding
- Note relationships - which elements repeat across images? What's the narrative order?
This analysis informs every subsequent step. The goal is to understand the images deeply enough to faithfully recreate them as animated components.
3. Break Down into Scenes
Map each image (or logical group) to a scene. For each, identify:
- Purpose: What it communicates
- Elements: Visual components needed
- Entrance: How elements appear (fade, slide, spring)
- Duration: Time on screen (frames at 30fps)
Example:
Scene 1: Intro (100 frames) - Logo reveal + tagline
Scene 2: Problem (120 frames) - Show pain point
Scene 3: Solution (150 frames) - Demonstrate product
Scene 4: Result (90 frames) - Success state
4. Recreate Images as Animated TSX Components
Rather than displaying static images, rebuild each scene as a TSX component with animations:
- Reproduce the layout - match the original image's structure (cards, bubbles, tables, etc.)
- Match visual details - colors, fonts, spacing, borders, shadows from the reference
- Add motion - make elements animate in rather than appearing all at once:
- Text: typewriter effect (reveal characters over time)
- Tables/lists: staggered row entrance
- Cards/bubbles: spring-based slide + fade in
- Loaders/spinners: continuous rotation
- Preserve the content - use the exact text, amounts, labels from the reference images
Design each scene in two dimensions:
Layers (spatial):
- Background (color, gradient, glow)
- Main content (cards, images, text)
- Decorative (shadows, particles)
Time (temporal):
- What appears first?
- What follows? (stagger delays)
- What loops? (spinners, pulses)
5. Extract Reusable Components
Move repeated elements to src/components/:
- Avatars, icons, branded elements
- Card/bubble layouts
- Animation wrappers
Important: Use unique IDs for SVG gradients to avoid conflicts across component instances.
6. Sequence with Transitions
Use TransitionSeries from @remotion/transitions. Match transition to content:
- fade: Universal, clean (chat pauses, state changes)
- slide: Spatial navigation (app screens, page turns)
- wipe: Dramatic reveals
7. Preview, Iterate, Export
npm start # Preview
npx remotion render <CompositionId> output/video.mp4 # Export
Scene Design Principles
- Animate in reading order; guide the eye with motion
- Don't animate everything at once; let elements breathe
- Same easing for same animation types; consistent palette
- Timing: fast (15-20 frames), medium (25-35), slow (40-60)
Duration Calculation
Total = Sum of scene durations - Sum of transition durations
Transitions overlap adjacent scenes. Update TOTAL_DURATION in Root.tsx after changes.
File Structure
<project-name>/
├── public/ # Static assets (images, logos)
├── src/
│ ├── Root.tsx # Composition config (dimensions, fps, duration)
│ ├── MainVideo.tsx # Scene sequencing with TransitionSeries
│ ├── components/ # Reusable elements
│ └── scenes/ # Individual scene components
├── output/ # Rendered videos
└── package.json
1---2name: remotion-video-creator3description: Create animated videos using Remotion (React-based video framework). Use when the user wants to create demo videos, animated explainers, walkthroughs, or slideshow-style presentations from UI concepts, screenshots, or descriptions. Handles scene design, TypeScript component creation, spring-based animations, typewriter effects, and video export.4---56# Remotion Video Creator78## Prerequisites910Check if the `remotion-best-practices` skill is installed (look in both `.claude/skills/remotion-best-practices/` and `~/.claude/skills/remotion-best-practices/`). If not found, prompt the user to install it - it provides essential Remotion technical knowledge (spring configs, transitions API, sequencing, text animations, etc.).1112## Workflow1314Creating a Remotion video involves these steps:15161. Gather requirements (story, assets, aspect ratio)172. Analyze reference images183. Break down into scenes194. Recreate images as animated TSX components205. Extract reusable components216. Sequence scenes with transitions227. Preview, iterate, and export2324### 1. Gather Requirements2526Ask the user:27- What should the video communicate?28- Any images/assets to use? (screenshots, logos, mockups)29- Aspect ratio? 16:9 (YouTube), 9:16 (Reels/Shorts), 4:3, 1:1 (Instagram)3031### 2. Analyze Reference Images3233When the user provides UI screenshots or mockups:34351. **Read each image** to understand its content, layout, colors, and typography362. **Identify the story** - what flow or process do the images represent?373. **Extract details** - exact text, amounts, colors, element positions, branding384. **Note relationships** - which elements repeat across images? What's the narrative order?3940This analysis informs every subsequent step. The goal is to understand the images deeply enough to faithfully recreate them as animated components.4142### 3. Break Down into Scenes4344Map each image (or logical group) to a scene. For each, identify:45- **Purpose**: What it communicates46- **Elements**: Visual components needed47- **Entrance**: How elements appear (fade, slide, spring)48- **Duration**: Time on screen (frames at 30fps)4950Example:51```52Scene 1: Intro (100 frames) - Logo reveal + tagline53Scene 2: Problem (120 frames) - Show pain point54Scene 3: Solution (150 frames) - Demonstrate product55Scene 4: Result (90 frames) - Success state56```5758### 4. Recreate Images as Animated TSX Components5960Rather than displaying static images, rebuild each scene as a TSX component with animations:61621. **Reproduce the layout** - match the original image's structure (cards, bubbles, tables, etc.)632. **Match visual details** - colors, fonts, spacing, borders, shadows from the reference643. **Add motion** - make elements animate in rather than appearing all at once:65 - Text: typewriter effect (reveal characters over time)66 - Tables/lists: staggered row entrance67 - Cards/bubbles: spring-based slide + fade in68 - Loaders/spinners: continuous rotation694. **Preserve the content** - use the exact text, amounts, labels from the reference images7071Design each scene in two dimensions:7273**Layers** (spatial):741. Background (color, gradient, glow)752. Main content (cards, images, text)763. Decorative (shadows, particles)7778**Time** (temporal):791. What appears first?802. What follows? (stagger delays)813. What loops? (spinners, pulses)8283### 5. Extract Reusable Components8485Move repeated elements to `src/components/`:86- Avatars, icons, branded elements87- Card/bubble layouts88- Animation wrappers8990Important: Use unique IDs for SVG gradients to avoid conflicts across component instances.9192### 6. Sequence with Transitions9394Use `TransitionSeries` from `@remotion/transitions`. Match transition to content:95- **fade**: Universal, clean (chat pauses, state changes)96- **slide**: Spatial navigation (app screens, page turns)97- **wipe**: Dramatic reveals9899### 7. Preview, Iterate, Export100101```bash102npm start # Preview103npx remotion render <CompositionId> output/video.mp4 # Export104```105106## Scene Design Principles107108- Animate in reading order; guide the eye with motion109- Don't animate everything at once; let elements breathe110- Same easing for same animation types; consistent palette111- Timing: fast (15-20 frames), medium (25-35), slow (40-60)112113## Duration Calculation114115Total = Sum of scene durations - Sum of transition durations116117Transitions overlap adjacent scenes. Update `TOTAL_DURATION` in Root.tsx after changes.118119## File Structure120121```122<project-name>/123├── public/ # Static assets (images, logos)124├── src/125│ ├── Root.tsx # Composition config (dimensions, fps, duration)126│ ├── MainVideo.tsx # Scene sequencing with TransitionSeries127│ ├── components/ # Reusable elements128│ └── scenes/ # Individual scene components129├── output/ # Rendered videos130└── package.json131```