Claude Code + Remotion: Generate Pro Videos with AI Conversations
Learn how to create professional animated videos using Claude Code and Remotion. This step-by-step guide covers setup, workflow, and real-world examples of AI-powered programmatic video generation.
Claude CodeRemotionAI VideoReactVideo ProductionAI Agent
3055  Words
2026-01-25

The Problem Every Developer Faces
Picture this scenario: your boss walks in and says, “We need a 30-second product demo video for next week’s launch event.”
You panic. You’ve never opened After Effects. Hiring a freelancer? No time, and it would cost at least a few hundred dollars.
But now there’s another way:
You say: “Create a product demo video showing our app interface, with animated text introducing three core features, 30 seconds long.”
Claude Code does: It automatically generates React code and renders a professional MP4 video file.
That’s right. With Claude Code and Remotion, you can literally create videos by having a conversation with AI.
What Is Remotion?
Code-Based Video Creation
Remotion is an open-source framework that lets you create videos using React code.
Traditional video workflow: Open Premiere or After Effects → drag assets → adjust timeline → add effects → export
Remotion workflow: Write React code → run a command → get an MP4
You might think: writing code to make videos sounds harder, not easier. But for developers, code is more natural than drag-and-drop. And here’s the key insight: code can be generated by AI.
That’s why Claude Code + Remotion is such a powerful combination. You describe what you want in plain English, AI writes the code, and Remotion renders the video.
How Does It Compare to Traditional Tools?
| Aspect | Traditional Tools (AE/Premiere) | Remotion + AI |
|---|---|---|
| Learning curve | Must learn complex software | Just describe what you want |
| Workflow | Manual drag-and-drop | Natural language prompts |
| Batch production | Each video made manually | Change parameters, batch render |
| Revisions | Reopen project files, re-edit | Ask AI to modify the code |
| Collaboration | Share project files | Git version control |
| Cost | Software subscriptions + freelancer fees | Open source and free |
Who Built It?
Remotion was created by Jonny Burger and has grown into a major open-source project with 28K+ GitHub stars and 400K+ monthly npm downloads.
The team recently released remotion-best-practices, a dedicated skills package for AI coding tools. It teaches Claude Code how to generate correct Remotion code. After launch, the package hit nearly 30K weekly installs, with Claude Code users making up the majority.
What Can You Build? (Real Examples)
Product Demo Videos
You say: “Create an app feature walkthrough video. Show screenshots of the login, home, and settings screens, each displayed for 3 seconds with fade transitions and a caption at the bottom.”
It does:
- Creates three scene components
- Sets each scene to 3 seconds (90 frames)
- Adds fade-in/fade-out animations
- Renders captions below each screenshot
- Exports a 1080p MP4 file
Data Visualization Animations
You say: “Create a bar chart animation showing monthly sales growth. Data: [100, 120, 150, 180, 200, 250, 280, 320, 350, 400, 450, 500]. Add number counters that tick up as each bar rises.”
It does:
- Creates a bar chart component
- Animates each bar rising from the bottom sequentially
- Shows real-time number counters
- Adds grid lines in the background
- Highlights the annual peak at the end
Social Media Short Videos
You say: “Make a 15-second TikTok-style video. The text ‘LIMITED OFFER’ flies in from off-screen, scales up with a shake effect, then ‘Only 3 Days Left’ fades in.”
It does:
- Sets up a 9:16 vertical canvas
- Creates a fly-in animation with spring physics
- Adds scale-up + shake effects
- Fades in the countdown text
- Exports in TikTok-ready format
Multi-Skill Orchestration: Auto-Download Assets + Generate Video
This is where things get really interesting. By combining multiple Claude Code Skills, AI can automatically search for and download media assets, then assemble a complete video.
You say: “Using the media-download and remotion-best-practices skills, create a Top 10 Douyin (TikTok China) trending songs video for 2025. Use professional editing techniques.”
It does:
- Searches for the 2025 Douyin trending songs chart
- Uses the media-download skill to grab song previews and cover art
- Designs a ranking video template (countdown, song info, dynamic backgrounds)
- Creates 3-5 second segments for each song
- Adds transition animations and rank number effects
- Assembles the full Top 10 video
- Exports the final cut
Your job: Send the prompt, grab a coffee, and come back to a finished video.
Here’s the actual output from this workflow (compressed from 82MB to 1MB for web — the original is full HD):
This is the power of AI Agent orchestration: multiple Skills working together to handle everything from “find assets” to “deliver the final product.” You only need to describe the end result.
Here is the full Claude Code session log showing how Remotion Skills were used:
❯ 使用这 media-download 和 remotion-best-practices 这两个 skill 帮我制作一个 2025 年度抖音年度金曲热榜 Top10,参考主流的剪辑手法
⏺ 好的,我来制作 2025 年度抖音金曲热榜 Top10 视频。先搜索最新的抖音热歌榜单:
⏺ Web Search("2025年抖音热歌榜 年度金曲 Top10 排行榜 最火歌曲")
⎿ Did 1 search in 25s
⏺ Web Search("2025抖音最火歌曲 大展鸿图 揽佬 若月亮没来 APT 玫瑰少年")
⎿ Did 1 search in 25s
⏺ 现在我有了完整的抖音热歌榜单数据。开始创建项目:
⏺ Bash(mkdir -p /Users/bruce.he/douyin-top10-2025/{src/{compositions,components,data,styles},public/{images,videos,audio/songs}} && cd /Users/bruce.he/douyin-top10-202…) timeout: 3m 0s
⎿ Wrote to /Users/bruce.he/douyin-top10-2025/package.json:
{
… +23 lines (ctrl+o to expand)
⏺ Write(~/douyin-top10-2025/tsconfig.json)
⎿ Wrote 18 lines to tsconfig.json
{
"compilerOptions": {
"target": "ES2020",
"module": "ESNext",
"moduleResolution": "bundler",
"jsx": "react-jsx",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
… +8 lines (ctrl+o to expand)
⏺ Write(~/douyin-top10-2025/src/data/songs.ts)
⎿ Wrote 86 lines to src/data/songs.ts
export interface Song {
rank: number;
title: string;
artist: string;
audioFile: string;
tag?: string; // 热门标签
}
// 2025 抖音年度金曲热榜 Top 10
// 数据来源: MAIGOO、QQ音乐抖音热歌榜、Spotify TikTok热歌榜
… +76 lines (ctrl+o to expand)
⏺ Write(~/douyin-top10-2025/src/styles/fonts.ts)
⎿ Wrote 20 lines to src/styles/fonts.ts
import { loadFont as loadNotoSansSC } from "@remotion/google-fonts/NotoSansSC";
import { loadFont as loadPoppins } from "@remotion/google-fonts/Poppins";
export const { fontFamily: notoSansSC } = loadNotoSansSC();
export const { fontFamily: poppins } = loadPoppins();
export const fonts = {
chinese: notoSansSC,
english: poppins,
};
… +10 lines (ctrl+o to expand)
⏺ Write(~/douyin-top10-2025/src/components/DouyinBg.tsx)
⎿ Wrote 121 lines to src/components/DouyinBg.tsx
import { useCurrentFrame, interpolate, random } from "remotion";
import React from "react";
import { douyinColors } from "../styles/fonts";
interface DouyinBgProps {
variant?: "default" | "champion" | "intro";
}
export const DouyinBg: React.FC<DouyinBgProps> = ({ variant = "default" }) => {
const frame = useCurrentFrame();
… +111 lines (ctrl+o to expand)
⏺ Write(~/douyin-top10-2025/src/components/RankBadge.tsx)
⎿ Wrote 99 lines to src/components/RankBadge.tsx
import {
useCurrentFrame,
interpolate,
spring,
useVideoConfig,
Easing,
} from "remotion";
import React from "react";
import { fonts, douyinColors } from "../styles/fonts";
… +89 lines (ctrl+o to expand)
⏺ Write(~/douyin-top10-2025/src/components/SongInfo.tsx)
⎿ Wrote 144 lines to src/components/SongInfo.tsx
import {
useCurrentFrame,
interpolate,
Easing,
} from "remotion";
import React from "react";
import { fonts, douyinColors } from "../styles/fonts";
interface SongInfoProps {
title: string;
… +134 lines (ctrl+o to expand)
⏺ Write(~/douyin-top10-2025/src/components/MusicBars.tsx)
⎿ Wrote 64 lines to src/components/MusicBars.tsx
import { useCurrentFrame, interpolate, random } from "remotion";
import React from "react";
import { douyinColors } from "../styles/fonts";
interface MusicBarsProps {
barCount?: number;
isChampion?: boolean;
}
export const MusicBars: React.FC<MusicBarsProps> = ({
… +54 lines (ctrl+o to expand)
⏺ Write(~/douyin-top10-2025/src/compositions/Intro.tsx)
⎿ Wrote 242 lines to src/compositions/Intro.tsx
import {
useCurrentFrame,
interpolate,
spring,
useVideoConfig,
Easing,
} from "remotion";
import React from "react";
import { DouyinBg } from "../components/DouyinBg";
import { fonts, douyinColors } from "../styles/fonts";
… +232 lines (ctrl+o to expand)
⏺ Write(~/douyin-top10-2025/src/compositions/SongCard.tsx)
⎿ Wrote 211 lines to src/compositions/SongCard.tsx
import {
useCurrentFrame,
interpolate,
staticFile,
Easing,
} from "remotion";
import { Audio } from "@remotion/media";
import React from "react";
import { DouyinBg } from "../components/DouyinBg";
import { RankBadge } from "../components/RankBadge";
… +201 lines (ctrl+o to expand)
⏺ Write(~/douyin-top10-2025/src/compositions/Champion.tsx)
⎿ Wrote 291 lines to src/compositions/Champion.tsx
import {
useCurrentFrame,
interpolate,
spring,
useVideoConfig,
staticFile,
Easing,
} from "remotion";
import { Audio } from "@remotion/media";
import React from "react";
… +281 lines (ctrl+o to expand)
⏺ Write(~/douyin-top10-2025/src/compositions/Outro.tsx)
⎿ Wrote 309 lines to src/compositions/Outro.tsx
import {
useCurrentFrame,
interpolate,
spring,
useVideoConfig,
Easing,
} from "remotion";
import React from "react";
import { DouyinBg } from "../components/DouyinBg";
import { fonts, douyinColors } from "../styles/fonts";
… +299 lines (ctrl+o to expand)
⏺ Write(~/douyin-top10-2025/src/compositions/DouyinTop10.tsx)
⎿ Wrote 106 lines to src/compositions/DouyinTop10.tsx
import React from "react";
import {
TransitionSeries,
linearTiming,
springTiming,
} from "@remotion/transitions";
import { slide } from "@remotion/transitions/slide";
import { fade } from "@remotion/transitions/fade";
import { wipe } from "@remotion/transitions/wipe";
import { Intro } from "./Intro";
… +96 lines (ctrl+o to expand)
⏺ Write(~/douyin-top10-2025/src/Root.tsx)
⎿ Wrote 18 lines to src/Root.tsx
import { Composition } from "remotion";
import { DouyinTop10, TOTAL_DURATION } from "./compositions/DouyinTop10";
export const RemotionRoot: React.FC = () => {
return (
<>
<Composition
id="DouyinTop10"
component={DouyinTop10}
durationInFrames={TOTAL_DURATION}
… +8 lines (ctrl+o to expand)
⏺ Write(~/douyin-top10-2025/src/index.ts)
⎿ Wrote 5 lines to src/index.ts
import { registerRoot } from "remotion";
import { RemotionRoot } from "./Root";
registerRoot(RemotionRoot);
⏺ Read(~/douyin-top10-2025/package.json)
⎿ Read 25 lines
⏺ Update(~/douyin-top10-2025/package.json)
⎿ Added 6 lines, removed 5 lines
1 {
2 "name": "douyin-top10-2025",
3 "version": "1.0.0",
4 - "description": "",
5 - "main": "index.js",
4 + "description": "2025 抖音年度金曲热榜 Top10 视频",
5 + "main": "src/index.ts",
6 "scripts": {
7 - "test": "echo \"Error: no test specified\" && exit 1"
7 + "dev": "npx remotion studio src/index.ts",
8 + "build": "npx remotion render src/index.ts DouyinTop10 out/video.mp4",
9 + "render": "npx remotion render src/index.ts DouyinTop10"
10 },
11 - "keywords": [],
11 + "keywords": ["remotion", "douyin", "tiktok", "music", "top10"],
12 "author": "",
13 "license": "ISC",
14 - "type": "commonjs",
14 "dependencies": {
15 "@remotion/cli": "^4.0.409",
16 "@remotion/google-fonts": "^4.0.409",
⏺ 现在下载歌曲音频预览:
⏺ Bash(cd /Users/bruce.he/douyin-top10-2025/public/audio/songs…) timeout: 1m 30s
⎿ 📥 下载抖音热歌音频预览...
✅ 01-da-zhan-hong-tu.m4a
✅ 02-apt.m4a
… +3 lines (ctrl+o to expand)
⏺ Bash(cd /Users/bruce.he/douyin-top10-2025/public/audio/songs…) timeout: 1m 30s
⎿ ✅ 05-wei-yi.m4a
✅ 06-di-57-ci.m4a
✅ 07-ruo-yue-liang.m4a
… +16 lines (ctrl+o to expand)
⏺ 所有 10 首歌曲下载完成!现在下载视频素材:
⏺ Bash(PEXELS_API_KEY="xxxxxxxx" python3 /Users/bruce.he/.claude/skills/media-downloader/media_cli.py video "music conc…)
⎿ 🔍 搜索视频: music concert red lights
✅ 找到 2 个视频
⬇️ 下载 1/2: music_concert_red_lights_1_pexels.mp4 (9s)
… +4 lines (ctrl+o to expand)
⏺ Bash(PEXELS_API_KEY="xxxxxxx" python3 /Users/bruce.he/.claude/skills/media-downloader/media_cli.py video "abstract n…)
⎿ 🔍 搜索视频: abstract neon glow
✅ 找到 2 个视频
⬇️ 下载 1/2: abstract_neon_glow_1_pexels.mp4 (8s)
… +4 lines (ctrl+o to expand)
⏺ 现在启动项目:
⏺ Bash(cd /Users/bruce.he/douyin-top10-2025 && npm run dev) timeout: 30s
⎿ Running in the background (↓ to manage)
⏺ Bash(sleep 8 && cat /private/tmp/claude/-Users-bruce-he/tasks/b0b98af.output) timeout: 15s
⎿ > [email protected] dev
> npx remotion studio src/index.ts
… +2 lines (ctrl+o to expand)
⏺ Bash(ls -la /Users/bruce.he/douyin-top10-2025/public/videos/)
⎿ total 105584
drwxr-xr-x@ 6 bruce.he staff 192 Jan 26 00:16 .
drwxr-xr-x@ 5 bruce.he staff 160 Jan 26 00:11 ..
… +4 lines (ctrl+o to expand)
⏺ ✅ 2025 抖音年度金曲热榜 Top 10 项目已完成!
项目地址: /Users/bruce.he/douyin-top10-2025
预览地址: http://localhost:3004
---
🎵 榜单数据(来源: https://m.maigoo.com/top/444137.html、https://y.qq.com/n/ryqq_v2/toplist/60)
┌──────┬────────────────┬─────────────────────┬─────────────┐
│ 排名 │ 歌曲 │ 艺人 │ 标签 │
├──────┼────────────────┼─────────────────────┼─────────────┤
│ 1 │ 大展鸿图 │ 揽佬 ft. AR刘夫阳 │ 🔥 年度神曲 │
├──────┼────────────────┼─────────────────────┼─────────────┤
│ 2 │ APT. │ ROSÉ & Bruno Mars │ 🌍 全球爆红 │
├──────┼────────────────┼─────────────────────┼─────────────┤
│ 3 │ 八方来财 │ 揽佬 │ 💰 财运神曲 │
├──────┼────────────────┼─────────────────────┼─────────────┤
│ 4 │ 跳楼机 │ 告五人 │ 💔 失恋神曲 │
├──────┼────────────────┼─────────────────────┼─────────────┤
│ 5 │ 唯一 │ 邓紫棋 │ 🎤 翻唱爆款 │
├──────┼────────────────┼─────────────────────┼─────────────┤
│ 6 │ 第57次取消发送 │ 王忻辰 │ 💕 治愈情歌 │
├──────┼────────────────┼─────────────────────┼─────────────┤
│ 7 │ 若月亮没来 │ 王宇宙Leto & 乔浚丞 │ 🌙 浪漫情歌 │
├──────┼────────────────┼─────────────────────┼─────────────┤
│ 8 │ 座位 │ 承桓 │ 📚 校园青春 │
├──────┼────────────────┼─────────────────────┼─────────────┤
│ 9 │ 两难 │ 加木 │ 🎵 热门单曲 │
├──────┼────────────────┼─────────────────────┼─────────────┤
│ 10 │ 于是 │ 郑润泽 │ ✨ 新声力量 │
└──────┴────────────────┴─────────────────────┴─────────────┘
---
🎬 视频特点(参考主流剪辑手法)
1. 抖音品牌风格
- 使用抖音红 (#FE2C55) + 抖音青 (#25F4EE) 配色
- 动态渐变背景 + 浮动光点效果
2. 专业转场效果
- slide 滑入转场(左右交替)
- wipe 擦除转场
- fade 淡入淡出
3. 动态动画
- Spring 弹性动画排名徽章
- 打字机效果歌曲标题
- 粒子爆发效果(冠军展示)
4. 音频可视化
- 实时模拟音频波形
- 每首歌 30 秒 iTunes 预览
5. 已下载素材
- ✅ 10 首歌曲音频预览
- ✅ 4 个背景视频(演唱会灯光、霓虹光效)
---
📁 项目结构
douyin-top10-2025/
├── src/
│ ├── compositions/ # 场景组件
│ ├── components/ # UI组件
│ ├── data/songs.ts # 榜单数据
│ └── styles/fonts.ts # 字体配置
├── public/
│ ├── audio/songs/ # 10首歌曲预览
│ └── videos/ # 4个背景视频
└── package.json
打开 http://localhost:3004 预览视频!
✻ Cooked for 7m 16s
How It Works
The entire pipeline can be understood from this diagram:
Your natural language description
↓
Claude Code (understands your intent)
↓
Generates React/TypeScript code
↓
Remotion framework (rendering engine)
↓
Outputs MP4 video file
Key components:
- Claude Code handles understanding your instructions and writing correct code
- Remotion Skills teach Claude Code the best practices for Remotion development
- Remotion converts the code into an actual video file
Think of it as having a video-savvy developer assistant: you describe the requirements, they write the code, and the machine renders the video.
Prerequisites
Install Node.js
Remotion requires Node.js version 18 or higher.
# Check if already installed
node --version
# Mac users can install via Homebrew
brew install node
Install Claude Code
If you haven’t installed Claude Code yet, see the full guide: Claude Code Complete Guide
# Install Claude Code
npm install -g @anthropic-ai/claude-code
# Verify installation
claude --version
This video demonstrates the Claude Code installation process:
Get an Anthropic API Key
You need an Anthropic account and API key. Sign up at Anthropic Console and create a key.
Step-by-Step Setup Guide
Good news: the setup is incredibly simple — just two steps.
Step 1: Install the Remotion Skill
Make sure you have Claude Code installed, then run:
npx skills add remotion-dev/skills
That single command installs the Remotion Skill.
This video shows the Remotion Skill installation:
Once installed, Claude Code gains 31 Remotion programming rules covering:
- Image and video embedding
- Animation effects (fade, spring, easing)
- Text animation techniques
- 3D effects (Three.js integration)
- Data visualization
- Subtitle handling
Step 2: Start Creating with Claude Code
Launch Claude Code and tell it what you want:
claude
Then type:
Create a Remotion video project with a simple text animation:
- First show "Hello" sliding in from the left
- Then show "World" sliding in from the right
- Finally merge both words, scale up, and fade out
- Duration: 5 seconds
Here’s the magic: Claude Code automatically:
- Creates a Remotion project (if one doesn’t exist)
- Installs all dependencies
- Generates the video code
- Starts the preview server
You just sit back and wait.
Step 3: Export the Video
Happy with the preview? Tell Claude Code:
Render this video as an MP4 file
It runs the render command and delivers a finished video file in seconds.
You don’t need to manually create projects, install dependencies, or write config files. Claude Code + Remotion Skills handles all of that. You just describe the effect you want.
Common Operations
Master these conversation patterns to get the most out of Remotion:
Change Visual Style
Change the background to a gradient from blue to purple
Add New Elements
Add a logo at the beginning that fades out after 3 seconds
Adjust Duration
Change the total video duration to 10 seconds
Export Different Formats
Export the video as a GIF
Preview
Start the preview server so I can see the result
Advanced Techniques
Batch Video Generation
Remotion’s greatest strength is parameterization. Say you need to generate personalized videos for 100 clients:
You say: “Modify the code to accept a customerName parameter and display ‘Dear {customerName}’ at the beginning.”
Then batch render with a script:
for name in Alice Bob Charlie; do
npx remotion render src/index.ts MyVideo "out/${name}.mp4" --props="{\"customerName\": \"$name\"}"
done
Add Background Music
You say: “Add background music. The audio file is public/bgm.mp3, starting from 0 seconds, at 50% volume.”
3D Effects
You say: “Add a 3D rotating logo using Three.js, spinning continuously around the Y axis.”
The Remotion Skills package includes Three.js and React Three Fiber rules, so AI generates correct 3D code out of the box.
Cloud Rendering
Video too long and rendering too slow locally? Use Remotion Lambda for parallel rendering on AWS:
npx remotion lambda render ...
Claude Code vs Writing Code Manually
You might wonder: can’t I just read the docs and write code myself? Why use Claude Code?
| Scenario | Writing Code Manually | Using Claude Code |
|---|---|---|
| Learning curve | Must learn React, TypeScript, Remotion API | Just describe what you want |
| Development speed | Read docs, write code, debug | One prompt, code generated |
| Debugging | Read errors, search Stack Overflow | Paste the error, AI fixes it |
| Complex effects | Could take hours of research | Describe clearly, done in minutes |
Of course, if you want to deeply learn Remotion, writing code directly is the better path. But if you need to ship fast, Claude Code + Remotion Skills is the most efficient approach.
Want to learn more advanced Claude Code techniques? Check out: Claude Code Skills Guide
FAQ
Rendering Is Slow — What Can I Do?
A few optimization strategies:
- Lower the resolution:
--scale=0.5 - Render only a subset of frames for testing:
--frame-range=0-100 - Use Remotion Lambda for cloud rendering
- Upgrade your hardware (video rendering is resource-intensive)
Does It Support Non-Latin Text (e.g., Chinese, Japanese)?
Yes. Remotion renders web content under the hood, so any font you load will work. For Chinese text:
import { loadFont } from "@remotion/google-fonts/NotoSansSC";
loadFont();
Can I Use It Commercially?
Yes. Remotion is open source and free for both personal and commercial use. However, if you want to use Remotion Lambda (cloud rendering), you’ll need to purchase a license.
How Does This Compare to AI Video Tools Like Sora or Pika?
They serve completely different purposes:
- Sora/Pika: Text-to-video AI that generates realistic footage (people, scenes)
- Remotion: Code-based framework for motion graphics, data visualization, and product demos
Remotion excels at: product demos, data reports, animated charts, text animations, logo reveals, and other design-driven content.
Important Notes
- Node.js version: Must be 18+, or you’ll encounter errors
- Memory usage: Rendering HD video is memory-intensive — 8GB+ RAM recommended
- First render is slow: The initial render downloads Chromium, so expect a wait
- Code quality: AI-generated code may need minor adjustments — don’t blindly trust everything
- Version compatibility: Remotion updates frequently — make sure your Skills version matches
Summary
Claude Code + Remotion opens a new door for developers who need video content:
- No need to learn After Effects — use familiar code to create videos
- No need to memorize APIs — describe effects in plain English
- No need for repetitive work — parameterize and batch render
- No need to spend big — open source and free
If you’re a developer who regularly needs product demos, data visualizations, or just wants to explore something new, this combination is well worth trying.
Resources
- Remotion Official Website
- Remotion GitHub
- Remotion Documentation
- Remotion AI Docs
- Remotion Skills
- Anthropic Console
Further Reading
- Claude Code Complete Guide — Learn Claude Code from scratch
- Claude Code Skills Guide — Deep dive into the Skills system
- Top 20 Claude Code Skills Worth Installing — Curated skill recommendations
- AI Development Workflow — Boost your dev productivity with AI
Making videos with AI — that’s how developers should roll. If you try it and love it, share your creations in the comments!
Comments
Join the discussion — requires a GitHub account