AGENTS-COLLECTION add-pdf-reader
Add PDF reading to NanoClaw agents. Extracts text from PDFs via pdftotext CLI. Handles WhatsApp attachments, URLs, and local files.
install
source · Clone the upstream repo
git clone https://github.com/mk-knight23/AGENTS-COLLECTION
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/mk-knight23/AGENTS-COLLECTION "$T" && mkdir -p ~/.claude/skills && cp -r "$T/SKILLS/NANOCLAW/ADD-PDF-READER" ~/.claude/skills/mk-knight23-agents-collection-add-pdf-reader && rm -rf "$T"
manifest:
SKILLS/NANOCLAW/ADD-PDF-READER/SKILL.mdsource content
Add PDF Reader
Adds PDF reading capability to all container agents using poppler-utils (pdftotext/pdfinfo). PDFs sent as WhatsApp attachments are auto-downloaded to the group workspace.
Phase 1: Pre-flight
Check if already applied
Read
.nanoclaw/state.yaml. If add-pdf-reader is in applied_skills, skip to Phase 3 (Verify).
Phase 2: Apply Code Changes
Initialize skills system (if needed)
If
.nanoclaw/ directory doesn't exist:
npx tsx scripts/apply-skill.ts --init
Apply the skill
npx tsx scripts/apply-skill.ts .claude/skills/add-pdf-reader
This deterministically:
- Adds
(agent-facing documentation)container/skills/pdf-reader/SKILL.md - Adds
(CLI script)container/skills/pdf-reader/pdf-reader - Three-way merges
+ COPY intopoppler-utilscontainer/Dockerfile - Three-way merges PDF attachment download into
src/channels/whatsapp.ts - Three-way merges PDF tests into
src/channels/whatsapp.test.ts - Records application in
.nanoclaw/state.yaml
If merge conflicts occur, read the intent files:
modify/container/Dockerfile.intent.mdmodify/src/channels/whatsapp.ts.intent.mdmodify/src/channels/whatsapp.test.ts.intent.md
Validate
npm test npm run build
Rebuild container
./container/build.sh
Restart service
launchctl kickstart -k gui/$(id -u)/com.nanoclaw # macOS # Linux: systemctl --user restart nanoclaw
Phase 3: Verify
Test PDF extraction
Send a PDF file in any registered WhatsApp chat. The agent should:
- Download the PDF to
attachments/ - Respond acknowledging the PDF
- Be able to extract text when asked
Test URL fetching
Ask the agent to read a PDF from a URL. It should use
pdf-reader fetch <url>.
Check logs if needed
tail -f logs/nanoclaw.log | grep -i pdf
Look for:
— successful downloadDownloaded PDF attachment
— media download issueFailed to download PDF attachment
Troubleshooting
Agent says pdf-reader command not found
Container needs rebuilding. Run
./container/build.sh and restart the service.
PDF text extraction is empty
The PDF may be scanned (image-based). pdftotext only handles text-based PDFs. Consider using the agent-browser to open the PDF visually instead.
WhatsApp PDF not detected
Verify the message has
documentMessage with mimetype: application/pdf. Some file-sharing apps send PDFs as generic files without the correct mimetype.