写了一个 Digest — V2EX + Hacker News 聚合日报生成器

查看 22|回复 1
作者:jakevin   
Digest — V2EX + Hacker News 聚合日报生成器
做了一个小工具,每天自动从 V2EX 和 Hacker News 抓取热门内容,评分排序,可选 AI 总结,输出 Markdown 日报。
GitHub: https://github.com/jackwener/kabi-digest
它做了什么
[ol]
  • 抓取 — 从 V2EX ( v1/v2 API ,支持多页抓取)和 HN ( Firebase API )获取帖子
  • 累积 — 多次运行的数据会按 ID 合并,一天内持续扩大候选池
  • 评分 — 用类 HN 的时间衰减算法排序,新且热门的内容排前面
  • 正文抓取 — 通过 Jina AI Reader 获取原文全文,V2EX 帖子还会通过 API 获取附言(附言有时比正文还重要)
  • AI 总结 — 支持 OpenAI / Anthropic ,基于完整文章内容生成中文摘要
  • 输出 — Markdown 日报,带 YAML frontmatter ,方便集成 Hugo / Astro 等静态站
    [/ol]
    效果预览
    跑一次大概这样:
    📥 collect — 2026-03-01
    🔶 Hacker News
       Fetching top... 30 stories
    🟢 V2EX (pages: 3)
       Fetching hot... 9 topics
       Fetching create... 60 topics
       Fetching programmer... 60 topics
    💾 HN: 30 fetched → 85 total in pool
    💾 V2EX: 129 fetched → 203 total in pool
    ✅ Data collected.
    生成时:
    📊 HN: 0 fetched, 85 pooled → 20 ranked
    📊 V2EX: 0 fetched, 203 pooled → 20 ranked
    📎 Enriching V2EX items with supplements...
       📎 想要给父母在农村建个四合院... ✓ 2 条附言 (API)
       📎 公司的 AI 客服被真人干掉了... ✓ (Jina fallback)
    🤖 OpenAI raises $110B...  ✓
    🤖 全职独立开发满一个月...  ✓
    ✅ out/hn-2026-03-01.md
    ✅ out/v2ex-2026-03-01.md
    设计思路
    一开始只是想用 V2EX API 抓个热门列表,后来发现光一次 /topics/hot.json 只有 10 条不太够,就加了分页抓取和数据累积。
    collect / generate 分离是为了省 token:白天定时 collect 只积累原始数据,晚上跑一次 generate --no-fetch 一次性评分 + AI 总结。这样 AI 只花一份 token ,但候选池是一整天多次采集的结果。
    评分算法直接搬的 HN 排名公式:score = (engagement - 1) / (hours + 2) ^ 1.8,新且热门的帖子得分高,老帖自然衰减。V2EX 用回复数当 engagement ,HN 用 points 。
    V2EX 附言是通过 V2 API 的 GET /topics/:id 拿到的 supplements 字段(官方文档没写但实际返回有)。API 失败时 fallback 到 Jina Reader 直接抓帖子页面。
    快速上手
    bun install
    cp config.example.yaml config.yaml
    bun run generate --no-ai    # 先不配 AI key ,看看效果
    不配 AI key 也能用,只是没有摘要,输出标题 + 元数据。

    工具, 日报, 生成器

  • jakevin
    OP
      
    https:///t/1194550?p=1#reply2
    用 Rust 写了一个简约版的 opencraw
    这是另外一个项目
    大家感兴趣的也可以看看
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部