remotion-videos

Use when create animated marketing videos with Remotion (renders to MP4).

9 stars

Best use case

remotion-videos is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Use when create animated marketing videos with Remotion (renders to MP4).

Teams using remotion-videos should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/remotion-videos/SKILL.md --create-dirs "https://raw.githubusercontent.com/exiao/skills/main/video/remotion-videos/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/remotion-videos/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How remotion-videos Compares

Feature / Agentremotion-videosStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Use when create animated marketing videos with Remotion (renders to MP4).

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Remotion Videos

Create animated videos using Remotion (React). Based on the official remotion-dev best practices plus Bloom-specific compositions.

## Quick Router

Read the relevant rule file based on the task:

### Core Animation
| Task | Rule File |
|------|-----------|
| Interpolation, easing, springs | `references/rules/timing.md` |
| Animations fundamentals | `references/rules/animations.md` |
| Text animations (typewriter, word-by-word, etc.) | `references/rules/text-animations.md` |
| Scene transitions (slide, fade, wipe, flip) | `references/rules/transitions.md` |
| Sequencing (delay, trim, limit duration) | `references/rules/sequencing.md` |
| Trimming (cut beginning/end) | `references/rules/trimming.md` |

### Media
| Task | Rule File |
|------|-----------|
| Images (Img component) | `references/rules/images.md` |
| Videos (embed, trim, volume, speed, loop) | `references/rules/videos.md` |
| Audio (import, trim, volume, speed, pitch) | `references/rules/audio.md` |
| Audio visualization (spectrum, waveforms) | `references/rules/audio-visualization.md` |
| GIFs synced to timeline | `references/rules/gifs.md` |
| Fonts (Google Fonts, local) | `references/rules/fonts.md` |
| Assets (importing images/videos/audio) | `references/rules/assets.md` |

### Captions & Voiceover
| Task | Rule File |
|------|-----------|
| Generate captions (transcribe audio) | `references/rules/transcribe-captions.md` |
| Import SRT captions | `references/rules/import-srt-captions.md` |
| Display captions (animated subtitles) | `references/rules/display-captions.md` |
| Subtitles overview | `references/rules/subtitles.md` |
| AI voiceover (ElevenLabs TTS) | `references/rules/voiceover.md` |

### Advanced
| Task | Rule File |
|------|-----------|
| 3D content (Three.js / React Three Fiber) | `references/rules/3d.md` |
| Charts (bar, pie, line, stock) | `references/rules/charts.md` |
| Maps (Mapbox) | `references/rules/maps.md` |
| Lottie animations | `references/rules/lottie.md` |
| Light leak overlays | `references/rules/light-leaks.md` |
| Transparent video rendering | `references/rules/transparent-videos.md` |

### Setup & Config
| Task | Rule File |
|------|-----------|
| Compositions, stills, folders, default props | `references/rules/compositions.md` |
| Dynamic metadata (calculateMetadata) | `references/rules/calculate-metadata.md` |
| Parametrize with Zod schema | `references/rules/parameters.md` |
| TailwindCSS in Remotion | `references/rules/tailwind.md` |
| Measuring text (fit, overflow) | `references/rules/measuring-text.md` |
| Measuring DOM nodes | `references/rules/measuring-dom-nodes.md` |

### FFmpeg & Media Utils
| Task | Rule File |
|------|-----------|
| FFmpeg operations (trim, silence detection) | `references/rules/ffmpeg.md` |
| Extract frames from video | `references/rules/extract-frames.md` |
| Get video duration | `references/rules/get-video-duration.md` |
| Get video dimensions | `references/rules/get-video-dimensions.md` |
| Get audio duration | `references/rules/get-audio-duration.md` |
| Check if video can be decoded | `references/rules/can-decode.md` |

---

## remotion-bits Component Kit

Pre-built animation components. Install: `npm install remotion-bits`

Key components: `AnimatedText` (word/character/line reveals), `ParticleSystem` (confetti, snow, fireflies), `GradientTransition`, `Scene3D` (3D camera moves), `Typewriter`, `CodeBlock` (syntax-highlighted typing).

See `references/remotion-bits.md` for full catalog and usage examples.

---

## Bloom Project

Project location: `~/clawd/remotion-videos/`

```
remotion-videos/
├── src/
│   ├── Root.tsx          # All compositions registered here
│   ├── ProductDemo.tsx   # Main product demo component
│   ├── schema.ts         # Zod schemas for props
│   ├── scenes/           # Individual scene components
│   │   ├── TerminalTyping.tsx
│   │   ├── FileScanning.tsx
│   │   ├── ScoreReveal.tsx
│   │   ├── ResultsSummary.tsx
│   │   └── TextOverlay.tsx
│   └── Composition.tsx
├── public/               # Static assets
├── out/                  # Rendered output
├── remotion.config.ts
└── package.json
```

### Existing Compositions

| ID | Size | Use Case |
|----|------|----------|
| `ProductDemo` | 1080x1080 | Twitter/Instagram square |
| `ProductDemoVertical` | 1080x1920 | TikTok/Reels/Shorts vertical |
| `BloomDemo` | 1080x1080 | Bloom-branded square |
| `BloomDemoVertical` | 1080x1920 | Bloom-branded vertical |

All compositions: 15 seconds @ 30fps (450 frames).

### Props Schema (ProductDemoProps)

```typescript
{
  command: string;           // Terminal command shown typing
  files: Array<{             // File list for scanning animation
    name: string;
    errors: number;
    warnings: number;
  }>;
  score: number;             // Score to reveal (0-maxScore)
  maxScore: number;          // Maximum score value
  statusLabel: string;       // e.g. "Critical", "Moderate Risk"
  statusColor: string;       // Hex color for status
  resultLines: string[];     // Summary findings
  title: string;             // Video title text
  logoText: string;          // Brand/product name
}
```

---

## Pre-Composition: Real Bloom Screenshots

If the video features the Bloom app UI, capture real screenshots first:

1. Start PhoneAgent bridge (see `~/clawd/skills/phoneagent/SKILL.md`)
2. Run: `python scripts/capture_bloom_screenshots.py --feature <portfolio|stock_detail|watchlist> --output public/screenshots/<feature>`
3. Reference screenshots in compositions: `staticFile("screenshots/<feature>/home.png")`

Falls back gracefully if bridge not running.

---

## Rendering

```bash
cd ~/clawd/remotion-videos

# Preview in browser (Remotion Studio)
npm run dev

# Render to MP4
npx remotion render ProductDemo out/product-demo.mp4

# Render vertical for TikTok
npx remotion render ProductDemoVertical out/product-demo-vertical.mp4

# Custom props
npx remotion render ProductDemo out/custom.mp4 --props='{"command":"my command","score":85}'

# Render as GIF
npx remotion render ProductDemo out/demo.gif --image-format=png --codec=gif

# Specific frame range
npx remotion render ProductDemo out/clip.mp4 --frames=0-150
```

### Creating New Compositions

1. Create scene components in `src/scenes/`
2. Create main composition in `src/`
3. Define Zod schema in `src/schema.ts`
4. Register in `src/Root.tsx` with dimensions:
   - Square: 1080x1080 (Twitter, Instagram)
   - Vertical: 1080x1920 (TikTok, Reels, Shorts)
   - Horizontal: 1920x1080 (YouTube)

---

## Post-Render QA

Always run QA after rendering:

```bash
python scripts/visual_qa.py out/video.mp4 "Your goal description"
# Or use the wrapper:
./scripts/render_and_verify.sh BloomDemo out/demo.mp4 "Goal here"
```

Fix any flagged issues and re-render. Don't deliver a video that fails QA.

---

## Tips

- Keep videos 15-30 seconds for social media
- Use high contrast colors for mobile viewing
- Add captions/text overlays (most viewers watch muted)
- Test both square and vertical before publishing
- Render at 30fps for social media (60fps for high-motion)
- Use remotion-bits components before building animations from scratch

Related Skills

remotion-best-practices

9
from exiao/skills

Use when writing or reviewing Remotion code — compositions, animations, captions, audio, charts, 3D, fonts, transitions, or any React-based video creation. Trigger phrases: Remotion, video in React, composition, useCurrentFrame, interpolate.

writer

9
from exiao/skills

Write content in Eric's voice — articles, blog posts, tweets, social media posts, marketing copy, newsletter drafts. Loads WRITING-STYLE.md and enforces kill phrases.

positioning-angles

9
from exiao/skills

Use when defining product positioning, choosing strategic angles, crafting value propositions, competitive positioning, product messaging, differentiation strategy, or go-to-market angles. Also use for 'how should I position my app', 'what angle should I use', 'painkiller vs vitamin', or 'market positioning'.

outline-generator

9
from exiao/skills

Use when generating outlines, article structures, content outlines, blog outlines, planning article sections, structuring posts, breaking down topics into sections, or organizing ideas for long-form content. Also use for 'outline this', 'structure this article', or 'plan the sections'.

last30days-open

9
from exiao/skills

Use only when the user explicitly asks for the open variant of last30days, including watchlists, briefings, and history queries. Sources: Reddit, X, YouTube, web.

last30days

9
from exiao/skills

Use when researching what happened in the last 30 days on a topic. Also triggered by 'last30'. Sources: Reddit, X, YouTube, web. Produces expert-level summary with copy-paste-ready prompts.

hooks

9
from exiao/skills

Use when generating hooks, headlines, titles, and scroll-stopping openers for content. Also use when analyzing viral posts, Reels, TikToks, YouTube Shorts, or successful social examples to extract reusable hook patterns and improve hook guidance.

evaluate-content

9
from exiao/skills

Use when judging content quality OR editing/improving existing copy: shareability, readability, voice, cuttability, angle, copy sweeps.

editor-in-chief

9
from exiao/skills

Use when a first draft is complete and all Phase 1 gates are done: topic selected (seo-research), title approved (hooks), outline approved (outline-generator), draft written (writer). Runs autonomous diagnosis-prescribe-rewrite loop before Substack.

copywriting

9
from exiao/skills

Write or improve marketing copy for any surface: pages, ads, app stores, landing pages, TikTok/Meta scripts, push notifications, UGC. Combines page copy frameworks with direct response principles.

content-strategy

9
from exiao/skills

Use when building content strategy: hooks, angles, and ideas from what's trending now. Covers organic and paid creative across TikTok, X, YouTube, Meta, LinkedIn.

content-pipeline

9
from exiao/skills

Orchestrator for the 3-article content pipeline — runs research phase, spawns parallel article sub-agents, creates Typefully drafts. Use when running the full content pipeline (usually via cron at 3am).