英文原文正文为项目原始 README(英文),本站后续会翻译为中文,当前仅剔除图片与无关章节并统一排版。
Zotero-arXiv-每日
根据你的 Zotero 库每日推荐你感兴趣的新 arxiv 论文。
[!重要]
请关注此仓库,并在上游有任何更新时及时合并你分叉的仓库,以便享受新功能并修复发现的错误。
🧐 关于
仅需 fork(并收藏)此仓库,即可跟踪你感兴趣的新科学研究!😊
Zotero-arXiv-Daily 会根据你的 Zotero 库的内容,找到可能吸引你的 arXiv 论文,然后将结果发送到你的邮箱📮。它可以作为 Github Action 工作流部署,具有零成本、无需安装,以及仅需少量设置 Github Action 环境变量即可实现每日自动发送。
✨ 功能
- 完全免费!所有计算都可以在 Github Action 运行器的本地配额内完成(适用于公共仓库)。
- 为你生成 AI 摘要,让你快速了解目标论文。
- 论文的机构信息已解析并展示。
- PDF 和代码实现的链接(如有)将在邮件中展示。
- 根据你近期的研究兴趣排序的相关论文列表。
- 通过 fork 该仓库并在 Github Action 页面设置环境变量即可快速部署。
- 支持使用 LLM API 生成论文摘要。
- 使用一系列通配符模式忽略不需要的 Zotero 论文。
- 支持从多个论文来源检索:
- arxiv
- biorxiv
- medrxiv
- chemrxiv
📷 截图
🚀 使用方法
快速开始
-
Fork(并点赞😘)这个仓库。
-
设置 Github Action 环境变量。
以下是你需要设置的所有密钥。出于安全原因,一旦设置,它们对任何人(包括你自己)都是不可见的。
| 键 | 描述 | 示例 |
|---|---|---|
| ZOTERO_ID | 你的 Zotero 账户的用户 ID。用户 ID 不是你的用户名,而是一串数字。在这里获取你的 ID。你可以在此screenshot显示的位置找到它。 | 12345678 |
| ZOTERO_KEY | 一个具有读取权限的 Zotero API 密钥。在这里获取密钥。 | AB5tZ877P2j7Sm2Mragq041H |
| SENDER | 用于发送邮件的 SMTP 服务器的电子邮件账户。 | abc@qq.com |
| SENDER_PASSWORD | 发件人账户的密码。注意,这不一定是用来登录邮件客户端的密码,而是 SMTP 服务的认证码。请向你的邮件提供商询问。 | abcdefghijklmn |
| RECEIVER | 接收论文列表的电子邮箱地址。 | abc@outlook.com |
| OPENAI_API_KEY | 使用 API 访问 LLM 时的 API 密钥。你可以在 SiliconFlow 获取用于使用高级开源 LLM 的免费 API。 | sk-xxx |
| OPENAI_API_BASE | 使用 API 访问 LLM 时的 API URL。 | https://api.siliconflow.cn/v1 |
然后你还应该为你的自定义配置设置一个公共变量 CUSTOM_CONFIG。将以下内容粘贴到 CUSTOM_CONFIG 变量的值中:
zotero:
user_id: ${oc.env:ZOTERO_ID}
api_key: ${oc.env:ZOTERO_KEY}
include_path: null # Or e.g. ["2026/survey/**", "2026/reading-group/**"]
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}
api_mode: chat_completion # Or response to use the Responses API.
generation_kwargs:
model: gpt-4o-mini
source:
arxiv:
category: ["cs.AI","cs.CV","cs.LG","cs.CL"]
include_cross_list: false # Set to true to include arXiv cross-list papers in these categories.
executor:
debug: ${oc.env:DEBUG,null}
source: ['arxiv']
如果你想包含交叉列出的论文,请设置 source.arxiv.include_cross_list: true。
[!注意]
${oc.env:XXX,yyy}表示环境变量XXX的值。如果该变量未设置,将使用默认值yyy。
这是完整的配置,??? 表示必须填写的值:
zotero:
user_id: ??? # User ID of your Zotero account.
api_key: ??? # An Zotero API key with read access.
include_path: null # A list of glob patterns marking the Zotero collections that should be included. Example: ["2026/survey/**", "2026/reading-group/**"]
source:
arxiv:
category: null # The categories of target arxiv papers. Find the abbr of your research area from [here](https://arxiv.org/category_taxonomy). Example: ["cs.AI","cs.CV","cs.LG","cs.CL"]
include_cross_list: false # Whether to include arXiv cross-list papers in subscribed categories. Example: true
biorxiv:
category: null # The categories of target biorxiv papers. Find categories from [here](https://www.biorxiv.org/). Example: ["biochemistry","animal behavior and cognition"]
medrxiv:
category: null # The categories of target medrxiv papers. Find categories from [here](https://www.medrxiv.org/) Example: ["psychiatry and clinical psychology", "neurology"]
chemrxiv:
include_new_versions: false # Whether to include revised versions (v2, v3, ...) of previously posted chemrxiv preprints in addition to new first postings. chemrxiv has no category filter: all new preprints (a few dozen per day) are retrieved via Crossref and left to the reranker. Example: true
email:
sender: ??? # The email account of the SMTP server that sends you email. Example: abc@qq.com
receiver: ??? # The email account that receives the paper list. Example: abc@outlook.com
smtp_server: ??? # The SMTP server that sends the email. Ask your email provider (Gmail, QQ, Outlook, ...) for its SMTP server. Example: smtp.qq.com
smtp_port: ??? # The port of SMTP server. Example: 465
sender_password: ??? # The password of the sender account. Note that it's not necessarily the password for logging in the e-mail client, but the authentication code for SMTP service. Ask your email provider for this. Example: abcdefghijklmn
llm:
api:
key: ??? # API Key of your LLM API. Example: sk-xxx
base_url: ??? # API URL of your LLM API. Example: https://api.openai.com/v1
api_mode: chat_completion # The LLM API to use. Options: chat_completion or response.
generation_kwargs:
# Arguments for the selected LLM API.
max_tokens: 16384
model: ???
language: English # Preferred language for the TL;DR. Example: English
reranker:
local:
model: jinaai/jina-embeddings-v5-text-nano # The Hugging Face model name of the local embedding model. Example: jinaai/jina-embeddings-v5-text-nano
encode_kwargs:
# The kwargs for the encode method of the local embedding model. Details see [here](https://www.sbert.net/docs/package_reference/SentenceTransformer.html#sentence_transformers.SentenceTransformer.encode)
task: retrieval
prompt_name: document
api:
key: null # API Key of your embedding model API. Example: sk-xxx
base_url: null # API URL of your embedding model API. Example: https://api.openai.com/v1
model: null # The model name of the embedding model. Example: text-embedding-3-large
batch_size: null # The batch size for embedding API requests. Adjust to match your provider's limit. Example: 64
executor:
debug: false # Whether to use debug mode. Example: true
send_empty: false # Whether to send an empty email even if no new papers today. Example: true
max_paper_num: 100 # The maximum number of the papers presented in the email. Example: 100
source: ??? # The sources of papers to retrieve. Example: ['arxiv','biorxiv','medrxiv','chemrxiv']
reranker: local # The reranker to use. Example: 'local' or 'api'
就这些!现在你可以通过手动触发来测试工作流:
[!注意]
测试工作流操作是主工作流(Send-emails-daily)的调试版本,无论日期如何,它总是会检索5篇arxiv论文。而主工作流将每天自动触发,并检索昨天发布的新论文。在周末和节假日不会有新的arxiv论文,在这种情况下,你可能会在主工作流的日志中看到“未找到新论文”。
然后在其完成后检查日志和接收者邮件。
默认情况下,主工作流每天在UTC时间22:00运行。你可以通过编辑工作流配置 .github/workflows/main.yml 来更改此时间。
本地运行
在 uv 支持下,如果已安装 uv,这个工作流可以轻松在你的本地设备上运行:
# set all the environment variables
# export ZOTERO_ID=xxxx
# ...
cd zotero-arxiv-daily
uv run main.py
🚀 与最新版本同步
这个项目正在积极开发中。你可以通过点击 Watch 关注这个仓库,以便在我们发布新版本时收到通知。
📖 工作原理
Zotero-arXiv-Daily 首先通过相应的 API 获取你 Zotero 库中的所有论文以及前一天发布的所有论文。然后它通过嵌入模型计算每篇论文摘要的嵌入向量。论文的得分是它与所有 Zotero 论文的加权平均相似度(新添加到库中的论文权重更高)。每篇论文的 TLDR 由 LLM 生成,基于 pymupdf4llm 提取的文本。
📌 限制
- 推荐算法非常简单,可能无法准确反映您的兴趣。欢迎提出更好的想法来改进算法!
- 较高的
MAX_PAPER_NUM可能导致执行时间超过 Github Action 运行器的限制(公共仓库每次执行 6 小时,私人仓库每月 2000 分钟)。通常,公共仓库提供的配额对于个人使用来说肯定足够。如果您有特殊需求,可以在自己的服务器上部署工作流,或使用自托管的 Github Action 运行器,或者为超出的执行时间付费。
📃 许可证
根据 AGPLv3 许可证分发。详情见 LICENSE。
❤️ 致谢
☕ 请我喝咖啡
如果您觉得这个项目有帮助,欢迎通过微信或 ko-fi 赞助我。
🌟 星标历史
- 本文标题:zotero-arxiv-daily - 根据你的 Zotero 库每天推荐你感兴趣的新 ar
- 本文链接:https://www.cn121.com/automation/tidedra-zotero-arxiv-daily.html
- 原项目:TideDra/zotero-arxiv-daily 版权归原作者 TideDra 及贡献者所有
- 收录信息:本站于 2026-10-27 收录本项目,本页所列协议与仓库指标均为收录当时的状态;该日期之后原项目的版本更新与协议变更,本页不作同步。
- 开源协议:收录时本项目采用 AGPL-3.0(查看 LICENSE 原文),本站转载其原始文档(未改动文字,仅剔除图片与无关章节);使用、修改、分发请以该仓库 LICENSE 原文为准。基于本页内容形成的衍生作品, 须同样以该协议发布。
- 站点出处:本文首发于 OneTwoOne,收录自 GitHub 开源项目 TideDra/zotero-arxiv-daily。
- 内容说明:本页正文为原项目 README 原文(英文),本站后续会翻译为中文(当前尚未译出,仅将二级标题译为中文,便于按栏目定位;标题原文可在下方原仓库中查看),仅剔除了图片与赞助等无关章节、并把相对链接改为绝对地址;页首简介为机器翻译自仓库描述。
- 引用声明:商业转载、第三方聚合或 AI 检索训练引用时,请务必保留以上来源出处、本文永久链接,以及原项目的版权声明与许可信息。
- 下架通道:若原项目此后变更或收紧了许可协议、或作者/权利人认为本站的收录方式(译文、排版适配、简介翻译等)超出其授权范围,请通过 xyd3302001@163.com 发送下架通知,并附上项目地址与本页链接。本站核实后将第一时间删除本页内容,或改为不复制原文的目录性收录;署名更正等其他要求可一并提出。