V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
jakevin
V2EX  ›  程序员

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

  •  
  •   jakevin · 5 小时 30 分钟前 · 143 次点击

    Digest — V2EX + Hacker News 聚合日报生成器

    做了一个小工具,每天自动从 V2EX 和 Hacker News 抓取热门内容,评分排序,可选 AI 总结,输出 Markdown 日报。

    GitHub: https://github.com/jackwener/kabi-digest

    它做了什么

    1. 抓取 — 从 V2EX ( v1/v2 API ,支持多页抓取)和 HN ( Firebase API )获取帖子
    2. 累积 — 多次运行的数据会按 ID 合并,一天内持续扩大候选池
    3. 评分 — 用类 HN 的时间衰减算法排序,新且热门的内容排前面
    4. 正文抓取 — 通过 Jina AI Reader 获取原文全文,V2EX 帖子还会通过 API 获取附言(附言有时比正文还重要)
    5. AI 总结 — 支持 OpenAI / Anthropic ,基于完整文章内容生成中文摘要
    6. 输出 — Markdown 日报,带 YAML frontmatter ,方便集成 Hugo / Astro 等静态站

    效果预览

    跑一次大概这样:

    📥 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
        1
    jakevin  
    OP
       5 小时 29 分钟前
    https://v2ex.com/t/1194550?p=1#reply2

    用 Rust 写了一个简约版的 opencraw
    这是另外一个项目
    大家感兴趣的也可以看看
    jiaduobao
        2
    jiaduobao  
       3 小时 54 分钟前
    不错
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   892 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 22:26 · PVG 06:26 · LAX 14:26 · JFK 17:26
    ♥ Do have faith in what you're doing.