The Readwise Mirror plugin allows users to sync their entire Readwise library into Obsidian, automatically downloading highlights and notes, and ensuring they are always up to date. The plugin enhances Markdown formatting by automatically creating links for book titles and authors, along with block-level link references for highlights. It provides a one-way sync, ensuring Readwise is the source of truth for all highlights, and supports custom folder setups for organizing content. Features include full library downloads, templating options, and the ability to sync highlights with notes. It is ideal for users who want to mirror their Readwise library in Obsidian while preserving the organization and structure of their highlights.
🎉 Readwise Mirror v2.3.0 "Atomizer" Released!
2.3.0 (2025-11-08)
"Atomizer" feature update of the Readwise mirror plugin. A major update with atomic highlights, new template variables, and quality-of-life improvements.
✨ New Features:
- Atomic Highlights: Split highlights into separate notes with embedding support, conditional atomization, parent metadata inheritance, and UI controls for granular management
- Toggle to show/hide sync notifications for a cleaner workflow
⚡ Improvements:
- Enhanced frontmatter preview and validation for safer editing
- Better deduplication and file renaming
- Improved frontmatter formatting and indentation
- More reliable template loading and filter processing
🔧 Under the Hood:
- Packaging and tooling updates
📖 Learn More:
📥 Update: Community Plugins → Check for updates
🐛 Issues? Report on GitHub
Thanks to @tfthacker and @billpetro for their help in developing, designing, and testing this.
Features
- ✨ add new filter for author name normalization (3746fdd)
- ✨ add setting to toggle parent frontmatter inheritance (fddef66)
- ✨ add toggle for notifications during sync (882f117), closes #75
- ✨ implement atomic notes with conditional atomization (b121f63), closes #76
- ✨ introduce new
fmefilter to escape value for frontmatter (5f94a32) - ✨ introduce the atomizer (alpha!): split your notes into a master and child-notes (f41526e), closes #76
- ✨ make parent property user configurable (ed34447)
- ✨ release atomizer extension (33cc033), closes #76
- ✨ track files as new default (dfd5cad)
- 🩹 add additional case for notification toggle (0069980)
- 🚸 reorganize highlights tab in settings (d2dcd1a)
- 🚸 update default frontmatter template (e4b8803)
Bug Fixes
- 🐛 dont use deprecated
contains()method (1ec1e3b) - 🐛 handle render errors inside validation (9be7c99)
- 🐛 improve yaml handling (9ba2479)
- 🏷 improve type handling in atomizer (bfad22f)
- ♻️ refactor code to use Obsidian frontmatter API (115957c)
- 🐛 catch potential frontmatter errors for discarded or otherwise missing highlights (39e7213)
- 🐛 fix
fmefilter to make it more robust (1535eee) - 🐛 fix async function call when updating frontmatter (81d0527)
- 🐛 fix constructor call (75d7c35)
- 🐛 fix frontmatter escape filter regressions with newlines for scalar values (288cd51)
- 🐛 fix further regressions with stringified frontmatter (2ccb5c6)
- 🐛 fix the blockquote filter’s newline handling (c678915)
- 🐛 preserve the caller’s expected type in
normalize_author(66faa84) - 🐛 rename primary file early (7844445)
- 🐛 tighten the
tagstype to match runtime behavior (fc3afe6) - 🐛 YAML whitespace regression for single- and multi-line frontmatter in atomizer (f755685)
- 🔒️ add filename sanitation with
filenamifyfor atoms (81ef3fe) - 🩹 add additional titles to
normalize_author(37fbab7) - 🩹 avoid double-escaping title in frontmatter template (052188c)
- 🩹 don't strip protected fields from brand-new notes (a86ab06)
- 🩹 expose both
location_urlandlocationUrl(117c91f) - 🩹 fix filename sanitizing for atoms (fc31cc9)
- 🩹 fix misleading error messages (db4ece7)
- 🩹 set
highlightUrltonullif noasinorlocationis available (8505555) - 🚑️ fix a regression with
nullvalues infmefrontmatter filter (ec2de07) - 🚑️ fix regression in
getReadwiseFilesFromLibrary()(da537b4) - 🚑️ fix regression with new files and empty path (c64c332)
- 🚸 relocating highlight sorting setting (3edf055)
- switch to Obsidian's
moment(e5159c9), closes #78