| name | claude-code-video-toolkit |
| description | AI-native video production toolkit for programmatic video creation with Remotion, ElevenLabs, and cloud AI tools |
| triggers | ["create a video with remotion","generate ai voiceover for video","set up video production toolkit","render video with claude code","create video template","generate speech from script","record browser demo as video","create sprint review video"] |
claude-code-video-toolkit
Skill by ara.so ā Claude Code Skills collection.
Overview
The claude-code-video-toolkit is a complete AI-native video production workspace that integrates Remotion (React-based video), ElevenLabs/Qwen3-TTS (AI voiceover), FLUX.2/LTX-2 (AI image/video generation), ACE-Step (AI music), and cloud GPU deployment for creating professional explainer videos programmatically.
The toolkit provides:
- Skills for Remotion, ElevenLabs, FFmpeg, Playwright recording, AI image/video generation
- Commands (
/video, /setup, /template, /scene-review) for guided workflows
- Templates (sprint-review, product-demo) with scene-based composition
- Brand profiles for visual identity consistency
- Project management system tracking scenes, audio, and workflow phases
- Python tools for voiceover generation, image editing, music composition
Installation
git clone https://github.com/digitalsamba/claude-code-video-toolkit.git
cd claude-code-video-toolkit
python3 -m pip install -r tools/requirements.txt
claude
Prerequisites
- Node.js 18+ (for Remotion)
- Python 3.9+ (for AI tools)
- FFmpeg (optional, for media processing)
- Claude Code or compatible AI agent
Quick Start
/setup
/video
cd examples/hello-world
npm install
npm run render
Core Commands
/setup
Interactive first-time configuration:
- Cloud GPU provider (Modal or RunPod)
- File transfer method (Cloudflare R2, SSH, local)
- Voice configuration (ElevenLabs or Qwen3-TTS)
- Dependency checks
/video
Video project management:
- List existing projects
- Resume in-progress projects
- Create new project from template
- Guided workflow through phases: planning ā assets ā review ā audio ā editing ā rendering
/template
Template management:
- List available templates
- Create new template from scratch
- Templates define scene structure, components, and styling
/scene-review
Launch Remotion Studio for scene-by-scene review and editing:
cd projects/my-project
npm run studio
/brand
Brand profile management:
- List, edit, or create brand profiles
- Brands define colors, fonts, typography, voice settings
/generate-voiceover
Generate AI voiceover from script:
/generate-voiceover
python tools/voiceover.py --script script.md --output audio.mp3
/record-demo
Record browser interactions with Playwright:
/record-demo
Project Structure
claude-code-video-toolkit/
āāā .claude/ # Claude Code skills and commands
ā āāā skills/ # Skill definitions (remotion, elevenlabs, etc.)
ā āāā commands/ # Command definitions (/video, /setup, etc.)
āāā projects/ # Video projects (gitignored)
āāā templates/ # Project templates
ā āāā sprint-review/
ā āāā product-demo/
āāā brands/ # Brand profiles
ā āāā default/
ā āāā digital-samba/
āāā lib/ # Shared libraries
ā āāā transitions/ # Scene transition effects
ā āāā project/ # Project management system
ā āāā components/ # Reusable Remotion components
āāā tools/ # Python AI tools
ā āāā voiceover.py # Generate AI speech
ā āāā qwen_edit.py # AI image editing
ā āāā acestep.py # AI music generation
ā āāā ltx2.py # AI video generation
āāā examples/ # Example projects
Creating a Video Project
1. Start a New Project
/video
2. Define Scenes
The toolkit uses a scene-based workflow. Each scene has:
- Intent: What to show (description)
- Visual type: demo-recording, stats-screen, title-screen, etc.
- Duration: Length in seconds
- Assets: Required files (videos, images, audio)
Example project.json scene:
{
"intent": "Show iOS app login screen with animation",
"visualType": "demo-recording",
"duration": 8,
"assets": {
"video": {
"status": "needed",
"path": null
}
}
}
3. Generate Assets
/record-demo
python tools/voiceover.py \
--script projects/my-project/audio/script.md \
--output projects/my-project/audio/voiceover.mp3 \
--voice $ELEVENLABS_VOICE_ID
python tools/qwen_edit.py \
--prompt "futuristic tech background, dark blue" \
--output projects/my-project/assets/background.png
python tools/acestep.py \
--prompt "upbeat electronic, tech demo" \
--duration 60 \
--output projects/my-project/audio/music.mp3
4. Review in Remotion Studio
cd projects/my-project
npm run studio
5. Render Final Video
cd projects/my-project
npm run render
Remotion Scene Composition
Basic Scene Structure
import { AbsoluteFill, useCurrentFrame } from 'remotion';
import { interpolate } from 'remotion';
export const IntroScene: React.FC<{ title: string }> = ({ title }) => {
const frame = useCurrentFrame();
const opacity = interpolate(frame, [0, 30], [0, 1]);
return (
<AbsoluteFill style={{
backgroundColor: '#0a0e27',
justifyContent: 'center',
alignItems: 'center'
}}>
<h1 style={{
opacity,
fontSize: 72,
color: '#00d4ff'
}}>
{title}
</h1>
</AbsoluteFill>
);
};
Using Transitions
import { Series } from 'remotion';
import { glitch, fade } from '../../lib/transitions';
import { IntroScene } from './scenes/IntroScene';
import { DemoScene } from './scenes/DemoScene';
export const Video: React.FC = () => (
<Series>
<Series.Sequence durationInFrames={90}>
<IntroScene title="My Product" />
</Series.Sequence>
<Series.Transition
presentation={glitch()}
timing={{ durationInFrames: 15 }}
/>
<Series.Sequence durationInFrames={240}>
<DemoScene videoSrc="assets/demo.mp4" />
</Series.Sequence>
</Series>
);
Available Transitions
import {
glitch,
rgbSplit,
zoomBlur,
lightLeak,
clockWipe,
pixelate,
checkerboard,
slide,
fade,
wipe,
flip
} from '../../lib/transitions';
AI Voiceover Generation
ElevenLabs (Cloud API)
import os
from elevenlabs.client import ElevenLabs
client = ElevenLabs(api_key=os.getenv("ELEVENLABS_API_KEY"))
audio = client.generate(
text="Welcome to our product demo",
voice="EXAVITQu4vr4xnSDxMaL",
model="eleven_multilingual_v2"
)
with open("voiceover.mp3", "wb") as f:
for chunk in audio:
f.write(chunk)
Qwen3-TTS (Self-hosted, free)
modal deploy tools/qwen_tts_modal.py
python tools/voiceover.py \
--script script.md \
--output audio.mp3 \
--provider qwen
Script Format
# script.md
In this sprint, we shipped three major features.
[pause:1.0]
First, we rebuilt the authentication system with biometric support.
[emphasis]This was a big win for security.[/emphasis]
[pause:0.5]
Let's see it in action.
AI Image Generation & Editing
Generate with FLUX.2
python tools/qwen_edit.py \
--prompt "cyberpunk city at night, neon lights, rain" \
--output background.png \
--width 1920 \
--height 1080
Edit Existing Image
python tools/qwen_edit.py \
--input photo.jpg \
--prompt "add sunglasses and a leather jacket" \
--output edited.png
AI Music Generation
python tools/acestep.py \
--prompt "upbeat electronic music for tech demo" \
--duration 60 \
--output music.mp3 \
--lyrics "optional verse lyrics here"
Brand Profiles
Creating a Brand
/brand
Brand structure:
brands/my-brand/
āāā brand.json # Visual identity
āāā voice.json # Voice settings
āāā assets/
āāā logo.png
āāā background.jpg
brand.json Example
{
"name": "My Brand",
"colors": {
"primary": "#00d4ff",
"secondary": "#ff006e",
"background": "#0a0e27",
"text": "#ffffff"
},
"fonts": {
"heading": "Inter",
"body": "Inter"
},
"typography": {
"headingSize": 72,
"bodySize": 24
}
}
voice.json Example
{
"provider": "elevenlabs",
"voiceId": "EXAVITQu4vr4xnSDxMaL",
"stability": 0.5,
"similarityBoost": 0.75,
"model": "eleven_multilingual_v2"
}
Cloud GPU Deployment
Modal (Recommended)
pip install modal
modal token new
modal deploy tools/qwen_tts_modal.py
modal deploy tools/qwen_edit_modal.py
modal deploy tools/acestep_modal.py
RunPod (Alternative)
export RUNPOD_API_KEY=your_key
export RUNPOD_ENDPOINT_ID=your_endpoint
python tools/voiceover.py --provider qwen --runpod
Project Lifecycle
Projects follow this phase progression:
- planning - Define scenes, assets, voiceover script
- assets - Generate/record videos, images, audio
- review - Preview in Remotion Studio, refine timing
- audio - Generate final voiceover and music
- editing - Final polish, transitions, effects
- rendering - Export final video
- complete - Archived
Check project status:
cat projects/my-project/project.json | grep phase
Common Patterns
Overlay Text on Video
import { Video, AbsoluteFill } from 'remotion';
export const OverlayScene: React.FC = () => (
<AbsoluteFill>
<Video src="demo.mp4" />
<AbsoluteFill style={{
justifyContent: 'flex-end',
padding: 40
}}>
<h2 style={{ color: 'white', fontSize: 48 }}>
Feature Demo
</h2>
</AbsoluteFill>
</AbsoluteFill>
);
Animated Stats
import { useCurrentFrame } from 'remotion';
import { interpolate } from 'remotion';
export const StatsScene: React.FC = () => {
const frame = useCurrentFrame();
const value = Math.floor(interpolate(frame, [0, 60], [0, 1247]));
return (
<AbsoluteFill style={{
justifyContent: 'center',
alignItems: 'center'
}}>
<div style={{ fontSize: 120, fontWeight: 'bold' }}>
{value.toLocaleString()}
</div>
<div style={{ fontSize: 36, marginTop: 20 }}>
GitHub Stars
</div>
</AbsoluteFill>
);
};
Audio Sync
import { Audio, useCurrentFrame } from 'remotion';
export const NarratedScene: React.FC = () => {
const frame = useCurrentFrame();
const fps = 30;
const showText = frame > fps * 2.5 && frame < fps * 5;
return (
<AbsoluteFill>
<Audio src="voiceover.mp3" />
{showText && <h2>This appears during narration</h2>}
</AbsoluteFill>
);
};
Environment Variables
export ELEVENLABS_API_KEY=your_key
export ELEVENLABS_VOICE_ID=voice_id
export MODAL_TOKEN_ID=your_token
export MODAL_TOKEN_SECRET=your_secret
export RUNPOD_API_KEY=your_key
export RUNPOD_ENDPOINT_ID=endpoint_id
export R2_ACCOUNT_ID=account_id
export R2_ACCESS_KEY_ID=access_key
export R2_SECRET_ACCESS_KEY=secret_key
export R2_BUCKET_NAME=bucket_name
Troubleshooting
Remotion render fails with memory error
export NODE_OPTIONS="--max-old-space-size=8192"
npm run render
ElevenLabs voice sounds robotic
- Reduce
stability (0.3-0.5 for more natural)
- Increase
similarityBoost (0.7-0.9)
- Use
eleven_multilingual_v2 model
Modal deployment fails
pip install --upgrade modal
modal token new
modal app list
Video preview is choppy in Remotion Studio
- Reduce preview quality in Studio settings
- Use proxy videos (lower resolution) during editing
- Increase RAM available to Node.js
Transitions not working
cd projects/my-project
npm install @remotion/transitions
Voice clone quality is poor
- Use at least 1 minute of clear audio
- Remove background noise
- Speak at consistent volume and pace
- Use ElevenLabs professional voice cloning (paid tier)
Further Resources