V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
hazellin549
V2EX  ›  分享创造

[开源] GitHub Trending Radar - 把每日热门列表变成个性化简报

  •  
  •   hazellin549 · 8 小时 27 分钟前 · 159 次点击

    背景

    天天逛 GitHub Trending 发现有许多很有趣的项目,star + mark 了很多项目,但很少真的用上。最近想着能不能加到自己项目( AI 工具 + 内容系统)中。

    解决方案

    写了个小工具:GitHub Trending Radar

    核心逻辑:

    • 每天自动抓取 GitHub Trending
    • 用预定义的 work profile 打分(关键词、语言、项目类型)
    • 生成推荐理由和行动建议(中文输出)
    • 通过 SMTP 发送简报邮件

    输出不是"今日热门 25 个",是"你该看的 5 个 + 为什么 + 怎么用"。

    技术实现

    Tech Stack:

    • TypeScript
    • Cheerio (解析 GitHub Trending HTML )
    • Nodemailer ( SMTP 邮件发送)
    • Zod (类型校验)

    架构设计:

    src/collectors     抓取和解析 GitHub Trending
    src/trending       Profile 定义和类型
    src/reports        排序和简报生成
    src/email          SMTP 邮件渲染和发送
    src/tasks          端到端任务编排
    

    清晰的分层:collector 负责拿数据,report 负责判断,email 负责送达。

    设计考量:

    1. Collector 和 Report 解耦,后续可以换成 Product Hunt / Reddit ,只需要换 collector
    2. Profile 通过环境变量配置,无需改代码
    3. 支持 dry-run 模式,方便调试
    4. SMTP 自动识别 QQ 邮箱 / Gmail 默认配置

    目前用的是 QQ 邮箱发送,Gmail 接收,主要是担心手机号的问题影响 Gmail 的 2-Step Verification 。又不想用主账号去尝试,所以改用 QQ 邮箱发送。希望后续实践能打消我的顾虑~

    使用体验

    配置超简单:

    pnpm install
    cp .env.example .env.local
    # 填入 SMTP 配置
    pnpm digest:send
    

    然后用 crontab 定时执行:

    0 9 * * * cd /path/to/repo && pnpm digest:send >> /tmp/github-trending-radar.log 2>&1
    

    实际效果:

    • 从"每天扫完 25 个项目"( 15 分钟)到"只看 5 个简报"( 3 分钟)
    • 从"mark 了很多不看"到"收到即可行动"
    • 从"怕错过什么"到"相信过滤逻辑"

    用了两周,最大变化是决策成本显著降低

    适用场景

    适合你:

    • 在做产品,需要持续关注技术趋势
    • 时间成本 > 信息成本
    • 需要"可执行建议"而不是"全面信息"
    • 愿意维护一个明确的兴趣 profile

    不适合你:

    • 只是想"看看有什么新东西"
    • 喜欢自己浏览完整列表做判断
    • 工作方向经常变,无法定义稳定的 profile

    这是个减法工具,核心价值是节省注意力,不是提供更多选项。

    Profile 示例

    默认 profile 面向:

    • AI tools and agent workflows
    • Automation pipelines
    • Content systems
    • SaaS tooling
    • Growth and marketing automation
    • Productized scripts

    可以通过环境变量自定义:

    TRENDING_PROFILE_NOTE=你的 profile 描述
    TRENDING_PROFILE_KEYWORDS=自定义关键词,逗号分隔
    TRENDING_REPO_LIMIT=10
    TRENDING_RECOMMENDATION_LIMIT=5
    

    后续计划

    当前版本是 MVP ,如果要让简报更像"个人智囊",重点在 report 层:

    1. 更丰富的 profile 格式(项目级目标、当前押注、排除主题)
    2. 更明确的推荐模板(为什么匹配 → 可以做什么 → 优先用在哪个项目)
    3. 分类标签( Agent Infra / Content Workflow / Growth Research / Dev Productivity )
    4. 深度模式( Top 3 + 详细分析,而不是 Top 5 + 简短条目)
    5. 趋势对比(持久化每日快照,对比变化趋势)

    最高杠杆方向:把 scorer 变成可复用的"信号源 → 简报"引擎,支持多种趋势源( GitHub / Reddit / Product Hunt / HN )。

    开源地址

    欢迎 fork 、提 issue 、提 PR 。

    贡献建议

    核心原则:

    • 保持简单,抵制功能膨胀
    • 优先提升推荐质量,而不是增加配置项
    • 如果要加功能,先问"这是否符合减法工具的定位"

    如果你有类似需求,可以试试。如果你觉得"自己浏览 Trending 更有掌控感",这个工具不适合你。

    BTW 推送是可以推送的,看不看是一回事,看了是否实践又是一回事,我也会看了但不行动,想要一个顶级的决策脑袋🐶

    目前尚无回复
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   2912 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 12:07 · PVG 20:07 · LAX 05:07 · JFK 08:07
    ♥ Do have faith in what you're doing.