Cast JSON Feed Support
A quick overview
JSON Feed is a new syndication format that aims to duplicate the functionality of syndication formats like RSS and Atom, but with JSON. Cast has added experimental support for JSON Feed publishing for podcasts published with Cast.
If you publish your podcast with Cast, we'll publish a separate JSON Feed alongside your RSS feed the next time your podcast is updated; change your podcast's RSS url extension from .xml
to .json
and you're looking at it.
There are no podcast clients that currently support JSON Feed, so this is purely for fun and high-fives right now.
Cast JSON Feed Extension
We've defined some extensions to the JSON feed spec, which are primarily found inside a top-level object named _cast
(there's also an optional extension on items
, described below).
All extension keys are optional, and are as follows:
about
(string): The URL to this pagecategories
(array): An array of Apple Podcasts podcast category objects, of the following form:category
(string): A top-level category that this podcast belongs to, such as "Technology"subcategory
(string): The subcategory within that category that this podcast belongs to, such as "Tech News". If there are multiple subcategory entries matching the same category, these are separated out into separatecategories
array items
copyright
(string): The copyright information for the podcastexplicit
(boolean): True if the podcast contains explicit language; false otherwiseextension_version
(string): The Cast JSON Feed Extension versionitunes_url
(string): A fully-qualified URL to the podcast's Apple Podcasts pagelanguage
(string): The ISO 639 language code for the podcastrss_url
(string): A fully-qualified URL to the podcast's RSS feed
We've also defined a _cast
extension object that can be added to each item in items
, with the following optional keys:
about
(string): The URL to this pageparticipants
(array): An array of participants present on this podcast episode; each participant object is structured like a JSON Feed author object, and optionally contains one or more of the following keys:name
(string): The participant's nameurl
(string): The URL to a site corresponding to the participantavatar
(string): The URL to a square avatar for the participant
Further to that, Cast will sort feed items
by their date_published
field, in descending order, so clients making ranged requests will receive the most recent episodes published to a feed first. We also order the fields in the feed such that the items
field will be the final field in the feed, meaning a client can assume they have seen all top-level fields once they reach the feed items
.
Put that all together, and a JSON Feed with _cast
extension objects might look something like this:
{
"version": "https://jsonfeed.org/version/1",
"title": "The Cast Podcast",
"description": "A Podcast All About Cast",
"home_page_url": "http://cast.rocks/",
"feed_url": "https://cast.rocks/hosting/feeds/cast.json",
"date_published": "2017-05-20T20:04:44.000Z",
"date_modified": "2017-05-24T19:57:04.160Z",
"author": {
"name": "Debacle Inc",
"url": "mailto:support@tryca.st"
},
"icon": "http://cast.rocks/hosting/feeds/cast.jpg",
"_cast": {
"about": "http://help.tryca.st/cast-jsonfeed-support/",
"extension_version": "1",
"language": "en",
"copyright": "Copyright Debacle Inc",
"rss_url": "https://cast.rocks/hosting/feeds/cast.xml",
"itunes_url": "https://itunes.apple.com/ca/podcast/cast-podcast/id195551?mt=2",
"explicit": true,
"categories": [
{
"category": "Business",
"subcategory": "Investing"
},
{
"category": "Technology",
"subcategory": "Tech News"
},
{
"category": "Music"
}
]
},
"items": [
{
"title": "TCP Episode 2",
"summary": "We talk to Loren about Textie.",
"content_text": "On this week's episode, the CEO of Borange.",
"id": "EUEG9FFO-CEG66R",
"date_published": "2017-05-24T18:37:47.000Z",
"attachments": [
{
"url": "http://cast.rocks/hosting/tcp-episode-2.mp3",
"size_in_bytes": 9765630,
"duration_in_seconds": 813
}
],
"_cast": {
"about": "http://help.tryca.st/cast-jsonfeed-support/",
"participants": [
{
"name": "Julian",
"url": "https://twitter.com/julianlepinski"
},
{
"name": "Loren",
"url": "https://twitter.com/lorenb"
}
]
}
},
{
"title": "TCP Episode 1",
"summary": "We talk to Justin about Elements.",
"content_text": "On this week's episode, the Mayor of Denver, CO.",
"id": "AYVH3C7N-GS6ECDI",
"date_published": "2017-05-20T18:51:11.000Z",
"attachments": [
{
"url": "http://cast.rocks/hosting/tcp-episode-1.mp3",
"size_in_bytes": 8864622,
"duration_in_seconds": 613
}
],
"_cast": {
"about": "http://help.tryca.st/cast-jsonfeed-support/",
"participants": [
{
"name": "Julian",
"url": "https://twitter.com/julianlepinski"
},
{
"name": "Justin",
"url": "https://twitter.com/justin"
}
]
}
}
]
}
Frequently asked questions
Why?
For fun. Next question.
Now what?
We've enabled experimental JSON Feed publishing on all Cast accounts, so the next time your your RSS feed is updated Cast will also publish a JSON Feed alongside it.
If, for example, your podcast is hosted at cast.rocks/hosting/feeds/cast1.xml
, your JSON Feed will be located at cast.rocks/hosting/feeds/cast1.json
.
I'm trying to see my JSON Feed, but the public feed URL is 404ing. What's up?
You'll need Cast to re-generate your podcast's RSS feed before your JSON Feed will be generated for the first time. Something as simple as adding an extra space to an episode description will do the trick.
Can I just take a peek at what my podcast's JSON feed would look like? Just for the thrill of it?
Yeah, for sure. If you're viewing the Publisher page for your podcast your browser's URL will be in the form tryca.st/publisher/feed/577c12dc7f7
. Change feed to json in this URL and you'll see the live JSON Feed representation of your podcast's RSS feed.
That would mean changing the example URL above to tryca.st/publisher/json/577c12dc7f7
. This live JSON Feed representation of your podcast is only visible to you, and only when you're logged into Cast.
Can I submit my JSON feed to Apple Podcasts?
Nope, definitely not. Definitely nope.
I don't understand any of this. Do I need to do anything?
Nope! JSON Feed is just for fun, and just for nerds right now.