Zotero

Polar Sponsor
爱发电 赞助
.NET 9.0

通过 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

相关专题

更多
Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

2026.10.22

0

11

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

2026.10.22

0

10

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

2026.10.22

0

15

Gradle怎么构建Java项目
Gradle怎么构建Java项目

本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。

2026.10.22

0

10

PHP时间戳漏洞修复教程
PHP时间戳漏洞修复教程

本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。

2026.10.22

0

25

Golangci-lint配置文件与规则设置
Golangci-lint配置文件与规则设置

本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。

2026.10.22

0

15

Golangci-lint安装与入门教程
Golangci-lint安装与入门教程

本专题讲解Golangci-lint的安装、初始化、基础命令和首次代码检查,覆盖本地环境、Docker及多平台用法,帮助Go开发者快速上手。

2026.10.22

0

15

PHP2Shell高危漏洞修复教程
PHP2Shell高危漏洞修复教程

PHP2Shell漏洞是什么,哪些PHP版本和运行环境会受到影响,服务器应该如何检测与修复?本专题提供版本自查脚本、Linux与Docker升级命令、PHP-FPM和Apache排查步骤,以及修复验证、临时缓解和应急响应方案。

2026.10.22

0

12

剧云人物设定与关系管理教程
剧云人物设定与关系管理教程

本专题介绍剧云人物设定与关系管理,讲解角色小传、性格职业、人物目标、背景资料和关系网络的创建及维护方法。

2026.10.22

0

16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 134.1万人学习