R About

关于本站

一个 Serverless 的 AI 资讯聚合站,从想法到上线的全部记录

这是什么

每天自动抓取 Hugging Face Daily Papers 的热门论文、arXiv 新论文、以及国内外大厂的产品发布动态,用 DeepSeek-V4 生成中文深度解读(含图解 / 关键术语 / 总结),按期归档可翻往期。整套系统零服务器、配置一次后每天自动运行。

为什么做这个

因为 AI 领域每天涌出大量论文和动态,信息量大、英文阅读门槛高。我想要一个"像每日早报一样,五分钟看完今天 AI 最值得关注的进展"的工具——市面上的 AI 资讯站要么内容堆砌、要么解读太浅,所以自己动手做一个。

顺便,这也是一个练手项目:从抓取、AI 调用、定时编排、归档存储、到前端展示和部署,全栈走一遍,有真实的工程问题要解决。

技术架构

数据源 → 抓取候选 → AI 打分精选 → AI 深度解读 → 归档 → 前端展示 具体: Hugging Face Daily Papers(主源,带社区投票热度) arXiv API(兜底) 大厂 RSS / GitHub Release(新闻、报告) ↓ DeepSeek-V4-pro 按"前沿性 / 影响力 / 科普价值"打分 ↓ 取 Top 5 论文 + 当日新闻 / 报告 ↓ DeepSeek-V4-pro 生成三段式中文解读 + 图解 + 关键术语 + 主题标签 ↓ 写入 data/archive/YYYY-MM-DD.json,期号递增 ↓ GitHub Actions 每日定时驱动 → 提交回仓库 → Vercel 自动部署

技术栈

Python DeepSeek API GitHub Actions Supabase 原生前端 HTML/CSS/JS Vercel

关键设计

踩过的坑(让这个项目变可靠)

1. Python 标准库命名冲突

把打分脚本命名为 select.py,导致和 Python 标准库的 select 模块冲突,引发 circular import 崩溃。后改名为 rank_papers.py 解决。教训:文件命名要避开标准库名。

2. Prompt 模板格式化错误

用 Python 的 .format() 处理含 JSON 大括号的 prompt 模板时,format 把 JSON 的 {} 误认为占位符,抛 KeyError。改用显式 .replace() 替换具体占位符,避开和 JSON 大括号的冲突。

3. GitHub Actions Git 推送竞争

定时任务自动 commit 数据时,如果同时手动改了仓库,push 会被远端拒绝(fetch first)。加了 git pull --rebase --autostash 并做三次重试,避免冲突。

4. GitHub 定时任务在 UTC 整点拥堵跳过

原定 cron: "30 0 * * *"(UTC 0:30,北京 8:30)发现经常延迟或漏跑。改到冷门时段 "17 1 * * *"(北京 9:17),触发可靠多了。这是 GitHub 免费定时任务的已知特性,要避开整点 / 半点。

5. arXiv 相对路径自带论文 id 前缀

抓论文首图时,arXiv HTML 里有时用 2605.26302v1/x1.png 这种带论文 id 自身前缀的相对路径。直接拼到 /html/{id}/ 后会出现 id 重复(404)。加了"路径以 id 开头则从 /html/ 根拼"的判断。这个 bug 是看真实 feed.json 数据时定位到的——本地测试覆盖了 15 种 src 写法,但漏了这种"非标准"路径,只有真跑才发现。

6. X(Twitter)讨论热度抓不到

原计划结合 X 的讨论热度做协同打分,但 2026 年 X 加强了链接抑制和站外抓取限制,API 收费也偏贵。改用 Hugging Face Daily Papers 的社区投票数(upvotes)作为替代信号——这本身就是研究者社区(很多就在 X 上活跃)的热度投票,信号高度相关。这是一个"有理有据的工程取舍"。

这个项目能讲什么

从工程角度,它覆盖了:数据抓取(多源容错)、API 集成(LLM 调用 + 重试)、CI/CD 流水线(GitHub Actions 定时编排)、Serverless 架构思维、前端可视化(纯原生)、数据库设计(Supabase 计数)、域名/部署(Vercel + 自有域名)、内容质量工程(prompt 调优、防编造)。

从产品角度,它体现了"识别真实需求 → 设计技术方案 → 处理真实环境的边界情况 → 持续优化"的完整闭环——而不是一个跑通就停的 demo。

← 返回首页