gitmyhub

scribe-library

Python ★ 27 updated 3mo ago

A local server for browsing your Kindle Scribe

Scribe Library is a local, offline web server for browsing, reading, and syncing handwritten notebooks and ebooks from a Kindle Scribe over USB.

PythonFlaskWeasyPrintsetup: moderatecomplexity 3/5

Scribe Library is a local server that lets you browse everything stored on a Kindle Scribe, an e-reader that supports handwritten notebooks alongside regular ebooks. It runs entirely offline on your own computer and connects to the device over USB. Once you sync, you get a web page with three sections: a notebooks tab showing your handwritten pages decoded into readable PDFs, a books tab for purchased and sideloaded books in formats like KFX, AZW3, PDF, and EPUB, and a screenshots tab that shows every screenshot on the device as a grid of thumbnails you can view or delete.

Most formats can be read directly in the browser with proper page layout, and there is a zen mode that hides all the interface controls except the page itself, plus a book mode that shows two pages side by side with a page flip animation. You can also drag and drop files onto the app to push new PDFs, EPUBs, or other documents onto the Kindle over USB.

The project tries to decode handwritten annotations you make on top of sideloaded PDFs and overlay them back onto the PDF when you view it, but the README is upfront that this feature is experimental and unvalidated, since the storage format for these annotations has changed across Kindle firmware versions. A separate diagnostic script lets you inspect your own device's annotation data to help the format decoding along.

Setup requires installing some system libraries such as Cairo, libusb, and Pango, followed by the Python dependencies from a requirements file. Once your Kindle Scribe is plugged in and unlocked, you run the server with a sync flag to pull content from the device, then open a local web address in your browser. Purchased books with strong DRM protection may not decode successfully. The project is licensed under GPL v3 because it links against a vendored KFX decoding library that is also GPL v3.

Where it fits