Remotion Production Guide logo

Remotion Production Guide

Community
AnastasiyaW
remotion-production-guide

Remotion (React video framework) production guide with Apple-style design rules. Use when: 'create video with remotion', 'remotion project', 'render video', 'product demo video', 'animated video', 'video from code'. Covers project setup, animation library, spring presets, typography rules, color palettes, pacing tables, scene templates, 3D integration, and export settings for all platforms. Do NOT use to write the script or narrative beats (use video-narrative-arc), to critique a script's impact (use script-evaluator), or for FFmpeg audio mastering/captions/platform color-grade on a finished render (use video-post-production); this stage builds and renders scenes in React/code.

Overview

PublisherAnastasiyaW
Repositorycodex-claude-code-config
Skill nameremotion-production-guide
Stars
212
Forks
32
Bundled files
Instructions only
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by AnastasiyaW on GitHub. Read the source before you install it.

Installation

Install the Remotion Production Guide AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/AnastasiyaW/codex-claude-code-config/tree/main/skills/video-production/remotion-production-guide
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/AnastasiyaW/codex-claude-code-config.git /tmp/codex-claude-code-config
mkdir -p .claude/skills
cp -r /tmp/codex-claude-code-config/skills/video-production/remotion-production-guide .claude/skills/remotion-production-guide
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Remotion Production Guide in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Remotion Production Guide on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Remotion Production Guide is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Remotion Production Guide

Complete reference for creating production-quality videos with Remotion. Combines Apple-style design rules, motion design principles, and battle-tested animation patterns.

Quick Start

bash
mkdir -p src && npm init -y
npm install --save-exact remotion @remotion/cli react react-dom typescript @types/react
echo "node_modules/\ndist/\nout/\n.cache/" > .gitignore

Project Structure

src/
  index.ts          # registerRoot
  Root.tsx           # Composition registration
  videos/
    ProductDemo/
      index.tsx      # Main composition
      scenes/        # One file per scene
      components/    # Reusable visual elements
  lib/
    constants.ts     # ALL editable values (colors, timing, fonts, sizes)
    animations.ts    # Reusable animation helpers
  public/            # Static assets (images, music, sounds)

Constants-First Design

ALWAYS define all values in constants.ts. Never hardcode in components:

tsx
export const COLORS = {
  bg: '#000000',
  text: '#FFFFFF',
  accent: '#007AFF',
  muted: '#8E8E93',
  cardBg: '#1C1C1E',
} as const;

export const TIMING = {
  fps: 30,
  fadeIn: 15,        // 500ms
  fadeOut: 12,       // 400ms
  stagger: 4,        // 133ms between items
} as const;

export const SIZES = {
  heroText: 120,     // px
  titleText: 72,
  subtitleText: 42,
  bodyText: 28,
  captionText: 20,   // NEVER below 16
} as const;

Animation Library

tsx
import { interpolate, spring, Easing } from 'remotion';

// --- Opacity ---
export const fadeIn = (frame: number, delay = 0, duration = 15) =>
  interpolate(frame, [delay, delay + duration], [0, 1], {
    extrapolateLeft: 'clamp', extrapolateRight: 'clamp',
    easing: Easing.out(Easing.cubic),
  });

// --- Movement ---
export const slideUp = (frame: number, delay = 0, distance = 40) =>
  interpolate(frame, [delay, delay + 20], [distance, 0], {
    extrapolateLeft: 'clamp', extrapolateRight: 'clamp',
    easing: Easing.out(Easing.cubic),
  });

// --- Scale ---
export const scalePop = (frame: number, fps: number, delay = 0) =>
  Math.min(spring({ frame: frame - delay, fps, config: { damping: 12, mass: 0.5 } }), 1);

// --- Stagger ---
export const stagger = (index: number, base = 0, gap = 4) => base + index * gap;

// --- Counter ---
export const countTo = (frame: number, target: number, delay = 0, duration = 30) =>
  Math.round(target * interpolate(frame, [delay, delay + duration], [0, 1], {
    extrapolateLeft: 'clamp', extrapolateRight: 'clamp',
    easing: Easing.out(Easing.cubic),
  }));

Spring Presets

NameConfigUse Case
Smooth{ damping: 200 }Default transitions
Snappy{ damping: 20, stiffness: 200 }Quick appearances
Bouncy{ damping: 8, stiffness: 200 }Playful elements (badges, icons)
Gentle{ damping: 200, stiffness: 50 }Large elements (product images)

Typography Rules

RoleSizeWeightTiming on Screen
Hero number/stat120-200px800-9003-5 seconds
Section title64-80px6002-4 seconds
Subtitle36-48px5002-3 seconds
Body text24-32px400min 2 seconds
Caption16-20px400min 1.5 seconds
NEVER<16px-- illegible on video

Rules:

  • Letter-spacing: -1 to -2px for large text (>48px)
  • Line-height: 1.1-1.2 for headings, 1.4 for body
  • Max 7 words on screen simultaneously
  • NEVER animate text while expecting reading
  • Font: Inter, Geist Sans, or system-ui

Animation Timing

TypeFrames @30fpsms
Text fade in9-15300-500
Text fade out6-12200-400
Slide in12-18400-600
Product appear18-30600-1000
Scale pop6-12200-400
Scene transition9-15300-500
Item stagger2-467-133

Easing Reference

Use CaseEasing
Element enteringEasing.out(Easing.cubic)
Element exitingEasing.in(Easing.cubic)
Apple-styleEasing.bezier(0.25, 0.1, 0.25, 1.0)
Dramatic enterEasing.bezier(0.05, 0.7, 0.1, 1.0)
Material StandardEasing.bezier(0.4, 0.0, 0.2, 1.0)
NEVERlinear (except progress bars)

Color Palettes

Dark theme (premium/tech): bg #000/#0A0A0A, text #FFF, accent from brand Light theme (consumer/clean): bg #F5F3EF/#FFF, text #1D1D1F, accent from brand

  • Max 3 colors + black/white/gray
  • Background:text contrast min 7:1
  • Use linear-gradient for premium text (WebkitBackgroundClip: 'text')

Scene Pacing

FormatTotalScenesFrame Budget @30fps
15s teaser450 frames5~90 each
30s demo900 frames5~180 each
60s launch1800 frames7~260 each

Breathing rule: After 3+ fast cuts, add one slow shot (5-8s). Alternate rhythm: FAST→SLOW→MEDIUM.

Cross-Fade Wrapper

tsx
const Fade: React.FC<{ children: React.ReactNode; dur: number; fade?: number }> = 
  ({ children, dur, fade = 15 }) => {
  const frame = useCurrentFrame();
  const inVal = interpolate(frame, [0, fade], [0, 1], { extrapolateRight: 'clamp' });
  const outVal = interpolate(frame, [dur - fade, dur], [1, 0], {
    extrapolateLeft: 'clamp', extrapolateRight: 'clamp',
  });
  return <AbsoluteFill style={{ opacity: Math.min(inVal, outVal) }}>{children}</AbsoluteFill>;
};

3D Integration

bash
# React Three Fiber in Remotion:
npm install @remotion/three @react-three/fiber three @types/three

# Lottie animations:
npm install @remotion/lottie lottie-web
  • Use <ThreeCanvas> (not <Canvas>) for R3F in Remotion
  • Use useCurrentFrame() instead of R3F's useFrame()
  • Spline: design in spline.design, export to R3F, import via @remotion/three

Export Settings

PlatformResolutionAspectCommand
YouTube1920x108016:9default
TikTok/Reels1080x19209:16--width 1080 --height 1920
Instagram Square1080x10801:1--width 1080 --height 1080
bash
# High quality master
npx remotion render src/index.ts CompositionId out/video.mp4

# Custom quality (CRF 18 = high, 28 = web preview)
npx remotion render src/index.ts CompositionId out/video.mp4 --crf 18

Universal: MP4 container, H.264, AAC audio, yuv420p.

Critical Rules

  • NEVER use CSS transitions/animations - won't render during export
  • ALWAYS use useCurrentFrame() + interpolate() or spring()
  • ALWAYS extrapolateRight: 'clamp' to prevent overshoot
  • spring() never reaches exactly 1.0 - use Math.min(spring(...), 1) for scale
  • Use <Img> from remotion (not <img>) for reliable image loading
  • First render downloads Chrome Headless Shell (~108MB), subsequent use cache
  • Google Fonts: use @remotion/google-fonts for reliable loading

DON'T List

  • Don't rotate text
  • Don't bounce text (unless playful brand)
  • Don't animate 3+ elements simultaneously
  • Don't use more than 2 animation styles per video
  • Don't use star wipes or random transitions
  • Don't put more than 7 words on screen at once
  • Don't start with a logo (start with the hook)
  • Don't commit node_modules

Frequently asked questions

What does the Remotion Production Guide AI skill do?

Remotion (React video framework) production guide with Apple-style design rules. Use when: 'create video with remotion', 'remotion project', 'render video', 'product demo video', 'animated video', 'video from code'. Covers project setup, animation library, spring presets, typography rules, color palettes, pacing tables, scene templates, 3D integration, and export settings for all platforms. Do NOT use to write the script or narrative beats (use video-narrative-arc), to critique a script's impact (use script-evaluator), or for FFmpeg audio mastering/captions/platform color-grade on a finishe...

Why use Remotion Production Guide on TypingMind?

Because you install it once and use it with any model. Remotion Production Guide is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Remotion Production Guide in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/AnastasiyaW/codex-claude-code-config/tree/main/skills/video-production/remotion-production-guide. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Remotion Production Guide?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Remotion Production Guide?

As many as you like. As long as a model supports skills, you can use Remotion Production Guide with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Remotion Production Guide AI skill free?

Yes. It is published on GitHub by AnastasiyaW under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇