A community plugin for Obsidian that imports highlights and annotations from your Kobo eReader's SQLite database.
- Direct Database Import: Reads directly from the
KoboReader.sqlitefile on your device or from a local copy. - Accurate Book Position: Calculates the global position of highlights within the book (percentage), taking chapters into account.
- Flexible Templating: Use custom templates with variables like
{{text}},{{annotation}},{{chapter}},{{location}}, and more. - Conditional Logic: Supports basic conditional rendering (e.g.,
{% if annotation %}...{% endif %}). - Incremental Import: Appends new highlights to existing notes without overwriting.
- Duplicate Detection: Prevents importing the same highlight twice.
- Connect your Kobo eReader to your computer via USB.
- In plugin settings, set the database path to either:
- Direct from device:
E:\.kobo\KoboReader.sqlite(Windows) or/Volumes/KOBOeReader/.kobo/KoboReader.sqlite(Mac) - Local copy: Copy the file from your Kobo and set the path to that location
- Direct from device:
- Run the command "Import Kobo highlights" from the command palette.
- The plugin will scan for highlights and import them into your configured folder.
You can customize how highlights are formatted using the settings.
{{text}}: The highlighted text{{annotation}}: Your note/annotation{{chapter}}: Chapter title (if available){{location}}: Position in book as percentage (0-100){{date_created}}: Date the highlight was created{{title}}: Book title{{author}}: Author name
> {{text}}
{% if annotation %}**Note:** {{annotation}}{% endif %}
*— {{date_created|date('DD MMM YYYY')}}{% if location %} · {{location}}%{% endif %}*- Download the latest release.
- Extract the files into your vault's
.obsidian/plugins/kobo-smart-importerfolder. - Enable the plugin in Obsidian settings.
- Clone this repository.
- Run
npm installto install dependencies. - Run
npm run devto start the development build in watch mode.
This project was partially inspired by October, a Kobo highlights extraction tool for Readwise by Marcus Crane.