Moving Feed Discovery to /.well-known

A few weeks ago I wrote about how RSS discovery is hard. In that particular example I used the BBC, who make things notoriously difficult because they don’t even surface their feeds in the <head> element of their site. However, since writing that piece, I’ve been thinking about better ways for RSS readers to discover feeds, and it turns out I’m not the only one.

There’s an Internet-Draft that proposes moving feed discovery to /.well-known/feed-menu.json, which I think, in principle, is a great idea. Take the following very common use case:

  • the user provides a website https://example.com to a feed reader
  • the feed reader scans <head> and can’t find any feeds
  • the feed reader then makes educated guesses to find feeds, e.g.,
    • /feed
    • /rss
    • rss.xml
    • /atom
    • and so on

Contrast that with:

  • the user provides a website https://example.com to a feed reader
  • the feed reader reads https://example.com/.well-known/feed-menu.json and immediately has a full rundown of the feeds the site offers

The benefits are clear.

What I Would Change About Feed Menu

The name. I think Feed Menu is not serious enough for a standard. I’d prefer something along the lines of /.well-known/syndication.json or, even simpler, just /.well-known/feeds.json.

I’d also expand each object in feeds so that it is explicit about title, URL, format, version, and media type.

/.well-known/feeds.json
{
"publisher": {
"name": "Stuart Breckenridge",
"url": "https://stuartbreckenridge.net/",
"contact_url": "https://stuartbreckenridge.net/about"
},
"feeds": [
{
"title": "Stuart Breckenridge",
"url": "https://stuartbreckenridge.net/feed.json",
"format": "jsonfeed",
"version": "1.1",
"rel": "self",
"media_type": "application/feed+json",
"preferred": true
},
{
"title": "Stuart Breckenridge",
"url": "https://stuartbreckenridge.net/atom.xml",
"format": "atom",
"rel": "alternate",
"media_type": "application/atom+xml"
},
{
"title": "Stuart Breckenridge",
"url": "https://stuartbreckenridge.net/rss.xml",
"format": "rss",
"version": "2.0",
"rel": "alternate",
"media_type": "application/rss+xml"
},
{
"title": "Stuart Breckenridge: Links",
"url": "https://stuartbreckenridge.net/links/feed.json",
"format": "jsonfeed",
"version": "1.1",
"rel": "alternate",
"media_type": "application/feed+json"
}
]
}

A single GET to /.well-known/feeds.json would give a feed reader everything it needs.