zotero-skill
IdentifiedAn agent-usable Zotero skill for AI agent — search, read, and write your local Zotero library through a single Python CLI. | 面向 AI Agent 的 Zotero 技能:通过单一 Python CLI 搜索、读取、写入本地 Zotero 文献库。
zotero skill
English | 中文
Agent skill for read/write access to the local Zotero library.
Install
install.sh copies just the runtime bundle (SKILL.md, scripts/, references/, plus
LICENSE/README where present) into an agent tool's skills directory — no git history,
dev files, or caches. It needs only bash + POSIX tools.
./install.sh # DeepSeek Harness, global: ~/.dsh/skills/zotero
Pick the agent tool, scope, and method:
./install.sh --tool opencode # ~/.config/opencode/skills/zotero
./install.sh --tool claude # ~/.claude/skills/zotero
./install.sh --tool codex # ~/.agents/skills/zotero ("agents" convention)
./install.sh --tool all # install to every tool above (global only)
./install.sh --scope local # <project>/.dsh/skills/zotero
./install.sh --scope local --project ~/src/foo
./install.sh --tool claude --scope local # <project>/.claude/skills/zotero
./install.sh --method symlink # symlink the checkout (live; git pull = update)
./install.sh --update # re-copy over an existing install
./install.sh --force # remove and reinstall
./install.sh --list # print the tool -> directory table
./install.sh --dry-run # preview without writing
| Tool | Global | Local (project) |
|---|---|---|
dsh | ~/.dsh/skills | .dsh/skills |
opencode | ~/.config/opencode/skills | .opencode/skills |
claude | ~/.claude/skills | .claude/skills |
codex/agents | ~/.agents/skills | .agents/skills |
--project defaults to the nearest .git ancestor of the current directory (the
DSH/OpenCode project-root convention). Global dirs honour DSH_HOME, DSH_AGENTS_HOME,
and XDG_CONFIG_HOME. The agents directory (~/.agents/skills, .agents/skills) is the
shared cross-tool location, also read by OpenCode and DeepSeek Harness.
Then:
- Install/update Zotero 10+.
- Enable the local API: Settings > Advanced > "Allow other applications on this computer to communicate with Zotero".
- Run the one-time setup:
python3 scripts/zotero.py init.
Optional env vars (overrides): ZOTERO_DATA_DIR, ZOTERO_LOCAL_API_URL (default
http://localhost:23119/api), ZOTERO_APP_NAME (name shown in the authorization dialog,
default zotero-skill).
First time use
A step-by-step walkthrough for the first run on a new machine.
-
Check Python —
python3 --version(3.9+; only the standard library is used). -
Install Zotero 10+ and turn on its Local API — Settings > Advanced, then tick "Allow other applications on this computer to communicate with Zotero".
-
Configure (one command) — with Zotero running, run
python3 scripts/zotero.py initIt auto-detects the data directory (reads
extensions.zotero.dataDirfrom the profile'sprefs.js, else falls back to~/Zotero), writes~/.config/zotero-skill/settings.json, and triggers the authorization dialog — click Always Allow to cache the write key. Check the result withpython3 scripts/zotero.py config. -
Verify reads — with Zotero running:
python3 scripts/zotero.py health # ok:true, version 10.x, writesSupported:true python3 scripts/zotero.py search "protein folding"The data directory only matters for the SQLite fallback (
recent,fulltext-words,attachments, anddoionly when Zotero is closed) and for locating saved PDFs; metadata reads (includingdoiwhile Zotero is running) go through the Local API. -
Authorize writes (one time) —
initcaches the key, so a write usually needs no dialog. If you skipped it (init --no-auth), the first write pops the dialog; click Always Allow so the key is saved and reused. The key is cached at~/.config/zotero-skill/state.json(mode 0600, keyed by Zotero server ID).python3 scripts/zotero.py create-item --type journalArticle --title "My first item"If you click Deny, writes fail with a clear error. Re-trigger authorization anytime with
python3 scripts/zotero.py auth. -
Add your first note (overview/summary of a paper):
python3 scripts/zotero.py add-note --parent <itemKey> --note "# Overview\n\nSummary."
Usage
python3 scripts/zotero.py health
python3 scripts/zotero.py search "protein folding"
python3 scripts/zotero.py read <attachmentKey> --text
python3 scripts/zotero.py create-item --type journalArticle --title "T" --doi "10.1/x"
python3 scripts/zotero.py count --collection "Project/bioq"
python3 scripts/zotero.py count --tag Harness
python3 scripts/zotero.py count --query "protein folding"
python3 scripts/zotero.py export --collection "Project/bioq" --format bibtex --output refs.bib
init pre-caches the write key, so a write usually needs no dialog. If you skipped
init --no-auth, the first write asks you to click Always Allow in Zotero's dialog; the
key is cached at ~/.config/zotero-skill/state.json (mode 0600, keyed by Zotero server ID).
Test
python3 -m unittest discover -s tests -v
License
MIT — see LICENSE.
Comments
Loading…
Similar plugins
by Vncntvx
Zotero toolkit for DeepSeek harness; Turn your Zotero library into an evidence store for agents.
★ 21
MIT
TypeScript
Sep 19, 2026
dsh plugin --profile web add dsh-zoteroby labring
AI agent skills for Sealos — deploy any project, provision databases, object storage & more with one command. Works with Claude Code, Gemini CLI, Codex.
★ 80
Python
Aug 14, 2026
dsh plugin --profile web add sealosby Azzygoatcoder
模块化 AI 科研/工程技能 monorepo(DeepSeek Harness / Claude Code 通用)— plugins/ + skills/ + bin 脚本 + LaTeX 模板,验证环驱动
★ 7
MIT
Python
Sep 13, 2026
dsh plugin --profile web add agent-useful-skillsby Hongcheng-LI
Zotero tools for DeepSeek Harness: search library, read metadata/fulltext, list attachments, download PDFs, manage notes via the Zotero local API
★ 15
↓ 2.3k/wk
MIT
TypeScript
Aug 15, 2026
dsh plugin --profile web add dsh-zoteroby taxueseek
专门为 agent 打造的 agent 搜索工具,具备多语言搜索能力,覆盖中文/英文/学术/代码/购物/金融/新闻/百科。
★ 147
MIT
Python
Sep 17, 2026
dsh plugin --profile web add argo-searchby MeowTnT3r
一个面向 Codex 的公开 skill:编排当前 Agent 已有的可信安装器,并为 skills、插件和市场能力维护一份有来源依据的中文说明目录
★ 3
MIT
Python
Sep 4, 2026
dsh plugin --profile web add catalog-capabilities-zh