Your agent builds animated videos with components. No After Effects needed — write code, preview in browser, render to MP4.
Your agent scaffolds, builds, and renders videos on demand. Templates for intros, explainers, data visualizations, and dialogue videos. A library of animation components your agent composes and customizes for each task.
bash
python /path/to/skill/scripts/new-project.py my-video
bash
cd my-video && npm install
bash
npm run dev
# Open http://localhost:3000
bash
npm run render
# Or use the render helper:
python /path/to/skill/scripts/render.py --output out/video.mp4 --quality high
Scaffold with a pre-built template instead of the starter:
bash
python scripts/new-project.py my-intro --template intro
python scripts/new-project.py my-stats --template data-kinetic
python scripts/new-project.py my-tutorial --template explainer
python scripts/new-project.py my-podcast --template conversation
TemplateUse CaseDurationstarterBlank canvas with animation primitives6sintroLogo + title + tagline reveal5sdata-kineticAnimated metrics, count-ups, progress bars8sexplainerStep-by-step feature walkthrough10sconversationMulti-speaker dialogue with colored bubblesVariable
Set dimensions for vertical video:
bash
python scripts/new-project.py my-reel --template intro --width 1080 --height 1920
Import from ./components in any project scaffolded from this skill:
tsx
import { FadeIn, SlideIn, ScaleIn, Typewriter, CountUp, ProgressBar } from "./components";
ComponentEffect<FadeIn>Opacity tween<SlideIn>Directional slide with opacity<ScaleIn>Scale up with easing overshoot<Typewriter>Character-by-character text reveal<CountUp>Number counter animation<ProgressBar>Animated progress bar<DriftingGrid>Drifting CSS grid background<FloatingOrb>Ambient floating orb<PulseRing>Expanding attention ring<StaggerChildren>Staggered child animations
Usage example:
tsx
export const MyVideo: React.FC = () => {
return (
<div style={{ width: "100%", height: "100%", background: "#0a0a0f" }}>
<FadeIn start={0} duration={20}>
<h1 style={{ fontSize: 72, color: "#fff" }}>Hello World</h1>
</FadeIn>
<SlideIn start={25} direction="up">
<p style={{ fontSize: 28, color: "#a0a0b0" }}>Animated with code</p>
</SlideIn>
</div>
);
};
Edit gradient backgrounds or component color props:
tsx
background: "linear-gradient(135deg, #0a0a0f 0%, #1a1a2e 100%)"
All animations are frame-based. At 30fps:
Place audio in public/audio.mp3, then:
tsx
import { Audio, staticFile } from "remotion";
<Audio src={staticFile("audio.mp3")} />
tsx
const data = require("../data/content.json");
bash
# High quality, smaller file
python scripts/render.py --quality high --codec h264
# ProRes for editing
python scripts/render.py --codec prores --quality ultra
# Vertical video
python scripts/render.py --output out/reel.mp4
# (Set composition width/height in Root.tsx)
This skill enables one-time proactive video creation. The agent may offer once when content clearly matches a specific template type. The agent must obtain explicit verbal confirmation before scaffolding any project.
User-facing warning when recurring is mentioned: Cron-based jobs are persistent automation that continue running on schedule until explicitly removed. They consume compute resources and generate output files repeatedly. Always explain this before the user consents.
The agent may suggest a video one time when these specific content patterns are unambiguous:
SignalTemplate to suggestPitchUser shares a transcript or interviewconversation"Want me to turn this into a conversation video?"User shares stats, metrics, or KPIsdata-kinetic"These numbers would hit harder as an animated clip."User announces a product/featureintro + custom"Want a quick intro video for the announcement?"User writes a step-by-step guideexplainer"I can animate this into a shareable explainer."User asks for a social media clipintro (vertical)"Want this as a short-form video?"
@remotion/cli (included in boilerplate package.json)