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:

We've also defined a _cast extension object that can be added to each item in items, with the following optional keys:

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.