通过 Web API 管理 Zotero 参考文献库。支持搜索、列表、通过 DOI/ISBN/PMID 添加条目(含重复检测)、删除/回收条目、更新元数据与标签、导出为 BibTeX/RIS/CSL-JSON、文件批量添加、检查 PDF 附件、交叉引用、通过 CrossRef 查找缺失 DOI 及获取开放获取 PDF。支持 -- 输出以便脚本调用。当用户询问学术参考文献、引文管理、文献库、论文 PDF、书目导出或 Zotero 相关问题时使用。
Zotero Skill. 通过 REST API v3.
功能概述
Zotero Skill. 通过 REST API v3.是一项面向实际任务的技能,主要用于Setup. 需要两个环境变量与 Zotero 个人或团体库交互: 对于团体库,设置 ZOTERO GROUP ID 而不是 ZOTERO USER ID.O。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
核心要点
- 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
- 从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。
- 实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
使用与执行
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;
结果检查与注意事项
涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
Zotero 技能
通过 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 — 您的邮箱(可选;未设置时将使用默认回退机制)
若凭据缺失,请明确告知用户所需内容,并附上密钥创建页面链接。
CLI 脚本
所有操作均通过 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 |
全局标志(Global Flags)
--json— 输出 JSON 格式而非人类可读格式(适用于items、search、get)
常用选项(Common Options)
--limit N— 返回条目最大数量(默认为 25)--sort FIELD— 按字段排序:dateModified、title、creator、date--direction asc|desc— 排序方向--collection KEY— 按文集过滤,或向指定文集添加条目--type TYPE— 按条目类型过滤(如 journalArticle、book、conferencePaper 等)--tags "tag1,tag2"— 创建条目时添加标签--force— 在添加类命令中跳过重复检测
典型工作流(Workflows)
通过 DOI 添加一篇论文
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) 类型模式,并在文献库中匹配对应条目。
查找缺失的 DOI
# 试运行(默认)——仅显示匹配结果,不写入任何变更 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
# 试运行 — 显示哪些 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 秒。
结合 JSON 进行脚本化处理
python3 zotero.py --json items --limit 100 | jq '.items[].DOI' python3 zotero.py --json get ITEMKEY | jq '.title'
注意事项(Notes)
- 零依赖 —— 仅使用 Python 3 标准库(
urllib、json、argparse) - 写入操作需具备写权限的 API 密钥
- 若 Zotero 翻译服务器不可用(返回 HTTP 503),DOI 查询将自动回退至 CrossRef
- 输入校验: DOI 必须符合
10.xxxx/...格式;条目 Key 为 8 位字母数字组合(例如VNPN6FHT);ISBN 必须通过校验和验证。 check-pdfs会拉取全部条目;对于大型文献库(500+ 条),该操作可能较慢fetch-pdfs同样遍历全部条目;大型文献库建议配合--collection限定范围- 速率限制较为宽松;
batch-add已内置每项之间 1 秒的延迟 - 常见错误与排障方法详见
references/troubleshooting.md
热门AI工具
相关专题
本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。
0
2026.10.22
本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。
0
2026.10.22
本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。
0
2026.10.22
本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。
0
2026.10.22
本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。
0
2026.10.22
本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。
0
2026.10.22
本专题讲解Golangci-lint的安装、初始化、基础命令和首次代码检查,覆盖本地环境、Docker及多平台用法,帮助Go开发者快速上手。
0
2026.10.22
PHP2Shell漏洞是什么,哪些PHP版本和运行环境会受到影响,服务器应该如何检测与修复?本专题提供版本自查脚本、Linux与Docker升级命令、PHP-FPM和Apache排查步骤,以及修复验证、临时缓解和应急响应方案。
0
2026.10.22
热门下载
相关下载
精品课程
共6课时 | 12.1万人学习
共79课时 | 161.5万人学习
共6课时 | 54.7万人学习
最新文章
