Build your metadata library

code • January 26, 2022

Last year, I started to track new recipes I tried and books I read by saving their metadata to YAML files. I had already been saving Spotify playlists in the same way and then this year I started saving Wordle games. I have found something deeply gratifying about maintaining metadata libraries.

Tracking these activities has served as a helpful reference for when a friend asks me what I’ve read lately or for a good recipe. Everything is in one place. I was also surprised to learn that I made 96 new recipes last year, a number I wouldn’t have known, or even been able to guess, had I not tracked.

The metadata we generate from our daily activities can help build a passive, yet, rich journal.

Make tracking easy

Over the years, I tried to make tracking frictionless and rewarding. Each costs me seconds of my time or is fully automated:

I have found this iOS shortcut to GitHub issue pipeline to be ideal for data that doesn’t have an API, for when I want to pull data from many sources, and for activities I complete on or near my phone. I also like to avoid added logins. For example, while Goodreads is a known service to track books, it’s more than I want.

A data warehouse

I created a private repository to hold my YAML files:

_data
  learning.yml
  playlists.yml
  read.yml
  recipes.yml
  watched.yml
  wordle.yml

These files once lived in my site repository, but I realized they serve a different function than my site. And while most of my work is in public repositories, I’m not ready to share everything.

Points on the board

My private data repository builds a public site. I mentioned earlier that I tried to make the process of tracking rewarding — this site is it. Like checking something off a checklist, I have found a sense of accomplishment that makes me want to continue, to do more, to read more, to try a new recipe.

Since my GitHub actions commit directly to the repository, the site will automatically update. This means that about a minute after I triggered a workflow for finishing a book, the book’s title and thumbnail will appear on the site.

More on meta tags

During this process of tracking, I think the most interesting concept is website structured data in the form of meta tags. The Bookmark GitHub action uses an Open Graph scraper. Since websites are incentivized to follow these standards to display their links richly on social media, I’ve found this dataset to be readily available.

Meta tag attributes are perfect for tracking and bookmarking, which makes the Bookmark GitHub action so versatile.

I do find that validation and consistency of these Open Graph meta tags to be lacking. For example, some sites will append extra text to the title, such as the site name when there’s another meta tag to store this data. I suppose this exercise has made me want to think more carefully about how I shape metadata.

Keep reading code