什么时候用
先判断任务是否合适
- 阅读PDF论文时想快速提问(如'这篇论文的创新点是什么')而不用跳出Zotero界面时
- 需要将论文段落翻译成中文或用学术风格润色英文写作时
- 希望将AI对话结果自动记录到Zotero笔记中,保持阅读与笔记在同一工具内闭环时
- 想一键给论文条目打上由AI根据摘要推荐的标签时
先准备什么
材料越清楚,结果越有用
- •安装Zotero(7或6版本)和zotero-gpt插件(xpi文件)
- •配置OpenAI兼容API的密钥、接口地址和模型名称(或使用内置免费API回退)
- •如需自动写入功能,安装zotero-better-notes插件
- •根据需要自定义命令标签的prompt模板(如翻译指令、摘要格式、润色风格要求)
它会怎样推进
从材料到可以检查的结果
- 01
选中论文
在Zotero主面板选中条目,或打开PDF阅读器定位到目标论文页面
- 02
输入问题
在浮窗中输入问题,或点击AskPDF等命令标签使用预设的prompt模板
- 03
检索相关段落
工具用PDF全文做向量检索,找出与问题最相关的段落作为回答上下文
- 04
GPT生成回答
将问题加检索段落拼接成prompt,通过OpenAI兼容API流式生成Markdown回答
- 05
写回笔记
回答完成后双击复制,或自动写入Better Notes主笔记/条目笔记,完成阅读闭环
第一次这样开始
把仓库地址直接交给 AI
先让 AI 说明环境和风险,再完成最小安装验证。跑通以后,再把自己的真实材料放进去。
第一次直接复制
帮我安装这个库:https://github.com/MuiseDestiny/zotero-gpt 安装前先告诉我需要什么环境,安装后帮我跑通一个最小示例。
结果出来后
先看这些检查点
- 检查GPT回答是否引用了论文中的具体内容而非编造不存在的信息(核对引用段落编号)
- 检查向量检索返回的段落是否与问题真正语义相关(而非仅关键词表面匹配)
- 对于翻译任务,核对专业术语翻译是否准确,公式和特殊符号是否在翻译中丢失
- 检查写入笔记的格式和位置是否符合预期(笔记目标、光标位置、HTML渲染效果)
常见误区
这些判断仍由你负责
- 把GPT基于少数检索段落的回答当作对全文的完整理解(上下文窗口有限,只看相似度最高的top段)
- 使用内置免费API回退时未评估隐私风险(论文全文会发送到第三方免费API,无隐私保障)
- 安装社区标签模板后未经审核直接使用(标签中的eval代码可执行任意JavaScript,无沙箱隔离)
- 忽略AGPL-3.0许可限制(将插件代码集成到闭源工具或商业化服务中会触发传染条款)
技术依据
查看能力拆解、验证范围与来源
技术依据
查看能力拆解、验证范围与来源
- 01
OpenAI流式对话
把组装好的 prompt 文本通过 OpenAI 兼容 API(或免费第三方 API 回退)以 SSE 流式方式发送,实时增量渲染回复到浮窗,维护会话消息历史,处理错误显示。这是所有问答/翻译/润色标签的统一回答后端。
- 02
PDF相关段落检索问答
从当前 PDF 全文或选中条目集合中,按用户问题用向量相似度检索最相关段落,以 [number] 编号拼接为上下文,供后续 GPT 问答引用。这是 AskPDF / SearchItems / Items 等标签的上下文采集核心。
- 03
Zotero文献写回
把 GPT 回复写回 Zotero:自动写入 Better Notes 主笔记(笔记内空格触发跟随模式)、双击复制并插入笔记、或让 GPT 生成 item.addTag 代码执行给条目添加标签。这是 AI 阅读辅助的闭环写回环节。
- 04
命令标签prompt模板执行
把可复用的 prompt 模板封装为"命令标签",标签文本内可嵌入 ${JS代码} 或 js 代码 片段,执行时先 eval 这些代码(获取 PDF 选中文本、相关段落、条目字段等动态上下文)替换进模板,再交给 GPT 回答,实现"一键"加速研究问答。
| 能力 | 主要输入 | 主要输出 | 人工检查 |
|---|---|---|---|
OpenAI流式对话源码已核对 |
|
|
|
PDF相关段落检索问答源码已核对 |
|
|
|
Zotero文献写回源码已核对 |
|
|
|
命令标签prompt模板执行源码已核对 |
|
|
|
处理机制
- 01
核心处理链
在Zotero内用GPT对论文全文进行问答、翻译、润色,并把结果写回笔记
已核对范围
- 静态确认 getGPTResponseByOpenAI 调 POST ${api}/v1/chat/completions,stream=true,SSE onprogress 增量解析 data: JSON 的 choices[0].delta.content
- 静态确认 会话消息切片最后 chatNumber 条(默认 3),user/assistant 角色对 push 到 messages
- 静态确认 deltaTime(默认 100ms)setInterval 平滑渲染,逐字拼接直到 responseText 等于 textArr
- 静态确认 secretKey 未配置时回退到免费第三方 API(requestArgs: aigpt.one / chatbot.theb.ai)
- 静态确认 api URL 规范化(去尾部 /v1),model/temperature 从 Prefs 读取
- 静态确认 错误分支解析 error.code/type/message 并 ProgressWindow 显示
- 静态确认 pdf2documents 从 PDF.js 读取 textContent,合并同行、去页眉页脚、段落聚类,遇到 references/acknowledgements 停止
- 静态确认 selectedItems2documents 把选中条目 JSON(截断 500 字)作为候选文档
仍待核对
- 未运行真实 OpenAI 调用(需 secretKey 授权)
- 免费第三方 API(aigpt.one/chatbot.theb.ai)可用性与稳定性未验证,代码注释标"可补充很多免费API"
- SSE 解析在 token 超限时的降级行为未验证(onprogress catch 静默)
- 未运行真实 PDF 检索(需 OpenAI secretKey 授权)
- embeddingBatchNum 分批的实际限流行为未验证
- PDF 段落聚类的字体阈值在不同 PDF 版式下的效果未验证
- 跨页去页眉页脚的 isIntersectLines 误杀率未验证
- 未在真实 Better Notes 环境验证写回(需安装 zotero-better-notes 插件)
读取版本
c3d13201245a8b9dda0f468cff093e57804bb23c许可
AGPL-3.0
最近核对
内容 2026-07-10
Stars 2026-07-11