Sync your ReadingRate reading data — books, quotes, journal entries, insights, and domain mastery — into your Obsidian vault
Sync your ReadingRate reading data into your Obsidian vault as interconnected Markdown notes: books, authors, quotes, journal entries, insights, completions, domain mastery, and a yearly timeline — all with YAML frontmatter and wikilinks, so graph view, Dataview, and search work on your reading life.
ReadingRate/
├── Books/ one note per book — status, progress, stats, connections
├── Authors/ one note per author — books read, quote counts, themes
├── Journal/ one note per reading-journal entry
├── Quotes/ one note per book, all its quotes with themes
├── Insights/ AI conversation summaries and key takeaways
├── Completions/ debrief note for each finished book
├── Domains/ reading-domain mastery progress, linked to its books
├── Themes/ one note per theme found in two or more books
├── Timeline/ yearly reading timeline with stats
├── Dashboards/ native Bases views (Obsidian 1.9+) and Dataview query pages
└── Lint.md monthly wiki lint page (premium)
The sync is one-directional (ReadingRate → vault) and mirror-complete: notes for items you delete or rename in ReadingRate are moved to the trash on the next sync, so the vault always matches the app. Files you create yourself anywhere in the vault, including inside these folders, are never touched.
Filenames are plain titles, so graph view, tabs, and search stay readable: Stoner, Stoner — Quotes, Stoner — Debrief, 2026-01-18 Stoner (journal), John Edward Williams (author), Love (Theme). Colons in titles become em dashes (they are illegal in filenames). If two books share a title, both get the author's last name appended: Stoner (Williams). Renames in ReadingRate go through Obsidian's own rename, so every link pointing at the old name is updated.
Every synced note ends with a marker line:
%% Your notes go below this line — sync never touches them %%
Anything you write below that line survives every sync, full resyncs, and renames (if a book's title changes in ReadingRate, your notes move to the renamed file). The content above the line is regenerated from ReadingRate; the content below is yours.
Each quote carries a stable block identifier (^q-xxxxxxxx), so you can embed a single quote in any note:
![[Stoner — Quotes#^q-3f9a2b1c]]
Echo links also point at the exact quote block in the other book's file, not just the file.
Two commands search all your synced quotes with fuzzy matching (by text, book, or author) and drop the pick at the cursor:
![[…#^q-…]] embed that renders the live quote block, echoes included.Bind either to a hotkey and your reading highlights are available in any note you are writing.
Optionally, journal entries, insights, and completion debriefs carry a daily property linking to their [[YYYY-MM-DD]] note, so they appear in daily-note backlinks and calendar plugins automatically. Off by default — if you don't keep daily notes, each date shows up as an unresolved grey node in graph view. Turn it on in settings under Link entries to daily notes.
Two flavors, same data:
Library.base, Domains.base, Quotes.base) — Obsidian's native database views, no extra plugin needed (Obsidian 1.9+).Both are created once and never overwritten, so customize them freely.
fdplhcqphyroprxeqnse.supabase.co) to download your reading data. The sync is one-directional: nothing in your vault is read or uploaded, and no telemetry is collected. Sign-in happens in your browser on readingrate.com; the plugin only receives the resulting session tokens.Manual:
main.js, manifest.json, and styles.css from the latest release (or run npm run package in this directory).<your vault>/.obsidian/plugins/readingrate/.Via BRAT: add simonsbookclub/readingrate-obsidian in BRAT and it will install and update automatically.
Open Settings → ReadingRate → Sign in to ReadingRate. Your browser opens readingrate.com; after signing in it hands the session back to Obsidian via an obsidian:// link and the first sync starts automatically.
On Obsidian 1.11.4 or newer, your session tokens are stored in the operating system keychain (Obsidian's SecretStorage). On older versions they fall back to the plugin's data.json file.
The sync is built to make graph view meaningful, not just pretty:
npm install
npm run dev # watch build
npm run build # production build (main.js)
npm run package # production build + dist/ + release zip
Built output is main.js at the repository root of this plugin, bundled with esbuild from main.ts + src/.