podcast-namespace/docs/1.0.md

167 wiersze
7.9 KiB
Markdown
Czysty Zwykły widok Historia

# RSS Namespace Extension for Podcast (xmlns:podcast DTD)
A wholistic RSS namespace for podcasting that is meant to synthesize the fragmented world of podcast namespaces. As elements are canonized, they will be added to this document so developers can begin implementation. The specifications below are considered locked and the team will prioritize backward compatibility. We are operating under the [Rules for Standards-Makers](http://scripting.com/2017/05/09/rulesForStandardsmakers.html).
The namespace for this extension is `https://podcastindex.org/namespace/1.0`. Clients which recognize this namespace must also recognize `https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md` as identical. The suggested tag prefix for use in XML is `podcast`, but clients should support alternate prefixes for this namespace. If your application generates RSS feeds and you implement one or more elements below, you will need to link this DTD in your XML:
```
2021-01-26 20:09:35 +00:00
<rss version="2.0" xmlns:podcast="https://podcastindex.org/namespace/1.0">
```
# Podcast Tags
Each tag below exists in the podcast namespace within the specified parent. All attributes are required unless explicitly specified as optional.
2020-10-22 17:01:29 +00:00
Anywhere the url of a hyper-text based resource is specified, it must be given as `https:` and not `http:`.
2020-10-19 16:46:30 +00:00
<br><br>
## Transcript
`<podcast:transcript>`
This tag is used to link to a transcript or closed captions file. Multiple tags can be present for multiple transcript formats.
#### Parent
`<item>`
2020-12-27 20:40:34 +00:00
#### Count
Multiple
#### Attributes
2020-10-22 15:31:34 +00:00
- **url:** URL of the podcast transcript.
2020-10-22 15:31:34 +00:00
- **type:** Mime type of the file such as `text/plain`, `text/html`, `application/srt`, `application/json`
2020-10-22 15:31:34 +00:00
- **language (optional):** The language of the linked transcript. If there is no language attribute given, the linked file is assumed to be the same language that is specified by the RSS `<language>` element.
2020-10-22 15:31:34 +00:00
- **rel (optional):** If the rel="captions" attribute is present, the linked file is considered to be a closed captions file, regardless of what the mime type is. In that scenario, time codes are assumed to be present in the file in some capacity.
#### Examples
2020-11-15 22:11:49 +00:00
`<podcast:transcript url="https://example.com/episode1/transcript.html" type="text/html" />`
2020-11-15 22:11:49 +00:00
`<podcast:transcript url="https://example.com/episode1/transcript.srt" type="text/srt" rel="captions" />`
2020-11-15 22:11:49 +00:00
`<podcast:transcript url="https://example.com/episode1/transcript.json" type="application/json" language="es" rel="captions" />`
2020-11-22 19:56:52 +00:00
Detailed file format information and example files are [here](../transcripts/transcripts.md).
2020-10-22 15:28:50 +00:00
2020-10-19 16:46:30 +00:00
<br><br>
## Locked
`<podcast:locked>`
This tag may be set to `yes` or `no`. The purpose is to tell other podcast platforms whether they are allowed to import this feed. A value of `yes` means that any attempt to import this feed into a new platform should be rejected.
2020-10-22 15:28:50 +00:00
#### Parent
`<channel>`
2020-12-27 20:40:34 +00:00
#### Count
Single
#### Attributes
2020-10-22 15:31:34 +00:00
- **owner:** The owner attribute is an email address that can be used to verify ownership of this feed during move and import operations. This could be a public email or a virtual email address at the hosting provider that redirects to the owner's true email address. This is a critical element, and it's expected that podcast hosting providers (if not providing virtual addresses) will allow setting this element's value in their GUI with an emphasis to their users of how important it is to have this be a valid, working email address.
#### Examples
2020-11-15 22:11:49 +00:00
`<podcast:locked owner="email@example.com">yes</podcast:locked>`
2020-11-15 22:11:49 +00:00
`<podcast:locked owner="email@example.com">no</podcast:locked>`
2020-10-19 16:46:30 +00:00
<br><br>
## Funding
`<podcast:funding>`
2020-10-22 15:28:50 +00:00
This tag lists possible donation/funding links for the podcast. The content of the tag is the recommended string to be used with the link.
#### Parent
`<channel>`
2020-12-27 20:40:34 +00:00
#### Count
2020-12-30 22:18:03 +00:00
Multiple
2020-12-27 20:40:34 +00:00
#### Attributes
2020-10-22 15:31:34 +00:00
- **url:** The URL to be followed to fund the podcast.
#### Examples
2020-11-15 22:38:28 +00:00
`<podcast:funding url="https://www.example.com/donations">Support the show!</podcast:funding>`
`<podcast:funding url="https://www.example.com/members">Become a member!</podcast:funding>`
2020-11-03 21:33:12 +00:00
2020-11-15 22:58:33 +00:00
Please do not exceed `128 characters` for the node value or it may be truncated by aggregators.
2020-11-03 21:33:12 +00:00
<br><br>
## Chapters
`<podcast:chapters>`
Links to an external file (see example file) containing chapter data for the episode. See the [jsonChapters.md](https://github.com/Podcastindex-org/podcast-namespace/blob/main/chapters/jsonChapters.md) file for a description of the chapter file syntax. And, see the [example.json](https://github.com/Podcastindex-org/podcast-namespace/blob/main/chapters/example.json) example file for a real world example.
#### Parent
`<item>`
2020-12-27 20:40:34 +00:00
#### Count
Single
2020-11-03 21:33:12 +00:00
#### Attributes
2020-11-15 22:11:49 +00:00
- **url:** The URL where the chapters file is located.
- **type:** Mime type of file - JSON prefered, 'application/json+chapters'.
2020-11-03 21:33:12 +00:00
#### Examples
2020-11-15 22:11:49 +00:00
`<podcast:chapters url="https://example.com/episode1/chapters.json" type="application/json+chapters" />`
2020-11-12 17:58:32 +00:00
<br><br>
## Soundbite
`<podcast:soundbite>`
2020-11-15 22:43:20 +00:00
Points to one or more soundbites within a podcast episode. The intended use includes episodes previews, discoverability, audiogram generation, episode highlights, etc. It should be assumed that the audio/video source of the soundbite is the audio/video given in the item's `<enclosure>` element.
2020-11-12 17:58:32 +00:00
#### Parent
`<item>`
2020-12-27 20:40:34 +00:00
#### Count
Multiple
2020-11-12 17:58:32 +00:00
#### Attributes
- **startTime:** The time where the soundbite begins
- **duration:** How long is the soundbite (recommended between 15 and 120 seconds)
- **node value (optional):** Used as free form string from the podcast creator to specify a title for the soundbite (null defaults to episode title)
#### Examples
`<podcast:soundbite startTime="73.0" duration="60.0" />`
`<podcast:soundbite startTime="1234.5" duration="42.25">Why the Podcast Namespace Matters</podcast:soundbite>`
2020-11-15 22:58:33 +00:00
Please do not exceed `128 characters` for the node value or it may be truncated by aggregators.
2020-11-12 17:58:32 +00:00
<br><br>
2021-02-02 21:18:32 +00:00
## Person
`<podcast:person>`
This element specifies a person of interest to the podcast. It is primarily intended to identify people like hosts, co-hosts and guests. Although, it is flexible enough to allow fuller credits to be given using the roles and groups that are listed in the [Podcast Taxonomy Project](https://podcasttaxonomy.com/)
#### Parent
`<item>`
#### Count
Multiple
#### Node value (required)
This is the full name or alias of the person.
#### Attributes
- **role:** (optional) Used to identify what role the person serves on the show or episode. This should be a reference to an official role within the Podcast Taxonomy Project list (see below). If `role` is missing then "host" is assumed.
- **group:** (optional) This should be a camel-cased, alphanumeric reference to an official group within the Podcast Taxonomy Project list. If `group` is not present, then "cast" is assumed.
- **img:** (optional) This is the url of a picture or avatar of the person.
- **href:** (optional) The url to a relevant resource of information about the person, such as a homepage or third-party profile platform. Please see the [example feed](example.xml) for possible choices of what to use here.
The maximum recommended string length of each attribute value, and the tag's node value is 128 characters.
The `role` and `group` tags are case-insensitive. So, "Host" is the same as "host".
The full taxonomy list is [here](taxonomy.json) as a json file.
#### Examples
`<podcast:person href="https://example.com/johnsmith/blog" img="http://example.com/images/johnsmith.jpg">John Smith</podcast:person>`
`<podcast:person role="guest" href="https://www.imdb.com/name/nm0427852888/" img="http://example.com/images/janedoe.jpg">Jane Doe</podcast:person>`
`<podcast:person role="guest" href="https://www.wikipedia/alicebrown" img="http://example.com/images/alicebrown.jpg">Alice Brown</podcast:person>`
`<podcast:person group="writing" role="guest" href="https://www.wikipedia/alicebrown" img="http://example.com/images/alicebrown.jpg">Alice Brown</podcast:person>`
<br><br>