

在AI领域,每天arXiv上都会涌现大量新论文。对于专注于特定方向的研究者来说, manually 浏览和筛选既耗时又低效。这篇文章将分享我搭建的一套自动化论文追踪系统的完整思路,希望能给有类似需求的同学一些参考。
项目动机#
在关注 Vision-Language-Action (VLA)、Vision-Language Navigation (VLN) 等具身智能方向时,我遇到了几个痛点:
- 信息过载:arXiv每天上新数百篇论文,手动筛选效率极低
- 语言障碍:英文标题和摘要阅读成本高,快速理解核心贡献需要时间
- 兴趣匹配:不同研究方向关注点不同,需要个性化过滤
- 知识管理:看过的论文容易遗忘,缺乏系统化的标记和回顾机制
基于这些需求,我设计并实现了一套自动化解决方案。
系统架构概览#
整个系统由三个核心模块组成:
| 模块 | 功能 | 技术方案 |
|---|---|---|
| 数据采集 | 从arXiv抓取目标领域论文 | arxiv-python + 定时任务 |
| 内容处理 | 翻译、格式化、去重 | DeepSeek API + 缓存机制 |
| 展示交互 | Web端展示与个性化标记 | GitHub Pages + localStorage |
┌─────────────┐ ┌──────────────┐ ┌─────────────┐
│ arXiv │────▶│ Python │────▶│ GitHub │
│ API │ │ 处理脚本 │ │ Pages │
└─────────────┘ └──────────────┘ └─────────────┘
│ │
▼ ▼
┌──────────────┐ ┌─────────────┐
│ DeepSeek │ │ 用户标记 │
│ 翻译服务 │ │ & 筛选 │
└──────────────┘ └─────────────┘plaintext核心实现细节#
1. 精准的关键词检索策略#
不同于简单的关键词匹配,系统支持多维度复合检索。以VLA领域为例:
keywords:
"VLA":
filters:
- "Vision-Language-Action Model"
- "Vision Language Action"
- "VLA Model"
- "RT-2"
- "OpenVLA"yaml通过 OR 逻辑组合多个相关关键词,可以最大程度避免遗漏,同时通过分层配置支持多领域并行追踪。
2. 智能双语展示#
论文标题和摘要的翻译是提升阅读效率的关键。系统采用了以下策略:
翻译流程:
- 首次遇到论文时,调用大模型API进行翻译
- 翻译结果缓存到本地JSON文件,避免重复调用
- 增量更新机制,只处理新增论文
提示工程:
system_prompt = (
"Translate the paper title and abstract into Chinese. "
"Return only JSON with keys: title_zh, abstract_zh."
)python这种结构化的翻译要求确保输出格式统一,便于后续处理。
3. HJFY集成:便捷的PDF访问#
系统集成了 HJFY 学术搜索服务,为每篇论文生成直接访问链接。这解决了arXiv访问不稳定的问题,提供了更流畅的PDF阅读体验。
4. Web端个性化标记#
在生成的GitHub Pages页面中,每篇论文都配有交互式评估按钮:
- ✅ 已读:标记已浏览过的论文
- ❌ 跳过:不感兴趣,后续可过滤
- ⭐ 收藏:重要论文,需要深度阅读
技术实现:
// 使用localStorage保存用户标记
const storageKey = (id) => `vlm_arxiv_daily_eval:${id}`;
localStorage.setItem(storageKey(arxivId), evaluation);javascript这种设计的好处是:
- 无需后端服务器,纯前端实现
- 用户数据保存在本地,隐私安全
- 跨会话持久化,刷新不丢失
5. 摘要独立页面#
为了提供更好的阅读体验,系统为每篇论文生成独立的摘要页面:
- 中英文摘要对照展示
- 简洁的排版设计
- 一键返回主列表
这些页面通过脚本自动生成,维护成本极低。
自动化运维#
GitHub Actions 定时任务#
利用GitHub Actions实现每日自动更新:
on:
schedule:
- cron: '0 1 * * *' # 每天凌晨1点执行
workflow_dispatch: # 支持手动触发
jobs:
update-papers:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Run crawler
run: python daily_arxiv.py
- name: Commit changes
run: |
git add .
git commit -m "Update daily papers"
git pushyaml增量更新机制#
为了避免重复处理,系统实现了多层缓存:
- 翻译缓存:已翻译的论文ID和结果
- 论文数据缓存:arXiv元数据
- 摘要缓存:英文原文存储
这种设计使得每日更新通常在几秒内完成,API调用成本也大幅降低。
技术亮点与优化#
1. 优雅的错误处理#
网络请求和API调用都有完善的异常处理:
try:
resp = requests.post(url, headers=headers, json=payload, timeout=60)
resp.raise_for_status()
except Exception as exc:
logging.warning(f"Translation failed: {exc}")
return {}python2. Markdown到HTML的灵活转换#
系统支持生成多种输出格式:
README.md:GitHub仓库展示docs/index.html:GitHub Pages交互式页面docs/wechat.md:微信公众号文章格式
通过配置灵活切换,一份代码满足多平台需求。
3. 数学公式排版优化#
针对论文标题中常见的LaTeX数学公式,实现了简单的格式化:
def pretty_math(s: str) -> str:
# 处理 $...$ 格式的行内公式
match = re.search(r"\$.*\$", s)
if match:
# 添加适当的空格,提升渲染效果
...python实际效果#
经过几个月的运行,这套系统带来了显著的效率提升:
- 时间节省:从每天30-40分钟的浏览筛选,缩短到5分钟快速浏览
- 信息完整:双语展示降低了理解门槛
- 知识沉淀:通过标记系统建立了个人论文库
- 社区价值:开源后帮助了同领域的研究者
扩展思路#
这个系统的架构可以很容易地扩展到其他场景:
- 多领域追踪:通过修改配置文件,可以追踪任意arXiv分类
- 邮件订阅:增加邮件推送功能,每日发送精选论文
- RSS输出:生成RSS feed,方便集成到阅读器
- 协作标记:结合后端数据库,实现团队共享的论文库
总结#
这套系统的核心思想是:自动化处理重复性工作,保留人的判断和决策。技术本身并不复杂,关键在于:
- 清晰定义需求,解决真实痛点
- 合理选择技术方案,避免过度工程化
- 注重用户体验,降低使用门槛
- 保持可扩展性,预留迭代空间
对于研究者来说,工具的价值不在于功能多复杂,而在于能否真正提升工作效率。希望这篇文章能给正在考虑搭建类似系统的同学一些启发。
致谢#
本项目基于 cv-arxiv-daily ↗ 二次开发,在此感谢原作者 @Vincentqyw ↗ 的开源贡献。同时也要感谢 HJFY ↗ 提供的学术搜索服务,让论文PDF访问更加便捷。
开源社区的力量让这些工具不断完善,如果你也从中受益,欢迎star和支持相关项目。