Extract highlights, annotations, reading stats, and vocabulary from your Kobo e-reader and generate a PDF, EPUB, or Markdown file.
- GHC and cabal-install
- Pandoc (for PDF and EPUB output)
- Typst (for PDF generation, called by pandoc)
cabal buildkobonotes <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).
| Flag | Description |
|---|---|
--no-stats |
Exclude the "Your Reading Journey" section |
--no-words |
Exclude the "My Words" vocabulary section |
# 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-wordsThe generated document includes:
- Highlights & annotations — organized by book, with human-readable dates
- Your Reading Journey — total books, reading time, highlights count, top books by time spent
- My Words — vocabulary looked up on the device, with the book and date
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)- Connect your Kobo to your computer via USB
- Open the
.kobofolder on the device - Copy the
KoboReader.sqlitefile