home / skills / yonatangross / orchestkit / remotion-composer

remotion-composer skill

/plugins/ork/skills/remotion-composer

This skill composes polished demo videos using Remotion, weaving terminal recordings, Manim animations, and branded overlays for marketing impact.

npx playbooks add skill yonatangross/orchestkit --skill remotion-composer

Review the files below or copy the command above to add this skill to your agents.

Files (11)
SKILL.md
9.5 KB
---
name: remotion-composer
description: Compose final demo videos using Remotion. Combines terminal recordings, Manim animations, and branded overlays into polished marketing videos with AnimStats-quality animations.
context: fork
version: 2.0.0
author: OrchestKit
tags: [remotion, video, composition, marketing, demo, animation, data-viz, charts]
user-invocable: false
---

# Remotion Composer

Production-quality video composition with AnimStats-level animations. Supports data visualization, spring physics, easing presets, and cinematic transitions.

## Quick Start

```bash
# Install enhanced packages
cd orchestkit-demos && npm install

# Add composition for a skill
./scripts/add-composition.sh explore

# Render
npx remotion render ExploreDemo out/ExploreDemo.mp4
```

## Package Library (v2.1)

### Core Animation
```json
{
  "@remotion/shapes": "^4.0.0",      // Geometric primitives (pie, rect, triangle)
  "@remotion/paths": "^4.0.0",       // SVG path animations (evolvePath)
  "@remotion/noise": "^4.0.0",       // Procedural noise (noise2D, noise3D)
  "@remotion/transitions": "^4.0.0", // Scene transitions (fade, slide, wipe)
  "@remotion/motion-blur": "^4.0.0", // Motion trails and blur
  "@remotion/gif": "^4.0.0",         // GIF synchronization
  "@remotion/animated-emoji": "^4.0.0", // Lottie emojis
  "@remotion/layout-utils": "^4.0.0"   // Text fitting and layout
}
```

### Advanced Capabilities
```json
{
  "@remotion/three": "^4.0.0",       // Three.js 3D graphics
  "@remotion/lottie": "^4.0.0",      // After Effects animations
  "@remotion/rive": "^4.0.0",        // Rive interactive animations
  "@remotion/captions": "^4.0.0",    // Subtitles and captions
  "@remotion/player": "^4.0.0",      // Embeddable player
  "@remotion/renderer": "^4.0.0",    // Server-side rendering
  "@remotion/media-utils": "^4.0.0"  // Audio/video metadata
}
```

### 3D & Animation Runtimes
```json
{
  "three": "^0.175.0",                    // Three.js core
  "@react-three/fiber": "^9.1.0",         // React Three Fiber
  "@react-three/drei": "^10.3.0",         // Three.js helpers
  "@lottiefiles/react-lottie-player": "^3.5.4", // Lottie player
  "@rive-app/react-canvas": "^4.21.0"     // Rive runtime
}
```

## Animation Presets

### Easing Reference
| Preset | Use Case | Feel |
|--------|----------|------|
| `bounce` | Success celebrations | Playful |
| `elastic` | Attention grab | Energetic |
| `back` | Entry animations | Anticipation |
| `snappy` | Quick UI | Overshoot |
| `spring` | Default | Natural |

### Spring Configs
| Name | damping | stiffness | Use |
|------|---------|-----------|-----|
| Bouncy | 10-12 | 100-120 | Playful enters |
| Snappy | 15-20 | 150-200 | Quick UI |
| Smooth | 80 | 200 | Subtle moves |
| Heavy | 15 | 50 | Large elements |

## Data Visualization Components

### StatCounter (Enhanced)
```tsx
<StatCounter
  value={168}
  label="Skills"
  color="#8b5cf6"
  easing="bounce"           // bounce, elastic, back, snappy, spring
  digitMorph                // Individual digit animation
  gradientColors={["#8b5cf6", "#22c55e"]}  // Animated gradient
  celebrateOnComplete       // Particle burst
  size="lg"                 // sm, md, lg
/>
```

### ProgressRing
```tsx
<ProgressRing
  progress={85}
  color="#22c55e"
  size={120}
  delay={15}
  showLabel
  easing="spring"
/>
```

### BarChart
```tsx
<BarChart
  data={[
    { label: "Skills", value: 168, color: "#8b5cf6" },
    { label: "Agents", value: 35, color: "#22c55e" },
  ]}
  staggerDelay={5}
  showValues
/>
```

### LineChart
```tsx
<LineChart
  points={[10, 25, 18, 42, 35, 60]}
  color="#8b5cf6"
  showDots
  showArea
/>
```

## Text Animations

### AnimatedText Types
```tsx
// 9 animation types available:
<AnimatedText text="Hello" animation="spring" />   // Scale bounce
<AnimatedText text="Hello" animation="fade" />     // Simple fade
<AnimatedText text="Hello" animation="slide" />    // Directional slide
<AnimatedText text="Hello" animation="blur" />     // Blur reveal (NEW)
<AnimatedText text="Hello" animation="wave" />     // Char-by-char bounce (NEW)
<AnimatedText text="Hello" animation="gradient" /> // Gradient sweep (NEW)
<AnimatedText text="Hello" animation="split" />    // Chars from random (NEW)
<AnimatedText text="Hello" animation="reveal" />   // Clip reveal (NEW)
<AnimatedText text="Hello" animation="typewriter" /> // Typing effect
```

### GradientText
```tsx
<GradientText
  text="OrchestKit"
  colors={["#8b5cf6", "#22c55e"]}
  animateGradient // Moving gradient
/>
```

## Transitions

### SceneTransition Types
```tsx
// 8 transition types:
<SceneTransition type="fade" />     // Simple opacity
<SceneTransition type="wipe" />     // Horizontal wipe
<SceneTransition type="zoom" />     // Scale in/out
<SceneTransition type="slide" />    // Directional slide (NEW)
<SceneTransition type="flip" />     // 3D card flip (NEW)
<SceneTransition type="circle" />   // Circular reveal (NEW)
<SceneTransition type="blinds" />   // Venetian blinds (NEW)
<SceneTransition type="pixelate" /> // Pixelation (NEW)
```

### Content Transitions
```tsx
<SlideTransition direction="up" startFrame={0} exitFrame={60}>
  <Content />
</SlideTransition>

<ScaleTransition startFrame={0} scaleFrom={0.8}>
  <Content />
</ScaleTransition>

<RevealTransition type="circle" startFrame={0}>
  <Content />
</RevealTransition>
```

## 3D Components (CSS-based)

### FloatingLogo
```tsx
<FloatingLogo
  text="OrchestKit"
  color="#8b5cf6"
  secondaryColor="#22c55e"
  rotationSpeed={0.02}
/>
```

### ParticleSphere
```tsx
<ParticleSphere
  particleCount={200}
  radius={200}
  color="#8b5cf6"
  rotationSpeed={0.01}
/>
```

### WireframeBox
```tsx
<WireframeBox
  size={200}
  color="#8b5cf6"
  lineWidth={2}
/>
```

### OrbitingRings
```tsx
<OrbitingRings
  ringCount={3}
  baseRadius={100}
  color="#8b5cf6"
/>
```

## Captions & Subtitles

### TikTokCaption (word bounce)
```tsx
<TikTokCaption
  words={["Build", "faster", "with", "AI"]}
  startFrame={0}
  wordsPerSecond={3}
  activeColor="#8b5cf6"
/>
```

### KaraokeCaption (fill reveal)
```tsx
<KaraokeCaption
  text="OrchestKit makes development faster"
  startFrame={0}
  durationFrames={90}
/>
```

### TypingCaption (typewriter)
```tsx
<TypingCaption
  text="/plugin install ork"
  startFrame={0}
  charsPerSecond={20}
  cursorColor="#8b5cf6"
/>
```

### HighlightCaption
```tsx
<HighlightCaption
  text="23 commands and 168 skills"
  startFrame={0}
  endFrame={90}
  highlightColor="#8b5cf6"
/>
```

## Background Effects

### ParticleBackground
```tsx
<ParticleBackground
  particleCount={50}
  particleColor="#8b5cf6"
  speed={0.5}
  opacity={0.6}
/>
```

### MeshGradient
```tsx
<MeshGradient
  colors={["#8b5cf6", "#06b6d4", "#22c55e", "#f59e0b"]}
  speed={1}
  opacity={0.3}
/>
```

### GlowOrbs
```tsx
<GlowOrbs
  orbs={[
    { color: "#8b5cf6", x: 20, y: 30, size: 40 },
    { color: "#06b6d4", x: 80, y: 70, size: 35 },
  ]}
  animated
/>
```

## Layer Stack

```
┌─────────────────────────────────────────┐
│  Layer 6: Vignette + ScanLines          │
├─────────────────────────────────────────┤
│  Layer 5: CTA Overlay (bottom)          │
├─────────────────────────────────────────┤
│  Layer 4: Watermark (top-right)         │
├─────────────────────────────────────────┤
│  Layer 3: Progress Bar (bottom)         │
├─────────────────────────────────────────┤
│  Layer 2: Content (Terminal/Manim)      │
├─────────────────────────────────────────┤
│  Layer 1: Background Effects            │
│    - ParticleBackground                 │
│    - MeshGradient                       │
│    - GlowOrbs                           │
├─────────────────────────────────────────┤
│  Layer 0: Base Color (#0a0a0f)          │
└─────────────────────────────────────────┘
```

## Formats

| Format | Resolution | FPS | Use Case |
|--------|------------|-----|----------|
| Horizontal | 1920x1080 | 30 | YouTube, Twitter |
| Vertical | 1080x1920 | 30 | TikTok, Reels, Shorts |
| Square | 1080x1080 | 30 | Instagram, LinkedIn |
| 4K | 3840x2160 | 60 | High-quality exports |

## Color Mapping

Skills have associated colors:
- explore: #8b5cf6 (purple)
- verify: #22c55e (green)
- commit: #06b6d4 (cyan)
- brainstorming: #f59e0b (amber)
- review-pr: #f97316 (orange)
- remember: #ec4899 (pink)

## References

### Core
- `references/audio-layer.md` - Audio setup and volume curves
- `references/composition-patterns.md` - Composition templates
- `references/cinematic-scenes.md` - 6-scene narrative structure

### Animation
- `references/animation-presets.md` - Easing and spring configs
- `references/data-viz-patterns.md` - Chart and counter patterns
- `references/effects-library.md` - Background and transition effects

### Advanced
- `references/3d-graphics.md` - Three.js 3D scenes and camera animations
- `references/lottie-animations.md` - After Effects Lottie integration
- `references/captions-subtitles.md` - Subtitle generation and styling
- `references/showcase-templates.md` - Production patterns from Remotion showcase

Overview

This skill composes production-quality demo videos using Remotion, combining terminal recordings, Manim animations, and branded overlays into polished marketing outputs. It includes AnimStats-level data visualization components, cinematic transitions, and presets for easing, springs, and motion blur. Use it to render horizontal, vertical, square, or 4K outputs with layered backgrounds, captions, and CTA overlays.

How this skill works

The composer stitches input media (screen captures, Manim exports, audio tracks) into a layered Remotion composition and applies animations, transitions, and data-visual components. Prebuilt components—StatCounter, ProgressRing, BarChart, AnimatedText, and 3D CSS elements—are configurable with easing and spring presets, color mappings, and timing controls. Outputs are rendered with Remotion renderer settings for the target format and framerate.

When to use it

  • Creating short marketing demos combining terminal walkthroughs and animated data visuals
  • Producing social assets in vertical, square, or horizontal formats from a single composition
  • Generating product highlight videos with branded overlays, captions, and CTAs
  • Building explainer sequences that require synchronized captions, particle backgrounds, and transitions
  • Rendering high-quality showcase or conference videos with 3D logo and wireframe elements

Best practices

  • Structure content into the provided layer stack: background → content → overlays → vignette to preserve visual hierarchy
  • Use easing presets (spring, snappy, bounce) to maintain consistent motion language across components
  • Pre-render heavy Manim or Three.js scenes as video segments to reduce composition render time
  • Match colorMapping entries to brand tokens for consistent theme across charts, captions, and overlays
  • Leverage staggerDelay and startFrame props to choreograph multi-element entrances and avoid visual clutter

Example use cases

  • A 60-second product demo: terminal recording + StatCounter highlights + CTA overlay for YouTube
  • A 30-second TikTok vertical: quick code clip + TypingCaption + ParticleBackground and gradient text
  • Investor update: square social post with BarChart, LineChart, and animated percentage ProgressRing
  • Conference opener: 4K teaser with FloatingLogo, ParticleSphere, and cinematic SceneTransition

FAQ

What input formats are supported?

Use common video (MP4), audio (WAV/MP3), and image formats; heavy 3D or Manim scenes can be pre-rendered and imported as video clips.

How do I target different aspect ratios from one project?

Create separate Remotion compositions per format or use responsive layout utilities; maintain shared assets and colorMapping so visuals stay consistent.