Generate a Podcast
Turn a topic (or a set of sources) into a single, listenable podcast episode and deliver
it to the user as an audio file. This mirrors a gather → curate → script → synthesize →
stitch pipeline.
When to use
The user wants audio: "make a podcast about…", "give me today's AI news as an episode",
"做一期关于…的播客". The deliverable is one mp3 produced by the generate_podcast tool.
Method
- Pick the angle and format. Single host (monologue) or two hosts (dialogue)?
How long (a 5-minute brief vs. a 15-minute deep dive)? Default to a tight ~5–8 minute
single- or two-host episode unless told otherwise.
- Gather material with
web_search then web_fetch on the strongest sources. For a
news digest, select the ~5 most important, distinct items — don't pad.
- Write a spoken script, not an essay. Conversational sentences, no Markdown, no URLs
read aloud, spell out things that don't speak well. Open with a short cold intro, then
the segments, then a brief outro/sign-off.
- Break it into segments for
generate_podcast (see below). Each segment is one
contiguous bit of speech with a single voice. For a two-host show, alternate voices.
Keep each segment under ~4000 characters; split long passages into more segments.
- Synthesize by calling
generate_podcast. The tool TTS-es each segment and stitches
them (with short silences) into one mp3, delivered to the user automatically. Then tell
the user what you made (title, rough length).
Calling generate_podcast
{
"title": "AI Weekly — Episode 12",
"segments": [
{"voice": "nova", "text": "Welcome back to AI Weekly. I'm Nova."},
{"voice": "onyx", "text": "And I'm Onyx. This week: three stories worth your time."},
{"voice": "nova", "text": "First up..."},
{"voice": "onyx", "text": "That's all for today. Thanks for listening.", "pause_ms": 0}
]
}
voice per segment (omit to use media.podcast.default_voice). Available voices:
alloy, ash, ballad, coral, echo, fable, onyx, nova, sage, shimmer, verse. For two hosts,
pick two distinct voices and alternate them consistently.
pause_ms optionally overrides the silence after a segment (default from config).
Recurring episodes
For "a podcast every morning", pair this with the schedule tool: schedule a task whose
prompt re-runs this skill (e.g. "make today's AI news digest podcast"). Each run produces
and delivers a fresh episode — the one-shot equivalent of a daily show.
Quality bar
- Write for the ear: short sentences, natural transitions, signposting ("first… next…").
- Curate hard — a focused 5-item digest beats a rambling 12-item one.
- If a render fails with an ffmpeg or TTS error, relay it; the operator may need to install
ffmpeg or enable
media.tts / media.podcast.
1---2name: podcast3description: Research a topic and produce a ready-to-listen podcast episode (a single audio file). Use when the user asks to make a podcast, generate an audio episode, a daily news digest in audio, a two-host show, or 'read this to me as a podcast'. Writes a spoken script then calls the generate_podcast tool to synthesize and stitch one mp3. Triggers on mentions of podcast, audio episode, news digest, narrate, two hosts, radio show, 播客, 做一期播客, 生成播客, 音频节目, 每日新闻播报, 双主播.4license: Proprietary. LICENSE.txt has complete terms5---67# Generate a Podcast89Turn a topic (or a set of sources) into a single, listenable podcast episode and deliver10it to the user as an audio file. This mirrors a gather → curate → script → synthesize →11stitch pipeline.1213## When to use1415The user wants *audio*: "make a podcast about…", "give me today's AI news as an episode",16"做一期关于…的播客". The deliverable is one mp3 produced by the `generate_podcast` tool.1718## Method19201. **Pick the angle and format.** Single host (monologue) or two hosts (dialogue)?21 How long (a 5-minute brief vs. a 15-minute deep dive)? Default to a tight ~5–8 minute22 single- or two-host episode unless told otherwise.232. **Gather material** with `web_search` then `web_fetch` on the strongest sources. For a24 news digest, select the ~5 most important, distinct items — don't pad.253. **Write a spoken script**, not an essay. Conversational sentences, no Markdown, no URLs26 read aloud, spell out things that don't speak well. Open with a short cold intro, then27 the segments, then a brief outro/sign-off.284. **Break it into segments** for `generate_podcast` (see below). Each segment is one29 contiguous bit of speech with a single voice. For a two-host show, alternate voices.30 Keep each segment under ~4000 characters; split long passages into more segments.315. **Synthesize** by calling `generate_podcast`. The tool TTS-es each segment and stitches32 them (with short silences) into one mp3, delivered to the user automatically. Then tell33 the user what you made (title, rough length).3435## Calling generate_podcast3637```json38{39 "title": "AI Weekly — Episode 12",40 "segments": [41 {"voice": "nova", "text": "Welcome back to AI Weekly. I'm Nova."},42 {"voice": "onyx", "text": "And I'm Onyx. This week: three stories worth your time."},43 {"voice": "nova", "text": "First up..."},44 {"voice": "onyx", "text": "That's all for today. Thanks for listening.", "pause_ms": 0}45 ]46}47```4849- `voice` per segment (omit to use `media.podcast.default_voice`). Available voices:50 alloy, ash, ballad, coral, echo, fable, onyx, nova, sage, shimmer, verse. For two hosts,51 pick two distinct voices and alternate them consistently.52- `pause_ms` optionally overrides the silence after a segment (default from config).5354## Recurring episodes5556For "a podcast every morning", pair this with the `schedule` tool: schedule a task whose57prompt re-runs this skill (e.g. "make today's AI news digest podcast"). Each run produces58and delivers a fresh episode — the one-shot equivalent of a daily show.5960## Quality bar6162- Write for the ear: short sentences, natural transitions, signposting ("first… next…").63- Curate hard — a focused 5-item digest beats a rambling 12-item one.64- If a render fails with an ffmpeg or TTS error, relay it; the operator may need to install65 ffmpeg or enable `media.tts` / `media.podcast`.