Going for DOI registration

Going for DOI registration
Photo by Xavier von Erlach / Unsplash

Starting this week, all DOIs for the Rogue Scholar blog posts are registered and updated using the new commonmeta Go library, replacing the commonmeta Python library. Authors and readers of blogs archived by Rogue Scholar shouldn't notice a difference, but going forward this change will make it easier to manage the DOIs (close to 16K DOIs for currently 93 blogs) registered for Rogue Scholar blog posts.

Since Rogue Scholar launched last year, DOIs and metadata have been registered automatically with Crossref within minutes after blog post publication using a GitHub Actions workflow using the commonmeta metadata conversion library at its center. While this workflow has worked well for Rogue Scholar, two aspects could see improvements:

  • registering lots of DOIs (e.g. with a new blog joining Rogue Scholar) is a challenge, as the GitHub Actions workflow currently only allows registration of one DOI every 10 min. Updates of existing DOI metadata scale better with currently up to 100 DOI records updated every 10 min,
  • updating downstream services (e.g. participating blogs) is complicated, as the integration of GitHub Action outputs is not trivial, and the Crossref API mainly uses email for notifications.

I know for a while now that I have to implement background workers for Rogue Scholar to address these issues. The challenge is to build this without making Rogue Scholar overly complicated. Celery is a popular library for implementing background queues in Python and requires a Redis, RabbitMQ, or AmazonSQS backend. The migration of DOI registration to a Go package allows Rogue Scholar to use one of the available Go packages (e.g. async or faktory) as I want to consolidate more of the Rogue Scholar infrastructure into a single Go package.

Some aspects of this need further exploration, in particular how to automatically updated blog posts when a DOI has been registered. Rogue Scholar offers a workflow for blogs providing an API (e.g. hosted by Wordpress or Ghost) but for blogs run by static site generators (e.g. Hugo, Jekyll, or Quarto) a different workflow is needed.

The commonmeta Go package is also a useful command-line tool for DOI registration. In contrast to Python, Ruby, or Javascript it is available as a single binary (for Mac, Windows, or Linux) with no external dependencies or the need for a virtual environment. Support for DOI registration with DataCite will be added in a future release. Please reach out to me if you are interested, including other content types besides blog posts, or if you are mainly interested in updating existing metadata.


Fenner, M. (2024, April 29). Rogue Scholar: Commonmeta grows up. Rogue Scholar. https://doi.org/10.53731/zkrxq-mj859

Fenner, M. (2024). Commonmeta-py (013.2) [Computer software]. https://doi.org/10.5281/ZENODO.8340374

Copyright © 2024 Martin Fenner. Distributed under the terms of the Creative Commons Attribution 4.0 License.