Getting it into your agent
It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.
git clone --depth 1 https://github.com/tuan3w/obsidian-vault-agentnpx agentmods add skills/tuan3w/obsidian-vault-agent/book-analyzerWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/tuan3w/obsidian-vault-agent/book-analyzer)<a href="https://agentmods.dev/skills/tuan3w/obsidian-vault-agent/book-analyzer"><img src="https://agentmods.dev/badge/skills/tuan3w/obsidian-vault-agent/book-analyzer/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/tuan3w/obsidian-vault-agent/book-analyzer"><img src="https://agentmods.dev/badge/skills/tuan3w/obsidian-vault-agent/book-analyzer.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00036 | $0.04455 |
| Opus 5 | $0.00018 | $0.02227 |
| Sonnet 5 | $0.00007 | $0.00891 |
| Haiku 4.5 | $0.00004 | $0.00445 |
Grade B, and why
book-analyzer scanned grade B with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 11d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Enumerates other installed skillsmediumAgent snooping
Other skills' SKILL.md files reveal prompts, capabilities and secrets that should be invisible to peers.
for dir in .claude/skills/book-analyzer ~/.claude/skills/book-analyzer; do How it starts
The opening of the file, as written. The whole thing — 437 lines — stays where its author put it; the contents beside it link to each section on GitHub.
<Use_When>
- User provides a path to an EPUB or PDF book file
- User says "analyze this book", "process this book", "read this book"
- User wants structured notes from a book-length document (20+ pages) </Use_When>
<Do_Not_Use_When>
- Short documents under 20 pages — use /paper or /process instead
- User wants to read or search specific sections — just use Read tool directly
- User wants EPUB output from markdown — wrong direction
- URL-only input with no file on disk — use /research instead </Do_Not_Use_When>
<Why_This_Exists> Book notes that merely transcribe content are useless — the value is in synthesis. Most book notes in a vault end up sparse because processing a full book manually is exhausting. This skill automates the mechanical work (extraction, splitting, formatting) while delegating the intellectual work (synthesis, assessment, connections) to specialized agents with strict quality constraints. </Why_This_Exists>
<Execution_Policy>
- Run extraction scripts first, verify output before proceeding to analysis
- Delegate chapter analysis to parallel agents (one per chapter, all simultaneous)
- Use Sonnet for chapter analysis, Opus for cross-book synthesis
- Vault integration is conditional — detect .obsidian/ or CLAUDE.md in working directory
- Report progress via TodoWrite at each stage transition
- If extraction fails, stop and report — don't guess at content
- Total chapters capped at 50 — if more, group adjacent chapters into batches </Execution_Policy>
Stage 1: PARSE ARGUMENTS AND EXTRACT
Parse $ARGUMENTS to get the book file path and optional flags.
Argument format:
$ARGUMENTS = "path/to/book.epub" # basic
$ARGUMENTS = "path/to/book.pdf --no-terms" # skip term extraction
$ARGUMENTS = "path/to/book.epub --output ~/Desktop/" # custom output location
Parse logic:
- Split $ARGUMENTS by spaces, treating quoted paths as single tokens
- First non-flag token = file path (REQUIRED — stop if missing)
- Optional flags:
--no-terms(skip concept extraction),--output <dir>(custom output) - Detect format from file extension:
.epub,.pdf,.mobi
Run extraction based on format:
For EPUB:
SKILL_DIR="$(dirname "$(readlink -f "$0" 2>/dev/null || echo "$0")")"
# Find skill directory — check common locations
for dir in .claude/skills/book-analyzer ~/.claude/skills/book-analyzer; do
if [ -f "$dir/scripts/extract_epub.py" ]; then SKILL_DIR="$dir"; break; fi
done
WORK_DIR=".book-work-$(date +%s)"
python3 "$SKILL_DIR/scripts/extract_epub.py" "INPUT_PATH" "$WORK_DIR"
For PDF:
WORK_DIR=".book-work-$(date +%s)"
"$SKILL_DIR/scripts/extract_pdf.sh" "INPUT_PATH" "$WORK_DIR"
For MOBI: Convert to EPUB first with ebook-convert (calibre), then run EPUB extraction.
The work directory is created inside the vault root (e.g., .book-work-1709398200/).
Clean it up after the pipeline completes.
After extraction: Read $WORK_DIR/metadata.json to verify success.
PDF fallback: If metadata shows "needs_fallback": true, use the Claude Read tool instead:
- Read the PDF 20 pages at a time:
Read(file_path="INPUT_PATH", pages="1-20"), thenpages="21-40", etc. - Write each batch to
$WORK_DIR/pages/page_batch_NNN.txt - Update metadata with actual content
What ships with it
10 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- agents/book-synthesizer.md 6.7 KB
- agents/chapter-analyst.md 8.9 KB
- agents/concept-extractor.md 4.3 KB
- agents/section-writer.md 5.0 KB
- examples/sample-output.md 11 KB
- README.md 4.7 KB
- references/extraction-guide.md 9.2 KB
- references/note-templates.md 2.9 KB
- scripts/extract_epub.py 8.1 KB runs code
- scripts/extract_pdf.sh 4.9 KB runs code
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 11d ago First seen · 437 lines · 36 tokens per session scan B dd872c109bdb
book-analyzer is a skill published in the GitHub repository tuan3w/obsidian-vault-agent (39 stars, last pushed 5mo ago), licensed MIT. It adds 36 tokens to every session and 4,455 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it B with 1 finding (enumerates other installed skills). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
pdf-processing
Extract text from PDFs, fill forms, and merge documents.
textbook-to-md
Convert PDF/EPUB textbooks to searchable markdown files for an AI agent's own reference. Use this skill whenever: (1) the user asks to convert a textbook/PDF chapter to markdown, (2) you need to search textbook content and no markdown version exists yet, (3) batch-converting a set of reference books into a knowledge…
pdf-courseware-to-obsidian
A workflow that turns local PDF or PowerPoint course materials into structured Chinese study notes in an Obsidian vault. Obsidian is a note-taking app that stores linked Markdown files and related images.
memorb-ingest
A skill for turning raw content into structured memory pages. It is intended for material such as transcripts, articles, and PDFs.
lazy-english-reader
A tool for processing complete book files such as PDFs, EPUBs, MOBI files, DOCX files, and text files. It can produce Chinese translations, detailed reading notes, Obsidian reading vaults, or notes about themes across chapters.
A set of instructions for working with PDF files, which are documents designed to preserve their layout across devices.