← ClaudeAtlas

zoterolisted

This skill should be used when working with a Zotero library — summarizing or reading attached PDFs, organizing items into collections, tagging, adding notes, linking related items, or batch-processing references. Trigger on "Zotero", "my library", "references", "organize my papers/notes", "summarize these PDFs" in a research-library context. Covers the local read API, pyzotero for writes, and direct storage reads for bulk PDF work.
moiri-gamboni/roost · ★ 0 · Data & Documents · score 69
Install: claude install-skill moiri-gamboni/roost
# Zotero Read and batch-manipulate the local Zotero library. Three access paths — pick per operation, and for bulk work write Python scripts (via `uv run`) rather than driving item-by-item. ## Access paths 1. **Direct storage reads — fastest, for PDF/attachment content.** Attachments live at `~/Zotero/storage/<8-char-key>/<file>`. Get the mapping from the API (attachment items carry the key; `zot.dump()`/`zot.file()` fetch content). For bulk text extraction prefer `pdftotext file.pdf -` (poppler, installed by guest-bootstrap) over vision-reading; use the Read tool on the PDF only when layout/figures matter. 2. **Local API — preferred whenever the app is running.** Mirror of web API v3 at `http://127.0.0.1:23119/api/`; requires Settings → Advanced → "Allow other applications on this computer to communicate with Zotero". Reads need no key (pyzotero: `zotero.Zotero(library_id, 'user', local=True)`). Writes (Zotero 10+): authorize once via `POST http://127.0.0.1:23119/api/local/authorize` with an application name — Zotero shows Allow / Always Allow / Deny; **Always Allow** returns a reusable 32-char key (plain Allow is single-use). Store it at `~/.config/zotero/local-api-key` (0600), send as a `Zotero-API-Key` header. Request/response shapes are identical to the web API (items, collections, tags, saved searches, file uploads). pyzotero's local mode is documented for reads; if it refuses writes, hit the endpoints directly (requests/curl) — same JSON. 3. **Web API via pyzotero