ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Zotero+Paper Agent:搭建AI论文速递系统,实现文献自动筛选与推送

Zotero+Paper Agent:搭建AI论文速递系统,实现文献自动筛选与推送 先说一个我自己的场景以前找文献基本是早上打开 arXiv、期刊主页、几个数据库把关键词挨个粘一遍扫一遍标题能筛出两三篇相关的就算运气好然后下载 PDF、重命名、丢进文件夹等写论文时又找不到。后来我花了一个周末把 Zotero 和一个常被叫做 Paper Agent 的 AI 代理工具接在一起做了一个真正意义上的“AI 论文速递系统”每天早上自动抓最新论文先去掉已经看过的重复项再用大模型按我的研究主题打分最后把筛出来的高质量论文连同摘要、DOI、PDF 链接一起写进 Zotero 指定分类。这套系统跑了大半年现在每天只需要花 10 分钟看推送结果不再担心漏掉重要工作。这篇文章我会把整套配置逻辑拆开讲从 Zotero 侧要准备什么到 Paper Agent 侧数据源、关键词、过滤规则怎么设再到两者用 Web API 打通时需要避开的坑。适合正在读研做科研、平时需要大量追踪文献的人看也适合想把自己从“手动刷数据库”里解放出来的朋友。你不需要有很强的编程背景但最好愿意花一点时间按步骤操作。1. 搭建前先想清楚论文速递系统应该由哪几个环节组成很多人在做文献追踪时第一步就容易跑偏先下载了一堆插件和脚本忙着搞自动化却没有想清楚自己要解决的真实问题。我一开始也走过这个弯路。之前我试过用订阅源把几十个期刊的更新全部汇总到一个阅读器里结果是每天多出来几百条标题根本看不过来文献库变成了一堆“囤积但不想读”的 PDF比没订阅时更焦虑。实际上论文速递系统的价值不在于“推送”而在于“筛选”。它需要同时处理好五件事采集、去重、粗筛、精筛、归档。只有把这五个环节串成一个链路AI 才有真正意义。环节传统手动做法AI 速递系统做法采集每天手动打开多个网站和数据库Paper Agent 按定时任务访问各数据源接口去重靠记忆判断“这篇好像看过”用标题、DOI 和内容特征做自动去重粗筛眼睛扫标题通常只看前 20 篇用关键词算分把明显不相关的先剔除精筛打开 PDF 看摘要和结论大模型读取摘要按你的研究方向打分并生成推荐理由归档下载 PDF 后手动命名存文件夹自动把元数据写入 Zotero 分类并保留标签和链接这样设计之后每天的阅读动作就变得非常简单打开 Zotero 里固定的一个“AI 论文速递”分类看新到了一批什么条目每一篇旁边还挂着 Agent 写的推荐理由想精读就直接点开 PDF想以后再读就打个标签。整个过程不再需要在一堆网页之间来回切换。为什么最终选择 Zotero 而不是别的工具来当“收件箱”因为 Zotero 的生态足够稳定它的 Web API 对自动化写入非常友好文献条目由你自己掌控不会因为某个第三方平台的接口变化就丢数据。而且当你后面要写论文时Zotero 里的条目直接就能生成引文不需要再做二次搬运。Paper Agent 则负责更聪明的部分定时搜索、语义判断、生成摘要、调用大模型打分。我理解中的“Paper Agent”未必非得是某个具体产品它更像一个“带 AI 能力的检索代理”你可以用现成的 AI 工作流工具配置也可以自己写 Python 脚本核心逻辑完全一样。这套结构想清楚之后后面的配置就很顺了。以下是我个人建议的搭建顺序先把 Zotero 侧的基础环境准备好然后再去配 Paper Agent 的采集和筛选最后做 API 对接。2. 配置篇Zotero 侧需要提前打开的两个开关在接 Paper Agent 之前Zotero 自身要先做好三件事装好客户端、建好分类库、拿到 API 访问凭证。前两件不难很多人可能已经在用但第三件是自动推送的关键很多教程没有讲透。2.1 安装、登录、建立“AI论文速递”专用分类Zotero 客户端支持 Windows、macOS、Linux包括国产 Linux 桌面环境也能正常安装。官方安装包体积不大不需要额外搭 Java 之类的运行环境。安装后最重要的是登录 Zotero 账号并打开同步因为 Web API 的操作是基于在线图书馆的Agent 往你的账号里写入条目桌面客户端再同步到本地。登录后我建议先建一个顶层分类名字就叫“AI论文速递”。在这个顶层分类下面再建三个子分类“待读”“精读”“已归档”。这样分类的好处是Agent 只负责往“AI论文速递”这个顶层分类里写入新文章你每看完一篇就手动把它移到子分类里不会干扰 Agent 的去重逻辑。如果你把条目手动移到一个完全独立的分类Agent 下次抓取时会发现“这个标题不在目标分类里”可能再次添加一遍形成重复。所以分类结构一定要提前设计好不能边跑边改。还有个容易被忽略的小点Zotero 的同步存储空间是有免费额度的如果你的 Agent 会推送很大的 PDF 附件很快会占用大量同步空间。我个人的做法是Agent 写入的条目只带元数据和 PDF 链接不要直接推整份 PDF 附件真正需要精读时再点击链接下载。这是给磁盘和同步空间减负的关键。2.2 获取 Zotero API Key 和 User ID要让 Paper Agent 能把论文写入你的 Zotero 账户就必须有一个“门禁凭证”也就是 API Key。这个 Key 不是桌面客户端里的某个设置而是在 Zotero 网站上生成的。具体操作是登录 zotero.org点击右上角头像进入“Settings”在设置页找“API”或“Feeds/API”相关入口。不同语言的界面显示不一样但路径基本一致。进入后你会看到两段关键信息最上方会有一行字显示 “Your userID for use in API calls is 1234567”这串数字就是 User ID下方可以创建 private key也就是私有密钥。创建时Zotero 会问你要授权哪些权限最少要勾选“编辑文献库”权限否则 Agent 只能读不能写。创建完成后Zotero 会显示一个很长的密钥字符串类似9AbCdEfGhIjKlMnOpQrStUv请立刻复制保存。因为 Zotero 只在创建时显示一次完整密钥关掉页面之后你就只能重新创建新的。拿到 API Key 和 User ID 的组合Paper Agent 侧就有了完整的写库凭证。2.3 顺手把常用的 Zotero 阅读插件配好严格来说阅读插件不参与论文抓取和推送但它是整个流程的体验补充。比如你在 Zotero 里打开 Agent 推送来的 PDF 后想快速看一段翻译可以装社区常见的 Zotero PDF 翻译类插件如果你经常和论文公式、段落注释打交道还可以配 PDF 增强插件。这类插件的核心作用是“读起来舒服”不会影响速递系统的自动化链路。尤其值得提醒的是不要在速递系统跑通之前就装一堆插件。插件越多Zotero 启动越慢而且有些插件会抢占翻译服务的请求端口导致 Agent 写库时出现超时假象。先把核心链路跑起来再按需装阅读增强插件是我试过很多次之后比较稳妥的顺序。3. 配置篇Paper Agent 侧的核心参数怎么填Zotero 侧准备完毕接下来重点来了Agent 的采集范围、关键词、过滤规则和输出动作这些参数直接决定你每天收到的一批论文是“精准命中”还是“乱枪打鸟”。3.1 数据源配置先想清楚你要追的是预印本还是正式期刊Paper Agent 的常见数据源通常覆盖这几类开放预印本平台、计算机领域的文献库、生命医学生物领域的数据库、以及综合性的 DOI 注册库。不同数据源的更新速度和字段格式差异很大配置前要先明确自己的研究领域。数据源覆盖方向更新节奏适合场景arXiv预印本偏计算机、物理、数学等每天多次更新追最新进展适合计算机和物理类科研党DBLP计算机领域期刊与会议论文基本日更追踪正式发表的会议论文PubMed生物医学文献每日更新生物、医学、药学方向Crossref全学科 DOI 注册信息持续更新多学科综合追踪需要配合更严格筛选Semantic Scholar全学科带引用数据定期抓取做引文分析或跨领域追踪我的研究方向偏自然语言处理和模型评测所以最常用的数据源是 arXiv 里那几个子类别同时把 DBLP 挂在后面用来检查某篇顶会论文是否正式发表。如果你是医学或生物方向的把 PubMed 作为第一数据源会更合适。这里不是越多越好数据源数量越多Agent 每天抓回来的无关内容也会变多筛选压力反而变大。建议初期只配 1 到 2 个数据源跑两周确认效果后再加。3.2 关键词组合怎么设计才不浪费大模型能力很多人第一次配关键词时会直接把“大模型可解释性”这样一句自然语言丢给 Agent结果抓回来的论文要么太宽泛要么完全跑偏。原因是检索接口真正处理的是字段匹配自然语言中的“的”“性”这类词反而会干扰匹配效果。我推荐把关键词拆成三组领域词、动作词、排除词然后按这个逻辑组合。比如你要追踪“大语言模型评测”方向可以这样写(title:large language model OR title:foundation model OR abstract:LLM) AND (abstract:benchmark OR abstract:evaluation OR abstract:assessment) AND NOT (title:clinical OR category:cs.CR)这个模板里的括号最好不要省。OR 两边的条件要都括起来否则有些平台会理解成“必须同时出现两个 OR 条件”导致结果过少。NOT 后面放的排除项非常重要它能帮你把医疗、安全、其他不感兴趣的子方向提前挡在门外。关键词数量也不是越多越好。我实测下来把关键词分成 3 到 5 组、每组 2 到 4 个同义词是最均衡的状态。超过这个数量反而容易出现“关键词叠加过严、一篇都推不出来”的问题。设计完关键词后先在 Agent 上手动执行一次搜索看返回结果是否合理确认有效后再开启定时任务。3.3 过滤规则相关性阈值、时间窗口和期刊白名单如果 Agent 把抓到的原始结果全部推给你那跟看旧式 RSS 没什么区别。所以下一步要设置过滤规则。我通常用三层过滤时间窗口、关键词分数、大模型语义评分。时间窗口建议设置为最近 3 到 7 天不要设成“全部”。追新文献本来要的就是时效性设太长会让 Agent 每天重复处理大量旧文。关键词分数是硬性门槛比如标题命中一个领域词得 30 分摘要命中动作词得 20 分总分低于 50 分直接丢弃。大模型语义评分是第二道门槛Agent 会先读取论文标题和摘要再根据你写好的研究方向说明判断这篇论文和你的课题是否相关并打一个 0 到 1 的分值。我自己的实际操作是关键词分数作为粗筛大模型语义评分作为精筛最终保留“相关性分数大于 0.7”的论文。如果某段时间觉得推荐太少就降到 0.6如果推荐太泛就升到 0.8。这个阈值不需要一次调对跑两周观察一下再微调效果远好过一开始追求“完美参数”。有的 Agent 平台还支持“期刊白名单”和“会议白名单”比如只接收 CCF-A 类会议或某个期刊主领域的论文这个选项建议开启能明显减少不相关推送。3.4 输出通道把结果送进 Zotero 还是先发通知Paper Agent 在完成筛选后通常提供多种输出动作写进数据库、发邮件、发即时消息、调用 Webhook 等。在这个项目里最核心的输出动作就是“写入 Zotero”但我建议你初期不要直接把筛选结果往 Zotero 里灌而是先用一个“人工确认模式”或者让 Agent 每天只推送 5 到 10 篇候选论文到你的邮箱或即时通知里由你判断这批论文有没有价值。跑一周后如果推送结果你觉得确实够准再切到“自动写入 Zotero”。这里有一个设计细节即使自动写入了 ZoteroAgent 也应该在每条记录里保留两样东西一是论文的原始链接二是 Agent 生成的推荐理由。推荐理由可以放到 Zotero 条目的“摘要”字段后面或者单独打一个 “paper-agent” 标签这样你在 Zotero 里看到标签就知道来源后续想批量删除 Agent 推送过的测试条目也很方便。4. 打通 API如何让 Agent 把论文写进 Zotero 指定分类前面三步已经把 Agent 侧需要抓什么、按什么规则筛都配置好了真正让整个系统“跑起来”的临门一脚是让 Agent 能调用 Zotero 的 Web API 完成写入。这一步很多人会卡住其实只要理解了 API 的模型结构后面就非常简单。4.1 Zotero Web API 的写入逻辑和权限模型Zotero 官方提供了一套 Web API地址是api.zotero.org它和你在网页端看到的在线文献库一一对应。要让 Agent 写入文献本质上是向它的资源路径发送一个 POST 请求路径长这样https://api.zotero.org/users/UserID/items其中UserID就是你在 zotero.org 设置里看到的那串数字。同时在请求头里要带上 API KeyZotero 才会允许写入。你可以在命令行里用一条 curl 命令测试网络链路是否通比如curl -X POST https://api.zotero.org/users/UserID/items \ -H Zotero-API-Key: 你的APIKey \ -H Content-Type: application/json \ -d {items:[]}如果返回的是 200 状态码说明权限和连通性都没问题如果返回 403说明 API Key 权限不足或者 UserID 填错了。这个测试很关键避免你在 Agent 界面里绕了半天最后才发现是凭证不对。4.2 一个可以直接参考的条目数据结构Zotero 的 Web API 接收的条目是 JSON 数组每个条目里必须包含itemType、title、creators、date这些字段。下面是我在实际配置中用的一个简化结构你可以在 Agent 的“自定义输出”或“Webhook 配置”里做字段映射{ items: [ { itemType: journalArticle, title: 论文标题, creators: [ { creatorType: author, firstName: 作者名, lastName: 作者姓 } ], date: 2026-03-02, publicationTitle: arXiv, DOI: 10.xxxx/xxxxx, url: https://arxiv.org/abs/xxxx.xxxxx, abstractNote: 这里放 Agent 生成的摘要或推荐理由, collections: [AAAAAAAA], tags: [ { tag: paper-agent }, { tag: nlp } ] } ] }初学者最容易犯错的地方有两个。第一个是collections字段里填的并不是分类的名字而是分类的 Key。每个 Zotero 分类都有一个 8 位左右的字符串 ID你需要进入 Zotero 网页版打开对应的“AI论文速递”分类浏览器地址栏里最后一段路径就是分类 Key。第二个是creators的拆分Zotero 要求姓和名分开如果你直接把整个“张三”塞进firstName最后文献库里会出现大量异常的作者条目插入时要先把作者姓名按惯例拆成姓和名两部分。4.3 在 Agent 平台里绑定 Zotero 输出的注意事项如果你用的是图形化配置的 AI Agent 平台通常不需要手写 JSON只需要在“输出节点”里选择“Zotero”类型然后填写四项UserID、API Key、目标分类 Key、字段映射。有些平台还支持自动生成摘要并填入 abstractNote 字段这一项建议开启。需要特别注意的是Agent 平台可能会让你选择“更新已有条目”或“去重”。去重机制建议放在 Agent 抓取这一侧不要完全依赖 Zotero 自己的重复检测。因为 Zotero 的重复检测通常只对标题相似度高的条目敏感如果同一篇论文在不同数据库里有不同的标题格式很容易生成两条重复记录。你可以在 Agent 里设置“以 DOI 去重”优先没有 DOI 时再按标题归一化后去重。平台支持和字段选项各有差异但只要记住了上述 API 结构和凭证参数换到任何平台都能快速配置。核心原则是Agent 负责把论文整理成 Zotero API 能够识别的 JSONZotero 只负责按结构存库AI 能力不应该被写死在某个平台里。5. 实测两个月更新频率、命中率与排错记录配置写完还是要看实际运行效果。我用自己的配置跑了一段时间把一个真实的使用场景拆开来说方便你对照着自己的需求做参数调整。5.1 一个真实跑了两周的使用配置我当时的研究主题是“大语言模型评测与可解释性”数据源选择的是 arXiv 里的cs.CL和cs.AI两个分类关键词模板大致是英文组合(large language model OR LLM) AND (benchmark OR evaluation OR interpretability)排除项是NOT (medical OR clinical)。过滤规则上时间窗口设 5 天关键词分数门槛 50 分大模型相关性分数阈值 0.7输出动作是每天上午 8 点自动写入 Zotero 的“AI论文速递”分类。运行下来每天原始抓取量大概在 100 到 150 条经过数据源过滤和关键词粗筛后剩下 20 到 30 条再经过大模型语义评分后真正写进 Zotero 的论文稳定在每天 4 到 8 篇。这个数量不会让人想吐又基本覆盖了当天的关键工作。我每天早上的动作就是打开 Zotero看标题、看 Agent 的推荐理由、偶尔点开摘要对哪篇有兴趣就顺手打上“待精读”标签。整个过程不到 10 分钟比我之前一上午泡在浏览器里效率高很多。5.2 常见报错和异常现象速查再顺的自动链路也难免出问题。我把自己遇到过或帮朋友排查过的现象整理成一张表方便你直接对照处理。现象可能原因处理方法Agent 显示推送成功但 Zotero 分类里没出现条目UserID 或 API Key 填错或者条目被写入默认分类了检查 API Key 是否带写入权限确认 URL 里 UserID 是否与 zotero.org 设置页一致Zotero 里出现重复条目Agent 没用 DOI 去重或者原数据库里摘要格式不同在 Agent 侧开启 DOI 去重没 DOI 的用“标题转小写去空格”后再对比推送的条目没有摘要数据源里本身没有 abstract 字段或字段映射没选对检查数据源返回结果确认 Agent 将该字段映射到 abstractNoteAPI 返回 403权限不够或密钥已过期重新创建 API Key至少勾选“编辑文献库”权限返回 400 或 411JSON 结构里有无效字段或请求头缺少 Content-Type检查 JSON 示例先发一条测试数据确认格式某天突然没有推送任何论文可能是数据源接口临时挂了或关键词阈值太高查看 Agent 运行日志临时降阈值测试PDF 无法自动下载Agent 只写了元数据没有上传附件链接在 Agent 输出设置里加上 url 和附件链接字段或精读时手动点击下载5.3 四个值得记住的避坑技巧第一API Key 尽量建一个专用密钥不要使用 Zotero 网页端登录时需要的那种长期会话密钥。专用密钥可以随时单独吊销不影响你网页端使用。第二Agent 推送来的条目建议统一打一个 “paper-agent” 标签这样万一某段时间推送质量下降你可以一键筛选出所有自动推送的条目批量删除重新跑配置不会弄乱你手动保存的文献。第三测试阶段不要直接全自动写入先用 5 条人工确认确认字段和分类都正确后再开启定时任务。第四如果你的 Agent 平台支持“失败重试”建议设置重试 3 次、每次间隔 5 分钟以上很多 zotero API 的瞬时超时过几分钟重试就能正常写入。6. 最后一环这套系统如何变成日常科研流程的一部分工具链搭好只是开始我更想说的是如何使用它。很多人配置完自动推送后就当成一个“收藏夹”每天囤论文问题根本没有解决。我会在每周结束时做一次整理把这一周从“待读”里精读过的论文合并进 Zotero 的“已归档”分类顺便把 Agent 打的分和我的阅读笔记对照一下看它推荐的哪些方向确实值得跟进哪些推送明显偏离了我的研究重点。经过几周的反馈调整Agent 的命中率会越来越高。这套系统还有不少扩展空间。比如把 Zotero 里的论文条目再同步到 Obsidian 笔记库用双向链接做主题图谱或者每周让 Agent 自动生成一份“本周领域动态综述”把固定关键词范围内最值得看的 5 篇论文提炼成要点甚至可以让 Agent 读取你当前论文草稿里的引用标题反向补充一批高度相关的参考文献。这些都是已经有开源插件或脚本可以做到的事核心仍然是那套“采集—筛选—归档”的自动链路。我个人在这套系统上最大的体会是真正省时间的不是“自动抓取”而是“自动判断”。ZoteroPaper Agent 的价值在于把信息爆炸的负担拆解掉先用规则过滤掉明显无关的内容再让大模型从语义层面帮你做二次判断最后你只需要决定“读还是不读”。如果你打算照着搭建我建议你前两周不要太纠结参数是否完美先跑起来然后每周花十分钟看一次推送结果边跑边调整关键词和阈值。用不了几次你就能找到最适合自己研究节奏的那组参数。
返回列表