> ## Content Index
> Fetch the complete content index at: https://www.magicpages.co/llms.txt
> Use this file to discover other available public pages before exploring further.

# Episode metadata generator
- URL: https://www.magicpages.co/themes/pod/docs/episode-metadata-generator/
- Published: 2026-07-12T14:19:43.000Z
- Updated: 2026-07-12T14:19:43.000Z
- Description: Generate the exact Ghost code-injection block Pod needs for each episode — chapters, duration, Podcasting 2.0 tags. Live preview, copy-paste ready.
- Author: Jannis Fedoruk-Betschki
- Tags: #help-pod

Every episode you publish with Pod carries a small block of HTML comments in **Ghost admin → your episode post → Post settings → Code injection → Foot**. Pod's RSS template parses those comments on render, so this is where episode number, duration, chapter timestamps, transcripts and every Podcasting 2.0 tag come from.

The tool below builds that block for you. Fill in the fields, hit **Copy**, paste. That's it — no memorising the marker syntax.

Fill in the fields on the left. The block of `pod:*` markers on the right updates as you type. When it looks right, hit **Copy** and paste the block into *Ghost admin → your episode post → Post settings → Code injection → Foot*. 

### The basics

Episode number 

Season optional 

Duration HH:MM:SS 

Episode type 

Full Trailer Bonus 

Explicit content overrides the show default 

Inherit Clean Explicit 

### Audio file

Audio URL optional — defaults to the first <audio> in the post 

File size in bytes improves download-progress bars in podcast apps 

Fetch from URL 

The fetch works when your audio host allows CORS. If it fails, right-click the MP3 → *Get info* (macOS) or *Properties* (Windows) and copy the byte count manually.

### Chapters

Timestamped chapter markers. Rendered by Apple Podcasts, Overcast, and Pocket Casts as an inline chapter list. Also emitted as the Podcasting 2.0 `<podcast:chapters>` in-feed format.

\+ Add chapter 

Podcasting 2.0 tags 

Optional. These are rendered by Podverse, Fountain, CurioCaster and the Podcast Index website — most listeners won't see them today, but they're what makes a modern feed feel modern.

Chapters JSON URL publisher-hosted PSC-format JSON 

Transcripts 

One transcript file per format / language. VTT and SRT both work.

\+ Add transcript 

People 

Hosts, guests, credits. Role defaults to *host*.

\+ Add person 

Social discussion URL Mastodon / Bluesky / etc. 

Output • **0** markers 

**Code injection → Foot** 

Reset Copy 

Paste this into **your episode's Post settings → Code injection → Foot**. Pod's RSS template reads every marker on render. 

## What each marker does

### The basics

- `**pod:episode**` — episode number. Emitted as both `<itunes:episode>` and `<podcast:episode>`.
- `**pod:season**` — season number. Ships as `<itunes:season>` \+ `<podcast:season>`.
- `**pod:duration**` — episode length in `HH:MM:SS`. Almost every podcast app displays this next to your episode title.
- **`pod:episodeType`** — *full*, *trailer*, or *bonus*. Apple Podcasts uses this to group trailers separately.
- **`pod:explicit`** — per-episode override of the show-level explicit flag. Leave blank to inherit from your Pod theme settings.

### Audio file

- `**pod:audio**` — the URL of the MP3\. Skip this and Pod uses the first `<audio>` element in your post body — normally the audio card you inserted in Ghost's editor, which is what you want.
- **`pod:audioLength`** — file size in bytes. Strict RSS validators warn when this is missing, and download-progress bars in podcast apps use it to show accurate percentages. The generator's *Fetch from URL* button reads it automatically over the network when your host allows CORS.

### Chapters

**`pod:chapter=HH:MM:SS|Title`** — repeatable. Each marker becomes one chapter. Pod emits them as Podlove Simple Chapters (PSC), which Apple Podcasts, Overcast, Pocket Casts and Spotify all understand. They also drive the client-side chapter list on the episode page — click a chapter, the audio player jumps.

### Podcasting 2.0 tags

[Podcasting 2.0](https://podcasting2.org/?ref=magicpages.co) is a set of RSS extensions that modern apps — Podverse, Fountain, CurioCaster, the Podcast Index — use for transcripts, cross-platform identity, per-episode credits, and micro-payments. None of them are required, but populating what you can matters more the further you move from Apple Podcasts.

- **`pod:chapters`** — URL to a chapters JSON file (Podlove Simple Chapters format). Publisher-hosted; useful if your chapters have images or links attached.
- **`pod:transcript=URL|MIME|LANG`** — repeatable. VTT and SRT both work. Language defaults to *en* if unset.
- **`pod:person=Name|Role|Href|Img`** — repeatable. Role defaults to *host*. Use it for guests, co-hosts, editors, credits.
- **`pod:socialinteract`** — a URL to a Mastodon post (or Bluesky, or any activitypub root) where discussion about the episode lives. Fediverse-native apps thread replies underneath.

## Where to paste the output

Once you've hit **Copy**:

1. Open the episode's post in Ghost admin.
2. Click the settings cog in the top-right of the editor.
3. Scroll to **Code injection** and expand the **Foot** field.
4. Paste the block. Save.

The next request to your `/podcast/rss/` feed picks up the new markers. Each of them shows up as either a top-level RSS tag on that episode's `<item>` or hydrates a client-side surface on the episode page (chapter list, duration badge, cover-tile fallback text).

## Your data stays in the browser

The generator persists your last-used values to your browser's `localStorage` so you don't lose work on refresh, but nothing is sent to a server. No accounts, no tracking, no rate limits. You can also open the browser's dev tools, run `localStorage.removeItem('pod-generator-state-v1')`, and start fresh.