An unofficial Readwise plugin that pulls all your highlights from Readwise into Logseq. Each book, article, tweet, or podcast becomes its own page tagged
#Readwisewith structured properties — with incremental syncs that only fetch what changed since your last sync.
- Full library sync: pulls every source (books, articles, tweets, podcasts, etc.) from the Readwise Export API, paginating through your entire library.
- Incremental syncs: after the first sync, only sources updated since your last sync are fetched. The sync timestamp is stored as a block on the
Readwisepage in your graph, so it travels with your graph sync. - One page per source: each source becomes a page tagged
#Readwise, with its highlights appended as blocks. Each highlight links back to itsLocationin Readwise. - Structured properties: pages carry Readwise metadata as proper Logseq DB properties —
rw-id,rw-author,rw-readable-title,rw-category,rw-source,rw-cover-image,rw-unique-url,rw-readwise-url,rw-source-url,rw-external-id,rw-asin,rw-document-note, andrw-summary. Authors are stored as node references, sorw-authorlinks to author pages. - Idempotent: re-running a sync never duplicates highlights — existing blocks are detected and skipped, and existing pages are matched by their Readwise ID (
rw-id), not by title. - Inline tags become links:
#tagsinside a highlight are converted to[[page links]]. - Progress UI: a progress bar shows fetching and per-book sync progress, with per-book error reporting and the ability to cancel mid-sync or retry after a failure.
- Rate-limit aware: Readwise API calls automatically back off and retry on
429responses, honouring theRetry-Afterheader.
- Logseq DB graphs. The plugin uses the DB version's tag and property APIs (tag classes, typed properties, node references) and will not work on file-based graphs.
- A Readwise account and access token.
- Open Logseq.
- Go to the Marketplace (Plugins > Marketplace).
- Search for logseq-readwise.
- Click Install.
- Get your token from the Readwise Access Token page.
- In Logseq, go to
Settings > Plugin Settings > logseq-readwise-pluginand paste the token into Readwise API Token. - Click the plugin's toolbar button (the
Ricon) to open the sync panel. - Click Setup Properties. This creates the
#Readwisetag and allrw-*properties in your graph, and registers them as tag properties so every synced page gets a consistent schema. This only needs to be done once per graph. - Click Start Sync. The first sync pulls your entire library, so it may take a while if you have thousands of highlights — the progress bar keeps you informed, and you can cancel at any time.
- Click the toolbar button (
Ricon). - Click Start Sync. Only sources updated since your last sync are fetched. New sources get new pages; new highlights on existing sources are appended to their existing pages.
Available from the command palette (Mod+Shift+P):
- Readwise: Setup properties — (re)creates the
#Readwisetag and therw-*property schema. Run this if the sync panel reports missing setup items. - Readwise: Reset sync timestamp — removes the
Last syncedblock(s) from theReadwisepage, so the next sync pulls your full library again. Useful for starting afresh.
- The plugin finds existing pages by querying for pages tagged
#Readwisewith a matchingrw-idproperty, so you can rename a synced page and new highlights will still land in the right place. - Within a page, highlights are deduplicated by their content, so already-imported highlights are skipped on every sync.
- Edits you make to highlights in Readwise are not propagated to Logseq (and vice versa) — only new highlights are appended.
- You can freely add your own notes as child blocks under any highlight; the plugin only ever appends new top-level blocks.
- Run Readwise: Reset sync timestamp from the command palette.
- Delete the pages the plugin created (pages tagged
#Readwise), if you want them recreated cleanly. - Run a sync — the full library is pulled again. Thanks to deduplication, leaving existing pages in place is also safe; highlights will not be duplicated.
Logseq Settings > Plugin Settings > logseq-readwise-plugin:
- Readwise API Token — your Readwise access token, from readwise.io/access_token.
- Properties Configured — internal flag managed by the plugin; do not edit manually.
If you enjoy this plugin, please consider supporting the development.
Issues are welcome. If you find a bug, please open an issue. Pull requests are not accepted at the moment as I am not able to commit to reviewing them in a timely fashion.