通过 Web API 管理 Zotero 参考文献库。支持搜索、列表、通过 DOI/ISBN/PMID 添加条目(含重复检测)、删除/回收条目、更新元数据与标签、导出为 BibTeX/RIS/CSL-JSON、文件批量添加、检查 PDF 附件、交叉引用、通过 CrossRef 查找缺失 DOI 及获取开放获取 PDF。支持 -- 输出以便脚本调用。当用户询问学术参考文献、引文管理、文献库、论文 PDF、书目导出或 Zotero 相关问题时使用。
Zotero Skill. 通过 REST API v3.是一项面向实际任务的技能,主要用于Setup. 需要两个环境变量与 Zotero 个人或团体库交互: 对于团体库,设置 ZOTERO GROUP ID 而不是 ZOTERO USER ID.O。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;
涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
通过 Zotero REST API v3 与个人或群组文献库进行交互。
需设置两个环境变量:
ZOTERO_API_KEY — 在 https://www.zotero.org/settings/keys/new 创建 ZOTERO_USER_ID — 在同一页面获取(纯数字,非用户名)
若操作群组文献库,请改用 ZOTERO_GROUP_ID 替代 ZOTERO_USER_ID。
可选环境变量,用于接入 CrossRef / Unpaywall 礼貌请求池(提升 DOI 查找成功率):
CROSSREF_EMAIL — 您的邮箱(可选;未设置时将使用默认回退机制)
若凭据缺失,请明确告知用户所需内容,并附上密钥创建页面链接。
所有操作均通过 scripts/zotero.py 执行(Python 3,无任何外部依赖)。
python3 scripts/zotero.py[options]
| 命令 | 说明 | 示例 |
|---|---|---|
items |
列出顶层条目 | zotero.py items --limit 50 |
search |
按查询字符串搜索 | zotero.py search "cognitive load" |
get |
获取完整条目详情及附件 | zotero.py get ITEMKEY |
collections |
列出所有文集(Collections) | zotero.py collections |
tags |
列出所有标签(Tags) | zotero.py tags |
children |
列出某条目的附件与笔记 | zotero.py children ITEMKEY |
add-doi |
根据 DOI 添加条目(启用去重) | zotero.py add-doi 10.1234/example |
add-isbn |
根据 ISBN 添加条目(启用去重) | zotero.py add-isbn 978-0-123456-78-9 |
add-pmid |
根据 PubMed ID 添加条目 | zotero.py add-pmid 12345678 |
delete |
将条目移入回收站(默认可恢复) | zotero.py delete KEY1 KEY2 --yes |
update |
修改条目元数据或标签 | zotero.py update KEY --add-tags "new" |
export |
导出为 BibTeX / RIS / CSL-JSON 格式 | zotero.py export --format bibtex |
batch-add |
从文件批量添加多个条目 | zotero.py batch-add dois.txt --type doi |
check-pdfs |
报告哪些条目已拥有 PDF、哪些尚未拥有 | zotero.py check-pdfs |
crossref |
将引文列表与文献库匹配 | zotero.py crossref bibliography.txt |
find-dois |
通过 CrossRef 查找并补全缺失的 DOI | zotero.py find-dois --limit 10 |
fetch-pdfs |
为条目获取开放获取(Open Access)PDF | zotero.py fetch-pdfs --dry-run |
--json — 输出 JSON 格式而非人类可读格式(适用于 items、search、get)--limit N — 返回条目最大数量(默认为 25)--sort FIELD — 按字段排序:dateModified、title、creator、date--direction asc|desc — 排序方向--collection KEY — 按文集过滤,或向指定文集添加条目--type TYPE — 按条目类型过滤(如 journalArticle、book、conferencePaper 等)--tags "tag1,tag2" — 创建条目时添加标签--force — 在添加类命令中跳过重复检测python3 zotero.py add-doi "10.1093/jamia/ocaa037" --tags "review" # 若该文献已存在于库中,则发出警告。可使用 --force 覆盖。
重复检测逻辑:将 DOI 解析为元数据,在库中按第一作者搜索,并比对 DOI 字段。
# 每行一个标识符,以 # 开头的行为注释 python3 zotero.py batch-add dois.txt --type doi --tags "imported"
自动跳过重复项,并输出汇总报告:成功添加数 / 跳过数 / 失败数。
python3 zotero.py export --format bibtex --output refs.bib python3 zotero.py export --format csljson --collection COLLKEY
python3 zotero.py update ITEMKEY --add-tags "important" --remove-tags "unread" python3 zotero.py update ITEMKEY --title "Corrected Title" --date "2024" python3 zotero.py update ITEMKEY --doi "10.1234/example" python3 zotero.py update ITEMKEY --url "https://example.com/paper" python3 zotero.py update ITEMKEY --add-collection COLLKEY
python3 zotero.py delete KEY1 KEY2 --yes # 移入回收站(可恢复,默认行为) python3 zotero.py delete KEY1 --permanent --yes # 永久删除
python3 zotero.py crossref my-paper.txt
从文本中提取 Author (Year) 类型模式,并在文献库中匹配对应条目。
# 试运行(默认)——仅显示匹配结果,不写入任何变更 python3 zotero.py find-dois --limit 20 # 实际向 Zotero 写入 DOI python3 zotero.py find-dois --apply # 按文集过滤 python3 zotero.py find-dois --collection COLLKEY --apply
扫描缺失 DOI 的 journalArticle 和 conferencePaper 条目,调用 CrossRef 查询,并依据以下条件匹配:标题相似度 >85%、年份完全一致、第一作者姓氏完全一致。默认为试运行模式,需显式指定 --apply 才会写入;仅更新 DOI 字段,不修改其他元数据。CrossRef 请求之间有 1 秒延迟(配合礼貌请求池的 mailto 配置)。
# 试运行 — 显示哪些 PDF 可获取及其来源 python3 zotero.py fetch-pdfs --dry-run --limit 10 # 获取并作为链接型附件添加(不占用 Zotero 存储配额) python3 zotero.py fetch-pdfs --limit 20 # 同时将 PDF 保存至本地目录 python3 zotero.py fetch-pdfs --download-dir ./pdfs # 上传至 Zotero 存储(而非仅添加链接) python3 zotero.py fetch-pdfs --upload --limit 10 # 仅尝试指定来源 python3 zotero.py fetch-pdfs --sources unpaywall,semanticscholar
按顺序尝试三个合法的开放获取来源:Unpaywall → Semantic Scholar → DOI 内容协商(Content Negotiation)。默认创建链接型附件(不消耗 Zotero 存储配额);使用 --upload 可将 PDF 完整上传至 Zotero 的 S3 存储;使用 --download-dir 可同时将 PDF 保存至本地。
支持的数据源: unpaywall、semanticscholar、doi(默认启用全部三项)
速率限制: Unpaywall / Semantic Scholar 请求间隔为 1 秒,DOI 请求间隔为 2 秒。
python3 zotero.py --json items --limit 100 | jq '.items[].DOI' python3 zotero.py --json get ITEMKEY | jq '.title'
urllib、json、argparse)10.xxxx/... 格式;条目 Key 为 8 位字母数字组合(例如 VNPN6FHT);ISBN 必须通过校验和验证。check-pdfs 会拉取全部条目;对于大型文献库(500+ 条),该操作可能较慢fetch-pdfs 同样遍历全部条目;大型文献库建议配合 --collection 限定范围batch-add 已内置每项之间 1 秒的延迟references/troubleshooting.md相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.5万人学习
最新文章