/add-captions
Generate TikTok-style animated captions for your Remotion video. Transcribes audio with Whisper, then creates word-by-word animated subtitles with customizable position, colors, and style.
$ npx -y skills add DojoCodingLabs/remotion-superpowers --agent claude-codeShips with remotion-superpowers. Installing the plugin gets this command.
How it fires
How this command gets triggered: by you, by Claude, or both.
- Fires itselfClaude auto-loads it when your prompt matches the work.
- You can call itInvoke it directly when you want it.
- Slash command
/add-captions
Context preview
What this command does when you run it.
Generate TikTok-style animated captions for your Remotion video. Transcribes audio with Whisper, then creates word-by-word animated subtitles with customizable position, colors, and style.
Command definition
add-captions.mdname: add-captions
description: Generate TikTok-style animated captions for your Remotion video. Transcribes audio with Whisper, then creates word-by-word animated subtitles with customizable position, colors, and style.
Add Captions — TikTok-Style Animated Subtitles
You are helping the user add animated word-by-word captions to their Remotion video.
**Load the `remotion-production` skill** for the `captions-workflow` rule.
Workflow
1. Identify the Audio Source
Find the voiceover or primary audio file:
# Check for existing audio files
ls public/audio/ public/ 2>/dev/null | grep -E '\.(mp3|wav|m4a|ogg)$'
If no audio exists, suggest running `/add-voiceover` first.
2. Transcribe with Whisper
Generate word-level timestamps:
Use remotion-media generate_subtitles:
- input: [path to audio file]
- project_path: [project root path]
This returns an SRT file with timestamps. Save to `public/captions/`.
3. Install Captions Package
Ensure `@remotion/captions` is installed:
npx remotion add @remotion/captions
4. Choose Caption Style
Ask the user what style they want:
- **TikTok style** (default) — Bold, centered, one word at a time, colored highlight
- **YouTube style** — Bottom of screen, sentence at a time
- **Karaoke style** — Words highlight as they're spoken
- **Minimal** — Small, subtle, bottom-left
5. Create the Captions Component
import { useCurrentFrame, useVideoConfig } from "remotion";
import { createTikTokStyleCaptions } from "@remotion/captions";
// Parse the transcription into Remotion Caption objects
// Apply createTikTokStyleCaptions() for word-by-word timing
export const Captions: React.FC<{ captions: Caption[] }> = ({ captions }) => {
const frame = useCurrentFrame();
const { fps } = useVideoConfig();
const currentTimeMs = (frame / fps) * 1000;
const { pages } = createTikTokStyleCaptions({
captions,
combineTokensWithinMilliseconds: 800,
});
// Find current page based on time
const currentPage = pages.find(
(p) => currentTimeMs >= p.startMs && currentTimeMs < p.startMs + p.durationMs
);
if (!currentPage) return null;
return (
<div style={{
position: "absolute",
bottom: "15%",
left: 0,
right: 0,
display: "flex",
justifyContent: "center",
padding: "0 40px",
}}>
<div style={{
fontSize: 64,
fontWeight: 800,
textAlign: "center",
textShadow: "2px 2px 8px rgba(0,0,0,0.8)",
color: "white",
}}>
{currentPage.tokens.map((token, i) => {
const isActive = currentTimeMs >= token.fromMs && currentTimeMs < token.toMs;
return (
<span key={i} style={{
color: isActive ? "#FFD700" : "white",
transition: "color 0.1s",
}}>
{token.text}
</span>
);
})}
</div>
</div>
);
};6. Customize Appearance
Offer the user these customization options:
- **Position**: top (10%), center (50%), bottom (15%)
- **Font size**: Small (40px), Medium (56px), Large (72px)
- **Highlight color**: Yellow (#FFD700), Cyan (#00FFFF), Green (#00FF88), custom
- **Background**: None, semi-transparent box, blur
- **Font**: Inter, Poppins, or whatever the project uses
- **Animation**: Pop-in, fade-in, slide-up for each word group
7. Wire into Composition
Add the Captions component as an overlay layer on top of everything:
// In the main composition, as the LAST visual layer (on top):
<Captions captions={parsedCaptions} />8. Preview & Adjust
Tell the user to check captions in the Remotion preview. Common adjustments:
- Text too small/large on mobile? → Adjust font size
- Words moving too fast? → Increase `combineTokensWithinMilliseconds`
- Wrong timing? → Check audio/caption sync
- Overlapping with visuals? → Change position (top vs bottom)
Read more
name: add-captions description: Generate TikTok-style animated captions for your Remotion video. Transcribes audio with Whisper, then creates word-by-word animated subtitles with customizable position, colors, and style.
Add Captions — TikTok-Style Animated Subtitles
You are helping the user add animated word-by-word captions to their Remotion video.
**Load the `remotion-production` skill** for the `captions-workflow` rule.
Workflow
1. Identify the Audio Source
Find the voiceover or primary audio file:
# Check for existing audio files ls public/audio/ public/ 2>/dev/null | grep -E '\.(mp3|wav|m4a|ogg)$'
If no audio exists, suggest running `/add-voiceover` first.
2. Transcribe with Whisper
Generate word-level timestamps:
Use remotion-media generate_subtitles: - input: [path to audio file] - project_path: [project root path]
This returns an SRT file with timestamps. Save to `public/captions/`.
3. Install Captions Package
Ensure `@remotion/captions` is installed:
npx remotion add @remotion/captions
4. Choose Caption Style
Ask the user what style they want:
- **TikTok style** (default) — Bold, centered, one word at a time, colored highlight
- **YouTube style** — Bottom of screen, sentence at a time
- **Karaoke style** — Words highlight as they're spoken
- **Minimal** — Small, subtle, bottom-left
5. Create the Captions Component
import { useCurrentFrame, useVideoConfig } from "remotion";
import { createTikTokStyleCaptions } from "@remotion/captions";
// Parse the transcription into Remotion Caption objects
// Apply createTikTokStyleCaptions() for word-by-word timing
export const Captions: React.FC<{ captions: Caption[] }> = ({ captions }) => {
const frame = useCurrentFrame();
const { fps } = useVideoConfig();
const currentTimeMs = (frame / fps) * 1000;
const { pages } = createTikTokStyleCaptions({
captions,
combineTokensWithinMilliseconds: 800,
});
// Find current page based on time
const currentPage = pages.find(
(p) => currentTimeMs >= p.startMs && currentTimeMs < p.startMs + p.durationMs
);
if (!currentPage) return null;
return (
<div style={{
position: "absolute",
bottom: "15%",
left: 0,
right: 0,
display: "flex",
justifyContent: "center",
padding: "0 40px",
}}>
<div style={{
fontSize: 64,
fontWeight: 800,
textAlign: "center",
textShadow: "2px 2px 8px rgba(0,0,0,0.8)",
color: "white",
}}>
{currentPage.tokens.map((token, i) => {
const isActive = currentTimeMs >= token.fromMs && currentTimeMs < token.toMs;
return (
<span key={i} style={{
color: isActive ? "#FFD700" : "white",
transition: "color 0.1s",
}}>
{token.text}
</span>
);
})}
</div>
</div>
);
};6. Customize Appearance
Offer the user these customization options:
- **Position**: top (10%), center (50%), bottom (15%)
- **Font size**: Small (40px), Medium (56px), Large (72px)
- **Highlight color**: Yellow (#FFD700), Cyan (#00FFFF), Green (#00FF88), custom
- **Background**: None, semi-transparent box, blur
- **Font**: Inter, Poppins, or whatever the project uses
- **Animation**: Pop-in, fade-in, slide-up for each word group
7. Wire into Composition
Add the Captions component as an overlay layer on top of everything:
// In the main composition, as the LAST visual layer (on top):
<Captions captions={parsedCaptions} />8. Preview & Adjust
Tell the user to check captions in the Remotion preview. Common adjustments:
- Text too small/large on mobile? → Adjust font size
- Words moving too fast? → Increase `combineTokensWithinMilliseconds`
- Wrong timing? → Check audio/caption sync
- Overlapping with visuals? → Change position (top vs bottom)
🎬 Claude Code plugin — full video production studio for Remotion. AI voiceovers, music, stock footage, image/video generation, TikTok captions, 3D, transitions & AI review loop. 5 MCP servers, 13 commands. Free & open source by Dojo Coding.
Repo: DojoCodingLabs/remotion-superpowers
Other commands on remotion-superpowers.
- /add-music
Generate background music and add it to your Remotion project. Describe the mood/genre you want, and this will generate a track via Suno and wire it into your composition with proper fade in/out.
Open command - /add-transitions
Add professional scene transitions to your Remotion video. Choose from fade, slide, wipe, flip, clock-wipe and more — with spring physics or linear timing.
Open command - /add-voiceover
Generate a voiceover narration and add it to your Remotion project. Provide a script or describe what the narration should say, and this will generate TTS audio and wire it into your composition.
Open command - /analyze-footage
Analyze existing video files using TwelveLabs AI. Understand what's in your footage — find specific scenes, detect objects and speakers, get timestamps for the best clips.
Open command - /create-short
Create a short-form vertical video (TikTok, Instagram Reels, YouTube Shorts). Optimized 9:16 pipeline with auto-captions, hook-first structure, and background music mood selection.
Open command - /create-video
Full video production pipeline — from a text prompt to a rendered MP4 with voiceover, music, sound effects, stock footage, and motion graphics. The flagship command of Remotion Superpowers.
Open command

