# Podcasting


A podcast is the cheapest way to be in someone's ears every week, and the people who
listen to yours are the people who buy your courses. On Omumu the podcast lives on your
own site: one show with a public feed that Apple Podcasts, Spotify and every other app
read, episodes you upload as plain audio files and the platform masters, transcribes and
serves, and an editor that lets you cut an "um" by selecting the word.

This chapter is the show from nothing to listed. Your assistant can publish episodes for
you; the show itself, and the editing, are admin work, and the chapter says which is
which. A path such as *Products → Podcast* names a group in the admin's navigation and
the page under it.

## Concepts

**One show, one feed.** A site has one podcast show. The show carries what directories
need — title, description, language, a category from Apple's list, author and owner, an
explicit flag, a show type — and a *slug* that becomes the public address: the show page,
each episode's page, and the feed at `/podcast/<slug>/feed.rss`. You submit that feed
address once per directory; after that, new episodes reach every app on their own.

**The cover.** Directories require square cover art, at least 1400 and at most 3000
pixels on a side. You can pick an uploaded image, or let the show page draft covers for
you: a template, a short prompt for the background, and the show's title and author
composited on top at 3000 × 3000. Publishing an episode while the show has no cover
warns you, because the feed would be refused by the directories.

**An episode is a file you upload.** MP3, M4A (an iPhone voice memo) or WAV. On upload
the platform *masters* it — brings it to podcast loudness — and the episode sits in
*processing* until that is done, then *ready*. Publishing stamps the publication date,
locks the audio file (subscribers' apps may already have fetched it) and puts the
episode in the feed. A failed mastering can be retried. Episodes have a type (full,
trailer, bonus), a season and number, an explicit flag that can inherit the show's, and
optional artwork of their own.

**Transcripts come with the episode.** Every episode is transcribed by speech-to-text —
at publish, or earlier if you open the editor and accept the cost in plan minutes. The
transcript ships in the feed in the formats podcast apps read and is shown on the
episode's public page, with speaker labels. One transcription serves every round of
editing.

**Editing is editing the words.** The episode editor plays the audio with the transcript
highlighted word by word. Select a passage and cut it; tighten long pauses, one or all at
once; correct a misheard word (text only; the audio is untouched). Edits are saved as you
go but change nothing until you *apply*, which renders the new audio and makes it the
version listeners get. The original recording is kept, so a cut can be undone in a later
session and renders never stack. Editing is a plan feature of its own.

## Hands-on

### Create the show

*Products → Podcast* starts with the show. Mira fills in the title, a description, the
language, a category (*Education → How To*), her name as author and owner, and a slug.
Then the cover: she types a background prompt, picks a template, generates a draft, and
accepts the one she likes — it becomes a 3000 × 3000 cover with the title and author set
on it. The page shows the feed address and links to the distribution checklist and
analytics.

There are no agent tools for creating or editing the show; `omumu_podcast_show_get` reads
it — title, slug, description, language and feed address — once it exists.

### Publish an episode

Mira records a 20-minute episode on her phone and says: *"Publish this as episode 2 of my
podcast, 'Automate one task', with these show notes."*

The assistant uploads the file straight to storage with `omumu_resource_upload_presign`,
creates the episode with `omumu_podcast_episode_create` (the audio resource, title, show
notes, season and number, type, explicit flag), waits while the platform masters it —
`omumu_podcast_episode_get` reports *processing*, then *ready* — and publishes it with
`omumu_podcast_episode_publish`. `omumu_podcast_episode_list` shows every episode and its
status; `omumu_podcast_episode_retry` re-runs a failed mastering.

In the admin: the show page's *New episode* takes the audio file, title, show notes,
type, season and number, rating and artwork; *Create episode* lands you back on the show
with the episode in its list. The episode's own page shows its status, lets you edit the
details, generate episode artwork (the show's background with this episode's title, no
AI involved), see the transcript's state, and *Publish* in a dialog that reminds you the
date is stamped and the audio locked.

### Clean up the audio

Mira listens back and hears three "um"s and a long pause. On the episode page she opens
the *Episode editor*. If the episode is not transcribed yet, the editor says how many plan
minutes it will cost and asks before it starts. Then she clicks a word to listen from
there, shift-clicks the first and last word of a passage and *Cut*s it, uses *Tighten all
pauses* with a threshold in seconds, double-clicks a misheard word to correct it, and
finally *Apply edits*. The feed and the episode page switch to the rendered audio and the
corrected transcript; the original stays behind the scenes for the next round.

Editing has no agent tools.

### Get listed

*Products → Podcast → Distribution checklist* lists the directories in the order to
submit to — Apple Podcasts, Spotify, Podcast Index, Pocket Casts, YouTube Music, Amazon
Music — each with a link to its submission page, a note on how long it takes, and a
status you set yourself (not submitted, submitted, live). Apple may ask you to verify
ownership; paste the token it shows into the checklist and it appears in your feed.
Spotify mails its verification code to the show's owner address.

### See who listens

*Products → Podcast → Analytics* counts downloads (audio requests from apps and browsers,
de-duplicated per listener per day) and plays in the web player, per episode and for a
date range. The counts are estimates aligned with the industry's measurement rules, not
certified figures.

### What you cannot do yet

Stated plainly: one show per site; episodes publish now, never on a schedule; an
episode's audio cannot be replaced after publishing; your assistant cannot create or
change the show, edit an episode's details, unpublish or delete one, or run the editor;
and the episode's admin page has no player — listen in the editor or on the public page.

## Reference

### `omumu_podcast_episode_create`

Creates a draft episode on the site's show from an already-uploaded audio resource (upload the file first with omumu_resource_upload_presign; mp3, m4a, and wav are accepted). Mastering starts automatically and the episode is returned in PROCESSING status; poll omumu_podcast_episode_get until it reaches READY, then publish.

- **Write category:** standard write
- **Access:** requires the `PODCAST_WRITE` permission

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `audioResourceId` | string | yes | ID of the uploaded audio resource to master into this episode |
| `episodeNumber` | number | no | Optional episode number within the season |
| `episodeType` | string | no | Episode type: 'full' (default), 'trailer', or 'bonus' |
| `explicit` | boolean | no | Per-episode explicit override; omit to inherit the show's flag |
| `season` | number | no | Optional season number |
| `showNotes` | string | no | Show notes describing the episode |
| `title` | string | yes | The episode title |

### `omumu_podcast_episode_get`

Gets one episode by id with its processing status, duration, error message when failed, and pubDate when published.

- **Write category:** read-only
- **Access:** requires the `PODCAST_READ` permission

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `episodeId` | string | yes | The episode id |

### `omumu_podcast_episode_list`

Lists the show's episodes with their processing status (PROCESSING, READY, FAILED, PUBLISHED), duration, error message when failed, and pubDate when published.

- **Write category:** read-only
- **Access:** requires the `PODCAST_READ` permission

No parameters.

### `omumu_podcast_episode_publish`

Publishes a READY episode: the pubDate is stamped now and the episode appears in the RSS feed. A PROCESSING or FAILED episode is refused with its current status.

- **Write category:** standard write
- **Access:** requires the `PODCAST_WRITE` permission

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `episodeId` | string | yes | The episode id |

### `omumu_podcast_episode_retry`

Re-runs mastering on a FAILED episode, returning it to PROCESSING. Episodes in any other status are refused with their current status.

- **Write category:** standard write
- **Access:** requires the `PODCAST_WRITE` permission

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `episodeId` | string | yes | The episode id |

### `omumu_podcast_show_get`

Gets the site's podcast show: title, slug, description, language, and the public RSS feed URL. Errors if the site has no show yet (shows are created in the podcast admin).

- **Write category:** read-only
- **Access:** requires the `PODCAST_READ` permission

No parameters.
