☰
基于arXiv API与LLM的每日论文汇总自动化实践:从抓取到成文
2026/10/8 15:58:37 网站建设 项目流程

1. 从一份每日论文汇总说起:为什么值得认真对待

每天早上刷 arXiv 的 cs.AI 分区,大概是很多做人工智能方向的人共同的肌肉记忆。但真正坚持下来的人都知道,这件事的性价比其实很微妙:列表页动辄上百条新论文,标题一个比一个唬人,点进去摘要读三行就发现跟自己手头的活儿八竿子打不着。时间花了,收获却接近于零。所以当我看到有人在做“每日论文汇总”这件事时,第一反应不是“这有什么难的”,而是“终于有人把这件事系统化了”。

这份汇总针对的是 arXiv 的 cs.AI 分区,日期标注为 2026 年 9 月 28 日。它要解决的问题很朴素:把当天该分区的新论文做一次结构化整理,让读者不用逐条点开就能判断哪些值得深读。适合的人群也很明确——做 LLM 应用落地的工程师、跟进多模态方向的算法同学、需要快速判断领域风向的研究者,以及那些被“人工智能论文”四个字吸引但不知道从哪下手的学习者。关键词里出现的 arxiv、cs.AI、人工智能、论文、LLM,基本框定了这份内容的边界:它不是某一篇论文的精读,而是一批论文的横向扫描。

我做过类似的事情,也踩过不少坑。最早我是用 RSS 订阅加手动标记,后来换成脚本抓取,再后来发现光抓取没用,真正的难点在于“怎么筛”和“怎么讲”。一份好的论文汇总,价值不在于把标题列全,而在于帮读者省下判断成本。下面我就把这类汇总从数据获取到最终成文的完整链路拆开讲,包括我实际用过的工具、参数设置、筛选逻辑,以及那些只有做过才知道的细节。

2. 抓取 arXiv cs.AI 每日列表:接口选择与字段取舍

2.1 为什么优先用官方 API 而不是爬页面

arXiv 提供了官方的查询接口,走的是export.arxiv.org/api/query这套 Atom 格式的返回。很多人图省事直接爬列表页 HTML,我早期也这么干过,结果就是解析规则一改就得重写,而且列表页的字段其实比 API 少。官方 API 能直接拿到标题、作者、摘要、分类、提交时间、更新时间和 PDF 链接,这些正好是汇总需要的核心字段。

调用方式很简单,构造一个带search_query的 GET 请求即可。针对 cs.AI 分区,查询条件可以写成cat:cs.AI,再配合时间范围。这里有个细节:arXiv 的 API 对时间过滤支持的是submittedDate,格式是[YYYYMMDDTTTT+TO+YYYYMMDDTTTT],时区默认是 UTC。如果你在北京时间早上跑,想抓“昨天”的论文,就得把时间窗口往前推 8 小时,否则会漏掉一批。

import urllib.request import urllib.parse import xml.etree.ElementTree as ET base = "http://export.arxiv.org/api/query?" params = { "search_query": "cat:cs.AI AND submittedDate:[202609270000 TO 202609280000]", "start": 0, "max_results": 200, "sortBy": "submittedDate", "sortOrder": "descending" } url = base + urllib.parse.urlencode(params) with urllib.request.urlopen(url) as resp: raw = resp.read().decode("utf-8") root = ET.fromstring(raw) ns = {"a": "http://www.w3.org/2005/Atom"} for entry in root.findall("a:entry", ns): title = entry.find("a:title", ns).text.strip().replace("\n", " ") summary = entry.find("a:summary", ns).text.strip().replace("\n", " ") print(title)

这段代码我用了很久,稳定可靠。max_results我一般设 200,因为 cs.AI 单日新论文通常在 100 到 200 篇之间,设太小会截断,设太大返回里会混入空条目。sortBy用submittedDate降序,保证最新的排前面。

2.2 摘要清洗:那些必须处理掉的脏数据

从 API 拿到的摘要文本并不干净。最常见的问题是换行符和多余空格,arXiv 的摘要里经常有硬换行,直接展示会很难看。另外 LaTeX 公式会以$...$的形式出现,如果不处理,在纯文本汇总里就是一堆乱码般的符号。我的做法是做一轮轻量清洗:把连续空白压成单个空格,把$包裹的内容替换成[公式]占位,把\cite{}之类的命令去掉。

还有一个容易被忽略的点:有些论文的标题里带冒号或特殊符号,在生成 Markdown 时如果不转义,会破坏排版。我一般会把标题里的|替换掉,因为表格里|是分隔符。这些细节看起来琐碎,但一份汇总如果排版错乱,读者第一眼就会失去信任。

2.3 去重与版本合并:同一篇论文的多个版本

arXiv 上同一篇论文可能有 v1、v2、v3 多个版本,API 返回时是分开的条目。如果不做合并,汇总里会出现同一标题重复多次的情况。我的处理逻辑是按标题的归一化字符串做 key,保留最新版本,同时在条目里标注版本号。归一化就是把标题转小写、去掉标点、压缩空格。这样即使作者在 v2 里微调了标题,也能大概率识别为同一篇。

提示:去重时不要用论文 ID 做 key,因为不同版本 ID 不同;也不要用完整标题做 key,因为大小写和标点差异会导致漏合并。归一化标题是最稳的折中方案。

3. 从两百篇到二十篇:筛选逻辑才是汇总的灵魂

3.1 先按主题聚类,再按热度排序

抓取只是第一步,真正的功夫在筛选。我试过纯按时间排序直接输出,结果就是一份没有重点的流水账。后来改成两步走:先按主题聚类,再在簇内按某种热度指标排序。主题聚类可以用关键词匹配做粗筛,比如把标题和摘要里出现LLM、agent、multimodal、reinforcement learning、diffusion等词的论文分到不同桶里。这种方法不如向量聚类精细,但胜在快、可解释、不需要额外模型。

热度指标我用的是三个信号的加权:摘要长度(太短的往往是短文或 position paper)、作者数量(大团队的工作通常更完整)、以及标题里是否包含survey、benchmark、framework这类词。权重可以调,我一般给 survey 类加 0.3,给 benchmark 加 0.2。这个打分不追求绝对准确,目的是把明显值得看的往前排。

3.2 用 LLM 做摘要压缩的正确姿势

现在很多人会用 LLM 来给论文摘要做二次压缩,生成一句话总结。这件事能做,但有几个坑。第一,不要让模型自由发挥,必须给它明确的指令,比如“用不超过 40 个字概括这篇论文解决了什么问题、用了什么方法”。第二,要给它原文摘要,不要只给标题,否则模型会编。第三,输出格式要约束,最好要求它返回 JSON,字段固定为problem、method、result,方便后续程序处理。

我实测下来,用中等规模的模型做这件事就够了,不需要上最大的模型。因为摘要是结构化的学术文本,信息密度高,模型的理解难度其实不大。真正影响质量的是 prompt 的约束程度。我常用的模板是这样的:

你是一名论文摘要助手。请阅读以下论文摘要,输出 JSON: {"problem": "论文要解决的问题,20字以内", "method": "核心方法,30字以内", "result": "主要结论或效果,20字以内"} 不要输出任何解释性文字。摘要如下: {abstract}

这个模板跑下来,格式错误率很低。偶尔模型会多输出一句话,加个正则清洗就行。

3.3 人工兜底:哪些论文必须亲自看

自动化筛选再完善,也有它覆盖不到的地方。我的经验是,以下几类论文必须人工过一遍:标题里出现全新术语的、摘要里提到新数据集的、以及作者单位里有我长期跟踪的团队的。前两类往往代表新方向,自动打分可能因为关键词没覆盖而漏掉;第三类是因为熟悉团队的工作风格,判断起来比模型准。

这一步听起来费时间,但实际每天也就十来篇,十分钟能扫完。而且这个过程本身就是在积累领域感,比单纯看汇总有价值得多。

4. 汇总成文的结构设计:让读者三分钟抓住重点

4.1 开篇给结论,不要给背景

一份论文汇总最忌讳的开头是“今天 cs.AI 分区共收录 XX 篇论文”。读者不关心总数,关心的是“今天有什么值得看的”。所以我的写法是开篇直接给三到五条最值得关注的论文,每条一句话说清楚它做了什么、为什么重要。这个部分我称之为“今日重点”,放在最前面。

写这个部分有个技巧:不要照抄摘要,要用自己的话重述。比如摘要说“we propose a novel framework that leverages...”,你就写成“这篇提出了一个 XX 框架,核心思路是把 A 和 B 结合起来”。读者要的是人话,不是学术腔。

4.2 分主题罗列,每个主题给一句判断

重点之后是按主题分组的完整列表。主题的划分不要太多,五到七个比较合适,太多会显得碎。每个主题下面列论文,每篇给标题、作者、一句话总结。这里的一句话总结可以复用前面 LLM 生成的结果,但要人工润色一遍,把明显的机器味去掉。

主题的命名也有讲究。不要用“其他”这种垃圾桶分类,宁可把不好归类的单独列一个“值得注意的零散工作”。主题名要具体,比如“LLM 智能体与工具调用”“多模态理解与生成”“强化学习与决策”,而不是“大模型相关”“视觉相关”这种模糊说法。

4.3 附上可点击的链接和分类标签

每篇论文后面附上 arXiv 的 abs 页面链接,方便读者直接跳转。链接用 Markdown 的行内链接格式,不要直接贴裸 URL。另外可以给每篇打一两个标签,比如#LLM、#Agent、#Multimodal,方便读者按兴趣筛选。标签不要太多,两个足够,多了反而干扰。

表格在这个场景下很好用。我一般用三列表格:标题、一句话总结、标签。标题列放链接,总结列控制在一行以内,标签列用行内代码格式。这样整份汇总看起来清爽,扫一眼就能定位到自己关心的部分。

标题一句话总结标签
论文 A提出 XX 方法解决 YY 问题#LLM#Agent
论文 B在 ZZ 任务上刷新了基准#Multimodal

5. 实操中踩过的坑与应对经验

5.1 API 限流与重试策略

arXiv 的 API 对请求频率有隐性限制,短时间内连续请求会被拒。我最早写脚本时没做重试,跑一半就断了。后来加了指数退避:第一次失败等 3 秒,第二次等 9 秒,第三次等 27 秒,最多重试三次。同时把请求间隔控制在 3 秒以上,基本就不会触发限流了。

还有一个细节是 User-Agent。有些环境默认的 UA 会被识别为异常流量,建议在请求头里带一个正常的 UA 字符串。这不是必须的,但能减少很多莫名其妙的失败。

5.2 时区问题导致漏抓

前面提过时区,这里再强调一次。arXiv 的提交时间戳是 UTC,而 cs.AI 的“每日列表”在页面上是按 UTC 日期切的。如果你在北京时间早上 8 点抓“昨天”的论文,实际上抓的是 UTC 时间前天 16 点到昨天 16 点之间的提交,会漏掉昨天 16 点到 24 点(UTC)的那批。正确做法是把时间窗口设成 UTC 的完整一天,或者干脆抓最近 48 小时再按日期过滤。

5.3 LLM 生成总结的“幻觉”问题

用 LLM 压缩摘要时,最怕的是它编造原文没有的内容。我遇到过模型在总结里写“实验在 ImageNet 上达到 SOTA”,但原文根本没提 ImageNet。解决办法有两个:一是 prompt 里明确要求“只使用摘要中出现的信息”,二是生成后做一次关键词校验,把总结里的专有名词和原文摘要做匹配,匹配不上的标记出来人工复核。

这个校验逻辑不复杂,用简单的字符串包含判断就能过滤掉大部分幻觉。虽然不能百分百杜绝,但能把错误率压到可接受范围。

5.4 排版细节:别让格式毁了内容

Markdown 排版有几个高频坑。第一,标题里的#如果没转义,会被解析成标题层级。第二,摘要里的*和_会被解析成斜体或加粗。第三,链接里的括号如果没处理,会截断链接。我的做法是在生成 Markdown 之前,对所有文本做一次转义,把#、*、_、[、]这些字符前面加反斜杠。这一步做完,排版问题基本就没了。

注意:转义不要过度,比如中文标点不需要转义,转义了反而显示异常。只处理 Markdown 有特殊含义的 ASCII 符号即可。

6. 这套流程还能怎么扩展

6.1 从单日汇总到趋势追踪

单日汇总看的是“今天有什么”,但如果把每天的数据存下来,就能做趋势分析。比如统计某个关键词在过去一个月的出现频率,就能看出哪个方向在升温。我试过用简单的词频统计,把agent、reasoning、efficiency这几个词按周画出来,趋势还挺明显的。这个扩展不需要额外抓取,只要把每天的原始数据落库就行。

存储用 SQLite 就够了,字段包括论文 ID、标题、摘要、分类、提交时间、抓取时间。查询的时候按日期范围过滤,做聚合统计。数据量不大,单机完全扛得住。

6.2 按读者画像做个性化筛选

同一份汇总,不同人关心的点不一样。做应用的工程师可能更关心工程落地相关的论文,做理论的研究者可能更关心新方法。一个可行的扩展是给读者打标签,根据标签调整筛选权重。比如给“工程向”读者提高framework、system、deployment这类词的权重,给“理论向”读者提高theorem、proof、analysis的权重。

这个功能实现起来不难,难的是标签体系的维护。我的建议是先从两三个粗粒度标签做起,不要一上来就搞几十个细分标签,那样维护成本太高,效果也未必好。

6.3 把汇总变成可检索的知识库

汇总发出去之后,过几天就沉底了,想找回来很麻烦。一个自然的扩展是把所有汇总内容索引起来,做成可搜索的知识库。最简单的做法是用静态站点生成器,把每天的汇总生成一个页面,再加一个全文搜索。搜索可以用前端方案,把索引文件打包进去,不需要后端。

这样积累几个月之后,你就有了一个属于自己的论文库,想查某个方向的历史工作,直接搜关键词就行。这比每次重新去 arXiv 搜要高效得多,而且筛选质量是你自己把控过的,比原始搜索结果靠谱。

我做这件事最大的体会是,论文汇总的价值不在于“全”,而在于“准”和“省时间”。把抓取、筛选、成文这条链路跑顺之后,每天花在这上面的时间可以控制在半小时以内,但产出的内容能帮很多人省下几个小时。这个投入产出比,是我愿意持续做下去的原因。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询