From zotero-skills
Performs full CRUD operations on Zotero libraries: search, add, update, delete items with notes, tags, collections, and PDF attachments using dual local/Web APIs for reads/writes.
How this skill is triggered — by the user, by Claude, or both
Slash command
/zotero-skills:zotero-skillsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Dual-API CRUD for a Zotero library: search / read via the local desktop API, write via the Web API. Claude routes the request, picks local-API for reads and Web-API for writes, and verifies the result.
Dual-API CRUD for a Zotero library: search / read via the local desktop API, write via the Web API. Claude routes the request, picks local-API for reads and Web-API for writes, and verifies the result.
http://localhost:23119/api, header Zotero-Allowed-Request: true). Fast, no key needed, only available while Zotero desktop is running.https://api.zotero.org, header Zotero-API-Key: <key>) via pyzotero. Always.zotero_create_note / zotero_batch_update_tags hit the local API and 400/501 — use pyzotero from the shared client instead.config.json (gitignored). See references/api-setup.md.from zotero_client import get_client, ZoteroDualClient) instead of constructing API requests by hand. The shared client handles dual-API routing, rate-limit backoff, and credential loading.Trigger phrases: "add paper to Zotero", "search Zotero", "update this collection", "tag these items", "find duplicates", "create a note on item X", "Zotero / 文獻 / 引用 / 參考文獻管理".
NOT for: auditing the library for cleanup (use zotero-library-curator first to plan, then come back here for the apply step).
check_local_api() returns True/False; falls back to Web API automatically if not.zotero_search_items / zotero_get_collections MCP tools, or direct local-API GET. See references/read-operations.md.references/create-operations.mdreferences/update-operations.mdreferences/delete-operations.mdzot.item(key) and confirm the change matches intent.This skill is interactive — there is no machine-readable result file. After every write, surface to the user: the operation performed (CREATE / UPDATE / DELETE), the affected item key(s), and any reversible vs. irreversible aspect (e.g. trash vs. permanent).
pyzotero >= 1.5, MCP zotero server (any recent version).safe_api_call() handles 429 backoff automatically.references/api-setup.md — full API architecture, credentials, shared-client setupreferences/read-operations.md — search, get-by-key, list collections, fetch attachmentsreferences/create-operations.md — add items / child notes / attachments / batchreferences/update-operations.md — patch metadata, tags, collection membershipreferences/delete-operations.md — single + batch delete with safety patternsreferences/error-handling.md — common 4xx / 5xx + retry strategyreferences/endpoint-cheatsheet.md — flat URL / verb tablereferences/api-reference.md — raw HTTP request bodies, less-common collection-membership operationsreferences/item-types.md — JSON templates for journalArticle, book, conferencePaper, etc.scripts/zotero_client.py — the shared client referenced above. Import it for any Zotero operation.scripts/add_literature.py — batch import script template; use as a starting point when adding many items at once.npx claudepluginhub wenyuchiou/ai-research-skills --plugin zotero-skillsManage Zotero reference libraries via Python using the pyzotero client. Retrieve, create, update, delete items, collections, tags, and attachments through the Zotero Web API v3.
Manage Zotero reference libraries via the pyzotero Python client: retrieve, create, update, and delete items, collections, tags, and attachments through the Zotero Web API v3.
Audits Zotero libraries for duplicates, orphan items, bloated collections, and tag issues; emits preview-only cleanup plans. Defers CRUD to zotero-skills skill or research-hub CLI.