master
- Add text cleaning to remove page reference numbers (e.g., "10After" -> "After") - Implement cleanHighlightText() function with boundary detection - Add NickelMenu configuration for UI integration - Create sync wrapper scripts (with and without FBInk notifications) - Add installation guides for Kobo deployment - Include pointer/slice explanation examples for learning Features: - Extracts highlights from Kobo SQLite database - Cleans page references from academic texts - Computes SHA-256 hashes for deduplication - POSTs JSON to Flask API endpoint - Supports ARM static linking for Kobo hardware - Optional FBInk notifications for user feedback 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Kobo Highlight Exfiltrator
A simple, statically-linked binary to extract highlights from your Kobo e-reader.
Features
- Zero dependencies: Fully statically linked with musl libc and SQLite
- Cross-platform: Builds for both x86_64 (development) and ARM (Kobo)
- Small binary: ~780KB for ARM release build
- Simple: Just point it at your KoboReader.sqlite database
Building
For local testing (x86_64)
zig build
./zig-out/bin/kb_exfiltrator local-dev.sqlite
For Kobo (ARM)
./build-kobo.sh
# or manually:
zig build -Dtarget=arm-linux-musleabihf -Doptimize=ReleaseSmall
Usage on Kobo
-
Copy
zig-out/bin/kb_exfiltratorto your Kobo (via USB or SSH) -
Run:
./kb_exfiltrator /mnt/onboard/.kobo/KoboReader.sqlite -
Or save to a file:
./kb_exfiltrator /mnt/onboard/.kobo/KoboReader.sqlite > highlights.txt
How It Works
The program:
- Opens the SQLite database at the path you provide
- Queries the
Bookmarktable for all highlights (entries with non-NULLText) - Displays each highlight with:
- Date created
- Book identifier (ContentID)
- Highlight text
- Any annotations/notes you added
Dependencies
All dependencies are bundled into the binary:
- SQLite 3.48.0 (amalgamation build)
- musl libc (for ARM target)
Requirements
- Zig 0.15.2 or later
Notes
- The binary is statically linked, so you can copy just the single file to your Kobo
- Uses musl libc for smaller binary size and better portability
- SQLite is compiled with:
SQLITE_THREADSAFE=0: No threading support (smaller, faster)SQLITE_OMIT_LOAD_EXTENSION: No dynamic extensions (more secure)
Languages
Zig
88.4%
Shell
11.6%