add-voiceover · git:20261027.4295fca · 2026-10-27 · sha256 53f7483aa915d372
add-voiceover git:20261027.4295fcaA
Immutable. This exact content never changes and is served at /api/v1/blob/53f7483aa915d372.
---
name: add-voiceover
description: 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.
---
# Add Voiceover — Generate & Integrate Narration
You are helping the user add a voiceover narration to their Remotion project.
**Load the `remotion-production` skill** for the `voiceover-sync` and `audio-integration` rules.
## Workflow
### 1. Get the Script
If the user hasn't provided a script:
- Ask what the video is about
- Ask about tone (professional, casual, energetic, calm)
- Write the narration script
- Present for approval
### 2. Choose Voice
Available voices (via remotion-media generate_speech):
- **Eric** — Warm, professional male (default)
- **Rachel** — Clear, engaging female
- **Aria** — Energetic female
- **Roger** — Deep, authoritative male
- **Sarah** — Friendly, conversational female
- **Laura** — Calm, soothing female
- **Charlie** — Casual, youthful male
For voice cloning or custom voices, use the dedicated ElevenLabs MCP (requires `ELEVENLABS_API_KEY`).
### 3. Generate TTS
```
Use remotion-media generate_speech:
- text: [the approved script]
- output_name: narration-intro
- voice: [chosen voice]
```
Files land in `public/` of the directory your agent was launched from, so start your agent (Claude Code, Codex, Gemini CLI…) from the Remotion project root.
Record the returned **file path** and **duration**.
### 4. Wire into Composition
Add the voiceover `<Audio>` component:
```tsx
import { Audio, staticFile } from "remotion";
// In your composition:
<Audio src={staticFile("[returned-file-path]")} volume={1} />
```
### 5. Adjust Composition Duration
If the voiceover is longer than the current composition:
```tsx
// Update durationInFrames in the Composition registration
durationInFrames: Math.ceil([voiceover_duration_seconds] * fps) + 60 // +2s padding
```
### 6. Generate Captions (optional)
Offer to generate subtitles:
```
Use remotion-media generate_subtitles:
- input_file: [voiceover filename inside public/, e.g. narration-intro.mp3]
```
### 7. Duck Background Music (if present)
If the project already has background music, lower its volume during voiceover. See `audio-integration` rule for the ducking pattern.