Skip to content
solsongliPublic

About

Free, open-source Zotero 7–10 plugin for AI deep reading with your own API keys: margin cards with per-paragraph AI explanations, hover translation, your own notes, flashcards, AI outline and block-grounded chat. 免费开源的 Zotero AI 精读插件:逐段 AI 讲解、悬停翻译、我的理解、闪卡与 AI 对话。

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Repository files navigation

DeepRead:Zotero AI 精读插件

DeepRead 是一个免费、开源的 Zotero 插件,支持 Zotero 7–10。它把 Vibero 的 AI 精读能力做成了普通插件,可以直接装进官方 Zotero 使用:

  • 不需要账号、积分或订阅。 解析和大模型服务都用你自己的 API Key。
  • PDF 内容只发往你在设置里配置的服务。 插件不会连接其他任何服务器。

当前版本 v1.1.1,各版本的改动见 更新日志。

快速上手

  1. 从 Releases 下载 deepread-x.y.z.xpi,在 Zotero 的「工具 → 插件」里从文件安装(详见下方「安装」)。
  2. 打开「设置 → DeepRead」,选一个大模型预设,填入 API Key,点「测试连接」。PDF 解析默认使用内置解析,不需要额外配置。
  3. 打开一篇 PDF,点工具栏上的「AI 精读」。完成后:
    • 页边卡片会显示每一段的摘要和 AI 讲解,并用彩色标签标出这段的作用(背景、方法、结果等);
    • 工具栏下方的全文结构条显示各章节和阅读进度,点击可跳转;
    • 每张图表旁边有一张图表卡片,附 AI 写的读图步骤;
    • 鼠标停在段落上会显示译文:双栏论文显示在另一栏的同一高度,单栏论文显示在该段下方,大小和原段一样;
    • 单击段落展开卡片,再次单击收起;
    • 在卡片上点「✎」可以写下「我的理解」,点「AI」可以就这一段提问;
    • 横条上的「阅读深度」可切换全文 / 重点 / 只看边注;鼠标停在引用和图表引用上会弹出说明;侧栏「阅读问题」给出 5 个问题和答案出处;
    • 「带读」默认关闭,可在「功能」菜单启用,让 Agent(本地 Codex / Claude Code、远程 API 或导入的结果)带你按 定位 → 骨架 → 方法 → 证据 → 带走 五步读;
    • 工具栏的「功能」菜单可以逐项打开或关闭这些功能。

功能

功能 说明
「功能」菜单 阅读器工具栏上的「功能 n/m ▾」可以逐项勾选:页边卡片、悬停翻译、要点高亮、全文结构条、图表卡片、速读分层、悬停查证、问题导向、带读。
• 菜单顶部选「仅本文」只改当前论文,选「设为默认」改所有论文的默认设置
• 卡片字号和宽度、重新精读、生成 AI 讲解、设置、删除本文精读结果也在这里
AI 精读 在阅读器工具栏点「AI 精读」,插件会依次完成以下步骤:
• 解析 PDF 结构
• 把每个段落对齐到原文位置
• 逐页调用大模型,为每段生成摘要和要点,并给出每个要点的翻译
• 再逐页为每段写一段「AI 讲解」(用通俗的话讲这段在说什么、为什么重要、关键术语和符号的含义),边生成边填进页边卡片
悬停段落卡片 关闭页边卡片时,鼠标停在段落上,旁边会弹出卡片,显示段落摘要、AI 讲解、要点和折叠的译文:
• 悬停某个要点,会高亮它在原文中对应的句子
• 点击要点可以切换重要度(普通 / 蓝色 / 红色),重要的要点会在 PDF 中一直高亮显示
悬停翻译 鼠标停在段落上,该段会加框,并显示译文,不遮挡原文:
• 双栏论文:左栏段落的译文显示在右栏同一高度,右栏段落的译文显示在左栏
• 单栏论文:显示在段落正下方(下方放不下时显示在上方)
• 译文框与原文等宽、尽量等高;先收紧行距,再适度缩小字号(最多约 18%,且不低于原字号与 9 CSS px 中的较小值),仍超长时可在框内滚动查看全文
• 根据原文分别保留段落、列表项、项目符号、粗体/斜体、首行缩进和悬挂缩进;同一解析框内的两个段落不再压成一段
• 图注单独定位,不再按图片高度放大文字
• 自动检查跨页或被插图打断的正文;模型确认属于同一段后联合翻译,悬停任一端显示同一份完整译文,两处原文分别定位,图注保持独立
按住 Alt 临时隐藏;拖动选字时不显示。可在「功能」菜单里关闭
点击段落打开卡片 精读后单击 PDF 里的段落,页边上该段的卡片会展开成完整卡片,并滚动到可见位置;还没有 AI 讲解的段落会当场生成。单击页面空白处收起。关闭页边卡片时,改为在段落旁固定显示悬浮卡片
速读卡 右侧栏显示 5 部分速读卡:论文标题、研究背景、核心创新点、实验结果、结论与价值。点击其中的要点,会跳回它对应的原文
AI 大纲 右侧栏按需生成层级大纲,每一节附一句总结,点击可以跳转到该节
AI 对话 基于全文(含页码)回答问题:
• 同时参考每段的 AI 讲解和你写的「我的理解」,回答会引用对应的段落块,如 (p. 3 ¶2),点击即跳到该段并打开它的卡片
• 回答里的 (p. N) 可以点击跳转
• 支持 Markdown 和 LaTeX 公式
• 对话按文献保存在本地
页边卡片 默认开启,可在「功能」菜单中关闭。开启后:
• 每张卡片对齐对应段落,滚动和缩放时跟随。卡片主体是这一段的 AI 讲解,下面是要点;译文作为一部分默认折叠,点「▸ 译文」展开(可在设置里改为默认展开)
• 连续几段讲同一件事时,AI 会把它们合并成一张卡片(标题旁标着「2 段」等),单击其中任一段打开,再次单击收起;明显截断的连续片段也会自动合并,可用「合/拆」手动修正。自动片段合并可在设置里关闭
• 默认「卡片保持展开」:打开的卡片不会因为点了别处而收起,再次点击对应原文块或单击卡片标题收起;「功能」菜单里可以一键收起全部
• 左右卡片栏顶部的小按钮可以把卡片栏收成一条窄边(例如打开右侧 AI 对话时),点窄边恢复
• 卡片左侧色带和实色标签标出这段的作用:背景灰蓝、空白橙、已有工作金、贡献紫、方法蓝、结果绿、局限红;深色模式保留区别。折叠的卡片会显示「理解」小标记
• 卡片分布在 PDF 两侧:左栏段落的卡片在左边,右栏段落的卡片在右边;单栏论文只用右侧。可在「功能」菜单或设置里改为全部放在右侧
• 卡片字号和宽度可在「功能」菜单或设置里调整,也可以拖动卡片栏靠近 PDF 的边缘调宽
• 单击摘要展开或收起卡片;双击摘要可以直接编辑;「讲」重新生成 AI 讲解
• 悬停卡片会在原文中高亮对应段落
• 卡片可以隐藏,隐藏后可在菜单里恢复。之前精读过的论文可在「功能」菜单里点「生成 AI 讲解」补上
速读分层 横条上的「阅读深度」:
• 全文:正常显示
• 重点:次要段落淡化,重点段落的关键句加下划线,次要卡片收成一行
• 只看边注:正文淡化,所有卡片收成一行摘要
• 显示本页和全文的预计阅读时间;「下一个重点 ↓」或按 N / Shift+N 在重点段落之间跳转;「读图…」直接选择图表,先核对图注与证据
悬停查证 和页边卡片互相独立。鼠标停在:
• 引用编号上:显示参考文献的标题、作者、年份和本文引用次数;如果已在你的 Zotero 文库中,可以直接打开
• 「Fig. 3」「Table 1」上:显示图表缩略图和读图步骤
阅读目标与记录 在「阅读问题」顶部选择判断相关性/理解方法/核对证据/准备复现,写下自己的目标,并直接打开相关章节或图表。个人目标、自测回答、图表证据和段落笔记可复制或存为 Zotero 笔记。重新精读会保留个人记录;段落笔记仅按原文唯一匹配重新定位,无法匹配的仍可查看和导出。
问题导向 精读后 AI 回答 5 个阅读问题(要解决什么问题、方法核心、关键设计、证据、局限),并标出答案所在段落:
• 侧栏「阅读问题」:点段落标签跳到原文;可以输入自己的问题;可选「自测」先写自己的解释,再展开 AI 答案核对
• 卡片上显示 Q1、Q2 等标记,结构条上标出答案位置
• 工具栏「问题 n/5」显示已读到答案的问题数;可以设置读到时再揭晓答案
带读 工具栏「带读」打开右侧的带读面板,五步:
• ① 定位:真正的主张、研究路径还原、阅读顺序、带着 3 个问题读
• ② 骨架:背景 → 空白 → 已有方案 → 贡献 → 主张,主张标出已证 / 部分 / 未证;术语账本
• ③ 方法:部件承重判断、核心思想三层、公式手算
• ④ 证据:证据链、边界检查、措辞强度
• ⑤ 带走:一句话总结、研究想法和 16 节精读卡,可存为 Zotero 笔记
每一条都链接到原文段落;带读的判断也显示在页边卡片上。由设置里的 ③ Agent 通道生成:本地 Codex / Claude Code(配合 nature-paper-xray、nature-paper-card 技能)、远程 API,或导入现成结果
自动高亮密度 在「功能」菜单选择本文的自动高亮密度:仅手动/少量/标准/更多。推荐优先考虑模型重要度,并参考阅读目标;切换密度保留手动标记和手动取消。
荧光笔 单击卡片上的要点,会依次换成第 1、2……种荧光笔颜色,最后再点一次清除,PDF 里对应的句子也会用同一颜色高亮。颜色的数量(1–6 种)和颜色本身可在「功能」菜单或设置里修改
全文结构条 工具栏下方的一条章节横条:每节按篇幅占位、按类型着色(引言、方法、实验、讨论、参考文献等)。
• 已读部分用深色填充,右侧显示「已读 x%」,当前章节加描边
• 点击某一节,跳到该节标题
图表卡片 每张图和每个表格在旁边的页边生成一张卡片(图为琥珀色,表为青绿色),拆成多个子图的图会合并成一张:
• 图号、标题、正文提到它的次数和缩略图
• AI 写的 2–4 步读图步骤:先看什么、再对比什么、最后得出什么结论
• 单击正文中提到「图 3(b)」的段落,对应卡片会高亮,并标出与 (b) 相关的那一步
• 单击卡片跳到原图
• 「我的证据笔记」记录比较与测量、观察结果、结论与限制;AI 读图步骤默认折叠,可写下自己的判断后再展开
我的理解 在页边卡片上点「✎」,可以写下自己对这一段的理解、疑问或联想:
• 「我的理解」始终展开显示,不会折叠
选段翻译 / 问 AI 选中文字后,弹出菜单里多出两个按钮:
•「翻译」:显示译文后可以复制,或存为高亮批注
•「问 AI」:把选中内容作为引用发进 AI 对话

安装

  1. 从 Releases 下载最新的 deepread-x.y.z.xpi。
  2. 在 Zotero 中打开「工具 → 插件」,点齿轮图标,选「从文件安装附加组件…」,然后选中这个 .xpi 文件。

之后会自动更新:Zotero 大约每天检查一次插件更新。想立即更新,可以在「工具 → 插件」里点齿轮,选「检查更新」。

也可以自己构建:npm install && npm run vendor && npm run build,产物在 build/ 目录下。

配置(设置 → DeepRead)

设置页分为三个通道:① 精读 API、② 文档解析、③ Agent,另有「功能模块」和「阅读」两组选项。

① 精读 API

任何 OpenAI 兼容接口都可以用。插件内置了以下服务的预设:

  • DeepSeek
  • 阿里云百炼
  • 智谱
  • 火山方舟
  • 硅基流动
  • OpenRouter
  • OpenAI
  • Ollama 本地

选好预设后填 API Key 即可,然后点「测试连接」确认。

可以保存多组配置(例如一组 DeepSeek、一组本地 Ollama),点配置卡片即可切换,类似 CC Switch。用「+ 添加」「复制」「删除」管理配置,在「配置名称」里重命名。精读、AI 讲解、图表卡片、翻译和对话都使用当前选中的配置。

关于「JSON 模式」:

  • 默认选 json_object,兼容性最好。
  • 如果服务商支持严格 JSON Schema,可以改成 json_schema。
  • 如果服务商不支持你选的模式,插件会自动降级。

② 文档解析

有四种方式,点卡片选择,默认使用内置文字层:

  • 内置文字层(推荐):直接用 PDF 自带的文字层识别段落、标题、图表和公式。不需要任何服务,免费、离线、一篇论文约 1 秒。扫描版 PDF 没有文字层,无法使用精读功能。
  • GROBID 本地服务:专为学术论文设计,只需 CPU 和约 1–2 GB 内存。用 Docker 启动:scripts/grobid.sh start(当前用户需要在 docker 组里)。服务地址默认是 http://127.0.0.1:8070。
  • MinerU 官方 API:在 https://mineru.net/apiManage 申请 Token 后填入。免费额度以官网为准。
  • 自建或第三方 MinerU 兼容服务:填入 mineru-api 的地址(插件会调用 POST /file_parse)。如果服务需要鉴权,再填 Token。

选中的服务连不上或出错时,会自动改用内置文字层,精读不会中断。

③ Agent(带读)

「带读」由这个通道生成,四种方式任选:

  • Codex / Claude Code(本地):点「带读 → 运行带读」后,DeepRead 在数据目录下建一个工作目录,写入论文文本 paper.md(每段带 [p. 3 ¶2] 标签),再运行本机的 Codex 或 Claude Code。Agent 按勾选的技能(默认 nature-paper-xray、nature-paper-card)写出 xray.md 和 paper-card.md。
    • 默认命令:codex exec --skip-git-repo-check --sandbox workspace-write --cd {workdir} {prompt},以及 claude -p {prompt} --permission-mode acceptEdits --allowedTools … --add-dir {skills}。
    • 「命令」一栏可以改成完整路径或自己的参数,{prompt}、{workdir}、{skills} 会被替换。
    • Agent 用它自己的账号和模型,PDF 只在本机交给它。
  • 远程 API:填一个 OpenAI 兼容接口和模型(可以和精读 API 不同,例如更强的推理模型),一次请求写出长文和精读卡。
  • 导入:选择一个已有的精读卡 / 长文 Markdown,或 DeepRead 的带读 JSON。
  • 生成的 Markdown 最后由「精读 API」整理成五步,并对应到原文段落。

「检测」会检查命令和技能文件是否存在,不会运行任何程序;只有在带读面板里点「运行带读」才会启动 Agent。超时默认 10 分钟。

功能模块与阅读

  • 功能模块:页边卡片、悬停翻译、全文结构条、图表卡片对所有论文的默认开关。单篇论文可以在阅读器工具栏的「功能」菜单里单独打开或关闭。
  • 选择摘要、讲解和翻译的输出语言。
  • 选择是否显示高亮和悬停卡片。
  • 页边卡片:卡片宽度(200–520 px)、卡片字号(10–18 px)、卡片位置(自动,或全部放在右侧)、精读后是否自动生成每段的 AI 讲解、卡片是否保持展开、是否把相关段落合并为一张卡片、荧光笔颜色、译文是否默认展开。

费用参考

  • PDF 解析:内置解析和 GROBID 都免费。只有使用 MinerU 官方 API 时,才按页计费或计入免费额度。
  • 大模型:
    • 精读:每页 1 次请求生成摘要、要点和译文;另有 1 次请求生成速读卡,1 次请求过滤作者信息块。
    • 续段合并:仅对跨页/跨图的候选边界追加确认与联合翻译请求,每批最多 4 组;旧缓存首次打开时自动补处理,成功检查后不会重复请求。模型不能确认时保留分段;失败不影响原译文。
    • AI 讲解:精读后每页再发 1 次请求(可以在设置里关闭自动生成)。单段重新生成或补生成,每段 1 次请求。
    • 图表卡片:精读后为全部图表生成读图步骤,每 6 张图表 1 次请求。关闭图表卡片就不会发送。
    • 问题导向:精读后 1 次请求生成 5 个问题;自己提的问题每个 1 次请求。
    • 悬停查证:引用和图表查证不需要大模型请求。
    • 带读:本地 Codex / Claude Code 用它们自己的账号计费;远程 API 每次带读 1 次(较长的)请求;之后精读 API 再用 1 次请求整理成五步。导入结果只需要整理这 1 次。
    • 选段翻译:每次 1 次请求。
    • AI 大纲需要你手动生成,每次 1 次请求。
    • AI 对话每发一句消耗一次请求。上下文默认最多带 12 万字符,包括全文和各段的 AI 讲解;可以在设置里调小。

数据存放

数据 位置
精读结果、AI 讲解、读图步骤、阅读问题、带读、我的理解和对话 Zotero 数据目录下的 deepread.sqlite
PDF 解析结果(content_list.json、full.md) Zotero 数据目录下的 deepread/mineru/<库ID>_<条目Key>/
带读的工作目录(paper.md、Agent 写出的 xray.md、paper-card.md) Zotero 数据目录下的 deepread/agent/<库ID>_<条目Key>/<时间>/
API Key Zotero 本机偏好设置,以明文保存

要删除某篇文献的结果,在工具栏「功能」菜单中选「删除本文精读结果」。

开发

npm install && npm run vendor          # 拷贝 marked / KaTeX 到 addon/content/lib
npm test                               # 全部单元测试(CI 也运行这一组)
python3 test/build-fixture.py          # 生成离线测试用的 MinerU 夹具
scripts/e2e.sh test/e2e/basic.js       # 在隔离的无头 Zotero 10 中跑端到端测试(假 MinerU + 假大模型)
scripts/e2e.sh test/e2e/ui.js          # 设置页 / 工具栏 UI
scripts/e2e.sh test/e2e/cards.js       # AI 讲解卡片、卡片大小、悬停翻译、对话上下文
scripts/e2e.sh test/e2e/interact.js    # 悬停翻译排版、单击段落打开卡片
scripts/e2e.sh test/e2e/v08.js         # 「功能」菜单、段落角色、全文结构条、图表卡片、解析回退
E2E_PARSER=builtin E2E_PDF2=$PWD/test/fixtures/twocol/<双栏论文>.pdf scripts/e2e.sh test/e2e/v081.js   # 双栏悬停翻译、合并卡片、保持展开、荧光笔、收起卡片栏
E2E_PARSER=builtin scripts/e2e.sh test/e2e/v09.js   # 速读分层、悬停查证、问题导向
scripts/e2e.sh test/e2e/v10.js         # 带读:本地 Agent(test/fake-agent.mjs 代替 Codex)、远程 API、导入、取消与失败、存为笔记
E2E_BASE_XPI=old.xpi E2E_UPDATE_XPI=new.xpi scripts/e2e.sh test/e2e/upgrade.js   # 带着打开的 PDF 原地升级
E2E_SKIP_SERVICES=1 E2E_PDF="$PWD/test/fixtures/reading/typography.pdf" scripts/e2e.sh test/e2e/readingFlow.js # 阅读体验与功能移除回归
npm run build                          # 打包 build/deepread-<version>.xpi
npm run release -- X.Y.Z               # 发布新版本:测试 → 打包 → GitHub Release → 更新 update.json

发布前先在 CHANGELOG.md 里写好 ## vX.Y.Z 一节。发布脚本会把这一节放进 GitHub Release 的说明。

端到端测试共用 .test-profile/,不要同时运行多个。

自动更新:manifest.json 中的 update_url 指向本仓库 main 分支上的 update.json。发布脚本会先上传 .xpi,再在 update.json 里登记这个版本,避免出现指向不存在文件的更新链接。

端到端测试使用 .test-profile/ 下独立的配置目录和数据目录,不会读写你自己的 Zotero 资料库。

原文结构保留与 RetainPDF 参考实现见 TRANSLATION_LAYOUT.md。旧缓存会自动恢复结构,缺失的分段译文沿用现有 API 按需补齐。

阅读方法的网络调研见 READING_METHODS.md,实现与验证边界见 READING_EXPERIENCE.md。旧精读缓存的字号修复即时生效;原文强调、图注精确定位和模型要点重要度需要「重新精读」生成新结果。旧缓存的卡片合并、点击收起、框尺寸适配和本地推荐高亮即时生效;跨页/跨图的联合翻译会在已有精读 API 可用时自动补齐,无需整篇重新解析。

各模块的约定和接口见 docs/DEV_NOTES.md,流水线移植说明见 docs/PIPELINE_PORT.md。

许可与致谢

  • 本插件采用 AGPL-3.0-or-later 许可,见 LICENSE。
  • 解析与提示词流水线移植自 Vibero。Vibero 是 Zotero 的 AGPL-3.0 分支,著作权归原作者所有。本插件不使用 Vibero 的名称、标识或任何服务。
  • 本插件基于 Zotero(AGPL-3.0)开发。
  • 打包了 marked(MIT)和 KaTeX(MIT)两个第三方库,详见 NOTICE.md。
  • v0.4–v0.5 的整篇翻译借鉴并移植了 ReadFlow / RetainPDF(MIT)的部分实现,这部分在 v0.6.0 中已移除,代码保留在 v0.5.0 标签中。v1.1.1 的悬停翻译适配了 RetainPDF 的结构与缩进规则,归属和 MIT 许可见 NOTICE.md。

About

Free, open-source Zotero 7–10 plugin for AI deep reading with your own API keys: margin cards with per-paragraph AI explanations, hover translation, your own notes, flashcards, AI outline and block-grounded chat. 免费开源的 Zotero AI 精读插件:逐段 AI 讲解、悬停翻译、我的理解、闪卡与 AI 对话。

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages