windingwind/zotero-actions-tags · 上手攻略
- 仓库:windingwind/zotero-actions-tags
- 链接:https://github.com/windingwind/zotero-actions-tags
- 分类:academic-writing
- 作者:Jay
- 更新:2026-08-14
是什么
Zotero Actions & Tags(简称 AT)是 Zotero 的插件,赋予用户基于 Zotero 事件或自定义快捷键自动执行操作的能力。核心功能是"触发条件 → 自动动作":当你添加文献、打开条目、创建标注时,自动为条目打标签、复制链接、生成笔记、翻译标题摘要等。完全基于图形界面配置,无需写代码即可使用,也支持用户自定义 JavaScript 脚本实现高级自动化。
与 Zotero 内置标签功能不同,AT 强调动态和自动化:标签随事件自动增减,而非手动维护。
解决什么问题
- 手动打标签费时:论文库积累到数百篇后,手动给每篇加标签不现实
- 工作流断裂:从 Zotero 获取文献到写笔记之间存在多个手动操作步骤(复制链接、生成笔记模板等)
- 无法批量自动化:Zotero 原生不支持"打开条目时自动翻译标题/摘要"这类事件驱动的动作
快速安装
方法一:下载 .xpi 安装(推荐)
- 访问 Releases 页面,下载最新稳定版
.xpi文件 - Firefox 用户:右键点击 .xpi → "另存为..." - 打开 Zotero → 菜单栏点击 Tools → Addons
- 点击右上角齿轮图标 → Install Add-on from file
- 选择下载的 .xpi 文件
- 在扩展列表中找到插件,点击 Restart Now
⚠️ Firefox 直接点击 .xpi 会触发安装,但有时会报错;建议用"另存为"方式绕过。
方法二:开发者版本
git clone https://github.com/windingwind/zotero-actions-tags.git
cd zotero-actions-tags
# 参考 repo 内 docs/ 或 wiki 构建 xpi,再按上法安装
核心用法
内置示例:unread 标签自动化(1 分钟上手)
AT 预置了一个最简单的示例工作流:unread 动作——文献入库时自动打上 /unread! 标签,打开阅读后关闭条目时自动移除该标签。
步骤:
- 安装插件并确保 Zotero 已正常运行
- 从 Zotero Connector 或其他方式下载一篇 PDF 文献到 Zotero
- 该文献自动获得
/unread!标签(在右侧面板 Tags 页签可见) - 打开该条目,阅读内容
- 关闭条目,
/unread!标签自动消失
这展示了 AT 的核心工作模式:事件(event)→ 动作(action)。
创建自定义动作(以"复制条目链接"为例)
- 打开 Zotero → Edit → Preferences(或 Tools → Actions & Tags tab)
- 点击 "+" 新建动作
- 配置动作参数:
| 字段 | 填法 |
|---|---|
| Label | 复制条目链接(右键菜单中显示的名称) |
| Shortcut | 如 Ctrl+Shift+L(自定义快捷键) |
| Operation | 选择 customScript |
| Data | 粘贴社区分享的脚本代码(见下) |
社区脚本示例(复制选中条目的 Zotero Web 地址链接):
// 来源:https://github.com/windingwind/zotero-actions-tags/discussions/115
const item = ...; // 当前条目对象(AT 自动注入)
const url = item.getField('url');
const title = item.getField('title');
const link = `[${title}](${url})`;
require('components/ClipboardHelper').copyString(link);
- 点击 Save
- 触发方式:在文献列表中右键选中条目 → Actions & Tags → 复制条目链接;或使用设置的快捷键
支持的事件(Trigger)
| 事件名 | 触发时机 |
|---|---|
createItem |
新建/导入条目时 |
openFile |
打开条目 PDF 时 |
closeTab |
关闭条目面板时 |
createAnnotation |
创建标注时 |
createNote |
创建笔记时 |
appendAnnotation |
添加标注到目标条目时 |
appendNote |
添加笔记到目标条目时 |
programStartup |
Zotero(或插件)启动时 |
mainWindowLoad |
Zotero 主窗口加载完成时 |
mainWindowUnload |
Zotero 主窗口关闭时 |
支持的操作(Operation)
| 操作类型 | 说明 |
|---|---|
addTag |
为条目添加指定标签(支持 tagstorian 语法:自动标记颜色标签等) |
customScript |
执行自定义 JavaScript 脚本 |
| 其他操作 | 参考官方文档(Actions 列表页) |
标签颜色与 tagstorian 语法
AT 支持为标签设置颜色,通过在标签名前加颜色前缀实现,如:
@red:important → 红色重要标签
@yellow:review → 黄色待审标签
常用于视觉区分文献优先级(如 read, important, to-read 等)。
社区动作脚本库
官方维护的 Discussions Action Scripts 分类下有大量用户贡献的实用脚本,包括但不限于:
- 自动翻译条目标题/摘要(调用翻译 API)
- 批量为条目添加特定标签
- 自动生成阅读笔记模板
- 将 Zotero 条目同步到 Notion/Obsidian
- 批量导出 BibTeX
典型适用场景
- 文献阅读流程自动化:用
closeTab事件自动移除unread标签,建立"已读/未读"自动追踪体系 - 论文分级管理:按项目/主题预设颜色标签(红色=核心文献,蓝色=方法参考,绿色=待细读),配合快捷键一键打标签
- 翻译标题摘要:新导入的英文文献,自动翻译标题和摘要为中文,便于快速浏览
- 笔记模板生成:打开特定类型条目(如 RCT)时,自动在笔记区域插入预设模板框架
- Zotero 到笔记工具同步:条目关闭时,自动将文献信息复制到 Obsidian/Notion 对应位置
坑与注意
⚠️ Firefox .xpi 安装注意:Firefox 直接点击 .xpi 链接可能无法正确触发安装器,务必右键"另存为"。
⚠️ 脚本安全性:自定义脚本运行在 Zotero 主进程,执行任意 JavaScript;来源不明的脚本建议查看代码后再运行,避免信息泄露。
⚠️ Zotero 版本兼容性:AT 基于 Zotero 插件接口开发,部分版本可能出现不兼容;遇问题先检查 GitHub Issues 和 Releases 中是否有针对你 Zotero 版本的说明。
⚠️ 标签前缀语法:tagstorian 颜色标签语法(如 @red:)是 AT 扩展支持,需确认所用版本已包含此功能。
⚠️ 事件触发时机:closeTab 触发的是"关闭条目面板"而非"关闭 PDF 阅读器",两者不同;如需监听 PDF 关闭,用 closeTab 更合适。
⚠️ 调试困难:AT 目前没有内置调试控制台,脚本出错时只能靠 Zotero.debug() 输出到 Zotero 控制台(或外接日志工具)排查。
⚠️ 中文社区资料较少:相比 Zotero 其他流行插件(如 ZotFile、Better BibTeX),AT 的中文文档和教程较少,建议直接阅读英文 README 和 Discussions。
与同类对比
| 工具 | 定位 | 核心优势 | 局限 |
|---|---|---|---|
| Zotero Actions & Tags | Zotero 插件/事件自动化 | 事件驱动、图形配置、无需写代码 | 调试困难,Zotero 版本绑定 |
| ZotFile | Zotero PDF 管理 | PDF 自动重命名、移动、提取注释 | 无事件触发能力 |
| Better BibTeX | BibTeX 导出 | 精确引用key生成、Citation联动 | 非自动化工作流 |
| Zotero MDNotes | Zotero→Obsidian 桥接 | 一键生成 Obsidian 笔记模板 | 仅限笔记,不支持任意事件 |
| Zotero Tag Bar | 标签管理 | 可视化标签树,快速筛选 | 纯标签管理,无自动化 |
| Notero | Zotero→Notion 同步 | Zotero 到 Notion 数据库自动同步 | 仅同步,无动作触发 |
AT 的独特价值在于事件驱动的条件动作——其他工具要么是手动操作,要么是定时同步,没有"打开条目→自动执行动作"这种事件响应机制。
一句话推荐结论
Zotero 重度用户想把自己从"手动打标签、复制链接、写笔记模板"的重复劳动中解放出来的首选插件——图形化配置,1 分钟上手 read/unread 自动化,JavaScript 脚本支持无限自定义;但调试工具薄弱,重要工作流建议先在测试库验证稳定性。