RSS Feed Specification
This specification defines the RSS feed structure supported by the Tuned Global Podcast Ingestion Service.
It describes the RSS elements, namespaces and metadata that Tuned parses during podcast ingestion, including both standard RSS 2.0 elements and supported namespace extensions such as Apple Podcasts (itunes:) and Podcast Index (podcast:).
Where multiple RSS representations exist for the same metadata (for example, standard RSS versus Apple Podcast extensions), either representation may be supplied unless otherwise stated. Where both representations are provided, they must contain equivalent values.
Supported Standards
The Podcast Ingestion Service supports RSS 2.0 together with the following namespace extensions.
RSS 2.0 | Base podcast feed structure |
Apple Podcasts (itunes:) | Podcast metadata extensions |
Podcast Index (podcast:) | Transcript and modern podcast extensions |
Dublin Core (dc:) | Metadata extensions |
Atom (atom:) | Feed self-referencing |
Content (content:) | Rich encoded content |
Syndication (sy:) | Feed syndication metadata |
Feed Requirements
A valid podcast feed must satisfy the following requirements.
- The feed shall contain exactly one <rss> root element.
- The feed shall contain exactly one <channel> element.
- A channel shall contain one or more <item> elements.
- All XML must be UTF-8 encoded.
- XML must be well-formed.
- Dates shall comply with RFC 2822.
- URLs shall be absolute URLs.
- Namespace declarations shall be present where the corresponding elements are used.
Conventions
Throughout this document the following terminology is used.
Required | The element must be present. |
Optional | 2The element may be omitted. |
Either / Or | Either representation is acceptable. If both are supplied they must contain identical values. |
Ignored | The value is accepted but is not currently used by the Tuned platform. |
Document Structure
Section 5 describes each supported RSS element.
Each element includes:
- Purpose
- Attributes (if applicable)
- Example XML
Where alternative representations exist, they are documented as Option 1 and Option 2.
Data Elements
The following sections define every RSS element supported by the Tuned Podcast Ingestion Service.
GENERAL | RSS Declare | Y | |
PODCAST | Channel Declare | Y | |
PODCAST | Copyright | N | |
PODCAST | Title of Podcast | Y | |
PODCAST | Location of Podcast | Y (select one)* | |
PODCAST | Location of Podcast | Y (select one)* | |
PODCAST | Last Build Date | Y | |
PODCAST | Live Date | Y | |
PODCAST | RSS Generator | N | |
PODCAST | Description of Podcast | Y (select one)* | |
PODCAST | Description of Podcast | Y (select one)* | |
PODCAST | Type (Serial or Episodic) | N | |
PODCAST | Podcast Language | N | |
PODCAST | Podcast Author | Y | |
PODCAST | Podcast Image | Y (select one)* | |
PODCAST | Podcast Image | Y (select one)* | |
PODCAST | Podcast Keywords | N | |
PODCAST | Explicit Content | N | |
PODCAST | Podcast Category | Y | |
PODCAST | Podcast Complete | N | |
EPISODE | Item Declare | Y | |
EPISODE | Season Number | N | |
EPISODE | Episode Number | Y (select one)* | |
EPISODE | Episode Number | Y (select one)* | |
EPISODE | Unique ID | Y | |
EPISODE | Audio URL | Y | |
EPISODE | Live Date | Y | |
EPISODE | Episode Title | Y (select one)* | |
EPISODE | Episode Title | Y (select one)* | |
EPISODE | Episode Author | Y (select one)* | |
EPISODE | Episode Author | Y (select one)* | |
EPISODE | Episode Keywords | N | |
EPISODE | Short Description of Episode | Y (select one)* | |
EPISODE | Short Description of Episode | Y (select one)* | |
EPISODE | Long Description | N | |
EPISODE | Episode Duration | Y | |
EPISODE | Episode Explicit | N | |
EPISODE | Episode Image | N | |
EPISODE | Transcript | N |
At least one must be present in RSS.
1. RSS
Root element specifying schemata used. 1..1
Attributes
xmlns:atom | http://www.w3.org/2005/Atom/ |
xmlns:dc | http://purl.org/dc/elements/1.1/ |
xmlns:sy | http://purl.org/rss/1.0/modules/syndication/ |
xmlns:content | http://purl.org/rss/1.0/modules/content/ |
xmlns:podcast | https://podcastindex.org/namespace/1.0 |
xmlns:googleplay | http://www.google.com/schemas/play-podcasts/1.0 |
xmlns:itunes | https://www.itunes.com/dtds/podcast-1.0.dtd Uses common vocabulary from Apple iTunes’s namespace. |
version | 2.0 Uses RSS version 2 to allow support for namespaces. |
Example
<rss xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom/"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:podcast="https://podcastindex.org/namespace/1.0"
xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"
xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
version="2.0">
...
</rss>
2. RSS/CHANNEL
Indicates a show i.e. the podcast itself. It contains the metadata for the show and encapsulates all the show episodes as items. Defining multiple podcasts in the same RSS is not supported.
Attributes: None.
Example
<rss>
<channel>
...
</channel>
...
</rss>
3. RSS/CHANNEL/COPYRIGHT
Defines who the copyright belongs and is attributed to.
Attributes: None
Example
<rss>
<channel>
<copyright>
My Co Ltd
</copyright>
...
</channel>
</rss>
4. RSS/CHANNEL/TITLE
The name by which the podcast is known
Attributes: None
Example
<rss>
<channel>
<title>
Laugh Loud
</title>
...
</channel>
</rss>
5. LOCATION OF PODCAST
Either or both options below are to be provided in the RSS feed. If both are used they must display the same resource URl.
The web address of the podcast RSS page expressed as a RFC 1738 Uniform Resource Locator. A URL must be provided as either a RSS/Channel/Link or as a RSS/Channel/itunes:new-feed-url.
Attributes: None
Example
<rss>
<channel>
<link>
https:÷example.com/lloud
</link>
...
</channel>
</rss>
ppp
The web address of the podcast RSS page expressed as a RFC 1738 Uniform Resource Locator. A URL must be provided as either a RSS/Channel/Link or as a RSS/Channel/itunes:new-feed-url.
Attributes: None
Example
<rss>
<channel>
<itunes:new-feed-url>
https:÷example.com/lloud
</itunes:new-feed-url>
...
</channel>
</rss>
6. RSS/CHANNEL/LASTBUILDDATE
Date, including GMT offset that defines the last build date of the RSS feed.
Attributes: None
Example
<rss>
<channel>
<lastBuildDate>
Sat, 19 Oct 2019 22:35:54 - 0700
</lastBuildDate>
...
</channel>
</rss>
7. RSS/CHANNEL/PUBDATE
Date, including GMT offset that defines the published date of the RSS feed. This becomes the live date and from when this RSS feed is available.
Attributes: None
Example
<rss>
<channel>
<pubDate>
Sat, 12 Oct 2019 12:35:54 - 0700
</pubDate>
...
</channel>
</rss>
8. RSS/CHANNEL/GENERATOR
Text description of the tool or software used to generate the RSS feed. This is a free form text field and can refer to the tool URL also.
Attributes: None
Example
<rss>
<channel>
<generator>
Transistor (https:÷transistor.fm)
</generator>
...
</channel>
</rss>
9. DESCRIPTION OF PODCAST
Either or both options below are to be provided in the RSS feed. If both are used they must display the same text.
Text description of the PODCAST.
Attributes: None
Example
<rss>
<channel>
<description>
Podcast description here
</description>
...
</channel>
</rss>
Text description of the PODCAST.
Attributes: None
Example
<rss>
<channel>
<itunes:summary>
Podcast description here
</itunes:summary>
...
</channel>
</rss>
10. RSS/CHANNEL/ITUNES:TYPE
Indicates if the PODCAST is either episodic or serial.
- If Episodic then it is expected that each episode will contain an Episode number and this will be respected.
- If Serial then it will be assumed that the episodes are list with the latest first. Where this tag does not exist, it will be assumed the PODCAST is Serial.
Available options: episodic, serial.
Attributes: None
Example
<rss>
<channel>
<itunes:type>
episodic
</itunes:type>
...
</channel>
</rss>
11. RSS/CHANNEL/LANGUAGE
Indicates the primary show language using ISO 639-1 language codes.
Attributes: None
Example
<rss>
<channel>
<language>
en
</language>
...
</channel>
</rss>
12. RSS/CHANNEL/ITUNES:AUTHOR
The full name of the show main originator, group or person.
Attributes: None
Example
<rss>
<channel>
<itunes:author>
Example Author
</itunes:author>
...
</channel>
</rss>
13. RSS/CHANNEL/ITUNES:IMAGE
Either or both options below are to be provided in the RSS feed. If both are used they must display the same URL.
Indicates the podcast artwork. This image will be used as a fallback for any podcast episode not defining its own artwork.
Attributes
url | The web address of the image expressed as a RFC 1738 Uniform Resource Locator. |
title | This is optional, but IGNORED. |
<rss>
<channel>
<image>
</url>
<title>
Test Podcast
</title>
</image>
...
</channel>
</rss>
Indicates the podcast artwork. This image will be used as a fallback for any podcast episode not defining its own artwork.
Attributes
href | The web address of the image expressed as a RFC 1738 Uniform Resource Locator. |
<rss>
<channel>
<itunes:image href="https://example.com/lloud-logo.jpg"/>
...
</channel>
</rss>
14. RSS/CHANNEL/ITUNES:KEYWORDS
Contains the keywords that are included for this PODCAST. Each keyword is delimited by a comma “,”.
Attributes: None
Example
<rss>
<channel>
<itunes:keywords>
keyword1, keyword2, keyword3
</itunes:keywords>
...
</channel>
</rss>
15. RSS/CHANNEL/ITUNES:EXPLICIT
Indicates if the podcast contains explicit material in any of its episodes. Allowed values are yes or clean. Clean indicates the podcast in its entirety is suitable to minors with or without edited material. Yes indicates that parental guidance is recommended to parts of the content.
Attributes: None
Example
<rss>
<channel>
<itunes:explicit>
clean
<!-- yes -->
</itunes:explicit>
...
</channel>
</rss>
16. RSS/CHANNEL/ITUNES:CATEGORY
Used to group the podcast into specific sets. While not mandatory for the podcast ingest the categorization is used for Tuned to tag these podcasts and provide recommendations.
Attributes
text | String - Apple iTunes Podcast Connect Category |
Example
<rss>
<channel>
<itunes:category text="Arts">
<itunes:category text="Design" />
<itunes:category text="Fashion & Beauty" />
<itunes:category text="Food" />
</itunes:category>
...
</channel>
</rss>
17. RSS/CHANNEL/ITUNES:COMPLETE
YES | NO A yes indicates a podcast that has ended and no further episodes will be published.
Attributes: None
Example
<rss>
<channel>
<itunes:complete>
yes
<!-- no -->
</itunes:complete>
...
</channel>
</rss>
18. RSS/CHANNEL/ITEM
An item is equivalent to a podcast episode. Each of the separate installments into which a show is divided. A podcast need at least one episode to be public.
Attributes: None
Example
<rss>
<channel>
<item>
...
</item>
...
</channel>
</rss>
19. RSS/CHANNEL/ITEM/ITUNES:SEASON
Indicates if the Episode is part of a season. If it is part of a season then the /CHANNEL/I-TUNES:Type MUST be Episodic.
If omitted then it is assumed the PODCAST is NOT part of a season.
Attributes: None
Example
<rss>
<channel>
<item>
<itunes:season>
2
</itunes:season>
</item>
...
</channel>
</rss>
20. EPISODE NUMBER
Either or both of the options below are to be provided in the RSS feed. If both are used they must display the same entry.
Indicates the order in which the episode shall be played. If both entries are omitted the <pubDate> field will be used to generate order with the oldest episode starting as the first list entry.
Attributes: None
Example
<rss>
<channel>
<item>
<itunes:episode>
2
</itunes:episode>
</item>
...
</channel>
</rss>
Indicates the order in which the episode shall be played. If both entries are omitted the <pubDate> field will be used to generate order with the oldest episode starting as the first list entry.
Attributes: None
Example
<rss>
<channel>
<item>
<itunes:order>
2
</itunes:order>
</item>
...
</channel>
</rss>
21. RSS/CHANNEL/ITEM/GUID
Unique provider identifier for the podcast which is stable over time.
Attributes
isPermaLink | Boolean: true/false. |
true indicates that the GUID is a full URL that can be used to permanently locate the podcast episode. false indicates that the GUID is not a link but only to be used as a unique identifier. | |
This is IGNORED by the Tuned System - only the GUID value is used. |
Example
<rss>
<channel>
<item>
<guid isPermaLink="false">
e99f7614-d82f-42bc-9b23-1f251592f472
</guid>
</item>
...
</channel>
</rss>
22. RSS/CHANNEL/ITEM/ENCLOSURE
This is the default RSS definition of the episode content file. This is an extension to <enclosure> tag and is used mostly for video files.
Attributes
url | Specifies the location of the episode audio file. |
type | MIME Type:Only audio/mpeg is supported. |
length | Numeric: The length of the audio file in bytes. |
Example
<rss>
<channel>
<item>
<enclosure
url="https://dts.podtrac.com/redirect.mp3/files.serialpodcast.org/sites/default/files/podcast/1422481890/serials01-e09.mp3"
type="audio/mpeg"
length="21830720"/>
</item>
...
</channel>
</rss>
23. RSS/CHANNEL/ITEM/PUBDATE
Indicates the age of the episode when the episode was first published in any outlet. This value is used to order episodes when no other explicit order is specified.
Attributes: None
Example
<rss>
<channel>
<item>
<pubDate>
Thu, 20 Nov 2014 10:30:00 +0000
<!-- OR Thu, 20 Nov 2014 10:30:00 GMT -->
</pubDate>
</item>
...
</channel>
</rss>
24. TITLE
Either or both options are to be provided in the RSS feed. If both are used they must display the same text.
The title of the specific podcast episode.
Attributes: None
Example
<rss>
<channel>
<item>
<title>
Episode 2: Title Here
</title>
</item>
...
</channel>
</rss>
The title of the specific podcast episode.
Attributes: None
Example
<rss>
<channel>
<item>
<itunes:title>
Episode #2
</itunes:title>
</item>
...
</channel>
</rss>
25. AUTHOR
Either or both options are to be provided in the RSS feed. If both are used they must display the same text.
Text field describing the Author of the Episode.
Attributes: None
Example
<rss>
<channel>
<item>
<author>
Test Author
</author>
</item>
...
</channel>
</rss>
Text field describing the Author of the Episode.
Attributes: None
Example
<rss>
<channel>
<item>
<itunes:author>
Test Author
</itunes:author>
</item>
...
</channel>
</rss>
26. RSS/CHANNEL/ITEM/ITUNES:KEYWORDS
Contains the keywords that are included for this PODCAST. Each keyword is delimited by a comma “,”.
Attributes: None
Example
<rss>
<channel>
<item>
<itunes:keywords>
keyword1, keyword2, keyword3
</itunes:keywords>
</item>
...
</channel>
</rss>
27. SHORT DESCRIPTION
Either or both options are to be provided in the RSS feed. If both are used they must display the same text.
Phrase or short example of the episode to give the consumer a quick understanding of its content.
Attributes: None
Example
<rss>
<channel>
<item>
<description>
Short Description Here
</description>
</item>
...
</channel>
</rss>
Phrase or short example of the episode to give the consumer a quick understanding of its content.
Attributes: None
Example
<rss>
<channel>
<item>
<itunes:summary>
Short Description Here
</itunes:summary>
</item>
...
</channel>
</rss>
28. RSS/CHANNEL/ITEM/CONTENT:ENCODED
Contains the long description of the EPISODE.
Encoded as CDATA.
Attributes: None
Example
<rss>
<channel>
<item>
<content:encoded>
<![CDATA[Big Description of Episode 1]]>
</content:encoded>
...
</item>
...
</channel>
</rss>
29. RSS/CHANNEL/ITEM/ITUNES:DURATION
The value provided for this tag can be formatted as HH:MM:SS, H:MM:SS, MM:SS, or M:SS, where H = hours, M = minutes, S = seconds. If a single number is provided as a value (no colons are used), the value is assumed to be in seconds. If one colon is present, the number to the left is assumed to be minutes, and the number to the right is assumed to be seconds. If more than two colons are present, the numbers farthest to the right are ignored.
Attributes: None
Example
<rss>
<channel>
<item>
<itunes:duration>
2700
</itunes:duration>
</item>
...
</channel>
</rss>
30. RSS/CHANNEL/ITEM/ITUNES:EXPLICIT
Indicates if the podcast episode contains explicit material. Allowed values are yes, no or clean yes indicates that the episode contains content not suitable for minors. No means the episode is suitable to minors and have not been edited from its original. clean means the episode has been edited to become suitable to minors.
Attributes: None
Example
<rss>
<channel>
<item>
<itunes:explicit>
clean
<!-- OR yes OR no -->
</itunes:explicit>
</item>
...
</channel>
</rss>
31. RSS/CHANNEL/ITEM/ITUNES:IMAGE
Indicates the episode artwork. Should be a 1:1 dimensioned image in high resolution representing the particular episode. When omitted on the item level the the channel level will be used instead.
Attributes
href | RFC 1738 Uniform Resource Locator Address where image file is located. |
Example
<rss>
<channel>
<item>
<itunes:image
href="https://example.com/sbig/screenshots/s02e09.png" />
</item>
...
</channel>
</rss>
32. RSS/CHANNEL/ITEM/PODCAST:TRANSCRIPT
Defines the time-aligned transcript for the podcast episode. The transcript is referenced as an external WebVTT file.
Attributes
url | Absolute URL to the transcript source file (Required) |
type | MIME type of transcript (Required, must be text/vtt) |
language | ISO 639-1 language code (NOT Required Default: en) |
rel | Relationship type (NOT Required, recommended value: captions) |
Example
<rss>
<channel>
<item>
<podcast:transcript
url="https://example.com/podcasts/episode-001.vtt"
type="text/vtt"
language="en"
rel="captions" />
</item>
...
</channel>
</rss>
Appendix
Simple Example
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="https://feeds.transistor.fm/stylesheet.xsl" type="text/xsl"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd">
<channel>
<atom:link rel="self" type="application/atom+xml" href="https://feeds.transistor.fm/test-podcast" title="MP3 Audio"/>
<title>Test Podcast</title>
<generator>Transistor (https://transistor.fm)</generator>
<itunes:new-feed-url>https://feeds.transistor.fm/test-podcast</itunes:new-feed-url>
<description>Test Podcast Description</description>
<copyright>© 2019 Test Author</copyright>
<language>en</language>
<pubDate>Wed, 16 Oct 2019 09:00:00 -0700</pubDate>
<lastBuildDate>Sun, 20 Oct 2019 01:12:36 -0700</lastBuildDate>
<image>
<url>https://images.transistor.fm/file/transistor/images/show/5082/full_1571286197-artwork.jpg</url>
<title>Test Podcast</title>
</image>
<itunes:category text="Music"/>
<itunes:type>episodic</itunes:type>
<itunes:author>Test Author</itunes:author>
<itunes:image href="https://images.transistor.fm/file/transistor/images/show/5082/full_1571286197-artwork.jpg"/>
<itunes:summary>Test Podcast Description</itunes:summary>
<itunes:subtitle>Test Podcast Description.</itunes:subtitle>
<itunes:keywords>keyword1, keyword2, keyword3</itunes:keywords>
<itunes:owner>
<itunes:name>TG</itunes:name>
<itunes:email>con.raso@tunedglobal.com</itunes:email>
</itunes:owner>
<itunes:complete>No</itunes:complete>
<itunes:explicit>Yes</itunes:explicit>
<itunes:block>No</itunes:block>
<item>
<title>Episode #2</title>
<itunes:season>2</itunes:season>
<itunes:episode>2</itunes:episode>
<itunes:title>Episode #2</itunes:title>
<itunes:episodeType>full</itunes:episodeType>
<itunes:block>No</itunes:block>
<guid isPermaLink="false">564bdb9c-263d-4b71-9398-4dad4286952d</guid>
<link>https://share.transistor.fm/s/1515d5fe</link>
<description>Testing of summary on #2</description>
<content:encoded>
<![CDATA[Testing of full notes on #2]]>
</content:encoded>
<pubDate>Wed, 16 Oct 2019 09:00:00 -0700</pubDate>
<author>Test Author</author>
<enclosure url="https://media.transistor.fm/2b1ccecb.mp3" length="6737935" type="audio/mpeg"/>
<itunes:author>Test Author</itunes:author>
<itunes:image href="https://images.transistor.fm/file/transistor/images/show/5082/full_1571286197-artwork.jpg"/>
<itunes:duration>168</itunes:duration>
<itunes:summary>Testing of summary on #2</itunes:summary>
<itunes:subtitle>Testing of summary on #2</itunes:subtitle>
<itunes:keywords>keyword1, keyword2, keyword3</itunes:keywords>
<itunes:explicit>No</itunes:explicit>
</item>
<item>
<title>Test Episode 1</title>
<itunes:season>1</itunes:season>
<itunes:episode>1</itunes:episode>
<itunes:title>Test Episode 1</itunes:title>
<itunes:episodeType>full</itunes:episodeType>
<itunes:block>No</itunes:block>
<guid isPermaLink="false">0558c532-b8d1-48f4-a18a-b801e69779d2</guid>
<link>https://share.transistor.fm/s/5864ed84</link>
<description>Summary of Episode 1</description>
<content:encoded>
<![CDATA[Big Description of Episode 1]]>
</content:encoded>
<pubDate>Wed, 16 Oct 2019 00:00:00 -0700</pubDate>
<author>Test Author</author>
<enclosure url="https://media.transistor.fm/93d81a0d.mp3" length="6737935" type="audio/mpeg"/>
<itunes:author>Test Author</itunes:author>
<itunes:image href="https://images.transistor.fm/file/transistor/images/show/5082/full_1571286197-artwork.jpg"/>
<itunes:duration>168</itunes:duration>
<itunes:summary>Summary of Episode 1</itunes:summary>
<itunes:subtitle>Summary of Episode 1</itunes:subtitle>
<itunes:keywords>keyword1, keyword2, keyword3</itunes:keywords>
<itunes:explicit>Yes</itunes:explicit>
</item>
</channel>
`
On this page
- RSS Feed Specification