Claudeclaw add-pdf-reader
Add PDF reading to ClaudeClaw agents. Extracts text from PDFs via pdftotext CLI. Handles WhatsApp attachments, URLs, and local files.
git clone https://github.com/sbusso/claudeclaw
T=$(mktemp -d) && git clone --depth=1 https://github.com/sbusso/claudeclaw "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/add-pdf-reader" ~/.claude/skills/sbusso-claudeclaw-add-pdf-reader && rm -rf "$T"
skills/add-pdf-reader/SKILL.mdAdd 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
exists — skip to Phase 3 if already appliedagent/skills/pdf-reader/pdf-reader - Confirm WhatsApp is installed first (
merged). This skill modifies WhatsApp channel files.skill/whatsapp
Phase 2: Apply Code Changes
Ensure WhatsApp fork remote
git remote -v
If
whatsapp is missing, add it:
git remote add whatsapp https://github.com/qwibitai/claudeclaw-whatsapp.git
Merge the skill branch
git fetch whatsapp skill/pdf-reader git merge whatsapp/skill/pdf-reader || { git checkout --theirs package-lock.json git add package-lock.json git merge --continue }
This merges in:
(agent-facing documentation)agent/skills/pdf-reader/SKILL.md
(CLI script)agent/skills/pdf-reader/pdf-reader
inpoppler-utilssrc/runtimes/docker/Dockerfile- PDF attachment download in
src/channels/whatsapp.ts - PDF tests in
src/channels/whatsapp.test.ts
If the merge reports conflicts, resolve them by reading the conflicted files and understanding the intent of both sides.
Validate
npm run build npx vitest run src/channels/whatsapp.test.ts
Rebuild container
./src/runtimes/docker/build.sh
Service name: Derived from the directory name:
(macOS) /com.claudeclaw.<dirname>(Linux). For example, if cwd isclaudeclaw-<dirname>, the service ismy-assistant. Determine the correct service name before running service commands below.com.claudeclaw.my-assistant
Restart service
launchctl kickstart -k gui/$(id -u)/com.claudeclaw # macOS # Linux: systemctl --user restart claudeclaw
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/claudeclaw.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
./src/runtimes/docker/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.