Skip to content
CloudZun
Go back

CloudZun 每日速递:从原型到上线的构建实录

编辑此文章

一、项目起点

目标很简单:每天自动聚合 AI 和科技领域的重要资讯,生成一份中文速递,发布到公开页面

选用了开源项目 Horizon 作为基础原型——它具备多源抓取、AI 评分、报告生成的完整流水线,但需要针对实际环境做大量适配。


二、核心架构

数据源 (RSS / GitHub / HN)

    内容抓取层

    AI 评分过滤 (score ≥ 7.0)

    AI 内容摘要生成

    Markdown 报告 → GitHub Pages

AI 层使用阿里云百炼 qwen3.5-plus,通过 OpenAI 兼容接口接入。


三、适配过程与踩坑记录

3.1 AI 分析性能瓶颈

问题:原始代码对每条资讯串行调用 AI API,25 条内容需要等待很长时间。

解决:将 analyzer.py 改为 8 路并发(asyncio.Semaphore(8)),处理时间大幅压缩。

# 改造前:串行
for item in items:
    result = await analyze(item)

# 改造后:并发
semaphore = asyncio.Semaphore(8)
results = await asyncio.gather(*[analyze(item) for item in items])

3.2 数据源大面积失效

问题:配置的数据源中,多个在 GitHub Actions 环境下完全不可用:

数据源问题
Reddit (多个子版块)403 — CI 环境 IP 被封
OpenAI Blog403 — 主动屏蔽爬虫
The Batch (deeplearning.ai)404 — URL 已变更
Anthropic News无 RSS — 纯 Next.js 渲染,数据走 Sanity CMS JSON API

解决:移除全部失效源,替换为稳定可用的 RSS:


3.3 GitHub Pages 部署踩坑

这是整个过程中坑最多的环节,连续遇到三个独立问题:

坑 1:_posts/ 目录没有同步到 gh-pages 分支

git subtree split 提取 docs/ 时,报告文件是在 subtree 提取之后才写入的,导致 _posts/ 目录缺失。

解决:改用 git worktree 直接操作 gh-pages 分支,手动完整同步。

坑 2:Jekyll 不识别 _posts 文件

Jekyll 对 _posts 目录下的文件名有严格要求,必须以 YYYY-MM-DD- 开头,否则不会被识别为文章。

❌ horizon-2026-03-01-zh.md
✅ 2026-03-01-horizon-zh.md

同步修改了 orchestrator.py 中的文件名生成逻辑,确保后续自动生成的报告格式正确。

坑 3:.gitignore 排除了 docs/_posts/*.md

原始仓库的 .gitignoredocs/_posts/*.md 列为忽略项(可能是为了防止本地测试文件污染仓库),导致 GitHub Actions 生成报告后无法提交。移除该规则后恢复正常。


3.4 资源优化

原始设计生成中英双语报告,每次运行需要两轮完整的 AI 摘要生成。

考虑到目标读者和实际需求,去掉英文版:


四、前端界面迭代

GitHub Pages 使用 Jekyll Cayman 主题,经过几轮调整:

迭代改动
v1默认主题,有大量项目介绍文档
v2去掉文档链接,首页只保留文章列表
v3首页直接内嵌当日完整报告,历史归档显示最近 6 天链接
v4压缩 banner 高度到原来 1/4,标题字号缩小
v5banner 改为水平布局:标题+副标题左对齐,GitHub 链接右对齐
v6品牌名从 “Horizon” 改为 “CloudZun 每日速递”
v7报告摘要行加入日期戳 📅 2026-03-01 · 从 N 条资讯中精选出 M 条

五、最终状态


六、经验沉淀

CI 环境与本地环境差异大:Reddit、部分博客的反爬策略只针对数据中心 IP,本地测试通过不代表 CI 能跑通,需要实际触发 workflow 验证。

静态站点生成器有隐性约定:Jekyll 的文件名格式、front matter 格式都是硬性要求,不符合规范的文件会被静默忽略,排查起来不直观。

原型适配 > 从零构建:基于成熟原型快速验证,遇到问题针对性修改,比从头搭建效率高得多——整个项目从 fork 到上线不到一天。


编辑此文章
Share this post on:

📚 相关文章推荐


Previous Post
HN Daily Digest: 2026-03-01
Next Post
M7 周报:2026年02月28日