每天自动从 arxiv 抓取 3 个关键词 的最新论文, 推送到你的邮箱。 用 GitHub Actions 部署, 免费、零服务器、零维护。
把这个项目里的所有文件上传到一个新的 GitHub 仓库(Private 或 Public 都可以)。
重要: SMTP 密码不是你的邮箱登录密码, 而是专用授权码。各家邮箱的获取方式:
| 邮箱 | SMTP_HOST | SMTP_PORT | 授权码获取 |
|---|---|---|---|
| Gmail | smtp.gmail.com |
465 |
账号 → 安全 → 开启两步验证 → 应用专用密码 |
| QQ 邮箱 | smtp.qq.com |
465 |
设置 → 账户 → 开启 SMTP 服务,获取授权码 |
| 163 邮箱 | smtp.163.com |
465 |
设置 → POP3/SMTP/IMAP → 开启服务,获取授权密码 |
| Outlook | smtp.office365.com |
587 |
直接用账号密码,可能需开应用密码 |
进入仓库 → Settings → Secrets and variables → Actions → New repository secret
依次添加下面这些 secrets:
| 名称 | 值示例 |
|---|---|
KEYWORDS |
large language model,diffusion model,reinforcement learning (英文逗号分隔,3个) |
SMTP_HOST |
smtp.gmail.com |
SMTP_PORT |
465 |
SMTP_USER |
yourname@gmail.com |
SMTP_PASS |
上一步获取的授权码 |
MAIL_TO |
收件邮箱(可与 SMTP_USER 相同) |
(可选)在 Variables 标签下添加:
MAX_PER_KEYWORD: 每个关键词最多推送几篇(默认 5)DAYS_BACK: 回看多少天内的论文(默认 1)
进入仓库 → Actions → 左侧点 arxiv-daily → 右上角 Run workflow → Run。
一分钟内运行完成, 查收你的邮箱 ✉️。
默认每天 UTC 01:00 (北京时间 09:00) 发送。如需修改, 编辑 .github/workflows/daily.yml:
- cron: '0 1 * * *' # UTC 时间, 不是北京时间!用 crontab.guru 可以直观地写 cron 表达式。
常见: 北京时间 08:00 → UTC 00:00 → 0 0 * * *; 北京时间 22:00 → UTC 14:00 → 0 14 * * *。
pip install -r requirements.txt
export KEYWORDS="large language model,diffusion model,reinforcement learning"
export SMTP_HOST=smtp.gmail.com
export SMTP_PORT=465
export SMTP_USER=yourname@gmail.com
export SMTP_PASS=your-app-password
export MAIL_TO=yourname@gmail.com
python main.pyQ: 某天某个关键词没新论文怎么办?
A: 邮件里该分区会显示"最近 N 天内未找到匹配论文"。可以把 DAYS_BACK 调大些(例如 3)。
Q: 能加更多关键词吗?
A: 可以, KEYWORDS 支持任意数量, 用英文逗号分隔即可, 代码会自动循环处理。
Q: 想搜更精准的关键词(如带引号的短语)怎么办?
A: 代码已经用 ti:"..." 和 abs:"..." 对标题和摘要做精确短语匹配, 直接填短语即可。
Q: GitHub Actions 定时任务偶尔会延迟? A: 这是 GitHub 的已知行为(免费用户高峰期可能延迟几十分钟),但最终都会跑, 不会漏发。
Q: 发件邮箱用 Gmail 但登录失败? A: 必须 开启两步验证 后, 才能生成"应用专用密码"。直接用 Gmail 登录密码一定失败。