Podcasting 2.0 is a set of RSS extensions maintained by the Podcast Index. Their goal, in one sentence: give the podcast ecosystem a way to carry everything a show is about in the feed itself — transcripts, chapters, credits, funding links, micro-payments, cross-platform identity — without any of it being owned by a specific app or hosting company. Pod supports the full spec on both the channel and item level.
Most publishers can ignore most of it. The apps that use these tags today — Podverse, Fountain, CurioCaster, the Podcast Index website — are still a small share of total listenership. But every feature Pod supports is one you don't have to worry about later; when the ecosystem catches up, your feed is already there.
This doc covers only the channel-level settings you configure once, in Ghost admin → Settings → Design → Site-wide. Per-episode PC2.0 markers (chapters, transcripts, hosts + guests) are covered in the episode metadata generator — same generator makes the code-injection block for you.
podcast:guid — your show's permanent identity
A podcast:guid is a UUIDv5 derived from your RSS feed URL. It's your show's cross-platform identity. When you eventually change hosts, or move domains, or switch to a different Ghost theme, the guid stays the same — and the apps that support it can recognise your show is the same one.
How to generate one: visit podcastindex.org/namespace/1.0#guid, paste your feed URL (https://yoursite.com/podcast/rss/) into the generator, copy the resulting UUID.
How to configure: paste the UUID into the podcast_guid custom setting.
Set it once, forever. Don't change it after you've submitted your feed anywhere — the whole point is stability across a show's lifetime.
podcast:locked — permission for other hosts to import your feed
When a publisher moves between podcast hosts, some hosts offer a one-click "import from RSS" flow. Without podcast:locked, anyone who has your feed URL can plausibly claim your show on another platform. With it set to yes, hosts that honour the flag will refuse the import unless the requester can verify ownership via the iTunes owner email you set.
How to configure: set podcast_locked to yes if you want the extra protection. Default is no, which is fine for shows that don't care about impostor claims.
The mechanism only works if a) the hosts you're worried about actually implement the flag, and b) they can reach your iTunes owner email. It's a soft protection, not a legal one, but it's the accepted convention in the ecosystem.
podcast:funding — where listeners can support the show
The podcast:funding tag carries a URL to wherever you accept support — Patreon, Buy Me a Coffee, Ko-fi, GitHub Sponsors, a Stripe checkout, or any other page. Apps that support the tag surface the link somewhere in their UI ("Support the show" button on the episode screen, usually).
How to configure: paste the URL into podcast_funding_url.
If you leave podcast_funding_url empty and you've enabled Ghost's built-in tip jar (Settings → Membership → Tips), Pod automatically points podcast:funding at your Ghost tip-jar URL: {site_url}/#/portal/support. You don't need to do anything else — one enabled setting in Ghost, one enabled feature on the feed.
If you have both a Ghost tip jar and a Patreon, the explicit podcast_funding_url wins — set it to whichever you'd rather steer listeners toward.
podcast:value — Lightning micro-payments
Value 4 Value (V4V) is the Podcast Index's model for direct listener-to-creator payments via the Bitcoin Lightning Network. Listeners in supporting apps (Fountain, Breez, Podverse with Alby) can send small amounts as they listen — usually a few sats per minute. Some shows earn meaningful revenue from V4V; most don't. Almost no listener will send you anything unless you tell them the show accepts it.
To turn it on, you need a Lightning node with a public keysend-capable pubkey. If you're already running one — Alby, Umbrel, Voltage, Fedimint, or a self-hosted lnd — you have this. If you're not, ignore this section.
How to configure:
- Set
podcast_value_typetolightning. - Paste your Lightning node's pubkey into
podcast_value_address. It starts with02or03and is 66 hex characters long.
The suggested payment rate (5000 sats per minute, roughly $2/hour at current prices) and payment method (keysend) are hardcoded to the ecosystem's conventions. Set podcast_value_type back to none to disable.
Multiple recipients (splitting between hosts, editors, a producer) are supported by the PC2.0 spec but not exposed as a custom setting in Pod — Ghost's 20-setting limit forced us to pick. If you need splits, edit podcast/rss.hbs directly and add more <podcast:valueRecipient> elements inside the value block.
podcast:medium — always "podcast"
Not a setting, just a note: Pod hardcodes <podcast:medium>podcast</podcast:medium> on every feed. The tag exists because the Podcasting 2.0 spec supports other media types too (music, audiobook, newsletter, film, video), but Pod is specifically a podcast theme. If you're building something else, that's a different theme.
What Pod supports on the per-episode side
Everything worth mentioning, all populated via the code-injection generator:
<podcast:episode>and<podcast:season>— episode + season numbers, frompod:episode=andpod:season=.<podcast:chapters>— pointer to a chapters JSON file (Podlove Simple Chapters format), frompod:chapters=.<podcast:transcript>— repeatable, one per format/language, frompod:transcript=URL|MIME|LANG.<podcast:person>— repeatable, one per host/guest/credit, frompod:person=Name|Role|Href|Img.<podcast:socialInteract>— a URL where episode discussion happens (Mastodon post, Bluesky thread), frompod:socialinteract=. Fediverse-native apps thread replies underneath.
See the generator for the exact syntax and a live tool that outputs it.
What Pod doesn't support (yet)
The Podcasting 2.0 namespace is still growing. Pod ships with the tags publishers actually use in the wild — GUID, locked, funding, value, chapters, transcripts, person, socialInteract. Tags Pod doesn't emit today, and why:
podcast:soundbite— for one-off promo clips. Rare in practice, exposed by very few apps.podcast:license— Creative Commons license for the episode audio. Fine idea, low adoption.podcast:location— for episodes tied to a place. Niche.podcast:trailer— Pod handles trailers via theepisodeType=trailermarker instead.podcast:updateFrequency,podcast:publisher,podcast:images,podcast:alternateEnclosure— spec-defined but adoption is essentially zero.
Any of these can be added to Pod without a spec change on our end — the RSS template's marker-parsing pattern is easy to extend. If one of them turns out to matter to you specifically, open an issue on GitHub.