Tracking reading on Beeminder with The StoryGraph! [Beta feature to try]

I’ve been super eager to see an integration with a site that can track reading in some way. I know Goodreads has been an item on people’s wishlists for a while as well, but I personally use a site called The StoryGraph… and it turned out to be really easy for us to create an integration with that site.

Plus, a site called StoryGraph + Beeminder… surely that’s a winning equation!

Beta the integration for us:

If you’d like to try tracking your number of pages read per day using StoryGraph, create a goal here. We’ll start by pulling in your cumulative number of pages read so far, and then the goal acts as an odometer.

We’d love to hear in support or this thread about any issues you have with the integration, any questions, etc. Let us know!

Why use StoryGraph?

We’re very aware that a lot of our users are Quantified Self enthusiasts, or from adjacent communities, and that stats make our hearts beat faster. The StoryGraph definitely scratches that itch! If you’re curious about all the graphs you can see, check out my 2022 reading stats, but here are a few examples. For instance, I can see the “moods” of the books I’ve read (crowd-sourced from people’s reviews, including my own):

On the StoryGraph site, you can click on any section of the pie to view the books grouped there. You can see I do not go for inspiring books, ahaha. What about my fiction-to-non-fiction balance?


Books/pages per month? They got ya.

I think this is really telling, too – I’m pretty sure I was tending to read longer books at the start of the year, and in July I’ve been reading short books to catch up, so the red line isn’t seeing the same bump as the blue line. :sweat_smile:

I’d really love to see The StoryGraph grow, and I think the graphs and statistics are perfect for fans of Beeminder… See you there?


Reading-tracking site personally recommended by our illustrious @shanaqui ?? Sign me up!

Or, rather, I’ve just signed up, I suppose, as rperce. I added the two books I’m currently reading!

Question about the beeminder integration, though: is it total pages or per-book? From the first couple screens of the goal creation dialog, it looks like I can filter by any combo of tags that StoryGraph applies, but it wasn’t clear to me if I could do per-book too.


At the moment, it’s “total page count ever” only. But we’re totally listening for other metrics people want to see! (I’d love to see a whole bunch, like tracking a specific challenge or something.)

Because this integration’s super basic (it looks at your profile and just… reads off the number, rather than anything complicated API-wise), it’ll depend on whether there’s one single place we can read that data (and whether it’s simple enough to set up that it wouldn’t be ridiculously confusing for people) – but that’s our problem to worry about. Just tell us what you’d like to see.


In that case—I’d love per-book! Right now I create a goal per-book because it’s useful to me to be able to see if a particular book is edge-skating, and to set goal dates based on library due dates. Total page count ever is also not necessarily super great because I also do a bunch of reading on Kindle and not every book has correct kindle-location-to-page-count tracking. With a per-book goal, the fact that I’m on “location” 4000 doesn’t affect the page count of other goals.


I love StoryGraph and I’m super excited about this potential integration.

I’ll also throw in a vote for per-book tracking! I like to create goals for an individual book since total page count isn’t that useful for me.


Omg this is a dream-tier integration for me! Total page count will be very useful and will probably make my data entry a lot easier, since I already track reading progress on StoryGraph for all my reads. I second @rperce that a per-book integration would be great eventually; I also use those goals to finish library books on time.


I totally agree with you, just wanted to point out a cool feature on StoryGraph you might find useful. If you select the right edition of the book on StoryGraph, you can track your reading of it in % and they will calculate the number of “pages” read in that reading session.


Ooooooh! Thank you, that is useful!

Thanks, I’m also trying this out, happy to be befriended or whatever!

Any chance you can let on how it was really easy? I tried to use Storygraph briefly before but it didn’t stick because I couldn’t hook up getting info out of there as easily as I could with the Goodreads API & RSS feeds. But Goodreads are discontinuing their API I think and I’d really like to slip away from another Amazon tentacle if I can so I’m willing to try again. And if there’s an easier (or at least more reliable way) than scraping HTML that’d be good to find out about. Ta!


I’m pretty sure we’re just scraping the HTML, but @adamwolf can answer for the technical details better than I can!

1 Like

An API is part of StoryGraph’s long-term roadmap but the developer team is still pretty small so I don’t think it will launch for a while.

1 Like

tl;dr: we’re definitely just scraping the html, but there’s more to that that makes it “really easy”

StoryGraph was an easy one for a few reasons:

  • we only need a username to get the data
    Even though OAuth and things are pretty straightforward these days, there’s usually an explosion of possible error states

  • there’s a clear “first metric” that doesn’t need configuration
    Compared to something like Trello or Todoist where we often want configurable filters right away, this lets us launch and look at demand and usage before figuring out how much time to invest into handling other metrics, like per-book ones, or number of books vs number of pages

  • The data isn’t preaggregated by day
    If a data source collects data and then combines it into a single metric, and then gives us that metric, things get complicated quickly. What if the moment that they aggregate isn’t the same as the goal deadline? What if the two aren’t on the same timezone for some reason (a user went on a trip and one site auto-changed and one did not, maybe?) Ahhhh!

This isn’t highly optimized or a Platonic ideal shining through the darkness, but this is what we’ve got to extract out the pages data from + STORYGRAPHUSERNAME + ?year=:

books_pages_text = parsed_data.css(“.chart-read-status”).first.parent.children[3].text
values = books_pages_text.match(/(?[\d,]+) books?, (?[\d,]+) pages?/)
pages = Integer(values[:pages].gsub(“,”, “”))


If you’ve got your books data somewhere other than goodreads, you may find it easiest to import it to goodreads and then export from there into storygraph. The goodreads CSV import format seems to be more forgiving and minimally needs the ISBN.

1 Like

I noticed I was getting some really weird jumps in my data on my StoryGraph goal so I thought I would warn others of this feature here, in case it affects them too.

I was noticing these huge jumps in page numbers that didn’t align with the pages I was adding to my reading journal. My audiobooks were all in the correct format and I was tracking them by percent. It turns out I had a setting in my StoryGraph Preferences that converted all of my audiobook listening to “pages” for stats purposes even if I had selected the correct audiobook edition, and this was getting pulled into the Beeminder goal. I changed that setting so now it reports audiobook data as minutes and separates it from other reading.

Conversely, maybe you want to track audiobook listening as pages for your Beeminder goal in which case you’ll love this feature!


I liked how Beeminder team addressed the Goodreads problem. To my knowledge, there’s no reliable way to implement integration with Goodreads. You could read total number of pages read, but only if the book is marked as done, not on a daily basis. Parsing their RSS is a bit annoying.
Well done, this works for me and deprioritises Goodreads from the list of the top wanted integrations.

My second thought was that you might be interested in integrating with Memrise to address the problem of Anki integration. Basically the same principle - scrape points/words from public profile on Memrise.


This is awesome! I deleted my GoodReads account last year, and really wanted a new place to start and track reading. I’m starting from scratch with the books I’m currently reading. I don’t have any friends on it yet, so I hope that those who posted their profiles here don’t mind me asking! I’m a boring person who normally reads more philosophy than anything else, so it’s nice to see what others are reading. I’m dprianti3

I’d love to have a book count tracking as well. I’m currently using a Trello board to keep track of books read on Beeminder, but this would be more handy and fun.


@dprianti3 Just sent a friend request! My profile

For those who were looking to track their book count, it’s here! It can’t be set up during goal creation at the moment, but I can make it happen for you behind the scenes, thanks to Adam.

For us to do that, set up your goal with the pages metric, but make all your goal settings be in terms of number of books (i.e. if you want your rate to be 1 book a week, then set your rate to 1/7 per day, and maybe give yourself some safety buffer). Then I can switch over your goal and tweak the starting value to the correct value. Bear in mind, anything you’ve entered on StoryGraph before the time I do that will be counted into your starting value.


Clarification: we can also add StoryGraph book tracking to an existing goal, but it will require an odometer goal (i.e. where you’re entering the cumulative number of books read since you started the goal), so it may not be compatible.