Loading...
Loading...
Create production-grade motion graphics and videos using Remotion (React). Use whenever the user wants branded video content, product demos, data-driven video generation, or motion graphics with audio sync, web fonts, TailwindCSS styling, or media embedding. Covers: marketing videos, product launches, data visualizations, social media content, personalized video at scale, explainer videos with voiceover, animated charts, 3D scenes via Three.js. Requires Node.js and Claude Code environment. Trigger on: "create a Remotion video", "React video", "motion graphics", "branded video", "product demo video", "remotion", "video with audio", "TailwindCSS video", "data-driven video generation", "personalized video at scale", "video with voiceover". For mathematical animations, algorithm visualizations, or headless container rendering, use concept-to-video (Manim) instead.
npx skill4agent add mathews-tom/praxis-skills remotion-video| File | Purpose |
|---|---|
| useCurrentFrame, useVideoConfig, interpolate, spring, core hooks |
| Easing, spring config, interpolateColors, timing patterns |
| Composition, registerRoot, Folder, calculateMetadata |
| Img, Video, OffthreadVideo, Audio, staticFile, async loading |
| Google Fonts, local fonts, text measurement, typography |
| TailwindCSS integration, utility-first styling in Remotion |
| Audio component, volume curves, trimming, frame-synced audio |
| Caption system, SRT/VTT parsing, word-level timing |
| @remotion/three, ThreeCanvas, React Three Fiber integration |
| Bar, pie, line chart animation patterns |
| CLI render, renderMedia API, quality presets |
| Dataset rendering, batch generation, parametric compositions |
| Parametric tech explainer template |
| Product showcase template |
| Animated chart composition template |
| Bootstrap a new Remotion project with TailwindCSS |
| Render wrapper with quality presets and format options |
spring().tsxScaffold → Compose → Preview → Iterate → Rendernpm run devscripts/render.shnode --version # Must be >= 18.0.0
npm --versionscripts/scaffold_project.shbash scripts/scaffold_project.sh my-video-project
cd my-video-project
npm run dev # Opens Remotion Studio at localhost:3000| Content type | Rule file | Template |
|---|---|---|
| Explainer / educational | fundamentals.md | explainer.tsx |
| Product demo / marketing | animations.md | product-demo.tsx |
| Data visualization / animated chart | charts.md | data-viz.tsx |
| Video with voiceover / narration | audio.md + subtitles.md | explainer.tsx |
| Social media clip (short, looping) | animations.md | product-demo.tsx |
| 3D scene / abstract motion graphics | three-d.md | (custom) |
| Personalized / batch generation | data-driven.md | any |
| Video with embedded media | media.md | any |
registerRoot<Sequence from={30} durationInFrames={60}><AbsoluteFill>useCurrentFrame()Date.now()setTimeoutspring({ frame, fps })import {
useCurrentFrame,
useVideoConfig,
interpolate,
spring,
AbsoluteFill,
Sequence,
} from "remotion";
type MySceneProps = {
title: string;
accentColor: string;
};
export const MyScene: React.FC<MySceneProps> = ({ title, accentColor }) => {
const frame = useCurrentFrame();
const { fps, durationInFrames } = useVideoConfig();
const opacity = interpolate(frame, [0, 30], [0, 1], {
extrapolateRight: "clamp",
});
const scale = spring({ frame, fps, config: { damping: 12, stiffness: 100 } });
return (
<AbsoluteFill style={{ backgroundColor: "#0a0a0a" }}>
<div
style={{ opacity, transform: `scale(${scale})`, color: accentColor }}
>
{title}
</div>
</AbsoluteFill>
);
};npm run devhttp://localhost:3000<Still>| Request | Action |
|---|---|
| "Slower/faster" | Adjust |
| "Different color" | Update props passed to composition |
| "Add a section" | Add new |
| "Change font" | Load via |
| "Add background music" | Add |
| "Make it loop" | Set |
| "Add captions" | See subtitles.md for SRT parsing and word-level timing |
scripts/render.shbash scripts/render.sh --composition MyComposition --quality final --format mp4| Preset | Resolution | FPS | Use case |
|---|---|---|---|
| 480p | 15 | Fast layout check |
| 720p | 30 | Client draft review |
| 1080p | 30 | Standard delivery |
| 2160p | 60 | Presentation / cinema |
| Format | Use case |
|---|---|
| Standard delivery (H.264) |
| Web-optimized |
| Embeddable in docs, social media |
| Error | Cause | Resolution |
|---|---|---|
| Node.js not installed | Install Node.js 18+ from nodejs.org |
| Dependencies not installed | Run |
| Wrong composition ID | Check |
| Async asset load > 30s | Increase timeout via |
| Video codec not supported | Convert to H.264 MP4 with ffmpeg first |
| Out of memory on large compositions | Reduce |
| Another dev server running | Kill existing process or set |
| Spring animation goes past 1.0 | Missing | Add extrapolation clamp to |
| Fonts not loading in render | Font not loaded before render starts | Use |
npx remotion render@remotion/lambda<Sequence>spring()interpolatez.infer<typeof schema>concept-to-video