README file from
GithubKobo Note Sync
An Obsidian plugin that imports highlights and annotations from your Kobo e-reader into Obsidian notes.
Features
- Import highlights and annotations from Kobo Desktop App's SQLite database
- Customizable note and highlight templates using Eta.js syntax
- Append-only sync — existing highlights in Obsidian are preserved even if deleted on Kobo
- Rich metadata support (23 book variables + 5 highlight variables)
- Cross-platform: macOS and Windows
- i18n: English and Traditional Chinese (follows Obsidian language setting)
How It Works
Kobo Device / App → Kobo Cloud → Kobo Desktop App → Kobo.sqlite → This Plugin → Obsidian Notes
The plugin reads the local Kobo.sqlite database created by the Kobo Desktop App and generates Markdown notes in your vault.
Installation
Manual Installation
- Download
main.js,manifest.json, andsql-wasm.wasmfrom the latest release - Create a folder
kobo-note-syncin your vault's.obsidian/plugins/directory - Copy the downloaded files into that folder
- Restart Obsidian and enable the plugin in Settings → Community Plugins
Prerequisites
- Kobo Desktop App installed and signed in with your Kobo account
- Sync your library in Kobo Desktop App so that
Kobo.sqliteis up to date
Usage
- Open Command Palette (
Cmd/Ctrl + P) and run Kobo Note Sync - Or click the book icon in the left sidebar
Highlights will be created as Markdown files in the configured output folder (default: Kobo Note Sync/).
Settings
| Setting | Description |
|---|---|
| Kobo database path | Path to Kobo.sqlite. Auto-detected based on your OS. |
| Output folder | Folder in your vault for highlight notes |
| Note template | Eta.js template for each book note |
| Highlight template | Eta.js template for each highlight |
Default Database Paths
| OS | Path |
|---|---|
| macOS | ~/Library/Application Support/Kobo/Kobo Desktop Edition/Kobo.sqlite |
| Windows | %LOCALAPPDATA%\Kobo\Kobo Desktop Edition\Kobo.sqlite |
Templates
Templates use Eta.js syntax: <%= it.variableName %> for output, <% if (it.condition) { %> for logic.
Note Template Variables
| Variable | Description |
|---|---|
it.bookTitle |
Book title |
it.bookAuthor |
Author |
it.publisher |
Publisher |
it.isbn |
ISBN |
it.series |
Series name |
it.seriesNumber |
Series number |
it.subtitle |
Subtitle |
it.language |
Language |
it.description |
Book description (HTML stripped) |
it.progress |
Reading progress % |
it.status |
Reading status (unread / reading / finished) |
it.numPages |
Number of pages |
it.wordCount |
Word count |
it.averageRating |
Average rating on Kobo |
it.ratingCount |
Rating count |
it.timeSpentReading |
Time spent reading (seconds) |
it.timesStartedReading |
Times started reading |
it.dateAdded |
Date added to library |
it.dateCreated |
Book creation date |
it.lastRead |
Last read date |
it.lastFinished |
Finished reading date |
it.highlightCount |
Number of highlights |
it.highlights |
Rendered highlights content |
Highlight Template Variables
| Variable | Description |
|---|---|
it.highlightText |
Highlighted text |
it.annotation |
Your note/annotation |
it.dateCreated |
Highlight date |
it.chapter |
Chapter title |
it.chapterProgress |
Progress within chapter (0-1) |
Example Templates
Note template:
---
title: "<%= it.bookTitle %>"
author: "<%= it.bookAuthor %>"
publisher: "<%= it.publisher %>"
last_read: <%= it.lastRead %>
highlight_count: <%= it.highlightCount %>
source: Kobo
---
<%= it.highlights %>
Highlight template:
*<%= it.dateCreated %>*<% if (it.chapter) { %> | <%= it.chapter %><% } %>
> <%= it.highlightText %>
<% if (it.annotation) { %>
**Note:** <%= it.annotation %>
<% } %>
---