Atproto Gave Me Superpowers to Fix My Bookhive Data
Yesterday I imported my StoryGraph (a famous Goodreads alternative) data into BookHive (a much less famous Goodreads alternative built on atproto).1
The migration went only partially okay. It imported 50% of my history, and the entries that were imported had wrong or missing data, in particular the dates I started reading them.
Matching books is HARD, so I am not criticizing BookHive. Still, I had to fix all the values, and the task was boring and overwhelming.
Then I realized that BookHive data is hosted on my PDS2. So I thought, “What if I give Claude a temporary password and unleash it to fix my data?”
After all, I keep extensive notes on all the books I read (and more) in my Obsidian vault. Each book has start/read dates, scores, ratings, and all the data it needs.
So I asked it. In two minutes, I got this answer:
I logged into your PDS setup (handle davideaversa.it on eurosky.social) read-only (no auth needed for listing) and compared your Bookhive library against the vault. Here’s what I found:
Bookhive already has 229 book records (171 finished, 57 want-to-read, 1 reading) — looks like it was populated recently, likely via a Goodreads import.
Vault has 177 books with a read_on date. Comparing them:
83 matched an existing Bookhive record — of those, 2 are marked wantToRead in Bookhive despite being finished in the vault (On the Calculation of Volume I, Self Editing for Fiction Writers). ~75 have no Bookhive record at all — notably the Steven Saylor Roma Sub Rosa series, Blackwater series, several Star Trek novels, Stephen King titles, the Cixin Liu trilogy, and a batch of Italian-language books (these are likely missing from Bookhive’s catalog/Goodreads matching, or just weren’t in the import). Adding a missing book to Bookhive isn’t a single write — for each one I’d need to search Bookhive’s catalog for a matching hiveId (their internal book-catalog ID), then write a record to your PDS repo referencing it. That’s ~75 catalog lookups plus writes, and some (Italian titles, small press) may not exist in their catalog at all and would need to be skipped or reported.
It was promising. I did a couple of manual checks and then I gave it the green light. Ten minutes later, all my books’ data were synchronized and fixed.
It was a revealing experience. Note that I didn’t have to specify anything: no BookHive API, no structure of BookHive’s lexicon, nothing. The full prompt was:
Can you log in to my PDS (did:plc:w2wvugwwbehm7v774fkgagfl) and update the read book of Bookhive according to my Obsidian book vault?
That’s it. In an era of powerful agents, atproto applications give me a universal API to interact with my data. I think we are only scratching the surface of how awesome this is.
I am not migrating away from StoryGraph. I just wanted to participate in BookHive as a “mirror” of my data in the ATmosphere. ↩︎
The Personal Data Server, that is, where the data of
atprotoapplications is stored. In my case, on EuroSky. ↩︎
Testing Bluesky-Powered Comments
I am testing a thing. Let's see how it will work.

After seeing many similar experiments, I am testing a way to show and comment on this blog’s articles using Bluesky network. In the best case, it will make the comment section more lively. In the worst case, I would had learned something new.
Notes on this Bluesky Moment
Some late reflections on Bluesky user growth and the state of social networks.

In the last couple of months, Bluesky, one of the many post-Twitter attempts to reshape the landscape of social networks, is living its best moment. Powered by Twitter’s blunders and by the continuous alienation provided by his power-hungry owner, Bluesky doubled its user base from around 10 millions users to the current 24 millions. It is time to annotate some of my thoughts.