- Category
- Education
- Rank
- No. 1331Tools index
Previous survey · No. 1337 ·
- Pricing
- Open Source
- Type
- TOOL
- Builder
- karpathy
- GitHub
- 3.9k stars
- Date
About
Andrej Karpathy's quick illustration of reading books together with LLMs — annotate, ask questions, discuss as you go.
What it does
Reader3 converts an EPUB into a small local web library. It extracts metadata, chapters, navigation structure, images, cleaned HTML, and plain text, then serves each section through a browser with table-of-contents and previous-or-next navigation.
Why it's ranked here
This is a convincing small prototype because its entire workflow stays understandable: preprocess a book, start a local server, and read. Its value lies in simplicity and hackability, not completeness. The author explicitly provides it without support or plans for improvement.
What's good
The parser preserves EPUB reading order, handles nested navigation, supplies a fallback when navigation is absent, rewrites image references, and removes scripts, forms, frames, styles, and other unwanted elements. A ten-book cache avoids reading serialized book data from disk on every page request.
Tradeoffs
LLM interaction is entirely manual through copying and pasting. There is no built-in chat, annotation system, search interface, or model integration shown. Importing recreates the book’s output directory, storage relies on Python pickle files, and navigation anchors are discarded when table-of-contents entries open a section.
How to use it well
Use it for private, local reading experiments where chapter-sized browser pages make manual LLM conversations convenient. It also suits engineers wanting a compact base to modify. Do not choose it for maintained ebook library management, integrated AI discussion, durable annotations, or a supported end-user product.
Technical notes+
reader3.py uses EbookLib and Beautiful Soup to parse EPUB metadata, spine documents, TOC entries, and images; it sanitizes content, extracts plain text, and serializes a Book with pickle. server.py exposes FastAPI HTML routes, scans _data directories, caches up to ten loaded books, and serves extracted images after basename normalization. templates/reader.html builds the spine map in JavaScript for TOC navigation, while templates/library.html renders discovered books. pyproject.toml requires Python 3.10 or newer and declares Beautiful Soup, EbookLib, FastAPI, Jinja, and Uvicorn. uv.lock records resolved dependencies.
Observed
- License
- MIT
- Primary language
- Python
- Runtime
- Python 3.10 or newer
- Packaging and install surface
- uv project with dependencies declared in pyproject.toml and resolved in uv.lock
- Interfaces
- Command-line EPUB preprocessing plus a self-hosted browser interface on localhost
- Storage model
- Processed books are stored in per-book data directories with extracted images and serialized pickle data
Read from README.md, pyproject.toml, server.py, reader3.py, uv.lock, .python-version, templates/reader.html, templates/library.html.
What it can do
Annotate books while reading
Book text and user annotations → Annotated book with highlighted sections and notes
Answer questions about book content
User questions about the book → AI-generated answers based on book context
Facilitate discussion about book topics
Book content and discussion prompts → Interactive conversation about book themes and concepts
Provide real-time reading assistance
Current reading position and user queries → Contextual explanations and clarifications
Generate insights about book passages
Selected text sections from the book → AI analysis and interpretation of the content
Tags
Tech Stack
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.
