---
name: podcast_production
description: Produce a podcast end to end — design the show format and episode structure, record remote guests at broadcast quality, edit dialogue, master to platform loudness standards, and publish a valid RSS feed. Use when asked to launch a show, plan or produce an episode, run a remote interview session, clean up noisy recordings, or ship a podcast feed.
---

# Podcast Production

Audio-first podcast production: show format design, remote guest recording, dialogue editing, mastering, and RSS publishing.

## Purpose

Take a podcast from "I have an idea" to "listeners can subscribe." Covers the full pipeline — format, recording, editing, loudness, feed — so an agent can run the job without a producer in the loop. Use `references/` for the deep guides; SKILL.md is the runbook.

## Workflow

### 1. Format design
Lock the show promise in one sentence: *"[Show] helps [audience] [outcome] through [format] with [differentiator]."* If you can't fill it, workshop it before anything else — every downstream decision (guests, titles, clips) depends on it.

Then lock one repeatable episode skeleton: **cold open** (the best 20–40 seconds, pulled from the middle in post) → **intro** (host, show promise, guest one-liner; under 60 seconds) → **body** (3–5 segments) → **payoff segment** (a recurring bit listeners stay for — trains retention and gives you a reliable clip source) → **outro with ONE call to action**.

Batch-plan 3–5 episodes at a time, not one at a time. Flag explicitly: narrative formats (true crime, history, documentary) need roughly 5–10x the production time of talk formats — confirm the cost before committing. Full format guide: `references/format-design.md`.

**Output:** a filled `templates/run-of-show.md` per episode (timestamps, segments, questions, CTA, clip markers).

### 2. Remote guest recording
Pick the recording approach by guest situation:
- **Platform double-ender (default):** Riverside, Zencastr, or SquadCast record each participant locally in the browser and upload progressively — quality survives connection drops. Riverside for quality+livestream, Zencastr when you also want hosting, SquadCast if you edit in Descript.
- **Manual double-ender:** host and guest each record locally (Audacity, QuickTime, phone Voice Memos), talk over a muted Zoom/Meet, sync in post on a countdown/clap marker. Best for technical guests or zero budget; fragile — one forgotten "rec" loses the track.
- **Always:** closed-back headphones on everyone (no bleed), a local backup recording of the full session even when using a platform (cloud files can corrupt), and mix-minus to the guest (they hear the whole mix except their own voice — no echo).

Brief the guest *before* the session with `templates/guest-briefing-email.md` (equipment hierarchy: USB mic > wired headset > earbuds > phone near mouth; never the laptop mic). Full playbook: `references/remote-recording.md`.

**Output:** one multitrack set of uncompressed WAVs per participant, named `{episode}-track-{name}.wav`.

### 3. Dialogue editing
Edit order: **cut content first** (filler, dead air, tangents — cut ruthlessly; ~2–3 min of dead air per 90 min is normal), then process sound. Edit per-track, not on the mix: one guest's fix shouldn't touch the host's track.

Chain per voice track (ffmpeg):
1. `highpass=f=70` — cut rumble, mic thumps.
2. `afftdn` — gentle noise reduction on consistent room tone.
3. `acompressor=threshold=-20dB:ratio=3:attack=15:release=250:knee=6` — tame plosives and emphasis; gentle, not crushed.
4. Mix to stereo, then master (step 4).

Fix in the tracks what automation can't: crosstalk and talk-overs (edit around, don't mute hard), mouth clicks on pauses only, phone/notification bleeds. Never invent missing audio. Details and troubleshooting: `references/dialogue-editing.md`.

**Output:** one mixed, edited, unnormalized WAV — the *mix*, not the master.

### 4. Mastering to loudness
Target **−16 LUFS integrated, −1 dBTP true peak** (the de facto podcast delivery target; Apple Podcasts accepts it as its standard). Mono shows: −19 LUFS. All measured with EBU R128 (ffmpeg `loudnorm`).

Run the two-pass normalization with the bundled CLI — it measures first, then applies gain:
```bash
python3 scripts/normalize.py --target-lufs -16 --target-tp -1 mix.wav -o episode-final.wav
```
Export deliverables from the master: **MP3** (`-b:a 160k -ar 44100`) for the feed, and keep an archival WAV. Write ID3 tags matching the feed metadata (title, artist=show, album=show, year, artwork). Why the target matters more than the processing: platforms normalize playback anyway — discipline on loudness beats fancy chains. Details: `references/dialogue-editing.md`.

**Output:** `episode-final.wav` (archive) + `episode-final.mp3` (feed-ready).

### 5. RSS feed and publishing
Build the feed from `templates/feed.xml` — RSS 2.0 core plus the Apple Podcasts (iTunes) namespace. Per episode you must have: `<title>`, `<description>`, `<enclosure url length type="audio/mpeg">`, a unique `<guid isPermaLink="false">`, RFC-2822 `<pubDate>`, `<itunes:duration>`. Channel must have: title, link, language, `itunes:author`, `itunes:owner`, `itunes:image` (1400×1400 minimum, 3000×3000 recommended, square, JPEG/PNG, RGB, readable at 55×55 px), category, explicit flag, `itunes:type`.

Validate with Podbase or another validator before submitting. Apple Podcasts requires at least one episode present before it will accept the feed. Submit the feed URL to Apple Podcasts, Spotify, Amazon Music, and Pocket Casts. Optional: Podcasting 2.0 namespace tags (chapters, transcripts, persons) — see `references/rss-feed.md`.

**Output:** a valid `feed.xml` URL + submission checklist with confirmation each directory accepted the feed.

## Output Contract

A finished job always delivers: (1) run-of-show document per episode; (2) multitrack raw WAVs; (3) feed-ready MP3 mastered to −16 LUFS / −1 dBTP with matching ID3 tags; (4) a valid podcast RSS feed; (5) confirmation of directory submissions. The working script, `scripts/normalize.py`, is the loudness engine — tested, not a stub.

## Operating Rules

- **Accuracy rule:** every factual claim must be verified via web search or a primary source. Never invent numbers, dates, quotes, or events. Unverifiable = cut it or frame as opinion.
- Never publish audio with clipping, audible clipping repair artifacts, or a loudness deviation beyond ±1 LU from target — re-master instead.
- Never invent guest quotes or fabricate show-note content: pull quotes, timestamps, and summaries only from the actual recording or transcript.
- Never skip the backup recording on a remote session. No backup = no session.
- Never submit a feed without validating it first; never claim a directory accepted the feed until its confirmation says so.
- Loudness: −16 LUFS stereo / −19 LUFS mono, −1 dBTP ceiling. Not −14 (that's YouTube/Spotify music normalization), not −23 (that's broadcast).
- Guest audio is never "good enough" by default: if a track is unusable (speakerphone, heavy echo, dropouts), say so plainly and re-record rather than shipping salvage work.
