sansan0/TrendRadarPublic

⭐AI-driven public opinion & trend monitor with multi-platform aggregation, RSS, and smart alerts.🎯 告别信息过载,你的 AI 舆情监控助手与热点筛选工具!聚合多平台热点 + RSS 订阅,支持关键词精准筛选。AI 智能筛选新闻 + AI 翻译 + AI 分析简报直推手机,也支持接入 MCP 架构,赋能 AI 自然语言对话分析、情感洞察与趋势预测等。支持 Docker ,数据本地/云端自持。集成微信/飞书/钉钉/Telegram/邮件/ntfy/bark/slack 等渠道智能推送。

AI summary: An automated intelligence gathering tool that monitors and summarizes emerging tech trends across platforms.

Stars
62.6K
+25 today
Forks
24.9K
Watchers
219
Open issues
33
Open PRs
34
Contributors
~3
Commits
247
Branches
1

PythonGPL-3.0Created Apr 28, 2025Last push 21d ago+122 stars this week+644 this month

Quick answers

What is TrendRadar?
An automated intelligence gathering tool that monitors and summarizes emerging tech trends across platforms.
What does TrendRadar do?
TrendRadar is an intelligence gathering system that autonomously monitors various technical platforms, including GitHub, HackerNews, and Twitter, to identify emerging trends. It utilizes natural language processing to filter through massive amounts of noise and extract genuinely impactful projects and discussions. The system aggregates this data, categorizes it by technology stack, and generates concise, readable summaries of what is gaining traction. It features a customizable dashboard that allows users to track specific keywords or organizations. By automating the discovery phase, it helps developers and investors stay ahead of the technology curve.
Who is TrendRadar for?
Designed for technology researchers, investors, and developer advocates who need to monitor the fast-paced tech landscape. Requires basic Python knowledge to customize scraping parameters.
How do I get started with TrendRadar?
python setup.py install
How popular is TrendRadar on GitHub?
sansan0/TrendRadar has 62,648 stars and 24,884 forks on GitHub, and gained 122 stars in the last 7 days.
What license does TrendRadar use?
sansan0/TrendRadar is released under the GPL-3.0 license.

Star history

since Jul 29, 2026
020K40K60KJul 2026Aug 2026Sep 2026Oct 2026
62.6K stars as of Oct 3, 2026. Measured daily since Jul 29, 2026; GitHub no longer exposes earlier star timestamps.

Contribution activity

commits per day, last 52 weeks
SepOctNovDecJanFebMarAprMayJunJulAugSepMonWedFri2025-09-28: 0 commits2025-09-29: 0 commits2025-09-30: 1 commit2025-10-01: 1 commit2025-10-02: 1 commit2025-10-03: 1 commit2025-10-04: 0 commits2025-10-05: 0 commits2025-10-06: 0 commits2025-10-07: 0 commits2025-10-08: 2 commits2025-10-09: 1 commit2025-10-10: 3 commits2025-10-11: 0 commits2025-10-12: 0 commits2025-10-13: 2 commits2025-10-14: 0 commits2025-10-15: 1 commit2025-10-16: 0 commits2025-10-17: 0 commits2025-10-18: 0 commits2025-10-19: 0 commits2025-10-20: 2 commits2025-10-21: 3 commits2025-10-22: 1 commit2025-10-23: 1 commit2025-10-24: 0 commits2025-10-25: 0 commits2025-10-26: 3 commits2025-10-27: 1 commit2025-10-28: 2 commits2025-10-29: 1 commit2025-10-30: 2 commits2025-10-31: 1 commit2025-11-01: 0 commits2025-11-02: 0 commits2025-11-03: 0 commits2025-11-04: 0 commits2025-11-05: 0 commits2025-11-06: 1 commit2025-11-07: 1 commit2025-11-08: 1 commit2025-11-09: 0 commits2025-11-10: 0 commits2025-11-11: 1 commit2025-11-12: 2 commits2025-11-13: 2 commits2025-11-14: 1 commit2025-11-15: 1 commit2025-11-16: 1 commit2025-11-17: 0 commits2025-11-18: 3 commits2025-11-19: 3 commits2025-11-20: 2 commits2025-11-21: 0 commits2025-11-22: 1 commit2025-11-23: 1 commit2025-11-24: 3 commits2025-11-25: 1 commit2025-11-26: 2 commits2025-11-27: 1 commit2025-11-28: 1 commit2025-11-29: 1 commit2025-11-30: 0 commits2025-12-01: 0 commits2025-12-02: 0 commits2025-12-03: 1 commit2025-12-04: 2 commits2025-12-05: 2 commits2025-12-06: 0 commits2025-12-07: 0 commits2025-12-08: 0 commits2025-12-09: 2 commits2025-12-10: 1 commit2025-12-11: 0 commits2025-12-12: 0 commits2025-12-13: 1 commit2025-12-14: 1 commit2025-12-15: 0 commits2025-12-16: 0 commits2025-12-17: 2 commits2025-12-18: 1 commit2025-12-19: 1 commit2025-12-20: 3 commits2025-12-21: 0 commits2025-12-22: 1 commit2025-12-23: 1 commit2025-12-24: 0 commits2025-12-25: 0 commits2025-12-26: 1 commit2025-12-27: 1 commit2025-12-28: 0 commits2025-12-29: 0 commits2025-12-30: 1 commit2025-12-31: 0 commits2026-01-01: 1 commit2026-01-02: 1 commit2026-01-03: 0 commits2026-01-04: 1 commit2026-01-05: 0 commits2026-01-06: 0 commits2026-01-07: 0 commits2026-01-08: 0 commits2026-01-09: 0 commits2026-01-10: 1 commit2026-01-11: 0 commits2026-01-12: 0 commits2026-01-13: 0 commits2026-01-14: 0 commits2026-01-15: 0 commits2026-01-16: 0 commits2026-01-17: 4 commits2026-01-18: 0 commits2026-01-19: 1 commit2026-01-20: 1 commit2026-01-21: 1 commit2026-01-22: 0 commits2026-01-23: 1 commit2026-01-24: 0 commits2026-01-25: 0 commits2026-01-26: 0 commits2026-01-27: 0 commits2026-01-28: 1 commit2026-01-29: 1 commit2026-01-30: 3 commits2026-01-31: 0 commits2026-02-01: 0 commits2026-02-02: 2 commits2026-02-03: 0 commits2026-02-04: 0 commits2026-02-05: 0 commits2026-02-06: 0 commits2026-02-07: 0 commits2026-02-08: 0 commits2026-02-09: 1 commit2026-02-10: 0 commits2026-02-11: 0 commits2026-02-12: 0 commits2026-02-13: 0 commits2026-02-14: 0 commits2026-02-15: 0 commits2026-02-16: 0 commits2026-02-17: 0 commits2026-02-18: 0 commits2026-02-19: 0 commits2026-02-20: 0 commits2026-02-21: 0 commits2026-02-22: 0 commits2026-02-23: 0 commits2026-02-24: 0 commits2026-02-25: 0 commits2026-02-26: 0 commits2026-02-27: 0 commits2026-02-28: 0 commits2026-03-01: 1 commit2026-03-02: 0 commits2026-03-03: 0 commits2026-03-04: 0 commits2026-03-05: 0 commits2026-03-06: 0 commits2026-03-07: 0 commits2026-03-08: 0 commits2026-03-09: 0 commits2026-03-10: 0 commits2026-03-11: 0 commits2026-03-12: 1 commit2026-03-13: 0 commits2026-03-14: 0 commits2026-03-15: 0 commits2026-03-16: 0 commits2026-03-17: 0 commits2026-03-18: 1 commit2026-03-19: 0 commits2026-03-20: 0 commits2026-03-21: 0 commits2026-03-22: 3 commits2026-03-23: 2 commits2026-03-24: 0 commits2026-03-25: 0 commits2026-03-26: 4 commits2026-03-27: 3 commits2026-03-28: 1 commit2026-03-29: 0 commits2026-03-30: 0 commits2026-03-31: 0 commits2026-04-01: 0 commits2026-04-02: 0 commits2026-04-03: 0 commits2026-04-04: 0 commits2026-04-05: 0 commits2026-04-06: 0 commits2026-04-07: 0 commits2026-04-08: 0 commits2026-04-09: 2 commits2026-04-10: 0 commits2026-04-11: 0 commits2026-04-12: 1 commit2026-04-13: 0 commits2026-04-14: 0 commits2026-04-15: 0 commits2026-04-16: 0 commits2026-04-17: 0 commits2026-04-18: 0 commits2026-04-19: 1 commit2026-04-20: 0 commits2026-04-21: 0 commits2026-04-22: 0 commits2026-04-23: 0 commits2026-04-24: 0 commits2026-04-25: 0 commits2026-04-26: 0 commits2026-04-27: 0 commits2026-04-28: 0 commits2026-04-29: 0 commits2026-04-30: 1 commit2026-05-01: 0 commits2026-05-02: 0 commits2026-05-03: 0 commits2026-05-04: 0 commits2026-05-05: 0 commits2026-05-06: 0 commits2026-05-07: 0 commits2026-05-08: 0 commits2026-05-09: 0 commits2026-05-10: 0 commits2026-05-11: 0 commits2026-05-12: 0 commits2026-05-13: 0 commits2026-05-14: 0 commits2026-05-15: 1 commit2026-05-16: 0 commits2026-05-17: 0 commits2026-05-18: 0 commits2026-05-19: 1 commit2026-05-20: 1 commit2026-05-21: 1 commit2026-05-22: 0 commits2026-05-23: 1 commit2026-05-24: 0 commits2026-05-25: 0 commits2026-05-26: 0 commits2026-05-27: 1 commit2026-05-28: 0 commits2026-05-29: 0 commits2026-05-30: 0 commits2026-05-31: 0 commits2026-06-01: 0 commits2026-06-02: 1 commit2026-06-03: 0 commits2026-06-04: 1 commit2026-06-05: 0 commits2026-06-06: 0 commits2026-06-07: 0 commits2026-06-08: 1 commit2026-06-09: 0 commits2026-06-10: 0 commits2026-06-11: 0 commits2026-06-12: 0 commits2026-06-13: 1 commit2026-06-14: 0 commits2026-06-15: 0 commits2026-06-16: 0 commits2026-06-17: 0 commits2026-06-18: 0 commits2026-06-19: 1 commit2026-06-20: 0 commits2026-06-21: 0 commits2026-06-22: 0 commits2026-06-23: 0 commits2026-06-24: 0 commits2026-06-25: 0 commits2026-06-26: 1 commit2026-06-27: 0 commits2026-06-28: 0 commits2026-06-29: 0 commits2026-06-30: 0 commits2026-07-01: 0 commits2026-07-02: 1 commit2026-07-03: 0 commits2026-07-04: 1 commit2026-07-05: 0 commits2026-07-06: 0 commits2026-07-07: 0 commits2026-07-08: 1 commit2026-07-09: 0 commits2026-07-10: 0 commits2026-07-11: 0 commits2026-07-12: 0 commits2026-07-13: 0 commits2026-07-14: 0 commits2026-07-15: 0 commits2026-07-16: 0 commits2026-07-17: 1 commit2026-07-18: 0 commits2026-07-19: 0 commits2026-07-20: 0 commits2026-07-21: 0 commits2026-07-22: 0 commits2026-07-23: 0 commits2026-07-24: 0 commits2026-07-25: 0 commits2026-07-26: 0 commits2026-07-27: 0 commits2026-07-28: 0 commits2026-07-29: 0 commits2026-07-30: 0 commits2026-07-31: 0 commits2026-08-01: 0 commits2026-08-02: 0 commits2026-08-03: 0 commits2026-08-04: 0 commits2026-08-05: 0 commits2026-08-06: 0 commits2026-08-07: 0 commits2026-08-08: 0 commits2026-08-09: 0 commits2026-08-10: 0 commits2026-08-11: 0 commits2026-08-12: 0 commits2026-08-13: 0 commits2026-08-14: 0 commits2026-08-15: 0 commits2026-08-16: 0 commits2026-08-17: 0 commits2026-08-18: 0 commits2026-08-19: 0 commits2026-08-20: 0 commits2026-08-21: 0 commits2026-08-22: 0 commits2026-08-23: 0 commits2026-08-24: 0 commits2026-08-25: 0 commits2026-08-26: 0 commits2026-08-27: 0 commits2026-08-28: 0 commits2026-08-29: 0 commits2026-08-30: 0 commits2026-08-31: 0 commits2026-09-01: 0 commits2026-09-02: 0 commits2026-09-03: 1 commit2026-09-04: 0 commits2026-09-05: 0 commits2026-09-06: 0 commits2026-09-07: 0 commits2026-09-08: 0 commits2026-09-09: 0 commits2026-09-10: 0 commits2026-09-11: 0 commits2026-09-12: 0 commits2026-09-13: 1 commit2026-09-14: 0 commits2026-09-15: 0 commits2026-09-16: 0 commits2026-09-17: 0 commits2026-09-18: 0 commits2026-09-19: 0 commits2026-09-20: 0 commits2026-09-21: 0 commits2026-09-22: 0 commits2026-09-23: 0 commits2026-09-24: 0 commits2026-09-25: 0 commits2026-09-26: 0 commits
141 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Landmark project

    62,648 stars

  • Continuous integration

    Automated checks passing

What TrendRadar does

TrendRadar is an intelligence gathering system that autonomously monitors various technical platforms, including GitHub, HackerNews, and Twitter, to identify emerging trends. It utilizes natural language processing to filter through massive amounts of noise and extract genuinely impactful projects and discussions. The system aggregates this data, categorizes it by technology stack, and generates concise, readable summaries of what is gaining traction. It features a customizable dashboard that allows users to track specific keywords or organizations. By automating the discovery phase, it helps developers and investors stay ahead of the technology curve.

Designed for technology researchers, investors, and developer advocates who need to monitor the fast-paced tech landscape. Requires basic Python knowledge to customize scraping parameters.

  • Multi-platform scraping: Pulls data continuously from key developer hubs and social networks.
  • Noise reduction: Uses machine learning algorithms to filter out spam and focus on high-signal content.
  • Automated summarization: Leverages LLMs to distill long discussions into brief, actionable insights.
  • Customizable alerts: Allows users to set up real-time notifications for specific emerging topics.
  • Trend visualization: Graphs the momentum of specific technologies or repositories over time.

Where teams use it

Technology scouting

Helps venture capitalists and tech leads identify promising new open-source projects early.

Content curation

Provides newsletter writers with a curated feed of the week's most important technical developments.

Market research

Assists product managers in understanding shifts in developer preferences and tooling.

Competitive analysis

Tracks the momentum and community engagement of rival open-source frameworks.

Getting started: python setup.py install

README

master branch
TrendRadar Banner

最快30秒部署的热点助手 —— 告别无效刷屏,只看真正关心的新闻资讯

🌐 官方网站 · 📖 官网文档 · AI 自建热榜数据源

sansan0%2FTrendRadar | Trendshift

GitHub Stars GitHub Forks License Version MCP Docker Pulls Docker Pulls RSS AI翻译 MCP Support AI分析推送 AI智能筛选

企业微信通知 个人微信通知 Telegram通知 dingtalk通知 飞书通知 邮件通知 ntfy通知 Bark通知 Slack通知 通用Webhook

GitHub Actions GitHub Pages Docker 本地部署 Cloudflare Pages

中文 | English

本项目以轻量,易部署为目标


📑 快速导航

💡 点击下方链接可快速跳转到对应章节。部署推荐从「快速开始」入手,需要详细自定义请看「配置详解」


  • 感谢为项目点 star 的观众们,fork 你所欲也,star 我所欲也,两者得兼😍是对开源精神最好的支持
👉 点击展开:致谢名单 (天使轮荣誉榜 🔥73+🔥 位)

早期支持者致谢

💡 特别说明:

  1. 关于名单:下方表格记录了项目起步阶段(天使轮)的支持者。因早期人工统计繁琐,难免存在疏漏或记录不全的情况,如有遗漏,实非本意,万望海涵。
  2. 未来规划:为了将有限的精力回归代码与功能迭代,即日起不再人工维护此名单。

无论名字是否上榜,你们的每一份支持都是 TrendRadar 能够走到今天的基石。🙏

基础设施支持

感谢 GitHub 免费提供的基础设施,这是本项目得以一键 fork便捷运行的最大前提。

数据支持

本项目使用 newsnow 项目的 API 获取多平台数据,特别感谢作者提供的服务。

经联系,作者表示无需担心服务器压力,但这是基于他的善意和信任。请大家:

  • 前往 newsnow 项目 点 star 支持
  • Docker 部署时,请合理控制推送频率,勿竭泽而渔

推广助力

感谢以下平台和个人的推荐(按时间排列)

观众支持

感谢给予资金支持的朋友们,你们的慷慨已化身为键盘旁的零食饮料,陪伴着项目的每一次迭代。

关于"一元点赞"的回归: 随着 v5.0.0 版本的发布,项目迈入了一个新的阶段。为了支持日益增长的 API 成本和咖啡因消耗,"一元点赞"通道现已重新开启。你的每一份心意,都将转化为代码世界里的 Token 和动力。🚀 前往支持

点赞人 金额 日期 备注
D*5 1.8 * 3 2025.11.24
*鬼 1 2025.11.17
*超 10 2025.11.17
R*w 10 2025.11.17 这 agent 做的牛逼啊,兄弟
J*o 1 2025.11.17 感谢开源,祝大佬事业有成
*晨 8.88 2025.11.16 项目不错,研究学习中
*海 1 2025.11.15
*德 1.99 2025.11.15
*疏 8.8 2025.11.14 感谢开源,项目很棒,支持一下
M*e 10 2025.11.14 开源不易,大佬辛苦了
**柯 1 2025.11.14
*云 88 2025.11.13 好项目,感谢开源
*W 6 2025.11.13
*凯 1 2025.11.13
对*. 1 2025.11.13 Thanks for your TrendRadar
s*y 1 2025.11.13
**翔 10 2025.11.13 好项目,相见恨晚,感谢开源!
*韦 9.9 2025.11.13 TrendRadar超赞,请老师喝咖啡~
h*p 5 2025.11.12 支持中国开源力量,加油!
c*r 6 2025.11.12
a*n 5 2025.11.12
。*c 1 2025.11.12 感谢开源分享
*记 1 2025.11.11
*主 1 2025.11.10
*了 10 2025.11.09
*杰 5 2025.11.08
*点 8.80 2025.11.07 开发不易,支持一下。
Q*Q 6.66 2025.11.07 感谢开源!
C*e 1 2025.11.05
Peter Fan 20 2025.10.29
M*n 1 2025.10.27 感谢开源
*许 8.88 2025.10.23 老师 小白一枚,摸了几天了还没整起来,求教
Eason 1 2025.10.22 还没整明白,但你在做好事
P*n 1 2025.10.20
*杰 1 2025.10.19
*徐 1 2025.10.18
*志 1 2025.10.17
*😀 10 2025.10.16 点赞
**杰 10 2025.10.16
*啸 10 2025.10.16
*纪 5 2025.10.14 TrendRadar
J*d 1 2025.10.14 谢谢你的工具,很好玩...
*H 1 2025.10.14
那*O 10 2025.10.13
*圆 1 2025.10.13
P*g 6 2025.10.13
Ocean 20 2025.10.12 ...真的太棒了!!!小白级别也能直接用...
**培 5.2 2025.10.2 github-yzyf1312:开源万岁
*椿 3 2025.9.23 加油,很不错
*🍍 10 2025.9.21
E*f 1 2025.9.20
*记 1 2025.9.20
z*u 2 2025.9.19
**昊 5 2025.9.17
*号 1 2025.9.15
T*T 2 2025.9.15 点赞
*家 10 2025.9.10
*X 1.11 2025.9.3
*飙 20 2025.8.31 来自老童谢谢
*下 1 2025.8.30
2*D 88 2025.8.13 下午
2*D 1 2025.8.13 上午
S*o 1 2025.8.05 支持一下
*侠 10 2025.8.04
x*x 2 2025.8.03 trendRadar 好项目 点赞
*远 1 2025.8.01
*邪 5 2025.8.01
*梦 0.1 2025.7.30
**龙 10 2025.7.29 支持一下

🪄 赞助商


❤️ 觉得好用?支持一下

若 TrendRadar 曾为你捕捉价值,不妨为它注入动力,助其持续进化

金额随意,1 元也是对开源的鼓励。欢迎在赞赏时备注留言 (´▽`ʃ♡ƪ)

微信赞赏 支付宝赞赏
微信赞赏 支付宝赞赏

🤝 二次开发与引用

如果你在项目中使用或借鉴了本项目的思路、核心代码,非常欢迎在 README 或文档中注明来源并附上本仓库链接。

这将有助于项目的持续维护和社区发展,感谢你的尊重与支持!❤️

💬 交流与反馈

  • GitHub Issues:适合具体的技术问题。提问时请提供完整信息(截图、错误日志等),有助于快速定位。
  • 公众号交流:建议优先在相关文章下的留言区交流。若需后台提问,先点赞/推荐文章是最好的"敲门砖",我在后台都能感受到这份心意哟 (´▽`ʃ♡ƪ)。
  • QQ 群交流:关注公众号,回复「交流群」即可加入。无论你是 AI 小白还是硬核开发者,想求助技术问题还是分享折腾心得,这里都欢迎你。群里主打互助交流和灵感碰撞,入群请先看群公告;提问时描述清楚问题、附上截图,群友有空就会帮忙,大家的实战经验往往比我一个人更快更全面 🤝

友情提示: 本项目为开源分享,非商业产品。把作者当朋友而非客服,沟通效率会更高哦!

公众号关注

📝 更新日志

📌 查看最新更新:原仓库更新日志 :

  • 提示:建议查看【历史更新】,明确具体的【功能内容】

2026/06/19 - v6.10.0

  • AI 翻译分批处理:大量标题翻译时自动分批请求,避免单次请求超限导致翻译失败
  • 模块拆分重构:拆分 context.py 和 __main__.py,AI 筛选流水线独立为 filter_pipeline 模块,职责更清晰、维护更方便
  • 修复飞书来源标签显示:修复飞书卡片中来源标签和 AI 独立源点速览被 CommonMark 吞掉不显示的问题

2026/02/09 - mcp-v4.0.0

  • 🔥 AI 消息直推所有渠道:让 AI 写好的内容一键推送到飞书、钉钉、Telegram、邮件等 9 个渠道,Markdown 自动适配各平台格式,不用操心格式差异
  • 新增格式化策略指南:新增 get_channel_format_guide 工具,告诉 AI 每个渠道支持什么格式、有什么限制,生成的内容排版更好看
  • 智能分批发送:超长消息自动按各渠道字节限制拆分(飞书 30KB、钉钉 20KB 等),配置读取自 config.yaml
  • 修复渠道误检测:ntfy 不再因为默认地址被误报为"已配置"
  • 代码复用优化:批次处理函数直接复用 trendradar 核心模块,不重复造轮子
👉 点击展开:历史更新

2026/06/02 - v6.9.0

  • 热榜域名安全校验:新增 expected_domain 配置项,校验返回数据链接的域名合法性,不匹配时自动丢弃数据并警告,有效防范链接劫持或数据篡改
  • 自定义热榜 API 地址:支持自部署 newsnow 并配置 api_url 使用自己的数据源

2026/05/23 - v6.8.0

  • HTML 报告全面增强:新增报告元数据展示(生成时间、数据来源、版本号)、暗色模式自动适配、Tab 栏交互优化、趋势箭头可视化,浏览器阅读体验大幅提升
  • 版本检查 CDN 多源回退:版本检查接口支持 GitHub → jsDelivr → Cloudflare 等多个 CDN 源自动回退,国内网络环境也能稳定获取更新提示
  • 展示区域开关生效:HTML 报告和邮件现在正确尊重 display.regions.ai_analysis 和 display.regions.standalone 开关,关闭即不渲染
  • 导出按钮修复:修复导出按钮点击后下拉菜单图标消失的问题
  • Markdown 导出修复:修复 HTML 报告 Markdown 导出中 JS 换行符转义错误

2026/05/15 - v6.7.0

  • Markdown 导出:报告导出下拉菜单新增 Markdown 格式,一键生成带链接的结构化文本,方便 LLM 二次加工和跨平台分享(#1121)
  • RSS guid 去重:RSS 存储新增 guid 字段,去重优先级改为 guid > url,解决同一文章因 URL 变化导致重复入库的问题
  • 空标题防护:解析器、渲染层、翻译回填全链路增加空标题兜底逻辑,确保无标题条目也能正常显示
  • 翻译质量增强:翻译提示词要求保留编号顺序,空翻译结果不再覆盖原始标题

2026/03/28 - v6.6.0

  • HTML 报告浏览器增强:在浏览器中打开报告可自动切换宽屏布局,关键词分组和独立展区均支持 Tab 快速切换,搜索框实时过滤新闻标题,邮件客户端仍显示原始窄屏布局,零回归
  • 暗色模式:一键切换深色主题,自动记住偏好,适合夜间阅读
  • 一键复制新闻:鼠标悬停新闻序号即可复制标题和链接,方便快速分享
  • 导出优化:整页截图和分段截图合并为下拉式导出按钮,截图时自动还原干净布局
  • 快捷键系统:支持 W 宽屏切换、D 暗色模式、/ 搜索、? 查看快捷键提示
  • 阅读进度条:页面顶部实时显示阅读进度

2026/03/12 - v6.5.0

  • AI 智能筛选系统:不用再手动设关键词!在 ai_interests.txt 里用日常语言写下你关注的方向(如"我想看 AI 和新能源相关新闻"),AI 会自动提取标签并对每条新闻打分,只推送真正和你相关的内容。万一 AI 筛选出了问题,会自动切回关键词匹配,推送不中断
  • 每个时段支持不同的筛选方式和关注方向:Timeline 中的每个时间段现在可以独立设置用什么方式筛选、看什么类型的新闻。比如:早上用"科技关键词"快速过滤,晚上换成"金融 AI 兴趣描述"做深度筛选——同一个系统,不同时段看不同内容
  • AI 分析范围独立于推送:AI 分析的数据范围可以和推送内容不同。比如推送只发新增消息(避免重复打扰),但 AI 分析当天全部新闻(看完整趋势)。每个时段也能单独设置 AI 分析模式
  • AI 筛选智能省钱:已分析过的新闻不会重复消耗 token;兴趣描述修改后,AI 自动判断变化幅度——小改动只更新受影响的标签,大改动才全量重新分类
  • 多文件配置与标签隔离:自定义关键词文件放 config/custom/keyword/,AI 兴趣文件放 config/custom/ai/,不同文件产生的标签各自独立、互不干扰
  • AI 翻译精准控制:可分别控制热榜、RSS、独立展示区是否翻译,没开启显示的区域自动跳过,不浪费 token
  • 远程存储批量上传:多次写操作攒在一起统一提交云端,减少 API 调用次数
  • 每组关键词/标签展示数量限制:通过 max_news_per_keyword 控制每个分组最多显示多少条新闻,避免单个热门话题占满整条推送
  • 时段冲突智能检测:两个时间段如果有时间重叠,系统会自动报错提醒修改,避免配置冲突导致意外行为
  • 修复若干bug

2026/02/09 - v6.0.0

Breaking Change:配置文件升级(config.yaml 2.0.0),旧版 push_window 和 analysis_window 配置不再兼容,请参考新版 config.yaml 迁移

  • 统一调度系统:新增 timeline.yaml,用一套配置控制「什么时间采集 / 推送 / AI 分析」
  • 5 种预设模板:always_on(全天候,默认)、morning_evening(早晚汇总)、office_hours(办公时间)、night_owl(夜猫子)、custom(自定义);也支持在 presets: 下新增自己的模板,只要 key 不重复,然后在 config.yaml 里填你的模板名即可
  • 灵活的时间段配置:支持工作日/周末差异化、跨午夜时间段、per-period once 去重
  • 可视化配置编辑器:
    • 新增 timeline.yaml 编辑标签页,与 config.yaml / frequency_words.txt 并列
    • 预设模式卡片选择:点击即切换,自动同步 config.yaml 的 schedule.preset
    • 周视图时间线:7 天 × 24 小时水平条,用颜色区分推送/分析/采集状态
    • 可交互控件:开关、下拉框、时间选择器,右侧修改实时同步到左侧 YAML
    • 周映射下拉选择:根据日计划动态填充,拖拉点击即可完成调度配置
  • AI 提示词稳定性优化(ai_analysis_prompt.txt v2.0.0):
    • 格式规范独立说明:将换行/标签/序号/禁止事项从 JSON value 中抽出,作为独立章节
    • JSON 模板简化:字段描述缩短为一句话 + 字数限制,减少 AI 输出格式混乱
    • 去除 system prompt 中的 Markdown 格式,与"禁止 Markdown"指令保持一致
    • 所有 JSON 字段声明为可选,缺少任何字段不会报错,增强容错性
  • 新增独立展示区 AI 概括分析(ai_analysis.include_standalone):
    • 新增独立开关,开启后 AI 对每个 standalone 源生成核心概括
    • AI 分析与推送展示解耦:无需开启独立展示区的推送显示,AI 也可独立分析完整热榜数据
    • 支持热榜平台和 RSS 源,含排名/时间/轨迹数据
    • 轨迹分析与 include_rank_timeline 联动:开启时利用轨迹数据做深度趋势分析,关闭时基于排名做简要判断
    • 新增 standalone_summaries JSON 字段(独立源点速览),所有推送渠道均已适配渲染

2026/01/28 - v5.5.0

和 mcp 功能一样, 这个小工具我也不新开一个仓库维护了, 反正纯前端, 都搁一起吧

  • 增加 trendradar 的可视化配置编辑器

2026/02/02 - mcp-v3.2.0

  • 新增 read_article 工具:通过 Jina AI Reader 读取单篇文章正文(Markdown 格式)
  • 新增 read_articles_batch 工具:批量读取多篇文章(最多 5 篇,自动限速)
  • 推荐工作流:search_news(query="关键词", include_url=True) → read_article(url=...) 读取正文
  • 文档更新:README-MCP-FAQ.md 和 README-MCP-FAQ-EN.md 新增 Q19-Q20 文章读取相关说明

2026/01/10 - mcp-v3.0.0~v3.1.5

  • Breaking Change:所有工具返回值统一为 {success, summary, data, error} 结构
  • 异步一致性:所有 21 个工具函数使用 asyncio.to_thread() 包装同步调用
  • MCP Resources:新增 4 个资源(platforms、rss-feeds、available-dates、keywords)
  • RSS 增强:get_latest_rss 支持多日查询(days 参数),跨日期 URL 去重
  • 正则匹配修复:get_trending_topics 支持 /pattern/ 正则语法和 display_name
  • 缓存优化:新增 make_cache_key() 函数,参数排序+MD5 哈希确保一致性
  • 新增 check_version 工具:支持同时检查 TrendRadar 和 MCP Server 版本更新

2026/01/23 - v5.4.0

  • 增加 AI 分析模式的独立控制功能,可选 follow_report | daily | current | incremental
  • 新增 AI 分析时间窗口控制,支持自定义运行段及每日频次限制
  • 增加配置文件版本管理功能
  • 修复若干bug

2026/01/19 - v5.3.0

重大重构:AI 模块迁移至 LiteLLM

  • 统一 AI 接口:使用 LiteLLM 替代手动实现,支持 100+ AI 提供商
  • 简化配置:移除 provider 字段,改用 model: "provider/model_name" 格式
  • 新增功能:自动重试 (num_retries)、备用模型 (fallback_models)
  • 配置变更:
    • ai.provider → 移除(已合并到 model)
    • ai.base_url → ai.api_base
    • AI_PROVIDER 环境变量 → 移除
    • AI_BASE_URL 环境变量 → AI_API_BASE
  • 模型格式示例:
    • DeepSeek: deepseek/deepseek-chat
    • OpenAI: openai/gpt-4o
    • Gemini: gemini/gemini-2.5-flash
    • Anthropic: anthropic/claude-3-5-sonnet

2026/01/17 - v5.2.0

主要见 config.yaml 描述

🌐 AI 翻译功能

  • 多语言翻译:支持将推送内容翻译为任意语言
  • 批量翻译:智能批量处理,减少 API 调用次数
  • 自定义提示词:支持自定义翻译风格

🔧 配置架构优化

  • AI 模型配置独立:分析和翻译共享模型配置
  • 区域开关统一:统一管理推送区域显示
  • 区域排序自定义:支持自定义各区域的显示顺序

✨ AI 分析增强

  • AI 分析嵌入 HTML:分析结果直接嵌入 HTML 报告,邮件通知直接使用
  • 富样式 AI 区块:渐变蓝色背景卡片式布局,清晰分隔各分析维度
  • 排名时间线支持:AI 可获取每条新闻在每个抓取时间点的精确排名
  • 板块重组 (7→4):整合为核心热点态势、舆论风向争议、异动与弱信号、研判策略建议

🔧 多模型适配

  • 通用参数透传:支持向 API 透传任意高级参数
  • Gemini 适配:原生参数支持,内置安全策略放宽

🐛 Bug 修复

  • 修复若干已知问题,提升系统稳定性

2026/01/10 - v5.0.0

开发小插曲: 致敬那个陪伴我两年多、却在刚续费后反手弹出 "This organization has been disabled" 的某 C 厂模型

✨ 推送内容"五大板块"重构

本次更新对推送消息进行了区域化重构,现在推送内容清晰地划分为五大核心板块:

  1. 📊 热榜新闻:根据你的关键词精准筛选后的全网热点聚合。
  2. 📰 RSS 订阅:你的个性化订阅源内容,支持按关键词分组。
  3. 🆕 本次新增:实时捕捉自上次运行以来的全新热点(带 🆕 标记)。
  4. 📋 独立展示区:指定平台的完整热榜或 RSS 源展示,完全不受关键词过滤限制。
  5. ✨ AI 分析板块:由 AI 驱动的深度洞察,包含趋势概述、热度走势及极其重要的情感倾向分析。

✨ AI 智能分析推送功能

  • AI 分析集成:使用 AI 大模型对推送内容进行深度分析,自动生成热点趋势概述、关键词热度分析、跨平台关联、潜在影响评估等
  • 情感倾向分析:新增深度情感识别,精准捕捉舆论的正负面、争议或担忧情绪
  • 多 AI 提供商支持:支持 DeepSeek(默认,性价比高)、OpenAI、Google Gemini 及任意 OpenAI 兼容接口
  • 两种推送模式:only_analysis(仅 AI 分析)、both(两者都推送)
  • 自定义提示词:通过 config/ai_analysis_prompt.txt 文件自定义 AI 分析角色和输出格式
  • 多维度数据分析:AI 可分析排名变化、热度持续时间、跨平台表现、趋势预测等

📋 独立展示区功能

  • 完整热榜展示:指定平台的完整热榜单独展示,不受关键词过滤影响
  • RSS 独立展示:RSS 源内容可完整展示,适合内容较少的订阅源
  • 灵活配置:支持配置展示平台列表、RSS 源列表、最大展示条数

📊 推送体验重构

  • 排版升级:重新设计并统一各渠道统计头部,强化区块组织,消息层次一目了然
  • 配置简化:优化飞书等通知渠道的配置逻辑,上手更简单
  • 热度趋势箭头:新增 🔺(上升)、🔻(下降)、➖(持平) 趋势标识,直观展示热度变化
  • 通用 Webhook:支持自定义 Webhook URL 和 JSON 模板,轻松适配 Discord、Matrix、IFTTT 等任意平台

🔧 配置优化

  • 频率词配置增强:新增 [组别名] 语法,支持 # 注释行,配置更清晰(感谢 @songge8 提出的建议)
  • 环境变量支持:AI 分析相关配置支持环境变量覆盖(AI_API_KEY、AI_PROVIDER 等)

💡 详细配置教程见 让 AI 帮我分析热点

2026/01/02 - v4.7.0

  • 修复 RSS HTML 显示:修复 RSS 数据格式不匹配导致的渲染问题,现在按关键词分组正确显示
  • 新增正则表达式语法:关键词配置支持 /pattern/ 正则语法,解决英文子字符串误匹配问题(如 ai 匹配 training)📖 查看语法详解
  • 新增显示名称语法:使用 => 备注 给复杂的正则表达式起个好记的名字,推送消息显示更清晰(如 /\bai\b/ => AI相关)
  • 不会写正则? README 新增 AI 生成正则的引导,告诉 ChatGPT/Gemini/DeepSeek 你想匹配什么,让 AI 帮你写

2025/12/30 - mcp-v2.0.0

  • 架构调整:移除 TXT 支持,统一使用 SQLite 数据库
  • RSS 查询:新增 get_latest_rss、search_rss、get_rss_feeds_status
  • 统一搜索:search_news 支持 include_rss 参数同时搜索热榜和 RSS

2026/01/01 - v4.6.0

  • 修复 RSS HTML 显示:将 RSS 内容合并到热榜 HTML 页面,按源分组显示
  • 新增 display_mode 配置:支持 keyword(按关键词分组)和 platform(按平台分组)两种显示模式

2025/12/30 - v4.5.0

  • RSS 订阅源支持:新增 RSS/Atom 抓取,按关键词分组统计(与热榜格式一致)
  • 存储结构重构:扁平化目录结构 output/{type}/{date}.db
  • 统一排序配置:sort_by_position_first 同时影响热榜和 RSS
  • 配置结构重构:config.yaml 重新组织为 7 个逻辑分组(app、report、notification、storage、platforms、rss、advanced),配置路径更清晰

2025/12/26 - mcp-v1.2.0

MCP 模块更新 - 优化工具集,新增聚合对比功能,合并冗余工具:

  • 新增 aggregate_news 工具 - 跨平台新闻去重聚合
  • 新增 compare_periods 工具 - 时期对比分析(周环比/月环比)
  • 合并 find_similar_news + search_related_news_history → find_related_news
  • 增强 get_trending_topics - 新增 auto_extract 模式自动提取热点
  • 修复若干bug
  • 同步更新 README-MCP-FAQ.md 文档的中英文版 (Q1-Q18)

2025/12/20 - v4.0.3

  • 新增 URL 标准化功能,解决微博等平台因动态参数(如 band_rank)导致的重复推送问题
  • 修复增量模式检测逻辑,正确识别历史标题

2025/12/17 - v4.0.1

  • StorageManager 添加推送记录代理方法
  • S3 客户端切换至 virtual-hosted style 以提升兼容性(支持腾讯云 COS 等更多服务)

2025/12/13 - mcp-v1.1.0

MCP 模块更新:

  • 适配 v4.0.0,同时也兼容 v3.x 的数据
  • 新增存储同步工具:sync_from_remote、get_storage_status、list_available_dates

2025/12/13 - v4.0.0

🎉 重大更新:全面重构存储和核心架构

  • 多存储后端支持:引入全新的存储模块,支持本地 SQLite 和远程云存储(S3 兼容协议,例如 Cloudflare R2),适应 GitHub Actions、Docker 和本地环境。
  • 数据库结构优化:重构 SQLite 数据库表结构,提升数据效率和查询能力。
  • 核心代码模块化:将主程序逻辑拆分为 trendradar 包的多个模块,显著提升代码可维护性。
  • 增强功能:实现日期格式标准化、数据保留策略、时区配置支持、时间显示优化,并修复远程存储数据持久化问题,确保数据合并的准确性。
  • 清理和兼容:移除了大部分历史兼容代码,统一了数据存储和读取方式。

2025/12/03 - v3.5.0

🎉 核心功能增强

  1. 多账号推送支持

    • 所有推送渠道(飞书、钉钉、企业微信、Telegram、ntfy、Bark、Slack)支持多账号配置
    • 使用分号 ; 分隔多个账号,例如:FEISHU_WEBHOOK_URL=url1;url2
    • 自动验证配对配置(如 Telegram 的 token 和 chat_id)数量一致性
  2. 推送区域配置

    • 通过 display.region_order 自定义各区域的显示顺序(v5.2.0 替代原 reverse_content_order)
    • 通过 display.regions 控制各区域是否显示(热榜、新增热点、RSS、独立展示区、AI 分析)
  3. 全局过滤关键词

    • 新增 [GLOBAL_FILTER] 区域标记,支持全局过滤不想看到的内容
    • 适用场景:过滤广告、营销、低质内容等

🐳 Docker 双路径 HTML 生成优化

  • 问题修复:解决 Docker 环境下 index.html 无法同步到宿主机的问题
  • 双路径生成:当日汇总 HTML 同时生成到两个位置
    • index.html(项目根目录):供 GitHub Pages 访问
    • output/index.html:通过 Docker Volume 挂载,宿主机可直接访问
  • 兼容性:确保 Docker、GitHub Actions、本地运行环境均能正常访问网页版报告

🐳 Docker MCP 镜像支持

  • 新增独立的 MCP 服务镜像 wantcat/trendradar-mcp
  • 支持 Docker 部署 AI 分析功能,通过 HTTP 接口(端口 3333)提供服务
  • 双容器架构:新闻推送服务与 MCP 服务独立运行,可分别扩展和重启
  • 详见 Docker 部署 - MCP 服务

🌐 Web 服务器支持

  • 新增内置 Web 服务器,支持通过浏览器访问生成的报告
  • 通过 manage.py 命令控制启动/停止:docker exec -it trendradar python manage.py start_webserver
  • 访问地址:http://localhost:8080(端口可配置)
  • 安全特性:静态文件服务、目录限制、本地访问
  • 支持自动启动和手动控制两种模式

📖 文档优化

🔧 升级说明:

  • GitHub Fork 用户:更新 main.py、config/config.yaml(新增多账号推送支持,无需修改现有配置)
  • 多账号推送:新功能,默认不启用,现有单账号配置不受影响

2025/11/26 - mcp-v1.0.3

MCP 模块更新:

  • 新增日期解析工具 resolve_date_range,解决 AI 模型计算日期不一致的问题
  • 支持自然语言日期表达式解析(本周、最近7天、上月等)
  • 工具总数从 13 个增加到 14 个

2025/11/28 - v3.4.1

🔧 格式优化

  1. Bark 推送增强

    • Bark 现支持 Markdown 渲染
    • 启用原生 Markdown 格式:粗体、链接、列表、代码块等
    • 移除纯文本转换,充分利用 Bark 原生渲染能力
  2. Slack 格式精准化

    • 使用专用 mrkdwn 格式处理分批内容
    • 提升字节大小估算准确性(避免消息超限)
    • 优化链接格式:<url|text> 和加粗语法:*text*
  3. 性能提升

    • 格式转换在分批过程中完成,避免二次处理
    • 准确估算消息大小,减少发送失败率

🔧 升级说明:

  • GitHub Fork 用户:更新 main.py,config.yaml

2025/11/25 - v3.4.0

🎉 新增 Slack 推送支持

  1. 团队协作推送渠道

    • 支持 Slack Incoming Webhooks(全球流行的团队协作工具)
    • 消息集中管理,适合团队共享热点资讯
    • 支持 mrkdwn 格式(粗体、链接等)
  2. 多种部署方式

    • GitHub Actions:配置 SLACK_WEBHOOK_URL Secret
    • Docker:环境变量 SLACK_WEBHOOK_URL
    • 本地运行:config/config.yaml 配置文件

📖 详细配置教程:快速开始 - Slack 推送

  • 优化 setup-windows.bat 和 setup-windows-en.bat 一键安装 MCP 的体验

🔧 升级说明:

  • GitHub Fork 用户:更新 main.py、config/config.yaml、.github/workflows/crawler.yml

2025/11/24 - v3.3.0

🎉 新增 Bark 推送支持

  1. iOS 专属推送渠道

    • 支持 Bark 推送(基于 APNs,iOS 平台)
    • 免费开源,简洁高效,无广告干扰
    • 支持官方服务器和自建服务器两种方式
  2. 多种部署方式

    • GitHub Actions:配置 BARK_URL Secret
    • Docker:环境变量 BARK_URL
    • 本地运行:config/config.yaml 配置文件

📖 详细配置教程:快速开始 - Bark 推送

🐛 Bug 修复

  • 修复 config.yaml 中 ntfy_server_url 配置不生效的问题 (#345)

🔧 升级说明:

  • GitHub Fork 用户:更新 main.py、config/config.yaml、.github/workflows/crawler.yml

2025/11/23 - v3.2.0

🎯 新增高级定制功能

  1. 关键词排序优先级配置

    • 支持两种排序策略:热度优先 vs 配置顺序优先
    • 满足不同使用场景:热点追踪 or 个性化关注
  2. 显示数量精准控制

    • 全局配置:统一限制所有关键词显示数量
    • 单独配置:使用 @数字 语法为特定关键词设置限制
    • 有效控制推送长度,突出重点内容

📖 详细配置教程:关键词配置 - 高级配置

🔧 升级说明:

  • GitHub Fork 用户:更新 main.py、config/config.yaml

2025/11/18 - mcp-v1.0.2

MCP 模块更新:

  • 优化查询今日新闻却可能错误返回过去日期的情况

2025/11/22 - v3.1.1

  • 修复数据异常导致的崩溃问题:解决部分用户在 GitHub Actions 环境中遇到的 'float' object has no attribute 'lower' 错误
  • 新增双重防护机制:在数据获取阶段过滤无效标题(None、float、空字符串),同时在函数调用处添加类型检查
  • 提升系统稳定性,确保在数据源返回异常格式时仍能正常运行

升级说明(GitHub Fork 用户):

  • 必须更新:main.py
  • 建议使用小版本升级方式:复制替换上述文件

2025/11/20 - v3.1.0

  • 新增个人微信推送支持:企业微信应用可推送到个人微信,无需安装企业微信 APP
  • 支持两种消息格式:markdown(企业微信群机器人)和 text(个人微信应用)
  • 新增 WEWORK_MSG_TYPE 环境变量配置,支持 GitHub Actions、Docker、docker compose 等多种部署方式
  • text 模式自动清除 Markdown 语法,提供纯文本推送效果
  • 详见快速开始中的「个人微信推送」配置说明

升级说明(GitHub Fork 用户):

  • 必须更新:main.py、config/config.yaml
  • 可选更新:.github/workflows/crawler.yml(如使用 GitHub Actions 部署)
  • 建议使用小版本升级方式:复制替换上述文件

2025/11/12 - v3.0.5

  • 修复邮件发送 SSL/TLS 端口配置逻辑错误
  • 优化邮箱服务商(QQ/163/126)默认使用 465 端口(SSL)
  • 新增 Docker 环境变量支持:核心配置项(enable_crawler、report_mode、push_window 等)支持通过环境变量覆盖,解决 NAS 用户修改配置文件不生效的问题(详见 🐳 Docker 部署 章节)

2025/10/26 - mcp-v1.0.1

MCP 模块更新:

  • 修复日期查询参数传递错误
  • 统一所有工具的时间参数格式

2025/10/31 - v3.0.4

  • 解决飞书因推送内容过长而产生的错误,实现了分批推送

2025/10/23 - v3.0.3

  • 扩大 ntfy 错误信息显示范围

2025/10/21 - v3.0.2

  • 修复 ntfy 推送编码问题

2025/10/20 - v3.0.0

重大更新 - AI 分析功能上线 ✨

  • 核心功能:

    • 新增基于 MCP (Model Context Protocol) 的 AI 分析服务器
    • 支持17种智能分析工具:基础查询、智能检索、高级分析、RSS 查询、系统管理
    • 自然语言交互:通过对话方式查询和分析新闻数据
    • 多客户端支持:Claude Desktop、Cherry Studio、Cursor、Cline 等
  • 分析能力:

    • 话题趋势分析(热度追踪、生命周期、爆火检测、趋势预测)
    • 数据洞察(平台对比、活跃度统计、关键词共现)
    • 情感分析、相似新闻查找、智能摘要生成
    • 历史相关新闻检索、多模式搜索
  • 更新提示:

    • 这是独立的 AI 分析功能,不影响现有的推送功能
    • 可选择性使用,无需升级现有部署

2025/10/15 - v2.4.4

  • 更新内容:

    • 修复 ntfy 推送编码问题 + 1
    • 修复推送时间窗口判断问题
  • 更新提示:

    • 建议【小版本升级】

2025/10/10 - v2.4.3

感谢 nidaye996 发现的体验问题

  • 更新内容:

    • 重构"静默推送模式"命名为"推送时间窗口控制",提升功能理解度
    • 明确推送时间窗口作为可选附加功能,可与三种推送模式搭配使用
    • 改进注释和文档描述,使功能定位更加清晰
  • 更新提示:

    • 这个仅仅是重构,可以不用升级

2025/10/8 - v2.4.2

  • 更新内容:

    • 修复 ntfy 推送编码问题
    • 修复配置文件缺失问题
    • 优化 ntfy 推送效果
    • 增加 github page 图片分段导出功能
  • 更新提示:

    • 建议使用【大版本更新】

2025/10/2 - v2.4.0

新增 ntfy 推送通知

  • 核心功能:

    • 支持 ntfy.sh 公共服务和自托管服务器
  • 使用场景:

    • 适合追求隐私的用户(支持自托管)
    • 跨平台推送(iOS、Android、Desktop、Web)
    • 无需注册账号(公共服务器)
    • 开源免费(MIT 协议)
  • 更新提示:

    • 建议使用【大版本更新】

2025/09/26 - v2.3.2

  • 修正了邮件通知配置检查被遗漏的问题(#88)

修复说明:

  • 解决了即使正确配置邮件通知,系统仍提示"未配置任何webhook"的问题

2025/09/22 - v2.3.1

  • 新增邮件推送功能,支持将热点新闻报告发送到邮箱
  • 智能 SMTP 识别:自动识别 Gmail、QQ邮箱、Outlook、网易邮箱等 10+ 种邮箱服务商配置
  • HTML 精美格式:邮件内容采用与网页版相同的 HTML 格式,排版精美,移动端适配
  • 批量发送支持:支持多个收件人,用逗号分隔即可同时发送给多人
  • 自定义 SMTP:可自定义 SMTP 服务器和端口
  • 修复Docker构建网络连接问题

使用说明:

  • 适用场景:适合需要邮件归档、团队分享、定时报告的用户
  • 支持邮箱:Gmail、QQ邮箱、Outlook/Hotmail、163/126邮箱、新浪邮箱、搜狐邮箱等

更新提示:

  • 此次更新的内容比较多,如果想升级,建议采用【大版本升级】

2025/09/17 - v2.2.0

  • 新增一键保存新闻图片功能,让你轻松分享关注的热点

使用说明:

  • 适用场景:当你按照教程开启了网页版功能后(GitHub Pages)
  • 使用方法:用手机或电脑打开该网页链接,点击页面顶部的"保存为图片"按钮
  • 实际效果:系统会自动将当前的新闻报告制作成一张精美图片,保存到你的手机相册或电脑桌面
  • 分享便利:你可以直接把这张图片发给朋友、发到朋友圈,或分享到工作群,让别人也能看到你发现的重要资讯

2025/09/13 - v2.1.2

  • 解决钉钉的推送容量限制导致的新闻推送失败问题(采用分批推送)

2025/09/04 - v2.1.1

  • 修复docker在某些架构中无法正常运行的问题
  • 正式发布官方 Docker 镜像 wantcat/trendradar,支持多架构
  • 优化 Docker 部署流程,无需本地构建即可快速使用

2025/08/30 - v2.1.0

核心改进:

  • 推送逻辑优化:从"每次执行都推送"改为"时间窗口内可控推送"
  • 时间窗口控制:可设定推送时间范围,避免非工作时间打扰
  • 推送频率可选:时间段内支持单次推送或多次推送

更新提示:

  • 本功能默认关闭,需手动在 config.yaml 中开启推送时间窗口控制
  • 升级需同时更新 main.py 和 config.yaml 两个文件

2025/08/27 - v2.0.4

  • 本次版本不是功能修复,而是重要提醒
  • 请务必妥善保管好 webhooks,不要公开,不要公开,不要公开
  • 如果你以 fork 的方式将本项目部署在 GitHub 上,请将 webhooks 填入 GitHub Secret,而非 config.yaml
  • 如果你已经暴露了 webhooks 或将其填入了 config.yaml,建议删除后重新生成

2025/08/06 - v2.0.3

  • 优化 github page 的网页版效果,方便移动端使用

2025/07/28 - v2.0.2

  • 重构代码
  • 解决版本号容易被遗漏修改的问题

2025/07/27 - v2.0.1

修复问题:

  1. docker 的 shell 脚本的换行符为 CRLF 导致的执行异常问题
  2. frequency_words.txt 为空时,导致新闻发送也为空的逻辑问题
  • 修复后,当你选择 frequency_words.txt 为空时,将推送所有新闻,但受限于消息推送大小限制,请做如下调整
    • 方案一:关闭手机推送,只选择 Github Pages 布置(这是能获得最完整信息的方案,将把所有平台的热点按照你自定义的热搜算法进行重新排序)
    • 方案二:减少推送平台,优先选择企业微信或Telegram,这两个推送我做了分批推送功能(因为分批推送影响推送体验,且只有这两个平台只给一点点推送容量,所以才不得已做了分批推送功能,但至少能保证获得的信息完整)
    • 方案三:可与方案二结合,模式选择 current 或 incremental 可有效减少一次性推送的内容

2025/07/17 - v2.0.0

重大重构:

  • 配置管理重构:所有配置现在通过 config/config.yaml 文件管理(main.py 我依旧没拆分,方便你们复制升级)
  • 运行模式升级:支持三种模式 - daily(当日汇总)、current(当前榜单)、incremental(增量监控)
  • Docker 支持:完整的 Docker 部署方案,支持容器化运行

配置文件说明:

  • config/config.yaml - 主配置文件(应用设置、爬虫配置、通知配置、平台配置等)
  • config/frequency_words.txt - 关键词配置(监控词汇设置)

2025/07/09 - v1.4.1

功能新增:增加增量推送(在 main.py 头部配置 FOCUS_NEW_ONLY),该开关只关心新话题而非持续热度,只在有新内容时才发通知。

修复问题: 某些情况下,由于新闻本身含有特殊符号导致的偶发性排版异常。

2025/06/23 - v1.3.0

企业微信 和 Telegram 的推送消息有长度限制,对此我采用将消息拆分推送的方式。开发文档详见企业微信 和 Telegram

2025/06/21 - v1.2.1

在本版本之前的旧版本,不仅 main.py 需要复制替换, crawler.yml 也需要你复制替换 https://github.com/sansan0/TrendRadar/blob/master/.github/workflows/crawler.yml

2025/06/19 - v1.2.0

感谢 claude research 整理的各平台 api ,让我快速完成各平台适配(虽然代码更多冗余了~

  1. 支持 telegram ,企业微信,钉钉推送渠道, 支持多渠道配置和同时推送

2025/06/18 - v1.1.0

200 star⭐ 了, 继续给大伙儿助兴~近期,在我的"怂恿"下,挺多人在我公众号点赞分享推荐助力了我,我都在后台看见了具体账号的鼓励数据,很多都成了天使轮老粉(我玩公众号才一个多月,虽然注册是七八年前的事了哈哈,属于上车早,发车晚),但因为你们没有留言或私信我,所以我也无法一一回应并感谢支持,在此一并谢谢!

  1. 重要的更新,加了权重,你现在看到的新闻都是最热点最有关注度的出现在最上面
  2. 更新文档使用,因为近期更新了很多功能,而且之前的使用文档我偷懒写的简单(见下面的 ⚙️ frequency_words.txt 配置完整教程)

2025/06/16 - v1.0.0

  1. 增加了一个项目新版本更新提示,默认打开,如要关掉,可以在 main.py 中把 "FEISHU_SHOW_VERSION_UPDATE": True 中的 True 改成 False 即可

2025/06/13+14

  1. 去掉了兼容代码,之前 fork 的同学,直接复制代码会在当天显示异常(第二天会恢复正常)
  2. feishu 和 html 底部增加一个新增新闻显示

2025/06/09

100 star⭐ 了,写个小功能给大伙儿助助兴 frequency_words.txt 文件增加了一个【必须词】功能,使用 + 号

  1. 必须词语法如下:
    唐僧或者猪八戒必须在标题里同时出现,才会收录到推送新闻中
+唐僧
+猪八戒
  1. 过滤词的优先级更高:
    如果标题中过滤词匹配到唐僧念经,那么即使必须词里有唐僧,也不显示
+唐僧
!唐僧念经

2025/06/02

  1. 网页和飞书消息支持手机直接跳转详情新闻
  2. 优化显示效果 + 1

2025/05/26

  1. 飞书消息显示效果优化
优化前
飞书消息界面 - 优化前
优化后
飞书消息界面 - 优化后

✨ 核心功能

全网热点聚合

  • 知乎
  • 抖音
  • bilibili 热搜
  • 华尔街见闻
  • 贴吧
  • 百度热搜
  • 财联社热门
  • 澎湃新闻
  • 凤凰网
  • 今日头条
  • 微博

默认监控 11 个主流平台,也可自行增加额外的平台

💡 详细配置教程见 配置详解 - 平台配置

RSS 订阅源支持(v4.5.0 新增)

支持 RSS/Atom 订阅源抓取,按关键词分组统计(与热榜格式一致):

  • 统一格式:RSS 与热榜使用相同的关键词匹配和显示格式
  • 简单配置:直接在 config.yaml 中添加 RSS 源
  • 合并推送:热榜和 RSS 合并为一条消息推送
  • 新鲜度过滤:自动过滤超过指定天数的旧文章,避免重复推送。支持全局默认天数和单源独立设置

💡 RSS 使用与热榜相同的 frequency_words.txt 进行关键词过滤

可视化配置编辑器

提供基于 Web 的图形化配置界面,无需手动编辑 YAML 文件,通过表单即可完成所有配置项的修改与导出。

👉 在线体验:https://sansan0.github.io/TrendRadar/

可视化配置编辑器

智能推送策略

三种推送模式:

模式 适用场景 推送特点
当日汇总 (daily) 企业管理者/普通用户 按时推送当日所有匹配新闻(会包含之前推送过的)
当前榜单 (current) 自媒体人/内容创作者 按时推送当前榜单匹配新闻(持续在榜的每次都出现)
增量监控 (incremental) 投资者/交易员 仅推送新增内容,零重复

💡 快速选择指南:

  • 不想看到重复新闻 → 用 incremental(增量监控)
  • 想看完整榜单趋势 → 用 current(当前榜单)
  • 需要每日汇总报告 → 用 daily(当日汇总)

详细对比和配置教程见 配置详解 - 推送模式详解

附加功能(可选):

功能 说明 默认
调度系统 按周一到周日逐日编排:为每天分配不同时间段、推送模式和 AI 分析策略。每个时段可独立设置筛选方式(关键词/AI)和关注方向,实现不同时间看不同类型新闻。内置 5 种预设(always_on / morning_evening / office_hours / night_owl / custom),也可自定义。支持工作日/周末差异化、跨午夜时段、per-period 去重、时段冲突检测(v6.0.0 + v6.5.0) morning_evening
内容顺序配置 通过 display.region_order 调整各区域(热榜、新增热点、RSS、独立展示区、AI 分析)的显示顺序;通过 display.regions 控制各区域是否显示(v5.2.0) 见配置文件
显示模式切换 keyword=按关键词分组,platform=按平台分组(v4.6.0 新增) keyword

💡 详细配置教程见 推送内容怎么显示? 和 什么时候给我推送?

精准内容筛选

设置个人关键词(如:AI、比亚迪、教育政策),只推送相关热点,过滤无关信息

💡 基础配置教程:关键词配置 - 基础语法

💡 高级配置教程:关键词配置 - 高级配置

💡 也可以不做筛选,完整推送所有热点(将 frequency_words.txt 留空)

AI 智能筛选新闻(v6.5.0 新增)

用自然语言描述你的兴趣,AI 自动分类新闻,替代传统关键词匹配

  • 自然语言兴趣描述:在 ai_interests.txt 中用日常语言写下关注方向,无需学习关键词语法
  • 两阶段智能处理:AI 先从兴趣描述提取结构化标签,再对新闻按标签批量分类打分
  • 分数阈值控制:通过 ai_filter.min_score 精确控制推送质量,只推送高相关度新闻
  • 自动回退保障:AI 筛选失败时自动回退到关键词匹配,确保推送不中断
  • 智能标签更新:兴趣变更时 AI 自动评估变化幅度,决定增量或全量重分类
  • 灵活切换:filter.method 支持 keyword(默认)和 ai 两种模式,Timeline 可按时段覆盖
  • 分时段个性化:不同时间段可以使用不同的关键词文件或 AI 兴趣描述。例如早上用"科技词库"快速过滤,晚上换成"金融兴趣"做 AI 深度筛选
# config.yaml 快速启用示例
filter:
  method: ai          # keyword(默认)| ai
ai_filter:
  min_score: 6         # 推送最低分数阈值(1-10)

💡 AI 筛选与 AI 分析/翻译共享模型配置,只需配置一次 ai.api_key

热点趋势分析

实时追踪新闻热度变化,让你不仅知道"什么在热搜",更了解"热点如何演变"

  • 时间轴追踪:记录每条新闻从首次出现到最后出现的完整时间跨度
  • 热度变化:统计新闻在不同时间段的排名变化和出现频次
  • 新增检测:实时识别新出现的热点话题,用🆕标记第一时间提醒
  • 持续性分析:区分一次性热点话题和持续发酵的深度新闻
  • 跨平台对比:同一新闻在不同平台的排名表现,看出媒体关注度差异

💡 推送格式说明见 消息样式说明

个性化热点算法

不再被各个平台的算法牵着走,TrendRadar 会重新整理全网热搜

💡 三个比例可以调整,详见 配置详解 - 热点权重调整

多渠道多账号推送

支持企业微信(+ 微信推送方案)、飞书、钉钉、Telegram、邮件、ntfy、Bark、Slack、通用 Webhook(可对接 Discord、IFTTT 等任意平台),消息直达手机和邮箱

💡 详细配置教程见 推送到多个群/设备

AI 多语言翻译(v5.2.0 新增)

将推送内容翻译为任意语言,打破语言壁垒,无论是阅读国内热点还是通过 RSS 订阅海外资讯,都能以母语轻松获取

  • 一键翻译:在 config.yaml 中设置 ai_translation.enabled: true 和目标语言即可
  • 多语言支持:支持 English、Korean、Japanese、French 等任意语言
  • 智能批量处理:自动批量翻译,减少 API 调用次数,节省成本
  • 自定义风格:通过 ai_translation_prompt.txt 自定义翻译风格和术语
  • 共享模型配置:与 AI 分析功能共用 ai 配置段的模型设置
# config.yaml 快速启用示例
ai_translation:
  enabled: true
  language: "English"  # 翻译目标语言

💡 翻译功能与 AI 分析功能共享模型配置,只需配置一次 ai.api_key 即可同时使用两个功能

RSS 源参考:以下是一些 RSS 订阅源合集,可按需选用

⚠️ 部分海外媒体内容可能涉及敏感话题,AI 模型可能拒绝翻译,建议根据实际需求筛选订阅源

HTML 报告浏览器增强(v6.6.0 新增)

在浏览器中打开推送的 HTML 报告,自动解锁增强体验(邮件客户端不受影响):

  • 宽屏模式:桌面端自动切换 1200px 宽屏布局,充分利用屏幕空间
  • Tab 快速切换:关键词分组和独立展区均支持 Tab 导航,告别长页面翻滚
  • 暗色模式:一键切换深色主题,自动记住偏好
  • 实时搜索:按 / 唤起搜索框,即时过滤新闻标题
  • 一键复制:悬停新闻序号即可复制标题和链接
  • 快捷键:W 宽屏、D 暗色、/ 搜索、? 查看所有快捷键

💡 所有增强功能基于渐进增强,邮件客户端仍显示原始 600px 布局,零回归

灵活存储架构(v4.0.0 重大更新)

多存储后端支持:

  • 远程云存储:GitHub Actions 环境默认,支持 S3 兼容协议(R2/OSS/COS 等),数据存储在云端,不污染仓库
  • 本地 SQLite 数据库:Docker/本地环境默认,数据完全可控
  • 自动后端选择:根据运行环境智能切换存储方式

💡 详细说明见 数据保存在哪里?

多端部署

  • GitHub Actions:定时自动爬取 + 远程云存储(需签到续期)
  • Docker 部署:支持多架构容器化运行,数据本地存储
  • 本地运行:Windows/Mac/Linux 直接运行

AI 分析推送(v5.0.0 新增)

使用 AI 大模型对推送内容进行深度分析,自动生成热点洞察报告

  • 智能分析:自动分析热点趋势、关键词热度、跨平台关联、潜在影响
  • 多提供商:基于 LiteLLM 统一接口,支持 100+ AI 提供商(DeepSeek、OpenAI、Gemini、Anthropic、本地 Ollama 等),还支持备用模型自动切换
  • 分析模式独立:AI 的分析范围可以和推送不同——推送只发新增消息(避免打扰),但 AI 可以分析当天全部新闻(看完整趋势)
  • 灵活推送:可选仅原始内容、仅 AI 分析、或两者都推送
  • 自定义提示词:通过 config/ai_analysis_prompt.txt 自定义分析角度

💡 详细配置教程见 让 AI 帮我分析热点

独立展示区(v5.0.0 新增)

为指定平台提供完整热榜展示,不受关键词过滤影响

  • 完整热榜:指定平台的热榜完整展示,适合想看完整排名的用户
  • RSS 独立展示:RSS 源内容可完整展示,不受关键词限制
  • AI 深度分析:可独立开启 AI 对完整热榜的趋势分析,无需在推送中展示
  • 灵活配置:支持配置展示平台、RSS 源、最大条数

💡 详细配置教程见 推送内容怎么显示? - 独立展示区

AI 智能分析(v3.0.0 新增)

基于 MCP (Model Context Protocol) 协议的 AI 对话分析系统,让你用自然语言深度挖掘新闻数据

💡 使用提示:AI 功能需要本地新闻数据支持

  • 项目自带测试数据,可立即体验功能
  • 建议自行部署运行项目,获取更实时的数据

详见 AI 智能分析

网页部署

运行后根目录生成 index.html,即为完整的新闻报告页面。

部署方式:点击 Use this template 创建仓库,可部署到 Cloudflare Pages 或 GitHub Pages 等静态托管平台。

💡 提示:启用 GitHub Pages 可获得在线访问地址,进入仓库 Settings → Pages 即可开启。效果预览

⚠️ 原 GitHub Actions 自动存储功能已下线(该方案曾导致 GitHub 服务器负载过高,影响平台稳定性)。

☁️ 自动部署到 Cloudflare Pages(可选 · 国内访问更快)

GitHub Pages 在国内访问较慢,Cloudflare Pages 的访问速度更友好。配置完成后,GitHub Actions 每次运行都会自动把最新的 index.html 推送到 Cloudflare Pages,无需任何手动操作。

前置条件:已完成 GitHub Actions 部署 并能正常生成网页报告。

① 创建 Cloudflare Pages 项目

登录 Cloudflare Dashboard → Workers & Pages → Create → Pages → 选择 Upload assets(直接上传),填写一个项目名称(例如 trendradar,请记住它),随意上传一个文件完成首次创建(后续会被 Actions 自动覆盖)。

② 获取 API Token 与 Account ID

  • API Token:右上角头像 → My Profile → API Tokens → Create Token → Create Custom Token,权限选择 Account → Cloudflare Pages → Edit,创建后复制 Token(仅显示一次)。
  • Account ID:在 Workers & Pages 页面右侧栏即可找到(或任意域名 Overview 页面右下角)。

③ 在 GitHub 仓库添加 3 个 Secrets

进入仓库 Settings → Secrets and variables → Actions → New repository secret,依次添加:

Name(名称) Secret(值)
CLOUDFLARE_API_TOKEN 上一步创建的 API Token
CLOUDFLARE_ACCOUNT_ID 你的 Cloudflare Account ID
CLOUDFLARE_PROJECT_NAME Cloudflare Pages 项目名(如 trendradar)

配置完成后,下一次 GitHub Actions 运行即会自动部署,访问地址为 https://<项目名>.pages.dev。

💡 说明:三个 Secret 缺任意一个都会自动跳过 Cloudflare 部署,不会影响新闻推送等其它功能;如需绑定自定义域名,可在 Pages 项目的 Custom domains 中设置。

减少 APP 依赖

从"被算法推荐绑架"变成"主动获取自己想要的信息"

适合人群: 投资者、自媒体人、企业公关、关心时事的普通用户

典型场景: 股市投资监控、品牌舆情追踪、行业动态关注、生活资讯获取

网页效果(邮箱推送效果) 飞书推送效果 AI 分析推送效果
网页效果 飞书推送效果 AI分析推送效果

🚀 快速开始

提醒:建议先 查看最新官方文档,确保配置步骤是最新的。

请选择适合你的部署方式

Ⓐ 方案一:Docker 部署(推荐 🔥)
  • 特点:比 GitHub Actions 更稳定,数据本地存储(无需配置云存储)
  • 适用:有自己的服务器、NAS 或长期运行的电脑
  • 注意:你需要阅读了解下方的基础配置流程,然后跳转到 Docker 教程进行部署。
Ⓑ 方案二:GitHub Actions 部署(本章节内容 ⬇️)
  • 特点:无服务器,数据存储在 远程云存储(推荐配置)
  • 适用:没有服务器的用户,利用 GitHub 免费资源
  • 注意:需配置云存储以获得完整体验,且需定期签到续期

Ⓒ 方案三:本地部署(uv)
  • 特点:直接在本机运行,无需 Docker,适合开发调试或无 Docker 环境的用户

  • 适用:Windows / Mac / Linux 用户(无需预装 Python,uv 会自动管理)

  • 步骤:

    1. 安装 uv(如已安装可跳过,无需预装 Python)

    # macOS / Linux
    curl -LsSf https://as
    

    (README truncated)

View on GitHub

Recent activity

commits and pull requests

Code frequency

additions and deletions
+104.7K-104.7KWeek of 2025-10-05: +457 linesWeek of 2025-10-05: -102 linesWeek of 2025-10-12: +68 linesWeek of 2025-10-12: -17 linesWeek of 2025-10-19: +7,032 linesWeek of 2025-10-19: -166 linesWeek of 2025-10-26: +959 linesWeek of 2025-10-26: -278 linesWeek of 2025-11-02: +230 linesWeek of 2025-11-02: -426 linesWeek of 2025-11-09: +395 linesWeek of 2025-11-09: -90 linesWeek of 2025-11-16: +6,286 linesWeek of 2025-11-16: -3,378 linesWeek of 2025-11-23: +2,794 linesWeek of 2025-11-23: -407 linesWeek of 2025-11-30: +2,800 linesWeek of 2025-11-30: -607 linesWeek of 2025-12-07: +104,689 linesWeek of 2025-12-07: -6,033 linesWeek of 2025-12-14: +1,144 linesWeek of 2025-12-14: -927 linesWeek of 2025-12-21: +2,332 linesWeek of 2025-12-21: -1,062 linesWeek of 2025-12-28: +7,427 linesWeek of 2025-12-28: -92,775 linesWeek of 2026-01-04: +4,862 linesWeek of 2026-01-04: -1,922 linesWeek of 2026-01-11: +4,409 linesWeek of 2026-01-11: -4,663 linesWeek of 2026-01-18: +1,209 linesWeek of 2026-01-18: -638 linesWeek of 2026-01-25: +4,717 linesWeek of 2026-01-25: -74 linesWeek of 2026-02-01: +1,239 linesWeek of 2026-02-01: -94 linesWeek of 2026-02-08: +6,291 linesWeek of 2026-02-08: -1,418 linesWeek of 2026-02-15: +0 linesWeek of 2026-02-15: -0 linesWeek of 2026-02-22: +0 linesWeek of 2026-02-22: -0 linesWeek of 2026-03-01: +12 linesWeek of 2026-03-01: -77 linesWeek of 2026-03-08: +4,429 linesWeek of 2026-03-08: -537 linesWeek of 2026-03-15: +6 linesWeek of 2026-03-15: -0 linesWeek of 2026-03-22: +4,292 linesWeek of 2026-03-22: -1,554 linesWeek of 2026-03-29: +0 linesWeek of 2026-03-29: -0 linesWeek of 2026-04-05: +135 linesWeek of 2026-04-05: -165 linesWeek of 2026-04-12: +138 linesWeek of 2026-04-12: -33 linesWeek of 2026-04-19: +8 linesWeek of 2026-04-19: -8 linesWeek of 2026-04-26: +18 linesWeek of 2026-04-26: -16 linesWeek of 2026-05-03: +0 linesWeek of 2026-05-03: -0 linesWeek of 2026-05-10: +307 linesWeek of 2026-05-10: -87 linesWeek of 2026-05-17: +1,257 linesWeek of 2026-05-17: -850 linesWeek of 2026-05-24: +42 linesWeek of 2026-05-24: -41 linesWeek of 2026-05-31: +148 linesWeek of 2026-05-31: -33 linesWeek of 2026-06-07: +183 linesWeek of 2026-06-07: -256 linesWeek of 2026-06-14: +1,466 linesWeek of 2026-06-14: -1,372 linesWeek of 2026-06-21: +197 linesWeek of 2026-06-21: -30 linesWeek of 2026-06-28: +15 linesWeek of 2026-06-28: -17 linesWeek of 2026-07-05: +2,492 linesWeek of 2026-07-05: -482 linesWeek of 2026-07-12: +6 linesWeek of 2026-07-12: -6 linesWeek of 2026-07-19: +0 linesWeek of 2026-07-19: -0 linesWeek of 2026-07-26: +0 linesWeek of 2026-07-26: -0 linesWeek of 2026-08-02: +0 linesWeek of 2026-08-02: -0 linesWeek of 2026-08-09: +0 linesWeek of 2026-08-09: -0 linesWeek of 2026-08-16: +0 linesWeek of 2026-08-16: -0 linesWeek of 2026-08-23: +0 linesWeek of 2026-08-23: -0 linesWeek of 2026-08-30: +12 linesWeek of 2026-08-30: -8 linesWeek of 2026-09-06: +0 linesWeek of 2026-09-06: -0 linesWeek of 2026-09-13: +2 linesWeek of 2026-09-13: -2 linesWeek of 2026-09-20: +0 linesWeek of 2026-09-20: -0 linesWeek of 2026-09-27: +0 linesWeek of 2026-09-27: -0 linesOct 5, 2025Sep 27, 2026
+174.5K lines added, -120.7K removed over the last year.

Commits per week

last 52 weeks
130Week of 2025-09-28: 4 commitsWeek of 2025-10-05: 6 commitsWeek of 2025-10-12: 3 commitsWeek of 2025-10-19: 7 commitsWeek of 2025-10-26: 10 commitsWeek of 2025-11-02: 3 commitsWeek of 2025-11-09: 7 commitsWeek of 2025-11-16: 10 commitsWeek of 2025-11-23: 10 commitsWeek of 2025-11-30: 5 commitsWeek of 2025-12-07: 4 commitsWeek of 2025-12-14: 8 commitsWeek of 2025-12-21: 4 commitsWeek of 2025-12-28: 3 commitsWeek of 2026-01-04: 2 commitsWeek of 2026-01-11: 4 commitsWeek of 2026-01-18: 4 commitsWeek of 2026-01-25: 5 commitsWeek of 2026-02-01: 2 commitsWeek of 2026-02-08: 1 commitsWeek of 2026-02-15: 0 commitsWeek of 2026-02-22: 0 commitsWeek of 2026-03-01: 1 commitsWeek of 2026-03-08: 1 commitsWeek of 2026-03-15: 1 commitsWeek of 2026-03-22: 13 commitsWeek of 2026-03-29: 0 commitsWeek of 2026-04-05: 2 commitsWeek of 2026-04-12: 1 commitsWeek of 2026-04-19: 1 commitsWeek of 2026-04-26: 1 commitsWeek of 2026-05-03: 0 commitsWeek of 2026-05-10: 1 commitsWeek of 2026-05-17: 4 commitsWeek of 2026-05-24: 1 commitsWeek of 2026-05-31: 2 commitsWeek of 2026-06-07: 2 commitsWeek of 2026-06-14: 1 commitsWeek of 2026-06-21: 1 commitsWeek of 2026-06-28: 2 commitsWeek of 2026-07-05: 1 commitsWeek of 2026-07-12: 1 commitsWeek of 2026-07-19: 0 commitsWeek of 2026-07-26: 0 commitsWeek of 2026-08-02: 0 commitsWeek of 2026-08-09: 0 commitsWeek of 2026-08-16: 0 commitsWeek of 2026-08-23: 0 commitsWeek of 2026-08-30: 1 commitsWeek of 2026-09-06: 0 commitsWeek of 2026-09-13: 1 commitsWeek of 2026-09-20: 0 commitsSep 28, 2025Sep 20, 2026
141 commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 0 commitsSun 1:00 — 0 commitsSun 2:00 — 0 commitsSun 3:00 — 0 commitsSun 4:00 — 0 commitsSun 5:00 — 0 commitsSun 6:00 — 0 commitsSun 7:00 — 4 commitsSun 8:00 — 2 commitsSun 9:00 — 2 commitsSun 10:00 — 1 commitsSun 11:00 — 1 commitsSun 12:00 — 3 commitsSun 13:00 — 4 commitsSun 14:00 — 2 commitsSun 15:00 — 1 commitsSun 16:00 — 2 commitsSun 17:00 — 1 commitsSun 18:00 — 0 commitsSun 19:00 — 0 commitsSun 20:00 — 2 commitsSun 21:00 — 0 commitsSun 22:00 — 0 commitsSun 23:00 — 0 commitsMon 0:00 — 0 commitsMon 1:00 — 0 commitsMon 2:00 — 0 commitsMon 3:00 — 0 commitsMon 4:00 — 0 commitsMon 5:00 — 0 commitsMon 6:00 — 0 commitsMon 7:00 — 2 commitsMon 8:00 — 0 commitsMon 9:00 — 1 commitsMon 10:00 — 0 commitsMon 11:00 — 0 commitsMon 12:00 — 1 commitsMon 13:00 — 7 commitsMon 14:00 — 1 commitsMon 15:00 — 0 commitsMon 16:00 — 2 commitsMon 17:00 — 0 commitsMon 18:00 — 0 commitsMon 19:00 — 23 commitsMon 20:00 — 1 commitsMon 21:00 — 5 commitsMon 22:00 — 1 commitsMon 23:00 — 0 commitsTue 0:00 — 0 commitsTue 1:00 — 0 commitsTue 2:00 — 0 commitsTue 3:00 — 0 commitsTue 4:00 — 0 commitsTue 5:00 — 0 commitsTue 6:00 — 0 commitsTue 7:00 — 2 commitsTue 8:00 — 0 commitsTue 9:00 — 1 commitsTue 10:00 — 0 commitsTue 11:00 — 2 commitsTue 12:00 — 0 commitsTue 13:00 — 5 commitsTue 14:00 — 1 commitsTue 15:00 — 0 commitsTue 16:00 — 0 commitsTue 17:00 — 1 commitsTue 18:00 — 0 commitsTue 19:00 — 8 commitsTue 20:00 — 2 commitsTue 21:00 — 1 commitsTue 22:00 — 0 commitsTue 23:00 — 0 commitsWed 0:00 — 0 commitsWed 1:00 — 0 commitsWed 2:00 — 0 commitsWed 3:00 — 0 commitsWed 4:00 — 0 commitsWed 5:00 — 0 commitsWed 6:00 — 1 commitsWed 7:00 — 2 commitsWed 8:00 — 1 commitsWed 9:00 — 0 commitsWed 10:00 — 0 commitsWed 11:00 — 1 commitsWed 12:00 — 4 commitsWed 13:00 — 2 commitsWed 14:00 — 0 commitsWed 15:00 — 1 commitsWed 16:00 — 1 commitsWed 17:00 — 1 commitsWed 18:00 — 0 commitsWed 19:00 — 19 commitsWed 20:00 — 2 commitsWed 21:00 — 6 commitsWed 22:00 — 2 commitsWed 23:00 — 0 commitsThu 0:00 — 0 commitsThu 1:00 — 0 commitsThu 2:00 — 0 commitsThu 3:00 — 0 commitsThu 4:00 — 0 commitsThu 5:00 — 0 commitsThu 6:00 — 0 commitsThu 7:00 — 1 commitsThu 8:00 — 0 commitsThu 9:00 — 0 commitsThu 10:00 — 1 commitsThu 11:00 — 0 commitsThu 12:00 — 2 commitsThu 13:00 — 8 commitsThu 14:00 — 4 commitsThu 15:00 — 1 commitsThu 16:00 — 0 commitsThu 17:00 — 0 commitsThu 18:00 — 0 commitsThu 19:00 — 12 commitsThu 20:00 — 7 commitsThu 21:00 — 3 commitsThu 22:00 — 0 commitsThu 23:00 — 0 commitsFri 0:00 — 0 commitsFri 1:00 — 0 commitsFri 2:00 — 0 commitsFri 3:00 — 0 commitsFri 4:00 — 0 commitsFri 5:00 — 0 commitsFri 6:00 — 0 commitsFri 7:00 — 1 commitsFri 8:00 — 0 commitsFri 9:00 — 3 commitsFri 10:00 — 1 commitsFri 11:00 — 0 commitsFri 12:00 — 0 commitsFri 13:00 — 6 commitsFri 14:00 — 0 commitsFri 15:00 — 1 commitsFri 16:00 — 1 commitsFri 17:00 — 2 commitsFri 18:00 — 2 commitsFri 19:00 — 6 commitsFri 20:00 — 7 commitsFri 21:00 — 5 commitsFri 22:00 — 0 commitsFri 23:00 — 0 commitsSat 0:00 — 0 commitsSat 1:00 — 0 commitsSat 2:00 — 0 commitsSat 3:00 — 0 commitsSat 4:00 — 0 commitsSat 5:00 — 0 commitsSat 6:00 — 0 commitsSat 7:00 — 0 commitsSat 8:00 — 3 commitsSat 9:00 — 5 commitsSat 10:00 — 3 commitsSat 11:00 — 1 commitsSat 12:00 — 1 commitsSat 13:00 — 2 commitsSat 14:00 — 1 commitsSat 15:00 — 2 commitsSat 16:00 — 1 commitsSat 17:00 — 6 commitsSat 18:00 — 0 commitsSat 19:00 — 4 commitsSat 20:00 — 5 commitsSat 21:00 — 3 commitsSat 22:00 — 1 commitsSat 23:00 — 0 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.

Who is committing

last 52 weeks
Maintainer commits139 (99%)
Community commits2 (1%)

141 commits in total over the last year.

DateListRankStars gained
Apr 22, 2026daily#19+105
Apr 20, 2026daily#25+92
  • public-apis/public-apis

    A collective list of free APIs

    486.1K stars · Python

  • openclaw/openclaw

    The AI that really does things. Any OS. Any Platform. The lobster way. 🦞

    391.3K stars · TypeScript

  • donnemartin/system-design-primer

    Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards.

    373.2K stars · Python

  • obra/superpowers

    An agentic skills framework & software development methodology that works.

    295.3K stars · Shell

  • practical-tutorials/project-based-learning

    Curated list of project-based tutorials

    285.8K stars · Python

  • affaan-m/ECC

    The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

    272.9K stars · JavaScript