CLI command
content podcast
Podcast episodes chaptered from their timed transcript: chapters starting at the transcript's own cues and show notes citing every chapter.
Invocation#
echo-cli content podcast list
echo-cli content podcast add --title <t> --audio <https url> --transcript <file.vtt|file.srt> --by <who>
echo-cli content podcast remove --id <episode-id>Inputs and output#
list writes every episode, newest first: id, title, audio_url, duration_ms (the last cue's end), chapters (each title, starts_at — the cue timestamp as the transcript writes it — and start_ms), notes, route, created_by and created_at. add writes the episode with its transcript; remove writes the episode removed.
State effect#
The verbs call Echo Web's authenticated /api/analytics/podcast-episodes with ECHO_INTERNAL_BEARER at ECHO_WEB_BASE_URL; the Podcast episodes section of the ecosystem's analytics and of Echo Desktop's GEO screen do the same, and echo-mcp runs them as echo_podcast_episodes, echo_podcast_episode_add and echo_podcast_episode_remove. add reads the --transcript file as WebVTT or SubRip cues (a line HH:MM:SS.mmm --> HH:MM:SS.mmm, the hours optional, then its words) and asks the route Echo Web's ECHO_PODCAST_ROUTE declares, through Brama, for chapters starting at the transcript's own cue timestamps and for show notes. The episode is kept in podcast_episodes only when every chapter starts at one of the transcript's cues, in order, within the episode's length, and the notes cite every chapter's title. Clips are not cut.
Refusals#
- A wrong invocation is refused before anything is sent: "content podcast takes list; add …; remove …; got <word>", "content podcast <verb> does not take <flag>; it takes …", "<flag> needs a value", "content podcast <verb> needs <flag>" and "--transcript <path> is not a readable file: <cause>".
- Echo Web answers a bad request with "title is required: …", "audio_url is required: …", "transcript is required: …", "transcript holds no timed cue (…), so the episode cannot be chaptered", "<stamp> is not a cue timestamp of a day-long episode or shorter (HH:MM:SS.mmm)" or "created_by is required: an internal caller has no signed-in user, so it names who is acting"; not found with "no podcast episode has id <id>". A route whose answer does not hold answers "the route <route> answered a chapter \"<title>\" starting at \"<stamp>\", which is not a cue timestamp of the transcript", "the route <route> answered chapters out of order at \"<title>\"" or "the route <route> wrote notes that do not cite \"<title>\"", and a deployment without ECHO_PODCAST_ROUTE answers naming the setting. The command prints Echo Web's sentence and exits 1.