Repository

v2ex-digest

V2EX Daily Reporter — HN-like scoring + AI summaries

路径
说明
out/daily-YYYY-MM-DD.md
生成的日报
data/
存储缓存(评分、去重标记)
模块
说明

Specs

  • 路径说明
  • out/daily-YYYY-MM-DD.md生成的日报
  • data/存储缓存(评分、去重标记)
  • 模块说明
  • v2ex-client.tsV2EX API 封装
  • scorer.tsHN-like 评分 + 节点过滤
  • summarizer.tsAI 总结(OpenAI / Anthropic 双协议)
  • renderer.tsMarkdown 渲染
  • mem-store.ts内存存储(替代 Redis)
  • collector.ts定时采集
  • builder.ts定时构建日报

README

V2EX Digest

V2EX 日报生成器 — 抓取 V2EX 话题,HN-like 评分排序,AI 生成摘要,输出 Markdown。

Quick Start

bun install
cp config.example.yaml config.yaml  # 编辑填入 AI API key

一次性生成

# 无 AI,仅抓取 + 评分
bun run generate --no-ai

# 带 AI 总结
bun run generate

# 指定节点 + 数量
bun run generate --nodes programmer create ideas --top-n 10

持续运行(serve 模式)

每 10 分钟轮询节点、积累评分,每 30 分钟检查并自动生成日报:

# 后台运行
bun run serve

# 启动后立即生成一次,然后进入循环
bun run serve -- --now

Configuration

config.yaml 支持的配置项:

v2ex:
  token: ""              # V2EX API token (optional)

ai:
  provider: "openai"     # "openai" or "anthropic"
  api_key: ""
  model: "gpt-4o-mini"
  base_url: ""           # for compatible endpoints

generate:
  nodes: ["hot"]         # hot / latest / node names
  exclude_nodes: ["promotions"]
  top_n: 20
  skip_hours: 72
  fetch_interval_min: 10 # serve mode: collector interval
  build_interval_min: 30 # serve mode: builder interval

CLI 参数会覆盖配置文件,详见 bun run generate --help。

Output

路径 说明
out/daily-YYYY-MM-DD.md 生成的日报
data/ 存储缓存(评分、去重标记)

Scoring Algorithm

使用 Hacker News 风格的时间衰减评分:

Score = (replies - 1) / (hours + 2) ^ 1.8
  • 新帖 + 多回复 → 高分
  • 老帖自然衰减
  • 零回复帖子自动过滤

Architecture

generate 模式:  fetch → score → [AI summarize] → render → out/
serve 模式:     collector (loop) → mem-store → builder (loop) → render → out/
模块 说明
v2ex-client.ts V2EX API 封装
scorer.ts HN-like 评分 + 节点过滤
summarizer.ts AI 总结(OpenAI / Anthropic 双协议)
renderer.ts Markdown 渲染
mem-store.ts 内存存储(替代 Redis)
collector.ts 定时采集
builder.ts 定时构建日报