Import arXiv papers into Zotero with duplicate detection and batch support. TRIGGER when: user asks to import papers, add arxiv papers to zotero, batch import papers, check for duplicate papers in zotero, or mentions importing by arXiv ID. DO NOT TRIGGER when: user is working on ZoFiles plugin code, exporting papers, or general Zotero questions.
Imports arXiv papers into a running Zotero instance via the local connector API (localhost:23119). Supports batch import, duplicate detection (via ZoFiles index or Zotero SQLite), progress display, and optional collection targeting.
Zotero 7/8 must be running locally
Zotero HTTP Server must be enabled (connector API on localhost:23119):
Python 3.8+ available in PATH
Default python path:
<FILL_IN: ASK USER FOR THE DEFAULT PYTHON PATH AND UPDATE THIS FILE>
Always run the script with --help first to see full usage:
python .claude/skills/zotero-connector/scripts/import_arxiv.py --help
# Single paper
python .claude/skills/zotero-connector/scripts/import_arxiv.py 2301.07041
# Multiple papers
python .claude/skills/zotero-connector/scripts/import_arxiv.py 2301.07041 2310.06825 1706.03762
# From a file (one ID per line)
cat arxiv_ids.txt | xargs python .claude/skills/zotero-connector/scripts/import_arxiv.py
# Target a specific collection (fuzzy name match or exact key)
python .claude/skills/zotero-connector/scripts/import_arxiv.py --collection "LLM Papers" 2301.07041
# Dry run — check duplicates without importing
python .claude/skills/zotero-connector/scripts/import_arxiv.py --dry-run 2301.07041 2310.06825
# Force import (skip duplicate check)
python .claude/skills/zotero-connector/scripts/import_arxiv.py --force 2301.07041
# Ignore duplicates — silently skip without showing in progress or output
python .claude/skills/zotero-connector/scripts/import_arxiv.py --ignore-duplicates 2301.07041 2310.06825
# Parallel import (up to 5 concurrent)
python .claude/skills/zotero-connector/scripts/import_arxiv.py --parallel 3 ID1 ID2 ID3 ID4 ID5
# Specify ZoFiles index path for duplicate detection
python .claude/skills/zotero-connector/scripts/import_arxiv.py --zofiles-index /path/to/.zofiles-index.json 2301.07041
The script accepts arXiv IDs in any of these formats:
2301.07041 — new-style ID2301.07041v2 — with version (version stripped for dedup)hep-th/0601001 — old-style IDhttps://arxiv.org/abs/2301.07041 — full URLarXiv:2301.07041 — prefixed form.zofiles-index.json) — fastestUse when the user says things like: