Introduction to Wavecast RSS Feeds
This episode demonstrates how Wavecast automatically generates
iTunes-compatible podcast RSS feeds when you configure
[params.podcast] in your Hugo site config.
How It Works
Wavecast ships layouts/_default/rss.xml, a single template that handles both
standard blogs and podcast feeds. At build time, the template checks your
[params.podcast] config:
Detection rules:
| Condition | Behaviour |
|---|---|
[params.podcast] has author, image, or description | Renders a full iTunes podcast RSS feed (with itunes: namespace, categories, owner, artwork) |
[params.podcast] is missing or empty | Renders a plain RSS 2.0 feed suitable for blogs |
Page has podcast.src in its front matter | Included as an <item> with an <enclosure> element |
Page has no podcast.src | Skipped entirely (not a podcast episode) |
There is no toggle or flag to set. If your site config defines podcast metadata, you get a podcast feed. If it does not, you get a blog feed. Both work from the same single template.
Episodes with a local audio file (e.g. src: "audio/episode.mp3") get their
<enclosure> file size auto-resolved via Hugo resources. Remote URLs default to
length="0", which is valid RSS and accepted by all major podcast directories.
Episode Front Matter
All iTunes-specific fields live under the podcast: key in your episode’s
YAML front matter:
podcast:
src: "https://example.com/audio/ep42.mp3" # required
type: "audio/mpeg" # MIME type
duration: "00:45:00" # HH:MM:SS or seconds
season: 2 # season number
episode: 42 # episode number
explicit: false # "true" or "false"
author: "Guest Host" # overrides site-level
guid: "unique-ep-42" # falls back to permalink
episodeType: "full" # full|trailer|bonus
subtitle: "A short episode teaser" # max 255 chars
summary: "Full episode description" # max 4000 chars
Standard Hugo fields (title, date, tags, summary) are pulled from
the regular front matter automatically.
Channel Configuration
Site-level podcast metadata goes in your hugo.toml:
[params.podcast]
author = "Your Name"
image = "/podcast-cover.jpg" # min 1400x1400px recommended
description = "A weekly show about open-source."
explicit = false
type = "episodic" # "episodic" or "serial"
owner_name = "Your Name"
owner_email = "you@example.com"
[[params.podcast.categories]]
category = "Technology"
Validating the Feed
Once your site is live, validate your feed:
- Visit validator.w3.org/feed
- Enter your site’s feed URL (usually
/index.xml) - Fix any warnings before submitting to directories
The feed is ready for Apple Podcasts, Spotify, Google Podcasts, and any RSS-compatible podcast app.
Show Notes
- W3C Feed Validator: validate your RSS feed before submitting to directories
- Apple Podcasts Connect: submit your podcast to Apple Podcasts
- Hugo RSS Templates: Hugo’s official RSS template documentation
Episode from Wavecast RSS Demo. Used with attribution.