pyzotero
Skill3 starsChanged 8 months agoMITView on GitHub
Interact with Zotero reference management libraries using the pyzotero Python client. Retrieve, create, update, and delete items, collections, tags, and attachments via the Zotero Web API v3. Use this skill when working with Zotero libraries programmatically, managing bibliographic references, exporting citations, searching library contents, uploading PDF attachments, or building research automation workflows that integrate with Zotero.
- Reads credentials
8 other projects use a version of this, 3 of them edited.
Adopted by
Most recently taken up by
- MarieLynneBlock/arcanum-artifexedited, first seen Nov 1, 2026
- patoangolano/bio-stackedited, first seen Oct 15, 2026
- Luooops/skillsedited, first seen Oct 13, 2026
- uppifyagency/boilerplate-saas-2026word for word, first seen Jun 2, 2026
- Chanw-research/claude-code-paper-writingword for word, first seen May 10, 2026
- LeonChaoX/qinyan-academic-skillsword for word, first seen Mar 13, 2026
Other versions8 projects use a version of this.
Word for word · 5
- LeonChaoX/qinyan-academic-skills★ 910100% same
- qinyan-ai/qinyan-academic-skills★ 80100% same
- Chanw-research/claude-code-paper-writing★ 42100% same
- uppifyagency/boilerplate-saas-2026★ 1100% same
- yf8578/claude-skills-collection★ 1100% same
Edited · 3
- MarieLynneBlock/arcanum-artifex★ 498% same
- Luooops/skills★ 157% same
- patoangolano/bio-stack★ 039% same
Wrote their own version · 0
None found.
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository43 other files it gives its agents.
- agent-codingSkill
- benchmark-designSkill
- citation-managementSkill
- code-reproductionSkill
- code-to-paperSkill
- daskSkill
- experiment-trackingSkill
- exploratory-data-analysisSkill
- get-available-resourcesSkill
- github-release-prepSkill
- latex-postersSkill
- literature-reviewSkill
- markdown-mermaid-writingSkill
- markitdownSkill
- matplotlibSkill
- modalSkill
- networkxSkill
- paper-to-codeSkill
- peer-reviewSkill
- plotlySkill
- polarsSkill
- pytorch-lightningSkill
- repo-cleanupSkill
- research-planningSkill
- reviewer-responseSkill
- scholar-evaluationSkill
- scientific-critical-thinkingSkill
- scientific-schematicsSkill
- scientific-slidesSkill
- scientific-visualizationSkill
- scientific-writingSkill
- scikit-learnSkill
- seabornSkill
- shapSkill
- stable-baselines3Skill
- statistical-analysisSkill
- statsmodelsSkill
- sympySkill
- torch-geometricSkill
- transformersSkill
- umap-learnSkill
- vaexSkill
- venue-templatesSkill
The file
We split this skill into the rules it gives an agent
2 rules. 1 is common, 0 are distinctive, and 1 is very specific to this project.
1
Common
Most of the 3 edited versions we read keep these.
0
Distinctive
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Common: line 18
API Key: create at https://www.zotero.org/settings/keys/new
- Very specific: line 62
Write methods return True on success or raise a ZoteroError.
“Common” is measured: kept by at least 6 in 10 of the 3 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Pyzotero
Pyzotero is a Python wrapper for the Zotero API v3. Use it to programmatically manage Zotero libraries: read items and collections, create and update references, upload attachments, manage tags, and export citations.
Authentication Setup
Required credentials — get from https://www.zotero.org/settings/keys:
- User ID: shown as "Your userID for use in API calls"
- API Key: create at https://www.zotero.org/settings/keys/new
- Library ID: for group libraries, the integer after
/groups/in the group URL
Store credentials in environment variables or a .env file:
ZOTERO_LIBRARY_ID=your_user_id
ZOTERO_API_KEY=your_api_key
ZOTERO_LIBRARY_TYPE=user # or "group"See references/authentication.md for full setup details.
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 |
| references/authentication.md | Credentials, library types, local mode |
| references/read-api.md | Retrieving items, collections, tags, groups |
| references/search-params.md | Filtering, sorting, search parameters |
| references/write-api.md | Creating, updating, deleting items |
| references/collections.md | Collection CRUD operations |
| references/tags.md | Tag retrieval and management |
| references/files-attachments.md | File retrieval and attachment uploads |
| references/exports.md | BibTeX, CSL-JSON, bibliography export |
| references/pagination.md | follow(), everything(), generators |
| references/full-text.md | Full-text content indexing and retrieval |
| references/saved-searches.md | Saved search management |
| references/cli.md | Command-line interface usage |
| references/error-handling.md | 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()Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

