musingfox41 downloadsSync Kobo e-reader highlights into your vault without ever rewriting your notes.
Sync highlights from a Kobo e-reader into your Obsidian vault without ever rewriting your notes.
Other Kobo importers regenerate the whole note on every import, so anything you add to it can be lost. This plugin only creates new notes and appends new highlights to the end of existing ones. Edit, move, rename, or annotate the notes however you like; the next sync still recognises what it already imported.
Each book becomes one note in the output folder, with title, author, isbn, kobo_id, created, read, and tags in its frontmatter. Highlights appear in reading order, grouped under chapter headings, each followed by its position in the book:
## Chapter 1
> The highlighted passage. · 12% %%kobo:6bd03990-6d16-4b48-8cb3-421cf25a8432%%
The %%kobo:…%% marker is an Obsidian comment, so it is hidden in reading view and live preview. It is how the plugin knows a highlight has already been imported. Keep it when you edit a highlight.
-wal file, the sync stops and asks you to eject the reader properly.read stay as you set them.Readwise/ and wiki/*/raw/. When every note for a book sits in a protected folder, new highlights go to a separate continuation note that links back to the original.Before every sync the plugin backs up the Kobo database outside the vault and keeps the 10 most recent backups.
This plugin reads and writes a few files outside your vault. It makes no network requests.
/Volumes/KOBOeReader/.kobo/KoboReader.sqlite, because that is the only place Kobo stores your highlights. It never writes to the Kobo.~/Library/Application Support/kobo-highlight-sync/backups/ before every sync and deletes older backups so only the 10 most recent remain. It only deletes backups it created. You can change this folder in the settings.| Setting | Default |
|---|---|
| Database path | /Volumes/KOBOeReader/.kobo/KoboReader.sqlite |
| Backup folder | ~/Library/Application Support/kobo-highlight-sync/backups/ |
| Output folder | inbox |
| Protected folders | Readwise and wiki/*/raw, one per line; * matches one folder |
The interface follows Obsidian's language: Chinese when Obsidian is set to Chinese, English otherwise.
bun install
bun run typecheck
bun test
bun run build
bun run build writes dist/main.js and dist/manifest.json. Tests that need a real Kobo database look for fixtures/KoboReader.sqlite (or the path in KOBO_FIXTURE) and are skipped when it is absent. The fixture is personal reading data and is never committed.