pdf-deep-reader is an Agent Skills compatible skill for local-first, token-frugal PDF understanding. It extracts and structures PDFs or long pasted PDF text into cached Markdown/JSON files, then lets an agent retrieve only the relevant fragments for cited answers.
The helper code is now TypeScript. PDF extraction uses local pdftotext from Poppler; pasted/extracted text can be indexed without PDF tooling.
pdf-deep-reader-skill/
├── package.json
├── tsconfig.json
├── README.md
├── SECURITY.md
├── scripts/
│ └── validate.ts
└── skills/
└── pdf-deep-reader/
├── package.json
├── tsconfig.json
├── SKILL.md
└── scripts/
└── pdf_tool.ts
pi install git:github.com/manrods/pdf-deep-reader-skillRestart Pi after installing so the skill is discovered.
Copy the skill directory:
mkdir -p ~/.pi/agent/skills
cp -r skills/pdf-deep-reader ~/.pi/agent/skills/
pnpm --dir ~/.pi/agent/skills/pdf-deep-reader install
pnpm --dir ~/.pi/agent/skills/pdf-deep-reader buildpnpm install
pnpm run typecheck
pnpm run build
pnpm run validatePrepare a PDF:
pnpm run build
pnpm pdf-tool -- prepare "file.pdf"Prepare a directory of PDFs:
pnpm pdf-tool -- prepare "path/to/folder"Prepare long pasted PDF text saved to a text file:
pnpm pdf-tool -- prepare-text --text-file pasted.txt --name source-nameSearch cached chunks:
pnpm pdf-tool -- search "file.pdf" "your question" --top 8Show selected chunks:
pnpm pdf-tool -- show "file.pdf" p0012-c00Print diagnostics or the document map:
pnpm pdf-tool -- manifest "file.pdf"
pnpm pdf-tool -- map "file.pdf"By default, cache files are written to .pi/pdf-cache/ in the current project. You can use a global cache with --cache global.
Each processed document may generate:
manifest.json— diagnostics, parser, confidence, warnings;document.md— extracted readable document, unless--no-raw-textis used;document-map.md— compact page/section/table/figure map;pages.jsonl— per-page extracted text and confidence;sections.jsonl— detected sections;tables.jsonl— extracted tables when possible;figures.jsonl— detected/extracted figures and captions when possible;chunks.jsonl— retrieval chunks with metadata;assets/— extracted images, when supported by the local helper.
- Node.js 20+ and
pnpmfor building/running the TypeScript helper. - Poppler
pdftotextfor direct PDF extraction.
The helper does not install system dependencies automatically. If pdftotext is unavailable, use prepare-text with already extracted text or install Poppler manually.
- Local-first: no cloud upload behavior is built into the helper script.
- No automatic dependency installation.
- PDF/text contents are treated as untrusted data.
- The skill does not pre-approve shell execution via
allowed-tools. - Runtime caches and extracted PDF content are ignored by git.
Read SECURITY.md before installing or running the helper on sensitive documents.
pdf-deep-reader es una skill compatible con Agent Skills para entender PDFs de forma local y minimizando tokens. Extrae y estructura PDFs o texto largo pegado desde un PDF en archivos Markdown/JSON cacheados, y luego permite que el agente recupere solo los fragmentos relevantes para responder con citas.
El código auxiliar ahora está en TypeScript. La extracción directa de PDFs usa pdftotext de Poppler de forma local; el texto pegado o ya extraído puede indexarse sin herramientas de PDF.
pdf-deep-reader-skill/
├── package.json
├── tsconfig.json
├── README.md
├── SECURITY.md
├── scripts/
│ └── validate.ts
└── skills/
└── pdf-deep-reader/
├── package.json
├── tsconfig.json
├── SKILL.md
└── scripts/
└── pdf_tool.ts
pi install git:github.com/manrods/pdf-deep-reader-skillReinicia Pi después de instalar para que detecte la skill.
Copia la carpeta de la skill:
mkdir -p ~/.pi/agent/skills
cp -r skills/pdf-deep-reader ~/.pi/agent/skills/
pnpm --dir ~/.pi/agent/skills/pdf-deep-reader install
pnpm --dir ~/.pi/agent/skills/pdf-deep-reader buildpnpm install
pnpm run typecheck
pnpm run build
pnpm run validatePreparar un PDF:
pnpm run build
pnpm pdf-tool -- prepare "archivo.pdf"Preparar una carpeta con PDFs:
pnpm pdf-tool -- prepare "ruta/a/carpeta"Preparar texto largo pegado desde un PDF y guardado como archivo:
pnpm pdf-tool -- prepare-text --text-file pegado.txt --name nombre-fuenteBuscar chunks cacheados:
pnpm pdf-tool -- search "archivo.pdf" "tu pregunta" --top 8Mostrar chunks seleccionados:
pnpm pdf-tool -- show "archivo.pdf" p0012-c00Imprimir diagnóstico o mapa del documento:
pnpm pdf-tool -- manifest "archivo.pdf"
pnpm pdf-tool -- map "archivo.pdf"Por defecto, la caché se guarda en .pi/pdf-cache/ dentro del proyecto actual. Puedes usar caché global con --cache global.
Cada documento procesado puede generar:
manifest.json— diagnóstico, parser, confianza, advertencias;document.md— documento legible extraído, salvo que se use--no-raw-text;document-map.md— mapa compacto de páginas/secciones/tablas/figuras;pages.jsonl— texto extraído por página y confianza;sections.jsonl— secciones detectadas;tables.jsonl— tablas extraídas cuando sea posible;figures.jsonl— figuras/captions detectadas o extraídas cuando sea posible;chunks.jsonl— fragmentos recuperables con metadata;assets/— imágenes extraídas, cuando el helper local lo soporte.
- Node.js 20+ y
pnpmpara compilar/ejecutar el helper TypeScript. - Poppler
pdftotextpara extracción directa de PDFs.
El helper no instala dependencias del sistema automáticamente. Si pdftotext no está disponible, usa prepare-text con texto ya extraído o instala Poppler manualmente.
- Local-first: el script auxiliar no incluye comportamiento de subida a la nube.
- No instala dependencias automáticamente.
- El contenido de PDFs/textos se trata como dato no confiable.
- La skill no preautoriza ejecución de shell mediante
allowed-tools. - Las cachés runtime y el contenido extraído de PDFs están ignorados por git.
Lee SECURITY.md antes de instalar o ejecutar el helper sobre documentos sensibles.