How to create a podcast RSS feed
Background & intention
The intention here is to create an RSS feed file that can be manually added to any podcast player and, via the player, be managed like any podcast. It shouldn't require any third-party hosting apart from uploading the RSS file somewhere, and isn't intended to be submitted to any podcast platforms for syndication. (Hypothetically, that should be possible if you fulfill the platform's requirements, but that's outside the scope of this guide.)
The background is that it's inconvenient to create an RSS feed for individual podfics (whether a single-"episode" podfic or a multi-chapter that's either posted all at once or as a work in progress) using any over-the-counter podcast hosts. Either they require public syndication (like Spotify for Podcasters[1], formerly Anchor.fm), or you'll need to pay (for most podcast hosting services, including WordPress), and either way you have to host your audio on that platform as well as your regular hosting, which is inconvenient. Most podcast hosting services are also structured around having a single podcast, and not several "podcasts" for which separate RSS links are desired (such as wanting a separate link for individual podfics).
Alternatives
If you just want a simple RSS feed and you host your files on the Internet Archive, you can use the archive's search to generate an RSS feed based on search terms. This RSS will be podcast player compatible, but will be limited in terms of cover art & title etc. GodofLaundryBaskets has an excellent guide at Create an RSS Feed on Archive.org which also details the caveats. An additional caveat is that, since this depends on search, your posts will need to be indexed, i.e. when you uploaded them, you can't have set them to noindex: true
. At present, there's no way to change this once a post has already been created.[2][3]
Cautions and limitations
"It's possible you may find your podcast on platforms you didn't manually submit it to. Third-party apps sometimes scrape RSS feeds to feature on their own platform. If you want your podcast removed from any of these services, contact them directly."[4]
Since the intention of this guide is to create an RSS feed link for manual use, which will presumably be shared in controlled spaces (such as on ArchiveofOurOwn.org or Squidgeworld.org posts), scraping is probably less likely, but it is technically still possible.
We have found that your account email is included in the metadata file (.xml) of your posts although it is not visible on the page; choose one associated with fandom or that you do not mind associated with your fandom ID.[5]
This guide uses the Internet Archive as an example host, since it's simple to access and free, and you can store all the elements of the RSS feed in the same place. However, when creating an account, please note the caution about the email address as noted above.
Basic prerequisites
This guide assumes that you already know how to upload files to the Internet Archive. If you need a guide, Brief Intro: Hosting and Streaming podfics on Archive.org is excellent. For the purposes of this guide, it doesn't matter if your posts are indexed or not, as long as you have the links.
XML
RSS files are written in XML (Extensible Markup Language), which is similar to HTML, but not quite the same. You can find a brief introduction to it in the mdn web docs at XML introduction, as well as W3 School's XML Tutorial (and the internet has many other resources). In tried-and-true method, however, this guide depends on the principle of copying examples from other people, so you'll probably only need the linked resources if you're trying (and failing - test it first!) to do something outside these descriptions. For instance, I went through a lot of hassle to try and display accented letters, with no success, only to realize that just using the accented characters as-is worked just fine. Of course, results may vary.
RSS feed requirements
An RSS feed is made of of three-ish elements: an <rss>
element, a <channel>
element inside of that, and as many <item>
elements inside of the <channel> as you have "episodes" or chapters.[6]
- The channel needs to have a title, link and description, and there are other optional elements.[6]
- An item needs to have either a title or description, with all other elements optional.[6]
Podcast RSS feed requirements
Obviously, a podcast feed needs to have audio, so there are a few other elements it needs. Apple Podcasts and Google Podcasts[7] have some requirements listed; since the intention isn't to submit an RSS feed to them for syndication, it's not clear if their all of their requirements are truly required, but on the other hand podcast players need to be able to read the RSS file, so following their guidelines is probably a good idea.
Requirements from Apple Podcasts:[8]
- RSS feed URLs must adhere to RSS 2.0 specifications, be publicly addressable (not password-protected), and include the following XML declaration:
<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:content="http://purl.org/rss/1.0/modules/content/">
- Display your show artwork and allow streaming playback of your episodes by enabling your hosting server for HTTP HEAD requests and byte-range requests.
- Each episode must have a unique
<enclosure>
tag, along with its three required components — URL, length, and type — which specify the location and host of the episode. Apple Podcasts will ignore duplicate<enclosure>
URLs.- All episodes must contain a globally unique identifier (GUID), which never changes.
- Use only ASCII filenames and URLs that include a-z, A-Z, or 0-9. For more information, see encoding best practices.
- Respect case-sensitivity across all XML tags in podcast RSS feeds.
A note about the second point in the list (HTTP HEAD requests): I created a podcast RSS feed using files hosted at the Internet Archive, so while I have no idea what those settings are in that context, presumably it works.
Also, the list above says that a URL is required, but that's actually not the case. You can use a description instead (but you must have one of the two). For instance
- If you're posting a single chapter podfic (a single "episode" "podcast"), then the URL would be the same as the URL for the podfic ("podcast") as a whole (in the
<channel>
), and there would be no need to add a description (the summary) since it would be the same as for<channel>
as well. - If you're posting a multichapter podfic that you are posting in a single chapter on ArchiveofOurOwn/etc., then you won't have an applicable URL for each
<item>
, but might have a summary or small descriptive text ("description") for each chapter, or even just a note and link to the corresponding chapter of the fic. Or, if you have no chapter-based description, you can always use the same URL as for the podfic as a whole. - If you're posting a multichapter podfic that you are posting in separate chapters on ArchiveofOurOwn/etc., the you will have a separate URL for each
<item>
, and may or may not have a separate description for each chapter as well.
Requirements from Google Podcasts:[9][10]
- This RSS feed should be well-formed, and conform to the RSS 2.0 specification as much as possible. Google doesn't use all the RSS feed tags, but the examples on this page show the important ones.
- Include all the required podcast-level and episode-level tags. Feeds without all the required tags might not be indexed by Google. Some tags are not required to appear as a podcast in search, but are required to be eligible as a recommended podcast on Google surfaces. We also recommend some additional tags for a better podcast experience.
- You must provide an image for your podcast.
- The feed and audio files should not require any authentication or be blocked to Google in any way. You can check by visiting your feed in an incognito window.
- A majority of the episodes must be in any of the supported audio formats and have the proper file name extensions.
- Use either HTTP or HTTPS, but not both. The RSS feed and all episodes should be located either on HTTP or HTTPS. Google strongly recommends using HTTPS. If your feed or homepage is hosted at one protocol (HTTPS) but the linked resources are hosted at another protocol (HTTP), Google Chrome will display a click-through warning to users before loading those resources, or possibly not allow them to be loaded at all. This includes episode audio files. Therefore you should be sure that, at minimum, the feed and the homepage, plus all audio file URLs in
<enclosure>
tags be using the same protocol (ideally HTTPS).- If your podcast has multiple feeds, be aware that Google will try to group similar or identical feeds together and serve only one of them. Read more about how Google manages podcasts with multiple feeds.
- A note on feed availability: If your podcast's feed becomes unavailable after it has been crawled by Google, Google Podcasts will continue to serve the last crawled feed version for a few weeks, then stop serving it if the feed has not become available again.
- Google Podcasts has an episode count limit, based on the published RSS file size. You should expect a maximum of about 400-700 of the most recent episodes to be available from the published feed, sorted by the
<pubDate>
value. Episodes that have no<pubDate>
value will be sorted to the bottom (oldest) of the list. When the episode count limit is reached, the oldest episodes at the bottom of the list may be omitted from the show on Google Podcasts.
Some commentary on the above: since you're not going to be submitting your pocast to Google Podcasts, it's not clear how much of the crawling/indexing-related requirements apply.
Tags for the podcast/channel:[11]
Required:
- At least one
<item>
,<link>
,<title>
, an imageRecommended:
- description, owner, author, category, if it's explicit (the channel as a whole),
<language>
Tags for an item:[12]
Required:
<enclosure>
,<title>
Recommended:
- description, if it's explicit,
<guid>
,<itunes:duration>
,<pubDate>
Our podcast RSS feed elements and components
RSS element
We can just copy the declarations from the Apple Podcasts guidelines:
<?xml version="1.0" encoding="UTF-8"?> <rss version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:content="http://purl.org/rss/1.0/modules/content/">
And, of course, remember to close the file with an </rss>
tag at the end.
Channel element
Going off those requirements, here are the details for the components of the <channel>
tag (i.e. the "podfic" or "podcast"):
component | attributes | example | required? | notes |
---|---|---|---|---|
<title>
|
none | <title>this is a sample podfic</title>
|
yes | This is the title of your podcast as a whole, which may be the title of the podfic, or the name of a podfic series, or the name of a collection of podfics (or a podcast). |
<link>
|
none | <link>https://wiki.squidge.org/index.php?title=How_to_create_a_podcast_RSS_feed</link>
|
yes | This is the link to a webpage that represents your podfic or podcast as a whole. |
<itunes:image> or <image>
|
none
or (nested elements rather than attributes)
|
<itunes:image href="https://archive.org/download/fannish-rss-guide/this-is-a-single-chapter-podfic.jpg"/>
|
Item element(s)
And here are the details for the components of the <item>
tag (i.e. the "episode"):
component | attributes | example | required? | notes |
---|---|---|---|---|
<enclosure>
|
|
<enclosure url="https://archive.org/download/fannish-rss-guide/this-is-a-single-chapter-podfic.mp3" type="audio/mpeg" length="(226468"/>
|
yes |
|
<link>
|
none | |||
Sample podcast RSS files
Sample single-episode podcast RSS file
(xml)
Sample multiple-episode podcast RSS file (multi chapter podfic)
(xml)
Sample multiple-episode podcast RSS file (multi chapter podfic) with episode (chapter) covers
(xml)
Sample multiple-episode podcast RSS file (multi-podfic collection)
(xml)
Storing and updating the RSS file on the Internet Archive
Upload the RSS file to the same post if you're using one post, or a separate post if you're posting chapters separately; both work.
Scheduling updates
Can this be done with <pubDate>
?
Other media hosts for RSS, images, audio
Possible to use images hosted on Squidge Image Hosting? Possible to use audio hosted on the Audiofic Archive?
Storing the RSS file on Neocities
Does it have to be a paid account?
Any final thoughts
Link to guide for uploading unindexed files to the Internet Archive (create)?
Link to guides to adding a podcast RSS feed manually to a podcast app/program?
Other things to test? How are seasons made?
References
- ↑ Hi there, We are reaching out with important information about your podcast distribution. From November 6, 2023, all shows published on Spotify for Podcasters will also be distributed to Spotify. You are receiving this email because we have detected that your show is currently not on Spotify. There is no further action required from you. If you do not want your podcast to be available on Spotify, please reference this guide to delete your Spotify for Podcasters account. For more information about distributing your podcast through Spotify for Podcasters, please visit this article. Thanks, Team Spotify for Podcasters. Email received 4 October 2023.
- ↑ Based on conversation in Podfichat 13-14 August 2023 and 9 September 2023.
- ↑ Internet Archive Ish Posted 6 June 2023. Accessed 9 October 2023.
- ↑ Distributing your podcast Accessed 9 October 2023.
- ↑ Brief Intro: Hosting and Streaming podfics on Archive.org by justaphage. Accessed 9 October 2023.
- ↑ 6.0 6.1 6.2 6.3 RSS 2.0 Specification by Dave Winer, Berkman Center for Internet & Society at Harvard Law School. Creative Commons Attribution-ShareAlike 1.0 Generic CC BY-SA 1.0 DEED Last updated 29 April 2007. Accessed 9 October 2023.
- ↑ Note that Google Podcasts is going away in 2024 and will be replaced by expanded functionality on YouTube & YouTube Music. Today’s news about Google Podcasts Manager Posted 26 September 2023. Accessed 9 October 2023.
- ↑ Podcast RSS feed requirements Accessed 9 October 2023.
- ↑ RSS feed guidelines for Google Podcasts Archived version Accessed 15 October 2024.
- ↑ Feed requirements and recommendations Accessed 15 October 2023.
- ↑ Podcast-level RSS tags Accessed 15 October 2023.
- ↑ Episode-level RSS tags Accessed 15 October 2023.
- ↑ [Meta] A Breakdown of Podfic Hosting Options by GoLBMeta (GodOfLaundryBaskets). Posted 28 October 2020. Accessed 9 October 2023.
- ↑ Supported audio formats from RSS feed guidelines for Google Podcasts Accessed 9 October 2023.