什么时候用
先判断任务是否合适
- 在 Zotero 中阅读 PDF 时需要快速向论文提问并获得带原文锚点的回答
- 想在文献库中跨 PDF 检索与某个问题相关的段落
- 用 Zotero 笔记做论文阅读记录,希望将 AI 回答一键写回笔记
- 本地有可用的 LLM 服务,希望在不离开 Zotero 的情况下使用
先准备什么
材料越清楚,结果越有用
- •已安装的 Zotero 客户端
- •OpenAI、Gemini、Claude 或 DeepSeek API 密钥(或本地 LLM 服务地址)
- •需要在 Zotero 中打开的论文 PDF
它会怎样推进
从材料到可以检查的结果
- 01
安装并配置插件
将插件安装到 Zotero,配置模型供应商和 API 密钥
- 02
打开 PDF 并自动解析
在 Zotero Reader 中打开论文,插件自动解析 PDF 段落并建立坐标锚点
- 03
提问或选中文本
用内置 prompt 标签或自由文本提问,可选中 PDF 文本作为额外上下文
- 04
获取流式回答与锚点
模型返回 Markdown 流式回答,每条引用可点击跳转回 PDF 原文位置
- 05
写回笔记或复制
将问答结果保存到 Zotero 笔记,或复制到外部文档继续处理
第一次这样开始
把仓库地址直接交给 AI
先让 AI 说明环境和风险,再完成最小安装验证。跑通以后,再把自己的真实材料放进去。
第一次直接复制
帮我安装这个库:https://github.com/papersgpt/papersgpt-for-zotero 安装前先告诉我需要什么环境,安装后帮我跑通一个最小示例。 请先说明许可证和安装风险,等我确认后再安装。
结果出来后
先看这些检查点
- 回答引用的段落是否确实在 PDF 原文中存在——点击锚点确认定位是否准确
- 扫描版 PDF 或双栏论文的段落解析是否完整——缺失区域可能导致检索盲区
- AGPL 许可证是否与本地工具链的使用方式兼容
常见误区
这些判断仍由你负责
- 把模型回答当作论文事实——LLM 回答是对检索片段的生成式解释,不能跳过阅读原文
- 同时使用多个模型供应商但不记录哪个答案来自哪个模型,导致答案溯源混乱
- 将 AI 回答直接写入正式笔记而不标注“AI 生成”——这在学术规范中应显式区分
技术依据
查看能力拆解、验证范围与来源
技术依据
查看能力拆解、验证范围与来源
- 01
PDF长文解析与段落锚点构建
把 Zotero PDF Reader 中当前 PDF 的页面文本抽出、合并成段落候选,并给每个段落保留 page 和 box 坐标,使后续问答引用的候选内容能被点击定位回 PDF 原文位置。
- 02
回答定位复制与笔记写回
把模型回答渲染成 Markdown/HTML 输出后,支持复制纯文本、点击候选锚点定位回 Zotero item 或 PDF 段落,并在特定上下文下写入 Better Notes 主笔记或 Zotero note。
- 03
提示标签到LLM流式回答
把用户输入、内置 prompt tag、自定义 tag 和 Zotero 上下文动态拼接成模型请求,再用在线或本地模型流式生成 Markdown 回答,并把回答保存在会话历史中。
- 04
条目与PDF上下文候选检索
把 Zotero 主界面选中的条目或 PDF Reader 当前论文转成候选 Document 集合,再按用户问题检索最相关片段,输出给 prompt 并保留条目或 PDF 定位锚点。
| 能力 | 主要输入 | 主要输出 | 人工检查 |
|---|---|---|---|
PDF长文解析与段落锚点构建源码已核对 |
|
|
|
回答定位复制与笔记写回源码已核对 |
|
|
|
提示标签到LLM流式回答源码已核对 |
|
|
|
条目与PDF上下文候选检索源码已核对 |
|
|
|
模型供应商与本地LLM治理源码已核对 |
|
|
|
处理机制
- 01
Zotero插件到模型服务状态链
这个横向机制解释 PapersGPT for Zotero 在 Zotero 插件 UI、Zotero 材料对象、上下文检索、模型供应商、本地 ChatPDFLocal 服务、输出定位和笔记写回之间怎样传递状态。
已核对范围
- 读取 src/modules/Meet/Zotero.ts 的 pdf2documents、mergeSameLine、paragraph clustering 和 box metadata 逻辑
- 读取 src/modules/views.ts 的 insertAuxiliary PDF box 定位逻辑
- 读取 src/modules/views.ts 的 setText、output dblclick、insertAuxiliary 和 Better Notes 触发
- 读取 src/modules/Meet/BetterNotes.ts 的 getEditorText、insertEditorText、replaceEditorText、follow
- 读取 src/modules/Meet/Zotero.ts 的 getPDFAnnotations 和 getPDFSelection
- 读取 src/modules/base.ts 的 defaultChatPrompt、defaultBuiltInTags 和 parseTag
- 读取 src/modules/views.ts 的 execTag、execText、命令处理和 prompt JS 插值逻辑
- 读取 src/modules/Meet/integratellms.ts 的 OpenAI、Gemini、Claude、本地 LLM 流式回答分支
仍待核对
- 未在真实 Zotero Reader 中运行
- 未验证扫描版 PDF、双栏论文、长参考文献区和异常坐标
- 未在真实 Better Notes 中写入
- 未验证普通 Zotero note pane 写入
- 未验证复制和写回的 HTML 格式
- 未调用真实模型
- 未验证 prompt tag 中 JS 执行安全
- 未验证模型输出代码执行分支
读取版本
531a4eb51051676426ff5023999c0a55779e1bf6许可
AGPL-3.0
最近核对
内容 2026-06-16
Stars 2026-07-11
相关文章
科研之我见
如何从 300 篇候选文献中筛出 50 篇核心文献
把文献检索与筛选拆开,通过本地文献库、Zotero、外部数据库和引文追踪形成可回查的核心文献清单。
查看内容