---
name: podcast-clip
description: Turn podcast or speech audio into shareable audiogram clips. Cuts a segment, normalizes loudness, and renders a vertical / square / wide video with cover art, title, speaker, a live waveform, a progress bar and karaoke-style burned captions. Voice can come from Kenerate generate_speech or the user's episode. Use when the user wants a podcast clip, audiogram, quote clip, voice-over video, short from an episode, or audio turned into video for social.
compatibility: Needs Python 3.9+ with Pillow and ffmpeg; uses the Kenerate MCP for voice, cover art or a talking presenter.
metadata:
  author: kenerate
  version: "1.0"
  kenerate-tools: "generate_speech generate_image talking_avatar upload_media wait_for_generation estimate_cost"
---

# Podcast clip (audiogram)

Rules: [references/KENERATE.md](references/KENERATE.md) (models and voices: [references/MODELS.md](references/MODELS.md), or the free `pick_model` / `pick_voice` tools).

## Ask the user
The audio (episode link or file, or a script to voice), the segment (start / end in seconds, ≤ 60-90 s for social),
title and speaker line, cover art, format (9:16 default), and the transcript of the segment if they have it.

## 1. Assets (Kenerate, optional)
- Voice from a script (only when the user wants a generated voice): `generate_speech(text=<script>, engine="elevenlabs-eleven-v3", voice=<name>)`
  → kind `"voice"`. Always pass a voice: `pick_voice(use_case="podcast")` or MODELS.md's voice table. No music unless asked.
- Cover art: `generate_image(prompt="podcast cover art for <show>, bold, <style>, no text", aspect_ratio="1:1")`.
- Talking-head version instead: `talking_avatar(image_url=<host photo>, audio_url=<speech>)` (priced per second;
  `estimate_cost` first). This skill makes the audiogram style.

## 2. Captions
Captions need the words. If you wrote the script, pass it as `--captions` (auto-timed). If the user has an SRT for the
segment, pass `--srt` (times relative to `--start`). Kenerate's `add_subtitles` can caption the finished video instead,
but it needs the file online (public link → `upload_media`), up to 4 min.

## 3. Render (local)
```
python <skill-dir>/scripts/podcast.py --audio "<episode or speech url>" --start 754 --end 812 \
  --cover "<cover url>" --title "Why most diets fail" --speaker "Dr. Mia Hart - The Long Run" \
  --captions "<transcript of the segment>" --caption-style karaoke --accent "#FFD60A" \
  --aspect 9:16 --out kenerate-out/podcast-clip/<project>_9x16.mp4
```
- The audio is loudness-normalized (-16 LUFS). `--audio` can be a video (its sound is used).
- `--caption-style karaoke|bold|box|minimal`; `--aspect 1:1` or `16:9` puts the art on the left.

## Output
The MP4 plus an `.srt` of the captions. Make one per platform by changing `--aspect` and `--out`.

## Limits
Auto-timed captions are approximate (spread by word length); an SRT gives exact timing.
