乐于分享
好东西不私藏

Vibe 了一个Endnote 插件:让 Codex 帮我整理本地 EndNote 文献库

Vibe 了一个Endnote 插件:让 Codex 帮我整理本地 EndNote 文献库
这件事的起因其实很简单。

最近整理文献时,我经常遇到一种情况:明明记得某篇论文已经存进 EndNote,却想不起完整标题;想找出某个方向收藏过的全部文献,又要在关键词、分组和年份之间来回筛选。

与此同时,我已经习惯用 Codex 辅助写作、整理代码和处理资料。于是我开始想:

如果可以直接对它说——

在我当前打开的 EndNote 文献库里,查找关于 quantum sensing 的论文。

或者:

把这几篇文献导出成 BibTeX。

甚至搜索xxx领域的论文添加合适的引用等。

是不是能少做很多重复操作?

于是,我尝试做了一个连接 Codex 与本地 EndNote 文献库的小插件。

它不是 EndNote 官方插件,也没有得到 Clarivate 的认证或背书,只是我基于自己的科研需求做的一次个人开发尝试。目前仅支持 macOS 上的 EndNote 2025。

我希望解决的不是“不会用 EndNote”

EndNote 本身已经具备很完整的文献管理和引用功能。

真正让我觉得麻烦的,是一些频繁出现、但又很机械的操作:

  • 从几千条记录中重新找到某篇论文;
  • 查看某个分组里有哪些文献;
  • 把选中的记录导出为 RIS 或 BibTeX;
  • 使用特定输出样式生成参考文献;
  • 补充 DOI、年份或其他字段;
  • 导入一批新文献并检查重复记录。

这些事情并不复杂,但经常打断正在进行的阅读或写作。

所以,我想做的不是用 AI 替代 EndNote,而是给自己增加一个可以用自然语言操作文献库的入口。

目前可以做什么?

现在的 0.1.0 版本可以连接一个已经打开的 EndNote 2025 文献库,并完成几类操作。

首先是搜索和查看。

例如:

查找文献库中关于连续变量量子光学的论文,并列出作者、年份和 DOI。

也可以查看单条记录、列出 EndNote 分组,或者读取某个分组中的文献。

其次是导出和格式化。

目前可以导出 JSON、RIS 和 BibTeX,也可以调用 EndNote 中已经安装的输出样式,生成 RTF 格式的参考文献表。

除此之外,它还可以在经过用户的许可后:

  • 创建新的参考文献;
  • 修改已有记录的字段;
  • 导入 RIS 或 BibTeX;
  • 检查 DOI、PMID 等重复标识;
  • 删除指定记录。

我最先担心的,其实是误写和误删

当 AI 只能搜索文献时,出错通常只是结果不理想。

但一旦允许它修改文献库,问题就完全不同了。

我不希望因为一句含糊的指令,就让程序直接修改甚至删除自己的正式文献记录。

因此,所有创建、修改、导入和删除操作都被分成两个阶段。

第一次操作只生成计划,不修改文献库。Codex 会先告诉我:

  • 准备操作哪条记录;
  • 哪些字段会发生变化;
  • 是否存在重复 DOI 或 PMID;
  • 删除操作是否涉及附件。

只有我看过计划并再次明确同意,第二次操作才会真正执行。

确认使用的是随机生成的一次性令牌,10 分钟后失效。如果记录在两次确认之间发生了变化,插件会停止操作并报告冲突。

删除记录时限制更严格。

如果一条记录包含附件,还必须另外确认是否允许附件随记录一起删除。删除完成后,插件也会再次检查目标记录是否确实已经不存在。

我想实现的并不是“让 AI 自动决定”,而是:

让 AI 帮我执行,但把最终决定权留给我自己。

为什么没有直接读取 EndNote 数据库?

开发过程中,我有意避开了直接解析 EndNote 数据库文件的方案。

插件通过 macOS 上 EndNote 2025 提供的脚本接口工作,不直接修改 .enl.Data 或 .enlp 等内部文件,也不连接 EndNote Web。

本地辅助程序本身不会主动发送网络请求,没有单独的云端服务器,也不会把整个文献库上传给插件开发者。

附件路径、Research Notes 和原始 XML 等敏感信息默认不会返回,只有用户明确提出需要时才会尝试读取。

需要说明的是,用户主动要求 Codex 分析的检索结果,仍可能按照其使用的 OpenAI 产品、账户设置和隐私政策进行处理。因此,我更愿意把它称为“本地文献库桥接”,而不是笼统地宣称“所有数据永远不会离开电脑”。

中文 EndNote 也可以使用

不同语言版本的 EndNote,字段和参考文献类型的显示名称并不完全相同。

插件内部使用统一的字段定义,再根据本机 EndNote 的资源表进行转换。目前已经测试过英文、法文和简体中文环境。

如果某个字段无法被可靠识别,插件会停止写入,而不是猜测它应该对应什么内容。

对于文献库操作,我更倾向于“无法确定就不写”。

它现在还不完整

这是一个刚刚完成的早期版本,目前还有不少限制:

  • 只支持 macOS;
  • 只适配标准安装位置的 EndNote 2025;
  • 操作时只能打开一个已经加载完成的文献库;
  • 不支持 Windows 和 EndNote Web;
  • 不能独立管理附件文件;
  • 暂不支持 XML 导入;
  • 不能修改已有记录的 Reference Type;
  • RIS 和 BibTeX 不一定能保留全部 EndNote 专有字段。

因此,如果要测试创建、修改或删除功能,我仍然建议先使用临时文献库,或者提前做好完整备份。

为什么把它放到 GitHub?

一方面,我希望代码和安全机制能够被别人检查,而不是只提供一个看不到内部行为的工具。

另一方面,我也想知道其他 EndNote 用户是否遇到过类似的问题,以及他们最希望通过自然语言完成哪些文献管理操作。

目前代码已经公开放在 GitHub,供查看、测试和反馈:

https://github.com/GLiuax/endnote-codex-plugin

当前仓库尚未采用标准开源许可证,因此更准确地说,这是一个“源码公开审阅”的个人项目,而不是已经授予自由复制、修改和再分发权利的开源软件。

它也还没有进入 OpenAI 公共插件目录。后续是否公开发布到插件目录,还需要进一步确认第三方授权和平台审核边界。

如果你使用的是 macOS 和 EndNote 2025,可以先从搜索、查看和导出等只读功能开始了解。

如果你发现兼容性问题,或者有新的科研工作流建议,也欢迎通过 GitHub Issue 告诉我。反馈时请不要上传真实文献库、附件路径或包含私人信息的文献记录。

这只是一次很小的个人尝试。

但我希望它最终可以让文献管理少一些机械操作,让研究者把更多时间留给真正需要思考的问题。

后续打算增加功能,把 EndNote 当作文献目录和筛选入口,把附件 PDF 当作知识库内容,再由 Codex 完成阅读、检索和综合分析。这样就可以建立一个本地知识库。


说明:本文提及 EndNote 和 Clarivate,仅用于说明软件兼容对象。该项目由个人独立开发,与 Clarivate 无隶属、赞助、认证或背书关系。