Host a Podcast

spanner edited this page Aug 24, 2010 · 2 revisions
Clone this wiki locally

First, I created a root listing page (/podcast) for the podcast as an Archive page with this structure:

-- body --

<r:children:each limit="15" order="desc">
  <div class="entry">
    <h3><r:title /> <span class="author"><r:author /></span></h3>
    <div class="info"><r:date /> | <r:content part="duration" /> | <a href="<r:content part="url" />">Download (MP4)</a></div>
    <r:content />
    <h4>Notes and Links</h4>
    <r:content part="notes" />

<div id="highlight">
  <a href="itpc://"><img id="rss-icon" src="" alt="" /></a>
  <a href="itpc://">Subscribe to the podcast</a>

-- head -- (this part renders in the <head> section of the layout)

<link rel="alternate" type="application/rss+xml" href="itpc://" />

That forms the basis of the “show notes” pages. In order to support this and the XML feed, each child page of /podcast is constructed with these parts (in no particular order):

  • size (length in bytes of the episode)
  • body (the description of the episode, usually short)
  • url (an absolute URL to the episode)
  • type (the MIME content type of the episode)
  • notes (notes to put in the “show notes” page)
  • duration (how long the episode is in HH:MM:SS)

Now, I use S3 to host the podcast episodes, so I put in this information manually. If you were using page_attachments or some other media manager extension, you might be able to have it fill some of these in for you.

The last part is to create the podcast feed. As you may know podcast feeds are just RSS 2.0 feeds with a few extra tags added. Here’s the source of /podcast.xml:

<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:itunes="" version="2.0">
  <title>Radiant CMS Podcast</title>
  <itunes:subtitle>Publishing for Small Teams</itunes:subtitle>
  <itunes:author>Radiant CMS</itunes:author>
    <itunes:name>Radiant CMS</itunes:name>
    <itunes:email>radiant at</itunes:email>
  <itunes:summary>Interviews with Radiant users and discussion about the progression of the Radiant project.</itunes:summary>
  <description>Interviews with Radiant users and discussion about the progression of the Radiant project.</description>
  <itunes:category text="Technology"><itunes:category text="Tech News" /></itunes:category>
  <r:find url="/podcast">
    <r:children:each order="desc">
        <title><r:title /></title>
        <itunes:summary><r:content /></itunes:summary>
        <enclosure url="<r:content part="url" />" length="<r:content part="size" />" type="<r:content part="type" />" />
        <guid><r:url /></guid>
        <pubDate><r:rfc1123_date /></pubDate>
        <itunes:duration><r:content part="duration" /></itunes:duration>

The main thing to notice is how the parts of each episode page are pulled into the proper place in the feed.

podcast extension

… or you can install the podcast extension and just do this:

<r:podcast from="children" />

It requires paperclipped and a recent RSS library.