/pyzotero
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
$ npx -y skills add foryourhealth111-pixel/Vibe-Skills --skill pyzotero --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/pyzotero
Context preview
The summary Claude sees to decide when to auto-load this skill.
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
SKILL.md
pyzotero.SKILL.mdname: pyzotero
description: 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.
allowed-tools: Read Write Edit Bash
license: MIT License
metadata:
skill-author: K-Dense Inc.Pyzotero
Pyzotero is a Python wrapper for the [Zotero API v3](https://www.zotero.org/support/dev/web_api/v3/start). 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](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 `Zotero` instance is bound to a single library (user or group). All methods operate on that library.
- Item data lives in `item['data']`. Access fields like `item['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 `True` on success or raise a `ZoteroError`.
Reference Files
| File | Contents | |------|----------| | [references/authentication.md](references/authentication.md) | Credentials, library types, local mode | | [references/read-api.md](references/read-api.md) | Retrieving items, collections, tags, groups | | [references/search-params.md](references/search-params.md) | Filtering, sorting, search parameters | | [references/write-api.md](references/write-api.md) | Creating, updating, deleting items | | [references/collections.md](references/collections.md) | Collection CRUD operations | | [references/tags.md](references/tags.md) | Tag retrieval and management | | [references/files-attachments.md](references/files-attachments.md) | File retrieval and attachment uploads | | [references/exports.md](references/exports.md) | BibTeX, CSL-JSON, bibliography export | | [references/pagination.md](references/pagination.md) | follow(), everything(), generators | | [references/full-text.md](references/full-text.md) | Full-text content indexing and retrieval | | [references/saved-searches.md](references/saved-searches.md) | Saved search management | | [references/cli.md](references/cli.md) | Command-line interface usage | | [references/error-handling.md](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()
Read more
name: pyzotero
description: 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.
allowed-tools: Read Write Edit Bash
license: MIT License
metadata:
skill-author: K-Dense Inc.Pyzotero
Pyzotero is a Python wrapper for the [Zotero API v3](https://www.zotero.org/support/dev/web_api/v3/start). 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](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 `Zotero` instance is bound to a single library (user or group). All methods operate on that library.
- Item data lives in `item['data']`. Access fields like `item['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 `True` on success or raise a `ZoteroError`.
Reference Files
| File | Contents | |------|----------| | [references/authentication.md](references/authentication.md) | Credentials, library types, local mode | | [references/read-api.md](references/read-api.md) | Retrieving items, collections, tags, groups | | [references/search-params.md](references/search-params.md) | Filtering, sorting, search parameters | | [references/write-api.md](references/write-api.md) | Creating, updating, deleting items | | [references/collections.md](references/collections.md) | Collection CRUD operations | | [references/tags.md](references/tags.md) | Tag retrieval and management | | [references/files-attachments.md](references/files-attachments.md) | File retrieval and attachment uploads | | [references/exports.md](references/exports.md) | BibTeX, CSL-JSON, bibliography export | | [references/pagination.md](references/pagination.md) | follow(), everything(), generators | | [references/full-text.md](references/full-text.md) | Full-text content indexing and retrieval | | [references/saved-searches.md](references/saved-searches.md) | Saved search management | | [references/cli.md](references/cli.md) | Command-line interface usage | | [references/error-handling.md](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()
VibeSkills is a general-purpose Skill that automatically routes local Skills and intelligently orchestrates harness workflows.
Repo: foryourhealth111-pixel/Vibe-Skills
Other skills on vibe-skills.
- /LQF_Machine_Learning_Expert_Guide
LQF Machine Learning Expert Guide - Routed skill for ML/Statistical Modeling with Critical Discussion Mode. Triggers on: machine learning, modeling, prediction, training, classification, regression, clustering, deep learning, neural network, model evaluation, feature
Open skill - /adaptyv
Cloud laboratory platform for automated protein testing and validation. Use when designing proteins and needing experimental validation including binding assays, expression testing, thermostability measurements, enzyme activity assays, or protein sequence optimization. Also use
Open skill - /aeon
This skill should be used for time series machine learning tasks including classification, regression, clustering, forecasting, anomaly detection, segmentation, and similarity search. Use when working with temporal data, sequential patterns, or time-indexed observations
Open skill - /algorithmic-art
Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing
Open skill - /alpha-vantage
Access real-time and historical stock market data, forex rates, cryptocurrency prices, commodities, economic indicators, and 50+ technical indicators via the Alpha Vantage API. Use when fetching stock prices (OHLCV), company fundamentals (income statement, balance sheet, cash
Open skill - /architecture-patterns
Implement proven backend architecture patterns including Clean Architecture, Hexagonal Architecture, and Domain-Driven Design. Use when architecting complex backend systems or refactoring existing applications for better maintainability.
Open skill
