---
title: "Interview Clean Cut — filler removal + captions + export (HeyGen sibling)"
tier: hero
format: video
theme: interview | speech-cleanup | captions | finishing
persona: podcaster, marketer, founder, social editor
duration: "~10–25 min"
budget_usd: "~$0.60 minimum (HeyGen 60s min) + captions/export"
caps: ["heygen-filler-removal", "transcribe", "ffmpeg-burn-subtitles", "ffmpeg-export"]
skills: ["heygen-filler-removal", "captions", "finishing-quality"]
showcases: ["/chapters/interview-clean-cut-example.html"]
status: "live"
reliability: 3.6 # vendor cap stable; transcription + finishing deterministic
---

# Interview Clean Cut — agent playbook

> Paste this whole file (with the BRIEF filled in) into Claude cowork, chat, or Code. Livepeer Agent cleans an interview take by removing filler words, then generates captions and exports a platform-ready MP4.

## What you'll get

- **A “clean cut” video** — filler words removed, pacing preserved
- **A transcript** — timestamped text for review and reuse
- **Burned-in captions** — readable subtitles for social platforms
- **An export-ready MP4** — formatted to your target aspect ratio

## Tell the agent about the interview

```yaml
input_video_url:       # https://... (or @last_video)
language_hint:         # e.g. "en", "es", "fr" (helps transcription)
output_aspect_ratio:   # "16:9" (default) or "9:16"
max_spend_usd: 5.00    # hard ceiling
output_slug:           # kebab-case filename prefix
```

## Conventions (how the agent must run)

1. **Spend gate**: HeyGen is billed at **$0.01 / input-second with a 60s minimum**. STOP before running it.
2. **Identity gate**: after filler removal, STOP and confirm the voice/lipsync feel natural.
3. **Final review gate**: STOP before export.

## The stages

### Stage 0 — Confirm the brief (no render)

Confirm:
- which aspect ratio you want,
- that this is a talking clip (not a montage),
- whether you prefer “minimal edits” (remove filler only) vs “tight cut” (remove filler + long pauses).

**STOP**: “Proceed? (approve / edit [field])”

### Stage 1 — Cost preview (no render)

Estimate HeyGen minimum spend as **max(60, clip_seconds) × $0.01** and show it.

**STOP**: “Approve spend to remove filler words? (approve / abort)”

### Stage 2 — Remove filler words (HeyGen)

Run `heygen-filler-removal` on `input_video_url`.

**STOP**: “Filler removal sounds natural? (approve / revert to clean_speech path / abort)”

### Stage 3 — Transcribe (for captions + reuse)

Run `transcribe` on the cleaned video. If the transcript looks wrong, redo once with a better `language_hint`.

**STOP**: “Transcript ok to caption? (approve / redo transcription)”

### Stage 4 — Burn captions (deterministic finishing)

Prefer the high-level caption path: `transcribe({ source_url, burn:true })`. This yields timed cues and burns the captions deterministically.

**STOP**: “Captions readable? (approve / redo transcription / abort)”

### Stage 5 — Export (aspect + quality)

If `output_aspect_ratio: 9:16`, run `ffmpeg-export` with `preset:"tiktok-portrait"`. If `output_aspect_ratio: 16:9`, skip export (the captioned output is already correct).

**STOP**: “Export final MP4? (approve / change output_aspect_ratio / skip export)”

### Stage 6 — Deliver

Return:
- cleaned cut URL
- transcript text (and/or URL)
- captioned export URL

## FINAL OUTPUT

Print exactly:

```
✅ Clean cut:          <URL>
✅ Transcript (text):  <first 5 lines + link if available>
✅ Captions (SRT):     <srt or link>
✅ Captioned video:    <URL>
✅ Export (optional):  <URL>   # only when output_aspect_ratio is 9:16

Total spent: $X.XX (ceiling $max_spend_usd)
```

## AFTERCARE

- If the filler removal feels too aggressive: switch to `clean_speech` (more control) and re-run captions.
- If you’re clipping for socials: use an autoclipper flow (find the best 30–60s moments) before exporting 9:16.

## Notes for the agent (exact calls)

- HeyGen: `mcp__livepeer-agent__run_capability({ capability:"heygen-filler-removal", inputs:{ video_url } })`
- Captions (preferred): `transcribe({ source_url: "<clean_cut_url>", burn: true })`
- Captions (raw fallback): `mcp__livepeer-agent__run_capability({ capability:"ffmpeg-burn-subtitles", inputs:{ source_url:"<clean_cut_url>", cues:[{ start_sec:0.0, end_sec:1.2, text:"..." }] } })`
- Export (9:16 only): `mcp__livepeer-agent__run_capability({ capability:"ffmpeg-export", inputs:{ source_url:"<captioned_url>", preset:"tiktok-portrait", crop:"center-crop" } })`
