Paper-Agent-Zotero
基于 Zotero 个人语料库的 AI 论文推荐工具,自动拉取 arXiv 并生成个性化摘要
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
基于 Zotero 个人语料库的 AI 论文推荐工具,自动拉取 arXiv 并生成个性化摘要
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

深夜 11 点,你刚结束一天的工作,想起昨天收藏的那篇 arXiv 论文还没来得及看。于是打开 arXiv,输入关键词,浏览摘要,再翻几个相关链接……半小时过去了,脑子里只剩下碎片——没有系统、没有重点、没有记忆。
这是每一位科研工作者和 AI 爱好者的日常:信息过载,但时间稀缺。arXiv 每天新增上千篇论文,靠人工筛选几乎不可能。
Paper-Agent-Zotero 正是为了解决这个问题而诞生的。它是一个本地运行的 AI 论文助理,能够:
简单来说:它是一个「懂你的研究品味、自动替你做论文初筛的 AI 工具」。
Paper-Agent-Zotero 的作者 Marverlises 是一名 AI 研究者。在日复一日的论文阅读中,他深感手动追踪 arXiv 的低效——每次都要花大量时间在海量论文中寻找真正相关的内容。
他的解决思路很直接:与其在茫茫论文海中漫无目的地搜索,不如让 AI 先「读懂」我,然后让 AI 去海里帮我捞最相关的那几篇。
具体来说,他用 Zotero 中积累的论文作为「兴趣语料库」,通过 TF-IDF + Sentence Transformers 做语义相似度计算,让系统学会判断「这篇新论文和我过去读过的哪些论文最像」。结果就是:每天早上,系统会推送 10 篇「你大概率会喜欢」的论文摘要,配上 AI 生成的关键信息解读。
这个思路本质上是 个性化推荐系统 在学术论文场景的落地,类似于 Spotify 根据你的播放历史推荐歌曲,只不过推荐的对象换成了 arXiv 论文。
项目采用纯 Python 实现,依赖管理使用现代工具 uv,整体架构清晰,分为以下几个核心模块:
| 模块 | 文件 | 职责 |
|---|---|---|
| 主入口 | main.py | 协调整个工作流 |
| 论文数据 | src/paper.py | arXiv API 获取、PDF 下载 |
| LLM 摘要 | src/llm.py | OpenAI API / 本地 Llama.cpp 封装 |
| 推荐排序 | src/recommender.py | TF-IDF + Sentence Transformers 语义重排 |
| Zotero 接口 | src/base_corpus.py | PyZotero SDK 读取收藏 |
| PDF 布局分析 | src/pdf_layout_analyzer.py | pdf-craft 提取 PDF 结构 |
| 配置文件 | src/config.yaml | 全局参数配置 |
paper.py 封装了 arxiv Python 库来完成论文元数据的获取,包括标题、作者、摘要、分类标签等。PDF 下载则通过 requests 配合 HTTPAdapter 实现自动重试,确保网络不稳定时也能完成任务。
这是项目最核心的差异化能力。recommender.py 实现了双层推荐策略:
scikit-learn 的 TfidfVectorizer 将 Zotero 语料和候选论文的文本向量化,通过余弦相似度做初步筛选sentence-transformers 预训练模型(如 all-MiniLM-L6-v2),将文本映射到高维语义空间,计算精确的语义相似度这种「粗排 + 精排」的两阶段架构在工业推荐系统中非常常见,项目作者将其引入学术论文推荐场景,既保证了速度,又提升了相关性。
llm.py 同时支持两种调用方式:
openai 库调用 GPT-4o 等商业模型llama-cpp-python 加载 GGUF 量化模型,完全离线运行这种灵活性让它既能享受 GPT-4o 的强大能力,也能在隐私敏感或无网环境下用开源模型(如 Llama-3、Qwen)替代。摘要生成还使用了 tiktoken 做 token 计数,控制输入长度,避免超出模型的上下文窗口限制。
pdf_layout_analyzer.py 使用 pdf-craft 库(含 CUDA 支持)从 PDF 中提取结构化内容——包括标题层级、正文段落、图表位置等。解析后的 Markdown 文件会附带原始图片引用,生成的论文详情报告格式如下:
图1:每日报告输出目录结构
图2:论文文件夹内容示例
图3:论文 assets_dir 中的详细报告与图片
图4:AI 生成的论文摘要 Markdown 报告
base_corpus.py 通过官方 PyZotero SDK 读取用户的 Zotero 个人库,支持:
Working、Trash)如果不用 Zotero,也可以切换到 local 偏好源,直接指定本地 PDF 文件夹路径。
对普通用户而言,配置 config.yaml 需要一定技术基础:需要注册 Zotero API Key、获取 OpenAI API Key,并理解 arxiv.query 的分类语法(如 cs.AI+cs.CV 表示人工智能 + 计算机视觉)。
但一旦配置完成,使用体验非常顺滑——只需一条命令:
uv run main.py
程序会自动完成:拉取论文 → 语义排序 → AI 摘要 → 生成 Markdown 报告。
每日运行后,程序会在 年-月-日-时 目录下生成:
Daily_Report.md:Top-N 最相关论文的快速浏览目录[arXiv_ID]v[version].[Paper_Title].pdf:原始论文 PDFassets_dir/[arXiv_ID]/:每篇论文的详细报告(含图片)你可以将这些结果存入 Obsidian、Notion 或直接发给朋友——完全由你决定如何利用。
1. 依赖外部 API 成本:使用 GPT-4o 等商业模型会产生 API 调用费用,每天的摘要生成量取决于你的 token 配额。切换到本地 Llama 模型虽可降低成本,但摘要质量会明显下降。
2. PDF 下载不稳定:arXiv 偶尔对高频请求限流,PDF 下载失败虽有重试机制,但在网络较差的环境下仍可能漏掉部分论文。
3. 非技术用户门槛高:配置文件涉及 API Key、模型名称、arXiv 查询语法等概念,对没有开发经验的用户存在一定上手难度。
4. 仅限 arXiv:不支持 Google Scholar、ACL、ICML 等其他学术数据库,适用范围有限。
Paper-Agent-Zotero 代表了一个明确的趋势:AI 辅助科研正在从「通用问答」向「垂直领域工具」演进。
在 ChatGPT 时代,大家习惯用 AI 回答问题。但对于科研人员而言,真正有价值的是「帮我追踪这个领域的最新进展,并告诉我哪些值得深入读」——这不是通用聊天机器人能完成的任务,需要结合个人知识库(如 Zotero)和领域数据源(如 arXiv)。
该项目用不到 2000 行代码实现了一个完整的 RAG(检索增强生成)+ 推荐系统 pipeline,展示了如何在本地环境下构建「个性化学术信息流」。这种思路可以迁移到其他垂直领域(如医疗、法律、技术文档)。
目前项目已获得 148 颗 GitHub Stars(同期初创项目平均约 30 颗),说明这个需求在 AI 研究社区中确实存在且被认可。
# 克隆项目
git clone https://github.com/Marverlises/Paper-Agent-Zotero.git
cd Paper-Agent-Zotero
# 运行(使用 uv,Python 3.12+)
uv run main.py
# 或使用 pip
pip install -e .
python main.py
配置项参考 src/config.yaml,填写 Zotero ID/Key 和 OpenAI API Key 后即可使用。
本文基于 Paper-Agent-Zotero v0.1.0(Apache-2.0 License)源码分析生成。