read-book
When you want to read and extract structured notes from a book — PDF, EPUB, MOBI, markdown, .txt, pasted text, or URL to a public-domain work. Reads in chunks (by chapter when a TOC exists, by 50-page blocks otherwise), extracts per-chapter TL;DR + key concepts + quotes + action
Install
npx skills add https://github.com/coreyhaines31/makerskills/tree/main/skills/read-book
claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install coreyhaines31-makerskills@llmmart
git clone https://github.com/coreyhaines31/makerskills.git
The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole coreyhaines31/makerskills collection as a plugin from our marketplace. Git is the plain clone.
Skill manifest
/read-book — Extract structured notes from books and long PDFs
Sibling to watch-video. Same content-consumption pattern: ingest → chunk → extract → optionally capture to second-brain.
Step 1 — Parse input
Accept:
- PDF: file path (Claude reads PDFs natively in chunks via
Read pages:"X-Y") - EPUB / MOBI: file path (needs
pandocorebook-convertto extract — seereferences/sources.md) - Markdown / .txt: file path (read directly)
- Pasted text: just use what was pasted
- URL to public-domain text:
WebFetch(Project Gutenberg, archive.org, etc.)
Detect type from file extension. If ambiguous, ask.
Step 2 — Parse mode
| Invocation | Mode | What you get |
|---|---|---|
/read-book <input> |
notes (default) | Chapter-by-chapter: TL;DR + key concepts + quotes + action items + frameworks |
/read-book <input> summary |
summary | Whole-book TL;DR (1 paragraph) + 3–5 key takeaways + who-it's-for |
/read-book <input> quotes |
quotes | Pull-quote highlights only, with chapter context and page refs |
/read-book <input> study |
study | Notes mode + 10–20 spaced-repetition Q&A cards |
If the book is long (>200 pages) and mode is unspecified, default to notes but warn it'll take many tool calls.
Step 3 — Get the text + chunk
See references/sources.md for per-source ingestion. Output of this step: text content + a chunking plan.
Chunking strategy (hybrid, in priority order):
By chapter if a TOC exists (PDF with bookmarks, EPUB/MOBI converted via pandoc preserves chapter headers)
- Use
pdfinfo <pdf> | grep "Pages"for PDFs - Use
pdftotext -layout <pdf> | grep -i "^chapter\|^part"for chapter detection, or read TOC from page 1–5 - EPUB: after
pandoc <epub> -o tmp.md, chunks are between# Chapter Xheaders
- Use
By page count for PDFs without TOC: 50 pages per chunk
By character count for text/markdown: 30,000 chars per chunk (~7,500 words)
Save the chunking plan as ~/Documents/books/<author>-<title-slug>-<YYYY-MM-DD>/chunks.json:
{
"source": "<path>",
"title": "<book title>",
"author": "<author>",
"type": "pdf",
"total_pages": 287,
"chunking": "by-chapter",
"chunks": [
{"i": 0, "label": "Introduction", "pages": "1-12"},
{"i": 1, "label": "Chapter 1: The Problem", "pages": "13-32"},
...
]
}
Step 4 — Read each chunk
Loop:
- Read chunk N (
Readtool withpages:for PDF, full file for text/MD) - Extract per the chosen mode (see
references/output-modes.mdfor templates) - Append the chunk's notes to
~/Documents/books/<workdir>/notes-<NNN>-<label-slug>.md
For PDFs, don't read the whole book in one call — Claude's PDF tool maxes around 10 pages. Process chunks individually.
If a chunk fails to extract anything useful (e.g., it's mostly diagrams or front-matter), log the skip and continue.
Step 5 — Aggregate into final notes file
Combine all chunk notes into a single ~/Documents/books/<workdir>/notes.md matching the mode's full-book template (see references/output-modes.md).
Top of the file always has the metadata block + the second-brain-compatible frontmatter:
source: <file path or URL>
captured: YYYY-MM-DD
type: book
book_title: <title>
author: <author>
mode: notes
chunks: <count>
chunking: <strategy>
# <title> by <author>
## TL;DR
<2–3 sentences>
## Key takeaways
1. ...
## Chapter notes
...
## Cross-references (suggested for wiki)
- Could connect to [[Longevity Biomarkers]] (per Chapter 3 discussion of biomarkers)
- Could connect to [[Productivity & Systems]] (per Chapter 7 framework)
The cross-reference suggestions are advisory — they're suggestions for /sb compile to act on, not auto-applied. Keep responsibilities separated.
Step 6 — Offer to capture to second-brain
Ask:
"Want to capture this to second-brain? I'll write it to
${SECOND_BRAIN_VAULT:-$HOME/Documents/SecondBrain}/raw/highlights-<slug>.mdmatching your vault'shighlights-type prefix."
Default is ask, never auto-write. If yes:
- Copy the final
notes.md(with the second-brain-compatible frontmatter at top) to${SECOND_BRAIN_VAULT:-$HOME/Documents/SecondBrain}/raw/highlights-<slug>.md - Tell the user the path
- Suggest: "Run
/sb compilelater to merge this into wiki pages — the cross-reference suggestions in the footer are starting points."
If the user skips capture, the workdir still has everything — they can grab the file later.
Step 7 — Report
In chat:
- One-line headline:
<title> · <author> · <total_pages or word count> · <mode> · <chunks processed> - Workdir path
- The TL;DR section
- For
notes/studymodes: brief list of top 3 takeaways - For
quotesmode: top 3 quotes - If captured to second-brain: that path too
Modes (quick invocations)
| Invocation | Mode | Behavior |
|---|---|---|
/read-book <input> |
notes | Full pipeline, default mode |
/read-book <input> summary |
summary | Just TL;DR + key takeaways (1 read pass for short books, sampled chapters for long) |
/read-book <input> quotes |
quotes | Chapter-by-chapter, but only output quotes |
/read-book <input> study |
study | Notes + Q&A spaced-rep cards |
/read-book <input> --capture |
(any) | Skip the ask step, auto-write to second-brain raw/ |
/read-book <input> --render pdf |
(any) | Also render the final notes.md to PDF via pandoc (uses ~/.local/share/makerskills/render.css). See references/output-modes.md. |
/read-book <input> --render html |
(any) | Same as above but HTML |
Composes with
second-brain— primary integration: writeshighlights-<slug>.mdtoraw/. Then/sb compilemerges into wiki pages.deep-research— when a research question turns up a book,/read-bookis the next step. Notes feed back into the research brief.business-brainstorm— when scoring an idea (e.g., business books on similar models), read-book provides the structured evidence.decide— when a decision hinges on what an authority has written (e.g., "should I take VC money?" → read Naval / Jason Cohen),read-bookextracts the relevant chapter.slide-deck— book takeaways → talk material (book talk pattern).watch-video— sibling skill, same content-consumption pattern. Audiobook? Usewatch-video transcriptmode.nonfictionskills/fictionskills— when researching to write a book, this skill reads the comp titles.
Error handling
| Failure | Response |
|---|---|
| EPUB/MOBI without pandoc / ebook-convert | Tell the user: brew install pandoc or brew install calibre (calibre includes ebook-convert) |
| PDF is scanned (no text layer) | Suggest OCR first: brew install ocrmypdf && ocrmypdf <pdf> <pdf-ocr.pdf> |
| PDF has no detectable TOC | Fall back to 50-page chunks. Note in the metadata. |
| Book is unusually long (>500 pages) | Warn cost / time, ask if the user wants summary mode instead of full notes |
| Chunk extraction empty | Skip the chunk, log, continue. Don't fail the whole run. |
Notes on quality
- Don't summarize beyond recognition. A 30-page chapter should produce 8–15 lines of notes, not 3. Compression is good; flattening is bad.
- Preserve specifics. Names, numbers, dates, quotes — keep them. The whole point is later-the user can grep "what did Andy Wilkinson say about X" and find it.
- Quotes are sacred. When you flag a quote, copy it verbatim. Note the page if possible.
- Action items are explicit. If the book makes you think "I should do X," flag it explicitly. These are the highest-leverage outputs.
- Frameworks deserve their own bullets. When the author names a framework (e.g., "the 9-dimension filter," "Save the Cat beats"), call it out by name in the notes.
Files (makerskills)
-
references
-
output-modes.md 6.6 KB
# Output mode templates Per-mode templates for the final aggregated `notes.md`. Each chapter chunk produces a partial in the same shape, then the aggregator combines them. --- ## notes (default) Best for: reading nonfiction you want to refer back to. ### Per-chunk template ```markdown ### Chapter <N>: <Chapter Title> **TL;DR**: <2–3 sentence summary> **Key concepts**: - **<concept>** — <1-line explanation> - **<concept>** — <1-line explanation> - (3–7 per chapter, no more) **Quotes worth keeping**: > "<verbatim quote>" (p. X) > "<verbatim quote>" (p. Y) **Action items / Implications**: - <if I believed this chapter, what would I do differently?> - <thing to try / experiment to run> **Frameworks introduced**: - **<Framework name>**: <1-sentence summary of the structure> **Open questions / disagreements**: - <where I push back or want more evidence> ``` ### Full-book aggregation ```markdown # <Book Title> by <Author> ## TL;DR <2–3 sentences synthesizing the whole book> ## Key takeaways 1. <takeaway> 2. <takeaway> 3. <takeaway> (3–7 total — the things that survive forgetting) ## Who this is for <1 sentence> ## Verdict <recommend? skip? read in this order with other books?> ## Chapter notes <all per-chunk outputs concatenated> ## Cross-references (suggested for wiki) - Could connect to [[<existing wiki page>]] (per <chapter ref>) - Could connect to [[<existing wiki page>]] (per <chapter ref>) ## Source - File: <path> - Author: <author> - Pages: <count> - Read on: <date> - Mode: notes ``` --- ## summary Best for: short attention, "did I miss anything important," catching up before a meeting. ### Single-pass template (no per-chunk aggregation) ```markdown # <Book Title> by <Author> — Summary **TL;DR (1 paragraph)**: <4–6 sentences> **Key takeaways**: 1. <takeaway> 2. <takeaway> 3. <takeaway> (3–5 total, not more) **Who this is for**: <1 sentence> **Should you read the whole thing?** <yes / no / just chapters X and Y> **Source**: <path>, <author>, <pages> pages, read on <date> ``` For books over 100 pages, sample chapters (read intro + 2–3 random middle chapters + conclusion) rather than full chunking — summary doesn't justify full processing. --- ## quotes Best for: pull-quote mining for talks, social, content drafting. ### Per-chunk template ```markdown ### Chapter <N>: <Chapter Title> > "<verbatim quote>" — <attribution if not the author> (p. X) > "<verbatim quote>" — (p. Y) > "<verbatim quote>" — (p. Z) (5–15 per chapter for quote-heavy books; 0–3 for sparse chapters — only the keepers) ``` ### Full-book aggregation ```markdown # <Book Title> by <Author> — Quotes <all quotes from all chunks, grouped by chapter, with page refs> ## Source - File: <path> - Read on: <date> ``` No analysis, no commentary — pure verbatim quotes. If you want analysis, use `notes` mode. --- ## study Best for: deep learning, books you want to retain long-term, prep for talks/teaching. ### Per-chunk template Notes-mode output + add: ```markdown **Spaced-repetition Q&A**: 1. **Q**: <question that tests recall of a key concept> **A**: <1–2 sentence answer> 2. **Q**: <question> **A**: <answer> (2–4 Q&A pairs per chapter) ``` ### Full-book aggregation Notes-mode aggregation + add at the end: ```markdown ## Spaced-repetition deck (full) <all Q&A pairs from all chapters, in order, ready to import to Anki/Mochi/RemNote> ## Suggested review cadence - Week 1: review all Q&A daily - Week 2-4: every other day - After that: standard SRS schedule ``` The Q&A format makes the output directly importable to spaced-repetition apps. If the user wants Anki-importable TSV, add a `--anki` flag (one Q-tab-A per line). --- ## Notes shared across modes - **Quote attribution**: when the author quotes someone else, the attribution goes after the quote (`— Andy Wilkinson`). When it's the author themselves, no attribution needed. - **Page numbers**: always include if available. For EPUB-converted books without stable page numbers, use chapter + paragraph approximation (`Ch 3, ¶12`). - **Frameworks** in the `notes` mode get their own bullet because they're the most reusable — a framework you remember outperforms 10 ideas you forget. - **Disagreements / pushback** in `notes` mode is mandatory if you have any. Reading critically beats reading reverently — surface the friction. --- ## Render to PDF / HTML (pandoc) Triggered by `--render pdf` or `--render html` flag on the invocation. Post-processes the final `notes.md` (or `summary.md` / `quotes.md` / `study.md`) into a shareable, styled document. ### Prerequisites ```bash # One-time brew install pandoc # required brew install --cask basictex # required for PDF (smaller than full mactex) # After basictex install, run once: sudo tlmgr update --self && sudo tlmgr install collection-fontsrecommended ``` ### Commands ```bash # PDF pandoc "<workdir>/notes.md" \ --css ~/.local/share/makerskills/render.css \ --metadata title="<book title>" \ --pdf-engine=xelatex \ -o "<workdir>/notes.pdf" # HTML (standalone — CSS inlined into the file) pandoc "<workdir>/notes.md" \ --standalone \ --embed-resources \ --css ~/.local/share/makerskills/render.css \ --metadata title="<book title>" \ -o "<workdir>/notes.html" ``` The shared stylesheet at `~/.local/share/makerskills/render.css` is system-font + max-width 720px + print-optimized. Edit it freely — it's your file, used by `read-book` and `second-brain`. After rendering, open: ```bash open "<workdir>/notes.pdf" # or notes.html ``` ### When to render - **PDF** for archive / email / print — looks the same on any device, no JS - **HTML** for sharing via link (drop into a static-hosted folder) or browser viewing — preserves CSS, can be edited live - Don't auto-render unless `--render` is specified — most book notes stay as markdown for Obsidian / second-brain capture --- ## Alternative: Quarto (`.qmd`) for richer publishing If you ever want **executable code blocks** (Python/R/Julia analysis inline), **native citations + bibliography** (BibTeX/CSL), **multi-format publishing** (slides, websites, books — not just PDF/HTML), or to **turn your reading corpus into a published handbook/site**, consider [Quarto](https://quarto.org) instead of pandoc. Tradeoff: gains rich publishing features; costs an extra tool, breaks Obsidian native rendering (wikilinks especially), adds frontmatter complexity. Skipped by default — see `second-brain/references/schema.md` for the full pros/cons. For most book notes (one-off summaries, shared briefs, personal archive), **pandoc + the shared CSS above is plenty.** -
sources.md 3 KB
# Per-source ingestion How to get usable text from each input type. Skill picks based on file extension or URL pattern. --- ## PDF **Native path** — Claude's `Read` tool handles PDFs directly: ``` Read tool with file_path="<pdf>" pages="1-10" ``` Max ~10 pages per call. For longer books, chunk per the chunking plan. **Get TOC + page count first:** ```bash # Page count pdfinfo "<pdf>" 2>/dev/null | awk '/^Pages:/ {print $2}' # Outline / bookmarks (PDF TOC) pdftk "<pdf>" dump_data 2>/dev/null | grep -A 2 "BookmarkTitle:" | head -50 # Or with mutool (faster, comes with mupdf): mutool show "<pdf>" outline 2>/dev/null | head -50 # Fallback: scan the first 5 pages for "Contents" or "Table of Contents" Read tool with file_path="<pdf>" pages="1-5" ``` **Scanned PDFs (no text layer):** ```bash # Check if text exists pdftotext -layout "<pdf>" - 2>/dev/null | wc -c # If <1000 chars for a 100-page book, it's scanned. Need OCR: brew install ocrmypdf ocrmypdf "<pdf>" "<pdf-ocr.pdf>" # Then proceed with the OCR'd version ``` --- ## EPUB Convert to markdown via pandoc (preserves chapter structure): ```bash # Install once: brew install pandoc pandoc "<book.epub>" -o "<workdir>/book.md" --wrap=none ``` The output has `# Chapter X` headers — easy to chunk. For richer metadata + cover extraction, use calibre's `ebook-convert`: ```bash # Install once: brew install calibre ebook-convert "<book.epub>" "<workdir>/book.txt" # Calibre also extracts metadata.opf alongside ``` --- ## MOBI / AZW3 Use `ebook-convert` (calibre) — pandoc doesn't handle MOBI well: ```bash ebook-convert "<book.mobi>" "<workdir>/book.epub" # Then pandoc as above: pandoc "<workdir>/book.epub" -o "<workdir>/book.md" --wrap=none ``` Or directly to txt: ```bash ebook-convert "<book.mobi>" "<workdir>/book.txt" ``` --- ## Markdown / .txt Just `Read` it. No conversion. Chunk by character count (30K per chunk). --- ## Pasted text Use what was pasted. Treat like a single chunk if short (<30K chars), or chunk by character count if long. If the user pastes only a section of a book ("read this chapter for me"), treat as 1-chunk and skip the per-chapter aggregation. --- ## URL (public-domain text) ```bash # WebFetch the URL # Project Gutenberg pattern: https://www.gutenberg.org/files/<id>/<id>-0.txt # Archive.org pattern: https://archive.org/stream/<id>/<id>_djvu.txt ``` For Project Gutenberg, prefer the `.txt` URL over HTML — clean text, easy to chunk. --- ## Metadata extraction For every source, extract these into the workdir's `metadata.json`: ```json { "title": "<book title>", "author": "<author>", "year": "<year if available>", "source": "<original path or URL>", "type": "pdf" | "epub" | "mobi" | "markdown" | "text" | "url", "page_count": 287, "word_count": 95000, "has_toc": true, "captured_at": "YYYY-MM-DD" } ``` For PDFs: `pdfinfo` gives title, author, page count out of the box. For EPUB: `unzip -p <file> META-INF/container.xml` and the OPF file inside have full metadata. For markdown/text: ask the user for title + author if not in the filename.
-
-
SKILL.md 8.5 KB
--- name: read-book description: When you want to read and extract structured notes from a book — PDF, EPUB, MOBI, markdown, .txt, pasted text, or URL to a public-domain work. Reads in chunks (by chapter when a TOC exists, by 50-page blocks otherwise), extracts per-chapter TL;DR + key concepts + quotes + action items + frameworks, and offers to capture to second-brain raw/ as a highlights- file. Four modes — notes (default, chapter-by-chapter), summary (whole-book TL;DR + 3–5 takeaways), quotes (pull-quote highlights only), study (notes + Q&A spaced-rep prep). Triggers on "/read-book," "read this book," "extract notes from this PDF," "what's in this book," "summarize this ebook," "pull quotes from this." Sibling to watch-video (same content-consumption pattern, different medium). metadata: version: 0.1.0 --- # /read-book — Extract structured notes from books and long PDFs Sibling to `watch-video`. Same content-consumption pattern: ingest → chunk → extract → optionally capture to second-brain. ## Step 1 — Parse input Accept: - **PDF**: file path (Claude reads PDFs natively in chunks via `Read pages:"X-Y"`) - **EPUB / MOBI**: file path (needs `pandoc` or `ebook-convert` to extract — see `references/sources.md`) - **Markdown / .txt**: file path (read directly) - **Pasted text**: just use what was pasted - **URL** to public-domain text: `WebFetch` (Project Gutenberg, archive.org, etc.) Detect type from file extension. If ambiguous, ask. ## Step 2 — Parse mode | Invocation | Mode | What you get | |---|---|---| | `/read-book <input>` | **notes** (default) | Chapter-by-chapter: TL;DR + key concepts + quotes + action items + frameworks | | `/read-book <input> summary` | summary | Whole-book TL;DR (1 paragraph) + 3–5 key takeaways + who-it's-for | | `/read-book <input> quotes` | quotes | Pull-quote highlights only, with chapter context and page refs | | `/read-book <input> study` | study | Notes mode + 10–20 spaced-repetition Q&A cards | If the book is long (>200 pages) and mode is unspecified, default to `notes` but warn it'll take many tool calls. ## Step 3 — Get the text + chunk See `references/sources.md` for per-source ingestion. Output of this step: text content + a chunking plan. **Chunking strategy** (hybrid, in priority order): 1. **By chapter** if a TOC exists (PDF with bookmarks, EPUB/MOBI converted via pandoc preserves chapter headers) - Use `pdfinfo <pdf> | grep "Pages"` for PDFs - Use `pdftotext -layout <pdf> | grep -i "^chapter\|^part"` for chapter detection, or read TOC from page 1–5 - EPUB: after `pandoc <epub> -o tmp.md`, chunks are between `# Chapter X` headers 2. **By page count** for PDFs without TOC: 50 pages per chunk 3. **By character count** for text/markdown: 30,000 chars per chunk (~7,500 words) Save the chunking plan as `~/Documents/books/<author>-<title-slug>-<YYYY-MM-DD>/chunks.json`: ```json { "source": "<path>", "title": "<book title>", "author": "<author>", "type": "pdf", "total_pages": 287, "chunking": "by-chapter", "chunks": [ {"i": 0, "label": "Introduction", "pages": "1-12"}, {"i": 1, "label": "Chapter 1: The Problem", "pages": "13-32"}, ... ] } ``` ## Step 4 — Read each chunk Loop: 1. Read chunk N (`Read` tool with `pages:` for PDF, full file for text/MD) 2. Extract per the chosen mode (see `references/output-modes.md` for templates) 3. Append the chunk's notes to `~/Documents/books/<workdir>/notes-<NNN>-<label-slug>.md` For PDFs, **don't read the whole book in one call** — Claude's PDF tool maxes around 10 pages. Process chunks individually. If a chunk fails to extract anything useful (e.g., it's mostly diagrams or front-matter), log the skip and continue. ## Step 5 — Aggregate into final notes file Combine all chunk notes into a single `~/Documents/books/<workdir>/notes.md` matching the mode's full-book template (see `references/output-modes.md`). Top of the file always has the metadata block + the second-brain-compatible frontmatter: ```markdown source: <file path or URL> captured: YYYY-MM-DD type: book book_title: <title> author: <author> mode: notes chunks: <count> chunking: <strategy> # <title> by <author> ## TL;DR <2–3 sentences> ## Key takeaways 1. ... ## Chapter notes ... ## Cross-references (suggested for wiki) - Could connect to [[Longevity Biomarkers]] (per Chapter 3 discussion of biomarkers) - Could connect to [[Productivity & Systems]] (per Chapter 7 framework) ``` The cross-reference suggestions are advisory — they're suggestions for `/sb compile` to act on, not auto-applied. Keep responsibilities separated. ## Step 6 — Offer to capture to second-brain Ask: > *"Want to capture this to second-brain? I'll write it to `${SECOND_BRAIN_VAULT:-$HOME/Documents/SecondBrain}/raw/highlights-<slug>.md` matching your vault's `highlights-` type prefix."* Default is **ask**, never auto-write. If yes: 1. Copy the final `notes.md` (with the second-brain-compatible frontmatter at top) to `${SECOND_BRAIN_VAULT:-$HOME/Documents/SecondBrain}/raw/highlights-<slug>.md` 2. Tell the user the path 3. Suggest: *"Run `/sb compile` later to merge this into wiki pages — the cross-reference suggestions in the footer are starting points."* If the user skips capture, the workdir still has everything — they can grab the file later. ## Step 7 — Report In chat: - One-line headline: `<title> · <author> · <total_pages or word count> · <mode> · <chunks processed>` - Workdir path - The TL;DR section - For `notes` / `study` modes: brief list of top 3 takeaways - For `quotes` mode: top 3 quotes - If captured to second-brain: that path too ## Modes (quick invocations) | Invocation | Mode | Behavior | |---|---|---| | `/read-book <input>` | notes | Full pipeline, default mode | | `/read-book <input> summary` | summary | Just TL;DR + key takeaways (1 read pass for short books, sampled chapters for long) | | `/read-book <input> quotes` | quotes | Chapter-by-chapter, but only output quotes | | `/read-book <input> study` | study | Notes + Q&A spaced-rep cards | | `/read-book <input> --capture` | (any) | Skip the ask step, auto-write to second-brain raw/ | | `/read-book <input> --render pdf` | (any) | Also render the final `notes.md` to PDF via pandoc (uses `~/.local/share/makerskills/render.css`). See `references/output-modes.md`. | | `/read-book <input> --render html` | (any) | Same as above but HTML | ## Composes with - `second-brain` — primary integration: writes `highlights-<slug>.md` to `raw/`. Then `/sb compile` merges into wiki pages. - `deep-research` — when a research question turns up a book, `/read-book` is the next step. Notes feed back into the research brief. - `business-brainstorm` — when scoring an idea (e.g., business books on similar models), read-book provides the structured evidence. - `decide` — when a decision hinges on what an authority has written (e.g., "should I take VC money?" → read Naval / Jason Cohen), `read-book` extracts the relevant chapter. - `slide-deck` — book takeaways → talk material (book talk pattern). - `watch-video` — sibling skill, same content-consumption pattern. Audiobook? Use `watch-video transcript` mode. - `nonfictionskills` / `fictionskills` — when researching to *write* a book, this skill reads the comp titles. ## Error handling | Failure | Response | |---|---| | EPUB/MOBI without pandoc / ebook-convert | Tell the user: `brew install pandoc` or `brew install calibre` (calibre includes `ebook-convert`) | | PDF is scanned (no text layer) | Suggest OCR first: `brew install ocrmypdf && ocrmypdf <pdf> <pdf-ocr.pdf>` | | PDF has no detectable TOC | Fall back to 50-page chunks. Note in the metadata. | | Book is unusually long (>500 pages) | Warn cost / time, ask if the user wants summary mode instead of full notes | | Chunk extraction empty | Skip the chunk, log, continue. Don't fail the whole run. | ## Notes on quality - **Don't summarize beyond recognition.** A 30-page chapter should produce 8–15 lines of notes, not 3. Compression is good; flattening is bad. - **Preserve specifics.** Names, numbers, dates, quotes — keep them. The whole point is later-the user can grep "what did Andy Wilkinson say about X" and find it. - **Quotes are sacred.** When you flag a quote, copy it verbatim. Note the page if possible. - **Action items are explicit.** If the book makes you think "I should do X," flag it explicitly. These are the highest-leverage outputs. - **Frameworks deserve their own bullets.** When the author names a framework (e.g., "the 9-dimension filter," "Save the Cat beats"), call it out by name in the notes.
Comments (0)
Sign in to join the conversation.
Reviews (0)
No reviews yet.
No comments yet.