An advanced agentic skill that automates book ingestion, generates executive briefing reports and slide decks via NotebookLM, extracts slide visuals, and compiles them into a unified, rich Obsidian vault summary with semantic image mapping.
- Say Goodbye to Bland Book Summaries: Text-only summaries lack context. This tool embeds visual slide highlights directly inline where they fit logically.
- Chapter-by-Chapter Granularity: Automatically splits textbooks and technical manuals into separate chapters, preserving complex diagrams and MCP instructions.
- Resilient Execution: Implements automatic multi-account cookie rotation and backoffs to bypass NotebookLM's rolling daily generation limits.
flowchart TD
A[Input Book: EPUB/PDF/TXT] --> B{Granularity Classifier}
B -- Textbook / Manual --> C[Split into Chapter Markdown files]
B -- Fiction / General Non-Fiction --> D[Keep as Single Book Unit]
C & D --> E[NotebookLM Upload]
E --> F[Generate Briefing Report & Slide Deck]
F --> G[Extract PDF slides to PNGs via PyMuPDF]
G --> H[Organize into Obsidian Vault Directory]
H --> I[Compile Comprehensive_Summary.md with Contextual Slide Placements]
- 📑 Smart File Conversion: Automatically converts
.epuband unsupported formats into Markdown usingmarkitdown. - 📊 Visual Ingestion: Converts slide deck PDFs into clean PNGs at high resolutions.
- 📂 Obsidian Vault Standard Organization: Automatically places summaries and assets into your specified Obsidian folder.
- 🔁 Multi-Account Rotation: Rotates through Google account cookies (
storage_state.json) automatically whenRATE_LIMITEDis detected. - 🎨 Visual Style Enforcer: Enforce a unified slide theme across chapters using CLI description parameters.
Ensure you have the following installed:
- Python 3.10+
- uv (Python package installer and runner)
- NotebookLM CLI (Authenticated and configured)
Clone the repository:
git clone https://github.com/alexjiaguo/book-summarizer.git
cd book-summarizerCopy the .env.example file to .env and customize the paths for your local machine:
cp .env.example .envOpen .env and configure:
BOOK_SUMMARIZER_DIR: Root folder of your cloned repository.OBSIDIAN_VAULT_PATH: Destination path in your Obsidian vault.
Always source the environment file before running the scripts:
set -a; source .env; set +aRun the conversion script directly or instruct your AI coding agent to execute the SKILL.md rules:
# Process a book using the default settings
uv run python $BOOK_SUMMARIZER_DIR/scripts/convert_book.py path/to/book.epub /tmp/converted_book.mdTo run slide extraction:
uv run --with pymupdf python $BOOK_SUMMARIZER_DIR/scripts/slides_to_images.py /tmp/deck.pdf /tmp/extracted_slides/Contributions, issues, and feature requests are welcome! Feel free to check the issues page.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'feat: add some amazing feature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Distributed under the MIT License. See LICENSE for more information.