Claude Code skill for creating Instagram Reels & Carousel ads with Remotion
npx skills add https://github.com/maartenlouis/remotion-ads --skill remotion-adsInstale esta skill com a CLI e comece a usar o fluxo de trabalho SKILL.md em seu espaço de trabalho.
A Claude Code skill for creating professional video ads and explainer videos with Remotion, ElevenLabs voiceover, and animated word-by-word captions.
| Format | Aspect | Resolution | Duration | Scenes |
|---|---|---|---|---|
| Instagram Reels | 9:16 | 1080x1920 | 15-60s | 4 |
| Instagram Reels (Ohneis) | 9:16 | 1080x1920 | 15-45s | Beat-driven |
| Website Explainers | 16:9 | 1920x1080 | 60-160s | 6 |
| Carousels | 4:5 | 1080x1350 | Static | 5-10 slides |
# Install in your project
claude skill install remotion-ads
# Or add the folder to your project's .claude/skills/ directory
npm install remotion @remotion/cli @remotion/bundler @remotion/google-fonts
Optional:
# For caption support
npx remotion add @remotion/captions
# For background generation
npm install canvas
Create .env.local in your project root:
ELEVENLABS_API_KEY=your_key_here # For voiceover generation
GEMINI_API_KEY=your_key_here # For AI icon generation (optional)
Copy and fill in the brand config template:
cp references/brand-config-template.md references/brand-config.md
This covers colors, fonts, caption styling, voice presets, backgrounds, and compliance rules.
Copy and customize the dictionary template for brand-specific pronunciations:
cp assets/dictionaries/template.pls assets/dictionaries/your-brand.pls
{
"name": "ad-example",
"voice": "VoiceName",
"character": "narrator",
"dictionary": "your-brand",
"scenes": [
{ "id": "scene1", "text": "Hook text.", "duration": 3.5, "character": "dramatic" },
{ "id": "scene2", "text": "Problem.", "duration": 4.5 },
{ "id": "scene3", "text": "Solution.", "duration": 4.0, "character": "expert" },
{ "id": "scene4", "text": "CTA.", "duration": 3.0, "character": "calm" }
]
}
node scripts/generate.js \
--scenes scenes.json \
--with-timestamps \
--dictionary your-brand \
--output-dir public/audio/ad-example/
This produces per-scene MP3s, a combined audio file, word-level captions JSON, and an info file with actual durations.
npx remotion render AdExample out/ad-example.mp4 --codec=h264 --crf=18
Generate a scene JSON directly from any web page:
node scripts/url-to-scenes.js \
--url https://example.com/page \
--format reels \
--output scenes.json
The script extracts headings, FAQ questions, CTA buttons, key terms, and internal links, then maps them into a scene structure with source annotations. Review and edit the output, then continue with voiceover generation.
Options:
| Flag | Description | Default |
|---|---|---|
--url, -u |
URL to extract from (required) | - |
--format, -f |
reels (4 scenes) or longform (6 scenes) |
reels |
--output, -o |
Output file path | stdout |
--voice, -v |
Voice name | TODO |
--dictionary, -d |
Dictionary name | TODO |
--language, -l |
Content language | auto-detect |
| Script | Purpose |
|---|---|
scripts/generate.js |
ElevenLabs voiceover with word timestamps, pronunciation dictionaries, and request stitching |
scripts/url-to-scenes.js |
Extract web page content into a scene JSON |
scripts/suno-direct.ts |
Background music generation via Suno |
# Generate all scenes with timestamps
node scripts/generate.js --scenes scenes.json --with-timestamps --output-dir public/audio/
# Regenerate a single scene
node scripts/generate.js --scenes scenes.json --scene scene2 --output-dir public/audio/
# Validate timing of generated audio
node scripts/generate.js --validate public/audio/ad-example/
# List available voices
node scripts/generate.js --list-voices
# Forced alignment on existing audio
node scripts/generate.js --align audio.mp3 --align-text "Your transcript"
| Character | Style | Stability | Similarity | Style |
|---|---|---|---|---|
dramatic |
Intense, emotional | 0.3 | 0.8 | 0.7 |
narrator |
Professional, smooth | 0.5 | 0.75 | 0.4 |
expert |
Authoritative | 0.6 | 0.85 | 0.3 |
calm |
Soothing, reassuring | 0.7 | 0.8 | 0.2 |
conversational |
Casual, friendly | 0.45 | 0.7 | 0.5 |
remotion-ads/
├── SKILL.md # Skill definition (loaded by Claude Code)
├── scripts/
│ ├── generate.js # ElevenLabs voiceover generator
│ ├── url-to-scenes.js # URL → scene JSON extractor
│ └── suno-direct.ts # Suno music generator
├── references/ # Documentation (loaded on demand)
│ ├── ohneis-style.md # Beat-driven cinematic reel template (@ohneis652 style)
│ ├── brand-config-template.md # Brand config: colors, fonts, voice, captions
│ ├── setup.md # Project setup guide
│ ├── formats.md # Dimension specs and safe zones
│ ├── voiceover.md # ElevenLabs TTS, timing, dictionaries
│ ├── captions.md # Animated caption styles
│ ├── animations.md # Spring configs and transitions
│ ├── components.md # Reusable Remotion components
│ ├── website-videos.md # 16:9 long-form format (6 scenes)
│ ├── url-to-video.md # URL-to-video workflow
│ ├── sound-effects.md # ElevenLabs SFX generation
│ ├── music.md # Background music
│ ├── local-assets.md # Backgrounds, icons, illustrations
│ ├── carousels.md # 4:5 carousel design
│ ├── ad-copywriting.md # Script frameworks and hooks
│ ├── copy-frameworks.md # Headline templates
│ ├── natural-transitions.md # Human-sounding transitions
│ ├── paid-ads.md # Meta campaign strategy
│ └── social-content.md # Content calendar
└── assets/
└── dictionaries/ # Pronunciation dictionaries (.pls)
├── template.pls
└── example.pls
MIT