pyzotero

Manage Zotero reference libraries programmatically via the Zotero Web API v3.

Updated Aug 12, 2026
One-click install
npx skills add https://github.com/Mzane0803/latent-minds-skills-marketplace --skill pyzotero-mzane0803
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: pyzotero
Source: https://github.com/Mzane0803/latent-minds-skills-marketplace/tree/main/plugins/research-writing/skills/pyzotero
Command: npx skills add https://github.com/Mzane0803/latent-minds-skills-marketplace --skill pyzotero-mzane0803

SYSTEM DOCUMENTATION & REQUIREMENTS

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

What problem does it solve? Managing bibliographic references manually in Zotero does not scale when you need to automate literature workflows, sync libraries, bulk-edit items, or export citations from scripts. This Skill provides programmatic access to Zotero libraries through the pyzotero Python client. ## Core Features & Use Cases - Full CRUD on Libraries: Retrieve, create, update, and delete items, collections, tags, and saved searches via the Zotero Web API v3. - Attachments & Full-Text: Download and upload PDF attachments, and read or set full-text indexed content for search. - Citation Export: Export items as BibTeX, CSL-JSON, RIS, or formatted bibliographies in any CSL style such as APA or Vancouver. - Local Access Options: Use the CLI or MCP server against a local Zotero 7 installation for full-text PDF search without an API key. - Use Case: A researcher wants to tag every paper in a collection, download all its PDFs, and export the collection as a .bib file for a LaTeX manuscript — all from one Python script. ## Quick Start Ask the AI to connect to your Zotero library using your API credentials and list the ten most recently added items with their titles and types.

Frequently Asked Questions about pyzotero

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

FAQPage Schema
How do I access my Zotero library from Python?▼

Use the pyzotero Zotero client with your library ID, library type (user or group), and API key from zotero.org/settings/keys. Store credentials in environment variables like ZOTERO_API_KEY and ZOTERO_LIBRARY_ID rather than hardcoding them.

How to export Zotero items as BibTeX with pyzotero?▼

Call zot.add_parameters(format='bibtex') before a read call such as zot.top(limit=50). The result is a bibtexparser BibDatabase object whose entries can be written to a .bib file with bibtexparser.dump.

Can I use pyzotero 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 pyzotero CLI and MCP server also work against local Zotero 7 with local API access enabled in settings.

Why does pyzotero return only some of my items?▼

Pyzotero returns 100 items per call by default. Wrap read calls with zot.everything(), such as zot.everything(zot.items()), to paginate automatically and retrieve the complete result set.

How do I handle Zotero API rate limits in pyzotero?▼

Catch the TooManyRequests exception from pyzotero.zotero_errors and retry with exponential backoff. Write operations are also limited to 50 items per batch, so chunk large create or update calls accordingly.

Does pyzotero support uploading PDF attachments?▼

Yes, attachment_simple and attachment_both upload files by path, optionally as children of a parent item. Upload methods are in beta and require an API key with file access permissions.