Kobo Note Sync

approved

by kennkyou

This plugin has not been manually reviewed by Obsidian staff. Import highlights and annotations from your Kobo e-reader into your notes.

46 downloadsUpdated 1mo agoMIT

Kobo 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 or a custom Kobo SQLite file
  • 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
Kobo Device → copied KoboReader.sqlite → This Plugin → Obsidian Notes

The plugin can read the local Kobo.sqlite database created by the Kobo Desktop App, or a Kobo SQLite database file you copied to a path of your choice, and generates Markdown notes in your vault.

Installation

Manual Installation

  1. Download main.js and manifest.json from the latest release
  2. Create a folder kobo-note-sync in your vault's .obsidian/plugins/ directory
  3. Copy the downloaded files into that folder
  4. Restart Obsidian and enable the plugin in Settings → Community Plugins

Prerequisites

  • For Desktop App sync: Kobo Desktop App installed and signed in with your Kobo account
  • For custom SQLite sync: copy the Kobo SQLite database file from your device, such as .kobo/KoboReader.sqlite, to a stable local path

Usage

  1. In plugin settings, choose a sync source: Kobo Desktop App or Custom SQLite file
  2. Confirm the database path for that source. In Custom SQLite file mode on macOS or Windows, you can use Detect Kobo reader to fill the path automatically.
  3. Open Command Palette (Cmd/Ctrl + P) and run Kobo Note Sync
  4. 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/).

Privacy

This plugin reads the local Kobo SQLite database selected in settings and creates or updates notes in your Obsidian vault. It does not send your reading data to any external server.

Third Party Notices

This plugin includes sql.js, which is licensed under the MIT License. See THIRD_PARTY_NOTICES.md.

Settings

SettingDescription
Sync sourceChoose Kobo Desktop App or a custom SQLite file
Kobo Desktop database pathPath to Kobo.sqlite. Auto-detected based on your OS.
Custom database file pathPath to a copied Kobo SQLite database, such as .kobo/KoboReader.sqlite
Detect Kobo readerFinds /Volumes/*/.kobo/KoboReader.sqlite on macOS or ?:\.kobo\KoboReader.sqlite on Windows and fills the custom database path
Output folderFolder in your vault for highlight notes
Note templateEta.js template for each book note
Highlight templateEta.js template for each highlight

Default Database Paths

OSPath
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

VariableDescription
it.bookTitleBook title
it.bookAuthorAuthor
it.publisherPublisher
it.isbnISBN
it.seriesSeries name
it.seriesNumberSeries number
it.subtitleSubtitle
it.languageLanguage
it.descriptionBook description (HTML stripped)
it.progressReading progress %
it.statusReading status (unread / reading / finished)
it.numPagesNumber of pages
it.wordCountWord count
it.averageRatingAverage rating on Kobo
it.ratingCountRating count
it.timeSpentReadingTime spent reading (seconds)
it.timesStartedReadingTimes started reading
it.dateAddedDate added to library
it.dateCreatedBook creation date
it.lastReadLast read date
it.lastFinishedFinished reading date
it.highlightCountNumber of highlights
it.highlightsRendered highlights content

Highlight Template Variables

VariableDescription
it.highlightTextHighlighted text
it.annotationYour note/annotation
it.dateCreatedHighlight date
it.chapterChapter title
it.chapterProgressProgress 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 %>
<% } %>
---

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.