Wavecast Radio

Introduction to Wavecast RSS Feeds

Wavecast Demo · S1E1 ·

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:

ConditionBehaviour
[params.podcast] has author, image, or descriptionRenders a full iTunes podcast RSS feed (with itunes: namespace, categories, owner, artwork)
[params.podcast] is missing or emptyRenders a plain RSS 2.0 feed suitable for blogs
Page has podcast.src in its front matterIncluded as an <item> with an <enclosure> element
Page has no podcast.srcSkipped 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:

  1. Visit validator.w3.org/feed
  2. Enter your site’s feed URL (usually /index.xml)
  3. 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

Episode from Wavecast RSS Demo. Used with attribution.