zotero
Manage Zotero reference libraries via the Web API. Search, list, add items by DOI/ISBN/PMID (with duplicate detection), delete/trash items, update metadata and tags, export in BibTeX/RIS/CSL-JSON, batch-add from files, check PDF attachments, cross-reference citations, find missing DOIs via CrossRef, and fetch open-access PDFs. Supports --json output for scripting. Use when the user asks about academic references, citation management, literature libraries, PDFs for papers, bibliography export, or Zotero specifically.
npx skills add majiayu000/claude-skill-registry --skill zotero-decimasudo-lumoagent --agent claude-code
Same command for any agent — swap --agent for codex, cursor, copilot.
Weekly change comes from our own snapshots, not the repository page — it measures attention, not adoption.
# Zotero Skill Interact with Zotero personal or group libraries via the REST API v3. ## Setup Requires two environment variables: ``` ZOTERO_API_KEY — Create at https://www.zotero.org/settings/keys/new ZOTERO_USER_ID — Found on the same page (numeric, not username) ``` For group libraries, set `ZOTERO_GROUP_ID` instead of `ZOTERO_USER_ID`. Optional env var for CrossRef/Unpaywall polite pool (improves DOI lookup success rate): ``` CROSSREF_EMAIL — Your email (optional; uses fallback if unset) ``` If credentials are missing, tell the user what's needed and link them to the key creation page. ## CLI Script All operations use `scripts/zotero.py` (Python 3, zero external dependencies). ```bash python3 scripts/zotero.py <command> [options] ``` ### Commands | Command | Description | Example | |---------|-------------|---------| | `items` | List top-level items | `zotero.py items --limit 50` | | `search` | Search by query | `zotero.py search "cognitive load"` | | `get` | Full item details + attachments | `zotero.py get ITEMKEY` | | `collections` | List all collections | `zotero.py collections` | | `tags` | List all tags | `zotero.py tags` | | `children` | List attachments/notes for item |
- Setup
- CLI Script
- Commands
- Global Flags
- Common Options
- Workflows
- Add a paper by DOI
- Bulk add from a file
- Export bibliography
- Update tags/metadata
- Delete items
- Cross-reference citations
- Find missing DOIs
- Fetch open-access PDFs
python3 scripts/zotero.py <command> [options] python3 zotero.py add-doi "10.1093/jamia/ocaa037" --tags "review" Warns if already in library. Use --force to override. One identifier per line, # for comments python3 zotero.py batch-add dois.txt --type doi --tags "imported" python3 zotero.py export --format bibtex --output refs.bib python3 zotero.py export --format csljson --collection COLLKEY python3 zotero.py update ITEMKEY --add-tags "important" --remove-tags "unread" python3 zotero.py update ITEMKEY --title "Corrected Title" --date "2024" python3 zotero.py update ITEMKEY --doi "10.1234/example"
What does the zotero skill do?
Manage Zotero reference libraries via the Web API. Search, list, add items by DOI/ISBN/PMID (with duplicate detection), delete/trash items, update metadata and tags, export in BibTeX/RIS/CSL-JSON, batch-add from files, check PDF attachments, cross-reference citations, find missing DOIs via CrossRef, and fetch open-access PDFs. Supports --json output for scripting. Use when the user asks about academic references, citation management, literature libraries, PDFs for papers, bibliography export, or Zotero specifically.
How do I install it?
Run `npx skills add majiayu000/claude-skill-registry --skill zotero-decimasudo-lumoagent --agent claude-code` — it drops the skill into your project so the agent can pick it up. Swap the --agent value for codex, cursor or copilot if you use one of those.
Where does this skill come from?
From majiayu000/claude-skill-registry, a repository with 534 stars. We read it straight from the repository tree rather than a submitted listing, so what you see here is what is actually published.
Is a popular skill a good skill?
Not necessarily. Stars measure attention, not adoption — a repository can trend for a week and be abandoned. That is why we show the weekly change from our own snapshots next to the total, instead of a single flattering number.
