agentsclimarketplace

Remotion

Skill thevibethinker/vibe-thinker-skills/remotion

Portable, standalone Zo Computer skills you can install, reuse, and share.

Install
npx -y skills add thevibethinker/vibe-thinker-skills --skill remotion

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Create videos programmatically with React using Remotion. Scaffold projects, write compositions, and render MP4s. Zo-optimized wrapper around official Remotion agent skills.

SKILL.md

4.9 KB, ~1.2k tokens by cl100k_base, as published. Nobody here has run it

When to Use

Use this skill when:

  • Creating programmatic videos from code (not generative AI video)
  • Building data-driven video content (charts, stats, personalized videos)
  • Producing batch videos from templates + data
  • Creating animated social content (TikTok, Reels, Shorts)
  • Building product/explainer videos with precise control

Quick Start

1. Create a New Project

python3 Skills/remotion/scripts/remotion_cli.py new my-video --template blank
cd Sites/my-video

2. Write Your Composition

Edit src/Composition.tsx - this is your video defined as React components.

3. Preview in Studio

python3 Skills/remotion/scripts/remotion_cli.py studio my-video

4. Render to MP4

python3 Skills/remotion/scripts/remotion_cli.py render my-video --output output.mp4

Core Concepts

Compositions

A composition defines your video's dimensions, duration, and fps:

<Composition
  id="MyVideo"
  component={MyComponent}
  durationInFrames={300}  // 10 seconds at 30fps
  fps={30}
  width={1920}
  height={1080}
/>

Frame-Based Animation

ALL animations MUST use useCurrentFrame(). CSS animations are FORBIDDEN.

const frame = useCurrentFrame();
const { fps } = useVideoConfig();
const opacity = interpolate(frame, [0, fps], [0, 1], { extrapolateRight: 'clamp' });

Sequences

Use <Sequence> to time when elements appear:

<Sequence from={30} durationInFrames={60}>
  <Title />
</Sequence>

Rule References

Read these for detailed patterns (loaded from upstream Remotion skills):

RuleDescription
references/animations.mdFrame-based animation fundamentals
references/timing.mdSprings, easing, interpolation curves
references/compositions.mdDefining compositions, stills, folders
references/sequencing.mdTiming and ordering elements
references/videos.mdEmbedding videos - trim, volume, speed
references/audio.mdAudio handling - import, trim, volume
references/assets.mdImages, fonts, static files
references/transitions.mdScene transitions
references/text-animations.mdTypography animation patterns
references/charts.mdData visualization patterns
references/display-captions.mdTikTok-style captions

CLI Commands

# Project management
python3 Skills/remotion/scripts/remotion_cli.py new <name> [--template blank|hello-world]
python3 Skills/remotion/scripts/remotion_cli.py studio <name>
python3 Skills/remotion/scripts/remotion_cli.py render <name> [--composition ID] [--output path]
python3 Skills/remotion/scripts/remotion_cli.py list

# Rendering options
--composition ID    # Specific composition to render (default: first)
--output PATH       # Output file path (default: out/video.mp4)
--fps N             # Override FPS
--width N           # Override width
--height N          # Override height
--codec CODEC       # h264, h265, vp8, vp9, prores (default: h264)

Common Patterns

Fade In/Out

const frame = useCurrentFrame();
const { fps, durationInFrames } = useVideoConfig();

const fadeIn = interpolate(frame, [0, fps], [0, 1], { extrapolateRight: 'clamp' });
const fadeOut = interpolate(frame, [durationInFrames - fps, durationInFrames], [1, 0], { extrapolateLeft: 'clamp' });
const opacity = fadeIn * fadeOut;

Spring Animation (Natural Motion)

const scale = spring({
  frame,
  fps,
  config: { damping: 200 }, // Smooth, no bounce
});

Staggered Elements

{items.map((item, i) => (
  <Sequence key={i} from={i * 10}>
    <Item data={item} />
  </Sequence>
))}

Data-Driven Video

type VideoProps = { title: string; stats: number[] };

export const DataVideo: React.FC<VideoProps> = ({ title, stats }) => {
  // Animate based on props
};

// In Root.tsx:
<Composition
  id="DataVideo"
  component={DataVideo}
  defaultProps={{ title: "Q4 Results", stats: [10, 20, 30] }}
  // ...
/>

Integration with Zo

Batch Rendering

Use /zo/ask to render multiple videos in parallel:

for row in data:
    # Each call renders with different props
    await render_video(row)

Output Location

Projects live in Sites/<name>/ for consistency with Zo's site system. Rendered videos output to Sites/<name>/out/.

Constraints

  • No CSS animations - They won't render correctly
  • No Tailwind animation classes - Same issue
  • Frame-based only - All motion from useCurrentFrame()
  • CPU-intensive - Rendering takes time; complex videos = longer render
  • Node.js required - Remotion needs Node environment (already available in Zo)

What ships with it: 31 files

89.1 KB alongside SKILL.md, 1 of them executable

scripts/

Gives 0 of the 12 instructions most video audio skills give in ~1.2k tokens

Counted across 622 of the 795 authors here whose files we hold, read 2026-08-07

  • Read individual rule files for detailed explanationsin 21 of 622, across 10 files
  • Render final videoin 13 of 622, across 6 files
  • Use WAV PCM 16kHz mono audio formatin 12 of 622, across 3 files
  • Use this skill when dealing with Remotion codein 11 of 622, across 4 files
  • Save generated audio to a WAV filein 11 of 622, across 4 files
  • Handle conversion errors gracefullyin 10 of 622, across 6 files
  • Add captions to videos alwaysin 10 of 622, across 4 files
  • Generate music from text descriptions using MusicGenin 9 of 622, across 2 files
  • Do not skip pipeline layersin 9 of 622, across 3 files
  • Do not make one tool do everythingin 9 of 622, across 3 files
  • Use Azure Document Intelligence for complex PDFsin 9 of 622, across 4 files
  • Never ask the user to paste their full API keyin 9 of 622, across 3 files

Said here and by no other author read

  • use Sequence to time element appearances
  • animate based on component props
  • place output videos in the out directory

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.