SKILL.md
$29
Installation
uv add pyzotero
# or with CLI support:
uv add "pyzotero[cli]"
Quick Start
from pyzotero import Zotero
zot = Zotero(library_id='123456', library_type='user', api_key='ABC1234XYZ')
# Retrieve top-level items (returns 100 by default)
items = zot.top(limit=10)
for item in items:
print(item['data']['title'], item['data']['itemType'])
# Search by keyword
results = zot.items(q='machine learning', limit=20)
# Retrieve all items (use everything() for complete results)
all_items = zot.everything(zot.items())
Core Concepts
- A
Zoteroinstance is bound to a single library (user or group). All methods operate on that library.
- Item data lives in
item['data']. Access fields likeitem['data']['title'],item['data']['creators'].
- Pyzotero returns 100 items by default (API default is 25). Use
zot.everything(zot.items())to get all items.
- Write methods return
Trueon success or raise aZoteroError.
Reference Files
File
Contents
Credentials, library types, local mode
Retrieving items, collections, tags, groups
Filtering, sorting, search parameters
Creating, updating, deleting items
Collection CRUD operations
Tag retrieval and management
references/files-attachments.md
File retrieval and attachment uploads
BibTeX, CSL-JSON, bibliography export
follow(), everything(), generators
Full-text content indexing and retrieval
Saved search management
Command-line interface usage
Errors and exception handling
Common Patterns
Fetch and modify an item
item = zot.item('ITEMKEY')
item['data']['title'] = 'New Title'
zot.update_item(item)
Create an item from a template
template = zot.item_template('journalArticle')
template['title'] = 'My Paper'
template['creators'][0] = {'creatorType': 'author', 'firstName': 'Jane', 'lastName': 'Doe'}
zot.create_items([template])
Export as BibTeX
zot.add_parameters(format='bibtex')
bibtex = zot.top(limit=50)
# bibtex is a bibtexparser BibDatabase object
print(bibtex.entries)
Local mode (read-only, no API key needed)
zot = Zotero(library_id='123456', library_type='user', local=True)
items = zot.items()