I had Claude Opus 4.8 vibe-code a nightly CI job to maintain a list of every link I’ve liked on Bluesky. My goal here was to make a reading list I can consult and search even if people later delete their posts, and I also wanted to capture additional metadata for articles and papers by using Citoid.

Most-liked domains and Bluesky accounts My most-liked domains and Bluesky accounts, as of June 2026. Updated nightly on the list.

Claude’s solution was a few Python scripts:

  1. Scrape liked posts using getActorLikes. To capture “new paper” threads better, I capture any links in the whole thread, not just the specific post I liked. I also capture links in quote posts.
  2. Use Wikimedia’s Citoid service to attempt to get better title and author metadata for each link. Citoid fails quite regularly, so we “fall back” to the title and description in Bluesky’s preview card, or just display the actual URL if no preview card was created. For example, we fail to get the title and author from links like https://users.eecs.northwestern.edu/~jhullman/AI_metascience_position.pdf, which is not supported by the Zotero translation server that Citoid uses. A PDF metadata-parsing library could be used to try to infer title, author, and date from PDFs like that.
  3. Check for dead links, attaching a Wayback Machine link if the link seems dead (404, 410, SSL error, connection refused, or DNS failure).

The output is a YAML file versioned in this blog’s public GitHub repository, which a Jekyll template consumes as site data. GitHub Actions runs nightly to refresh the YAML file.

Claude was great at iteratively identifying issues and fixing them, and there are a number of special cases. The most prominent of these issues is something that’s been annoying me on Wikipedia lately too: a lot of the academic publishers have started loading an “are you human” page before directing you on to the article page, which means Citoid can’t resolve metadata correctly. The most prominent examples are papers hosted on the ACM Digital Library or in the Open Science Framework’s PsyArXiv pre-print repository. Fortunately, the URLs for those two sites contain enough information to extract a DOI from the URL, which enables us to recover in most cases. But it requires a special case, so there’s a good chance that Citoid will just stop working in the future for more and more publisher pages.

If you want to do something similar, it’s very easy to set up: you’ll just need to generate an App Password. Find the code on GitHub, but again, this was vibe-coded: I literally didn’t read the code at all.

(I’ll note that I still don’t use LLMs for writing… although Claude did generate the URL slug for this post and produced a summary text that I used to write up the post myself. I’m not quite willing to give up my writing yet!)