Compose and deliver audio content: a podcast episode, briefing, or narrated summary, with one or more voices, as an MP3. For reading supplied text aloud verbatim, use tts.
Tasks
Plan an episode (topic, angle, speakers/voices, host names, target length of 5–15 minutes at roughly 130 words/minute), checking recent episode topics via `podcast-helper manifest read` to avoid repeats
Write a full spoken-form dialogue script with `Name:` speaker labels and save it to a file such as /tmp/script.txt
Generate the MP3 with `podcast-helper generate`, passing --script, --title, --description, --speaker Name=voice_id pairs, --cover-prompt, and a --topics-file summary
Deliver the episode in chat with a title and a sandbox:// listen link, and offer follow-ups such as publishing to a personal RSS feed
When requested, publish with `podcast-helper publish --slug ... --feed-title ... --feed-description ...` and present subscription links
On explicit request only, save an episode to the user's own Spotify via `podcast-helper save-to-spotify`
Inputs
A topic/angle and planned speaker names and voices (default Meta AI voices avocado_v2:MAI_01 and avocado_v2:MAI_03)
A written dialogue script in a file (e.g. /tmp/script.txt)
A topics summary file (e.g. /tmp/topics.md) passed with --topics-file for deduplication
A --cover-prompt describing the episode's theme (a --cover-image file is not accepted for publishing)
Outputs
An MP3 audio file under sandbox://workspace/podcasts/{slug}/{slug}.mp3
JSON from generate containing path, duration_secs, slug, cover, and (if published) feed_url, episode_url, and subscription_links
If published: a public RSS feed entry with subscription links
A topics summary persisted alongside the episode in the catalog
Limitations and checks
For verbatim reading of supplied text, the tts skill should be used instead
Do not pass --cover-image; episodes published with it fail (the flag still parses but cannot reach the feed today)
Publishing is public and content-reviewed; a blocked result must not be retried, reworded, or worked around
Audio quality varies significantly across languages; English is highest quality and non-English audio may be imperfect
A feed object with only a spotify_show_url is not an RSS feed and must not trigger --publish
Script uses spoken form: numbers, times, years, abbreviations, URLs, and emails written out; no stage directions, emoji, citation numbers, math symbols, or visual separators
--publish is only used when the user explicitly asked to publish or the manifest shows a feed with a non-empty feed_url; a spotify_show_url alone does not count
Generate is always passed a --cover-prompt and never a --cover-image; a --topics-file summary accompanies every generation
AI Search
Find projects, verify facts, compare options, or turn a complex need into an actionable plan
Try a searchA click only fills the search box; you stay in control