zotero

Query and retrieve items, collections, and citations from Zotero libraries via the Web API.

1|Updated Jul 13, 2026
One-click install
npx skills add https://github.com/thurlow-research/ResearchClaudeCodeSkills --skill zotero-thurlow-research
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: zotero
Source: https://github.com/thurlow-research/ResearchClaudeCodeSkills/tree/main/desktop/skills/zotero
Command: npx skills add https://github.com/thurlow-research/ResearchClaudeCodeSkills --skill zotero-thurlow-research

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes scripts (resource) and references (resource) components.

What problem does it solve? Accessing a Zotero reference library programmatically requires handling API authentication, pagination, collection keys, and rate limits by hand. This Skill wraps the Zotero Web API in a single Python CLI so you can search items, list collections, export bibliographies, and read attachments with one command, directly from a conversation. ## Core Features & Use Cases - Library Querying: List collections, search items, filter by tag, and fetch single items with attachments across personal and group libraries, with name-based collection resolution via a local registry. - Citation Export: Export items as BibTeX, RIS, or CSL-JSON using Zotero's server-side formatters, with token-efficient field projection and a version-validated local cache. - Systematic Review Support: Built-in PRISMA-style counting, review-scope listing, cross-source deduplication, and discard-collection exclusion for screening workflows. - Use Case: Ask "how many papers are in my Keep collection" or "export a BibTeX file for the AI governance collection" and get an accurate, deduplicated answer without opening the Zotero client. ## Quick Start Ask the assistant to list the collections in your Zotero library and count the items tagged to-read, providing your Zotero API key and user ID as environment variables.

Frequently Asked Questions about zotero

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I search my Zotero library from the command line?

Run the zotero.py CLI with the search subcommand, passing your API key and library ID as environment variables. It supports full-text quick search, tag filters, collection scoping, and JSON or table output formats.

How do I export a Zotero collection to BibTeX?

Use the export subcommand with --format bibtex, ris, or csljson, optionally scoped to a collection name or key. Zotero's server-side formatters handle edge cases like non-Latin names and multi-author entries.

Does the Zotero API work with group libraries?

Yes, group libraries work identically to personal libraries. Set the library type to group and provide the numeric group ID, either via environment variables or a YAML registry file that maps library names to IDs.

Why does my Zotero item count differ from the desktop client?

The API's /items endpoint includes child attachments and notes while the desktop sidebar shows top-level items only. Query /items/top with limit=1 and read the Total-Results header for a count matching the client.

Can the skill write or modify items in my Zotero library?

Writes are possible through tag-add and create-items subcommands, but both are dry-run by default and require an explicit --commit flag plus a write-scoped API key. Read operations are the default and never modify the library.

Why does a parent Zotero collection return zero items?

The Zotero API does not aggregate descendant collections; items belong to leaf collections only. To count a subtree, enumerate its leaf collections and union their item keys rather than summing per-collection counts.