[开源] GitHub Trending Radar - 把每日热门列表变成个性化简报 - V2EX const topicId = 1201956; var Once= "68533"; document.addEventListener("DOMContentLoaded", () => { protectTraffic(); if (typeof reloadTopicTips !== 'undefined') { window.reloadTopicTips = reloadTopicTips; } const observer = new IntersectionObserver( ([e]) => e.target.toggleAttribute('stuck', e.intersectionRatio < 1), {threshold: [1]} ); observer.observe(document.getElementById('reply-box')); hljs.initHighlightingOnLoad(); $('#Main').on('click', '.no, .ago', function () { location.hash = $(this).parents('.cell').prop('id'); }); // refresh once document.addEventListener('visibilitychange', e => { if (document.visibilityState === 'visible') { fetchOnce().then(Once=> { $('#once').val(once); }); } }); if (location.search.indexOf('p=') > -1) { const p = Number(location.search.split('p=')[1].split('&')[0]); if (p) { const key = 'tp1201956'; if (lscache.set(key, p, 60 * 24 * 30)) { // 30 days console.log(`Saved topic page number to ${key}: ` + p); } } } });
爱意满满的作品展示区。
hazellin549

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

  •  
  •   hazellin549 Mar 29 1050 views
    This topic created in 48 days ago, the information mentioned may be changed or developed.

    背景

    天天逛 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 推送是可以推送的,看不看是一回事,看了是否实践又是一回事,我也会看了但不行动,想要一个顶级的决策脑袋

    2 replies    2026-05-10 12:23:57 +08:00
    xiaomoxian
        1
    xiaomoxian  
       Apr 27
    不错 已经 star 了
    hazellin549
        2
    hazellin549  
    OP
       6 days ago
    @xiaomoxian 谢佬
    About     Help     Advertise     Blog     API     FAQ     Solana     910 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 22:20 PVG 06:20 LAX 15:20 JFK 18:20
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86