Including DOIs in RSS Feeds: Implementation

Last week I wrote about the options we have for including DOIs in RSS feeds. This week is implementation time. Starting today, the Atom feed of this blog includes the DOI in the Atom<id> metadata field. This information is stored as guid identifier in the Rogue Scholar science blog archive:

RSS feeds have a corresponding field called <guid> and JSON Feed also uses <id>. Two other blogs participating in Rogue Scholar also use the id/guid and I have updated Rogue Scholar accordingly: Upstream and chem-bla-ics.

The id/guid is used by feed readers, and also the Rogue Scholar API, to determine whether blog content is new or only has moved to a different location – to a different host or using a different schema to generate the URL. A good example of the latter is permalinks in WordPress: https://blog.dini.de/EPub_FIS/?p=3605 and https://blog.dini.de/EPub_FIS/2025/01/06/barcelona-declaration point to the same page. Deciding that a blog post is new based on the URL is therefore tricky, and Rogue Scholar had switched to using the id/guidprovided by all RSS feeds in November 2023.

One challenge with the id/guid provided by static site generators such as Hugo, Jekyll or Quarto is that it is often the same as the URL and therefore may change over time. It is better to use a stable unique string such as an UUID or use a DOI, and then store that string in the blog post front matter.

When using the DOI as id/guid another potential issue may come up with new posts: either the id/guid may point to a DOI string that is not yet registered with the DOI system, or the id/guid changes when the DOI is registered after publication, potentially confusing the feed reader. One solution would be to use pending publication DOIs, but the extra effort involved is probably not worth it as Rogue Scholar registers DOIs within minutes after blog post publication. As the id/guid is used as a globally unique identifier in RSS feeds and not used to resolve links, it should be fine to have a publicid/guid that for a few minutes is not yet registered as DOI. This simplifies the workflow of blogs using DOIs as it no longer requires a second step of blog updates after DOI registration.

There are still details to sort out, but if you have a blog participating in Rogue Scholar, you can install the commonmeta Go or Python library and generate a DOI string with the DOI prefix assigned to your blog:

commonmeta encode 10.5555

This will return a string similar to https://doi.org/10.5555/5raav-08t93 and you can include this string in the RSS feed of your blog. When the blog post is published, Rogue Scholar will register the DOI with the metadata for the post included in the feed.

One remainingabout is storing the DOI in the blog backend, including the DOI in the RSS feed, and showing the DOI in the blog frontend. Watch this blog for updates on this in the coming weeks and months, and/or reach out about how to implement this for your blog.

A Refresh of the Front Matter Blog

As part of the work on the Atom feed for this blog, I updated the look and feel of the blog. This includes a few new tags/topics/subjects, which are also used in Rogue Scholar:

Sharing blog posts via clipboard or email using the DOI has become easier:

The left sidebar now includes an Article Information box and a table of contents:

Finally, there are now several options for how to display the feature image, including this wide display:

As always, you can sign up to receive blog posts via newsletter (free, about once per week), and/or to post comments. The link is in the footer:

References

Fenner, M. (2025, January 6). How to include DOIs in RSS feeds. Front Matter. https://doi.org/10.53731/6cf2w-r3a86

Fenner, M. (2023, November 22). Rogue Scholar updates: GUIDs and fields of science. Front Matter. https://doi.org/10.53731/fy5gh-g0w69