pyzotero

Manage Zotero libraries programmatically via the Zotero Web API v3 using Python.

Updated Sep 2, 2026
One-click install
npx skills add https://github.com/ricfulop/cba-agentic-engineering-bootstrap --skill pyzotero-ricfulop
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: pyzotero
Source: https://github.com/ricfulop/cba-agentic-engineering-bootstrap/tree/main/skills/pyzotero
Command: npx skills add https://github.com/ricfulop/cba-agentic-engineering-bootstrap --skill pyzotero-ricfulop

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires pyzotero, and includes references (resource) components.

What problem does it solve? Manually organizing bibliographic references, syncing citations, and exporting bibliographies from Zotero is repetitive and error-prone. This Skill lets you automate Zotero library operations—reading, creating, updating, and deleting items, collections, tags, and attachments—directly from Python code. ## Core Features & Use Cases - Full Read/Write API Access: Retrieve items, collections, and tags; create items from templates; update and delete entries with optimistic locking and error handling. - Attachments & Full-Text: Download PDFs, upload attachments, and retrieve or set full-text indexed content for search. - Citation Export: Export libraries as BibTeX, CSL-JSON, RIS, or formatted bibliographies in styles like APA, Chicago, and IEEE. - Local CLI & MCP Server: Search a locally running Zotero 7 app (including full-text PDF search) without an API key, or expose your library to LLM clients via MCP. - Use Case: A researcher needs to sync 200 papers from a literature review into a shared Zotero group library, tag them by topic, and export a BibTeX file for a LaTeX manuscript—all automated in one script. ## Quick Start Use the pyzotero skill to search my Zotero library for items matching "machine learning" and export the top 50 results as BibTeX.

Frequently Asked Questions about pyzotero

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

FAQPage Schema
How do I search my Zotero library with Python?

Create a Zotero client with your library ID and API key, then call zot.items(q='your query') for keyword search. Use qmode='everything' to include full-text content, and filter by itemType or tag parameters for narrower results.

How do I export Zotero items to BibTeX using pyzotero?

Call zot.add_parameters(format='bibtex') before retrieving items, and pyzotero returns a bibtexparser BibDatabase object. You can access entries as dictionaries or write them directly to a .bib file with bibtexparser.dump().

Does pyzotero work without a Zotero API key?

Yes, local mode connects to a running Zotero desktop app without an API key, but it is read-only. The CLI and MCP server extras also work locally with Zotero 7 when local API access is enabled in settings.

How do I handle Zotero API rate limits in pyzotero?

Catch the TooManyRequests exception from pyzotero.zotero_errors and retry with exponential backoff. The reference documentation includes a safe_request wrapper pattern that retries failed calls with increasing wait times.

Can pyzotero upload PDF attachments to Zotero?

Yes, use zot.attachment_simple() with file paths to upload attachments, optionally as children of an existing parent item. Upload methods are in beta and require an API key with file access permissions.

What is the difference between pyzotero Web API, CLI, and MCP modes?

The Web API client manages remote libraries with an API key and supports full read/write automation. The CLI and MCP server access a local Zotero 7 installation without a key, suited for quick local search and LLM client integration.