alx741/kobonotes

★ 0Forks 0HaskellGitHub ↗Compare

README

Kobonotes

Extract highlights, annotations, reading stats, and vocabulary from your Kobo e-reader and generate a PDF, EPUB, or Markdown file.

Prerequisites

Building

cabal build

Usage

kobonotes <input.sqlite> <output-file> [format] [--no-stats] [--no-words]

The output format is inferred from the file extension. You can also specify it explicitly as the third argument (md, pdf, or epub).

Options

Flag Description
--no-stats Exclude the "Your Reading Journey" section
--no-words Exclude the "My Words" vocabulary section

Examples

# Generate Markdown
kobonotes KoboReader.sqlite highlights.md

# Generate PDF (via pandoc + typst)
kobonotes KoboReader.sqlite highlights.pdf

# Generate EPUB
kobonotes KoboReader.sqlite highlights.epub

# PDF without stats or vocabulary
kobonotes KoboReader.sqlite highlights.pdf --no-stats --no-words

Output

The generated document includes:

  1. Highlights & annotations — organized by book, with human-readable dates
  2. Your Reading Journey — total books, reading time, highlights count, top books by time spent
  3. My Words — vocabulary looked up on the device, with the book and date

Library

Kobonotes is also available as a Haskell library for use in other projects:

import Kobonotes.Extraction (extractBooks)
import Kobonotes.Generation (renderMarkdown, renderStats, renderWords)
import Kobonotes.Stats (extractStats)
import Kobonotes.Words (extractWords)

How to get KoboReader.sqlite

  1. Connect your Kobo to your computer via USB
  2. Open the .kobo folder on the device
  3. Copy the KoboReader.sqlite file

Contributors

alx741

Issues