Dogear
An Obsidian plugin that turns your vault into a reading tracker- Goodreads import, progress by page, percentage or listening time, a cover grid, and reading statistics, all in plain Markdown.
Dogear is a community plugin for Obsidian that keeps your reading life in your own notes. It brings your library across from Goodreads, stores one Markdown note per book, and logs your progress by page, by percentage, by time elapsed, or by time remaining. It grew out of the closure of the Goodreads API and the slow decay of the plugins that once depended on it: a decade of reading history should not sit behind someone else's login.
Opens the plugin page in the app.
MIT licensed.
The library view: every book you have, filtered by shelf and searchable by title, author or series.
One note per book
Nothing is hidden in a database. Each book is a Markdown file with its metadata in the frontmatter and its reading log in the body, so the whole library is searchable, linkable, and backed up alongside everything else in the vault. Anything you write yourself is left exactly as you wrote it, byte for byte, however many times the plugin rewrites the log above it.
---
dogear: 1
title: The Power Broker
authors:
- Robert A. Caro
isbn13: "9780394480763"
pages: 1246
status: finished
rating: 5
---
## Reading log
### Read 1 — print · 2024-01-04 → 2024-03-12
- 2024-01-14 · page 210 · 17%
- 2024-02-02 · page 604 · 48%
## Notes
Anything you write here is yours.
If the plugin is uninstalled tomorrow, every book remains a perfectly readable note. That is the point.
Bringing a Goodreads library across
Export your library from Goodreads and import the CSV. Shelves become statuses, ratings and read dates carry over, series names are lifted out of the titles where Goodreads hides them, and your reviews and private notes are preserved as prose. Nothing is written to the vault until you have seen exactly what will be created, and any book can be deselected.
Where the export is lossy, the importer says so rather than inventing history. Goodreads records a single date even for a book you read four times, and no importer can recover the rest; Dogear reports the true count and admits the gap in the note. A tracker that quietly fabricates your reading history is worse than one that tells you what it could not know.
The import preview, with the losses stated before a single file is written.
Progress, however you actually read
Log a position by page, by percentage, by time elapsed, or by time remaining. That last one matters: audiobook apps report how much is left rather than how far you have come, and no other tracker lets you record it that way. Everything is normalised to a fraction of the book, so progress stays comparable when you switch between a paperback and an audiobook halfway through.
Rereads are simply a second session, so a book can carry as many passes as you like without overwriting the first. Abandoning a book records where you stopped and why, because that is information too.
The panel inside each note, which changes with the state of the book rather than showing every control at once.
Statistics that stay honest
Books and pages finished, how you rated them, how long they were, and which authors you came back to, by year or across everything. Audiobooks are counted in hours rather than pages, so listening is not quietly left out of your totals.
It is deliberately small. Every figure works from a finish date, a rating and a page count, because that is all an imported library knows: Goodreads exports no start dates, so reading pace and streaks cannot be computed for the great majority of anyone's books. A page of empty charts helps nobody, so there is no mood tracking, no genre wheel, and no streaks.
Reading statistics for a selected year, drawn from finish dates, ratings and page counts alone.
What's inside
- Goodreads import with a full preview, per-book selection, duplicate detection, and honest warnings wherever the export loses information.
- A library view with a cover grid, shelf filters, accent-insensitive search across titles, authors and series, and sorting by recent activity, title, author or rating.
- Four ways to record a position: page, percentage, time elapsed and time remaining, all normalised so mixed-format reads stay coherent.
- Metadata from four catalogues: Open Library, Google Books, the Library of Congress and the Internet Archive, tried in order with automatic fallback and client-side rate limiting, so their limits are respected rather than discovered.
- Covers that survive: fetched from Open Library by ISBN at no request cost, downloadable into the vault so they work offline, or set by hand from any image you have, which is the only option for the many books no catalogue has artwork for.
- Manual entry that always works. Looking a book up is enrichment, never a prerequisite, so a book can be added with no network at all.
- A tested core: the logic layer imports neither the DOM nor the Obsidian API and is covered by more than 1,100 tests, including fuzzing that checks your own writing survives repeated rewrites untouched.
Install
In Obsidian, open Settings → Community plugins → Browse, search for Dogear, install, and enable it. Open your library from the ribbon icon, or run Import from Goodreads from the command palette to bring an existing library across. The plugin is free and open source under the MIT license, and works on desktop and mobile.
Found a bug or want another feature? The issue tracker is open.