Goodreads to Storygraph sync

tl;dr: github.com/cruftbox/goodreads-to-storygraph

I enjoy reading and tracking my progress on Goodreads. Recently, I started playing around with Storygraph, a similar site. Goodreads is part of Amazon, so when I finish a book on my Kindle, it automatically updates Goodreads for me.

Storygraph has a lot of neat features, like fun data representation of my books over a year.

Unfortunately, Storygraph does not sync with a Kindle to make the process automatic.

Thanks to House Lucia, there a good guide to importing your Goodreads bookshelf into your Storygraph reading journal.

But this only covers my history, not useful for new books as I complete them. I wanted some way to sync the two sites.

I looked for syncing techniques, but since Storygraph does not have an API interface, I didn’t find anything on the interwebs to help me.


Undaunted, I reached out to claude.ai and asked for some help.

And we were off to the races, building a python script to make the sync happen. When you start doing repeated complex asks of claude, you can run out of tokens, meaning you have to take a break from using it until your tokens are replenished 3-4 hours later. I’m paying for the Pro plan, but even that has limits.

It took about a day and a half to get it all working with multiple breaks for token refresh and touching grass. There were ~58 versions of the Python script made and tested to get it where I wanted it. There are error handling routines and logging for troubleshooting as well.

The script is here on Github: https://github.com/cruftbox/goodreads-to-storygraph

The script pulls your Goodreads shelf via the RSS feed, which was fairly simple.

Since Storygraph doesn’t have an API interface, the script literally opens up a Chrome browser and does the clicking and typing automagically. Not really agentic behavior, but kinda like it.

This was the most impressive part to me. Having the python script being able to drive a webpage without me doing anything is quite impressive.

Now Storygraph is synced with Goodreads.


In the end, this project wasn’t just about syncing two reading trackers, it was about the challenge of problem-solving with AI, learning new automation techniques, and pushing the limits of what I could build.

While synchronizing reading lists between platforms might seem like a small convenience, it represents the kind of personal automation that enhances our digital experience without relying on companies to provide official solutions.

I hope sharing this workflow inspires others to tackle their own “trivial but annoying” tech challenges, whether it’s syncing reading lists, automating repetitive tasks, or connecting services that don’t naturally talk to each other.

Sometimes the best solutions are the ones we build ourselves.