Zotero-arXiv-Daily 完整指南4 步配置让 Zotero 书库每天为你推送相关 arXiv 论文【免费下载链接】zotero-arxiv-dailyRecommend new arxiv papers of your interest daily according to your Zotero libarary.项目地址: https://gitcode.com/GitHub_Trending/zo/zotero-arxiv-dailyZotero-arXiv-Daily 是一个开源项目它读取你的 Zotero 文献库每天从中找到与你近期研究兴趣最相关的新 arXiv 论文生成摘要和推荐邮件直接发到你邮箱。如果你用 Zotero 管理文献、又不想每天手动刷 arXiv这个项目可以借助 GitHub Actions 工作流GitHub 平台自带的自动化任务运行服务帮你零成本、免安装地完成这件事。一句话讲清工作原理从书库到收件箱我们来看看它每天在后台做了什么。整体是一条线性流水线先通过 API 拉取你 Zotero 书库里的论文和前一天新发布的论文再用嵌入模型把文本转成可比较的向量用于衡量语义相似度的技术计算每篇新论文与你书库的加权相似度——注意越晚加入书库的文献权重越高这意味着你最近在读什么比你以前读过什么更影响推荐。随后用 LLM 为每篇论文生成 TL;DR一句话核心结论最后渲染成 HTML 邮件经 SMTP 协议应用间传输邮件的标准协议发出。整个计算过程都跑在 GitHub Actions 的公共运行器上在免费额度内完成你不需要自己的服务器。最终收到的邮件效果大致如下前置准备3 个账号和 1 把钥匙动手之前先把需要的材料备齐后面配置会顺畅很多。1. 一个 GitHub 账号——部署依赖 GitHub Actions 运行器项目会 fork复制一份到自己名下到你的账户里托管。2. 一个 Zotero 账号外加两样凭证User ID 和 API Key。打开 Zotero 官网的个人设置页Security 一栏就能看到两者User ID 是一串纯数字不是你的用户名很多人栽在这里API Key 则需创建时勾选读取权限。3. 一个能发 SMTP 邮件的邮箱账号发送方和接收方可以是同一人。这里有个关键区别——要填的不是邮箱登录密码而是邮箱服务商提供的SMTP 授权码QQ 邮箱、Gmail、Outlook 等在各自设置页里单独申请忘了问服务商就查不到。4.推荐一个 LLM API用于生成 TL;DR。任何兼容 OpenAI 接口规范的第三方 API 都可以填对应的 Key 和服务地址即可。部署与配置从 Fork 到收到第一封邮件准备工作就绪后真正要做的只有四步全部在网页上完成不需要装任何开发环境。第 1 步Fork 项目到自己的 GitHub 账户为什么要 fork因为环境变量的配置挂在你自己的仓库上密钥不会被别人看到工作流也是以你的身份运行。在 gitcode 镜像上找到该项目后点击 Fork仓库地址为https://gitcode.com/GitHub_Trending/zo/zotero-arxiv-daily本地克隆调试时也用这个地址。如何验证进入你的仓库副本打开 Actions 页面应该能看到两个工作流——Send emails daily正式版每天自动跑和Test调试版仅手动触发。第 2 步设置 7 个 Secrets密钥型环境变量为什么用 Secrets 而不是直接写进配置因为 Secrets 一旦保存就完全隐藏连你自己也看不到明文是存放密钥的标准方式。进入仓库 Settings → Secrets and variables → Actions → Repositories secrets逐个添加下表左侧的名称作用与示例在下一节详述名称填什么ZOTERO_IDZotero 的纯数字 User IDZOTERO_KEY有读取权限的 Zotero API KeySENDER发件邮箱如abcqq.comSENDER_PASSWORDSMTP 授权码不是登录密码RECEIVER收件邮箱OPENAI_API_KEYLLM 服务的 API KeyOPENAI_API_BASELLM 服务地址如https://api.xxx.com/v1如何验证列表中 7 项都出现且值以 ●●●● 形式隐藏说明设置成功。第 3 步写入公开变量 CUSTOM_CONFIG为什么单独用一个公开变量这个项目用 Hydra OmegaConf 管理配置默认值在config/base.yaml你在CUSTOM_CONFIG里写的 YAML 会在运行时覆盖到config/custom.yaml而密钥类字段通过${oc.env:ZOTERO_ID}这类占位符意为取环境变量 ZOTERO_ID 的值自动从 Secrets 注入无需明文写出。在 Secrets and variables 页面切到 Variables 页签新建名为CUSTOM_CONFIG的变量值粘贴如下按需修改分类和模型名zotero: user_id: ${oc.env:ZOTERO_ID} api_key: ${oc.env:ZOTERO_KEY} include_path: null # 或限定集合如 [2026/survey/**] email: sender: ${oc.env:SENDER} receiver: ${oc.env:RECEIVER} smtp_server: smtp.qq.com smtp_port: 465 sender_password: ${oc.env:SENDER_PASSWORD} llm: api: key: ${oc.env:OPENAI_API_KEY} base_url: ${oc.env:OPENAI_API_BASE} generation_kwargs: model: gpt-4o-mini source: arxiv: category: [cs.AI,cs.CV,cs.LG,cs.CL] include_cross_list: false executor: debug: ${oc.env:DEBUG,null} source: [arxiv]如何验证这一步先不用单独验证第 4 步的测试运行日志会把这份 YAML 原样打印出来一眼即可确认内容无误。第 4 步手动触发 Test 工作流为什么要先跑 Test 而不是直接等明天Test 工作流是主流程的调试版不管当天有没有新论文它固定抓取 5 篇 arXiv 论文并强制开启 debug 日志能在 10 分钟内暴露所有配置错误Zotero 凭证、SMTP、LLM Key 哪一环断了都会显形。在 Actions 页面点选Test工作流 → Run workflow等它跑完。如何验证成功日志开头会打印 Use custom config: 加你的完整 YAML运行状态为绿色你的收件邮箱收到一封含 5 篇论文附 TL;DR、机构信息、PDF/代码链接的测试邮件。一切就绪后主工作流Send emails daily默认每天 22:00UTC自动运行抓取前一天新发布的论文。想改推送时间编辑.github/workflows/main.yml里的 cron 表达式即可。配置参数速查表Secrets 与公开变量参数作用是否必填ZOTERO_IDZotero 账户 User ID纯数字非用户名是ZOTERO_KEYZotero 只读 API Key是SENDER/SENDER_PASSWORD发件邮箱及其 SMTP 授权码是RECEIVER接收论文列表的邮箱是OPENAI_API_KEY/OPENAI_API_BASELLM 服务的 Key 与地址用于生成 TL;DR是CUSTOM_CONFIG公开变量存放覆盖默认配置的 YAML是CUSTOM_CONFIG 中值得调整的重点项配置项作用是否必填source.arxiv.category目标 arXiv 分类列表如[cs.AI,cs.LG]是推荐范围的核心是source.biorxiv.category/source.medrxiv.category预印本平台 bioRxiv、medRxiv 的分类不用可留空否source.arxiv.include_cross_list是否纳入跨挂cross-list论文否zotero.include_path用 glob 模式限定只参考部分 Zotero 集合如[2026/survey/**]否llm.generation_kwargs.model生成 TL;DR 的模型名按你的 LLM 服务填写是llm.languageTL;DR 的偏好语言否executor.source实际启用的数据源列表如[arxiv,biorxiv]是executor.max_paper_num邮件中论文上限默认 100否executor.send_empty当天无新论文时是否仍发空邮件默认 false否executor.reranker相似度计算用local本地嵌入模型还是api远程嵌入 API否reranker.api.*选api模式时的嵌入服务 Key、地址、模型名、批大小否完整字段含reranker.local.encode_kwargs等细节以config/base.yaml中的注释为准详见仓库 README。典型场景与实践建议最常见的用法课题组或独立研究者把 Zotero 里正在精读的集合单独放好用include_path只让这部分文献参与推荐推送结果就能紧密贴着当前的研究主题而不是被三年前的旧文献稀释。生物医学方向的用户可以把executor.source扩成[arxiv,biorxiv,medrxiv]同时覆盖三类预印本平台。几个能明显提升体验的做法保持书库新鲜推荐分数以近期入库文献权重最高及时把新读的论文加入 Zotero推送的贴合度会随之提升。订阅上游更新项目在持续迭代用 Watch 订阅发布动态有新版时把上游变更合并进你的 fork别让自己的副本慢慢过期。本地调试如果你想在动手前先跑通一遍装好 uv 后可在本地执行需先export好同名环境变量git clone https://gitcode.com/GitHub_Trending/zo/zotero-arxiv-daily cd zotero-arxiv-daily uv run src/zotero_arxiv_daily/main.py常见坑与注意事项结合仓库 README 明确写出的限制提前知道这几条能少走弯路ZOTERO_ID填错格式它是纯数字序列不是用户名测试工作流第一步就会失败。SMTP 密码 ≠ 登录密码SENDER_PASSWORD必须是 SMTP 授权码填错会报认证失败但邮件客户端本身正常。周末和节假日收到 No new papers found这是正常现象arXiv 周末不发新论文主流程日志会如实提示不代表配置坏了——这也是先用 Test 工作流验证的原因。max_paper_num别贪大公共仓库单次运行上限 6 小时、每月 2000 分钟论文数过大可能超时个人使用默认额度通常绰绰有余确有高负载需求再考虑自建服务器或自托管 runner。推荐算法本身较简单它基于摘要嵌入的加权相似度未必完全贴合你的真实兴趣README 也明确欢迎更优算法的改进想法。按这套流程走下来从 Fork 到收到第一封测试邮件通常不超过半小时。之后剩下的就是每天打开邮箱、用 TL;DR 花几十秒决定哪些论文值得精读。【免费下载链接】zotero-arxiv-dailyRecommend new arxiv papers of your interest daily according to your Zotero libarary.项目地址: https://gitcode.com/GitHub_Trending/zo/zotero-arxiv-daily创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考