← ClaudeAtlas

zoterolisted

Control a local Zotero library via the `zot` CLI (read API + the zotero-agent bridge write endpoint): search, read, create, edit, tag, organize into collections, delete, export, and run arbitrary Zotero JS. Use whenever the user wants to query or modify their library, bulk-edit references, fields or tags, manage tags or collections, find items missing metadata (no abstract/date/DOI), get library stats, export citations or format bibliographies, add items by DOI/ISBN/arXiv, find and merge duplicates, or create notes on items. Also for PDFs: read or ask questions about an item's PDF, summarize it at multiple levels (whole/chapter/section), read its highlights/annotations, generate a table of contents / bookmarks / outline for Zotero's reader, and prepare scans — split two-up pages and OCR them to make them searchable. Also to see where disk space goes or reclaim it: shrink oversized PDFs, drop orphan attachments and page snapshots. Requires the zotero-agent bridge plugin installed and Zotero running.
alex-roc/zotero-agent · ★ 6 · AI & Automation · score 73
Install: claude install-skill alex-roc/zotero-agent
# Zotero control (via the `zot` CLI) You control a running Zotero instance through **`zot`**, a stdlib-only Python CLI. - **Reads** go through Zotero's local HTTP API (fast, GET-only). - **Writes** go through the `zotero-agent` bridge plugin: `zot exec` runs arbitrary privileged Zotero JS in-process. This is the only complete local write path (Zotero's HTTP API is read-only by design; see `references/setup.md`). `zot` is on `PATH` after install (`uv tool install zotero-agent`, `brew install alex-roc/tap/zotero-agent`, or the repo's `install.sh`). If the bridge endpoint is not answering, the user must install the plugin XPI in Zotero — it is published only here (permanent link): `https://github.com/alex-roc/zotero-agent/releases/latest/download/zotero-agent-bridge.xpi` → *Tools → Plugins → gear → "Install Plugin From File…"*. Do not try to build it. ## First: confirm the setup is live Run `zot ping`. It must show the local API up, the bridge endpoint answering `1+1 == 2`, a known userID, and the `zot` version. If anything fails, point the user to `references/setup.md` — do **not** try to work around a missing plugin. If Zotero is simply not running, or the plugin needs the restart Zotero keeps asking for, `zot restart` handles it without the user touching the app — it waits for the bridge to answer again. It is disruptive, so ask first and then pass `--yes`: `zot restart --plugin --yes` reloads only the bridge (Zotero stays open), `zot restart --yes` restarts Zotero,