[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-93":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":9,"totalLinesOfCode":9,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":9,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":9,"rankLanguage":9,"license":9,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":22,"hasPages":22,"topics":24,"createdAt":9,"pushedAt":9,"updatedAt":41,"readmeContent":42,"aiSummary":43,"trendingCount":16,"starSnapshotCount":16,"syncStatus":44,"lastSyncTime":45,"discoverSource":46},93,"TrendRadar","sansan0\u002FTrendRadar","sansan0","⭐AI-driven public opinion & trend monitor with multi-platform aggregation, RSS, and smart alerts.🎯 告别信息过载，你的 AI 舆情监控助手与热点筛选工具！聚合多平台热点 +  RSS 订阅，支持关键词精准筛选。AI 智能筛选新闻 + AI 翻译 +  AI 分析简报直推手机，也支持接入 MCP 架构，赋能 AI 自然语言对话分析、情感洞察与趋势预测等。支持 Docker ，数据本地\u002F云端自持。集成微信\u002F飞书\u002F钉钉\u002FTelegram\u002F邮件\u002Fntfy\u002Fbark\u002Fslack 等渠道智能推送。",null,"https:\u002F\u002Fgithub.com\u002Fsansan0\u002FTrendRadar","Python",59315,24633,208,28,0,43,435,1974,233,45,false,"main",[25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40],"data-analysis","python","trending-topics","news","hot-news","docker","ntfy","mail","mcp","mcp-server","wechat","wework","bark","rss","ai","llm","2026-06-12 02:00:07","\u003Cdiv align=\"center\" id=\"trendradar\">\n\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fsansan0\u002FTrendRadar\" title=\"TrendRadar\">\n  \u003Cimg src=\"\u002F_image\u002Fbanner.webp\" alt=\"TrendRadar Banner\" width=\"80%\">\n\u003C\u002Fa>\n\n最快\u003Cstrong>30秒\u003C\u002Fstrong>部署的热点助手 —— 告别无效刷屏，只看真正关心的新闻资讯\n\n\u003Ca href=\"https:\u002F\u002Ftrendshift.io\u002Frepositories\u002F14726\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Ftrendshift.io\u002Fapi\u002Fbadge\u002Frepositories\u002F14726\" alt=\"sansan0%2FTrendRadar | Trendshift\" style=\"width: 250px; height: 55px;\" width=\"250\" height=\"55\"\u002F>\u003C\u002Fa>\n\n\n[![GitHub Stars](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Fsansan0\u002FTrendRadar?style=flat-square&logo=github&color=yellow)](https:\u002F\u002Fgithub.com\u002Fsansan0\u002FTrendRadar\u002Fstargazers)\n[![GitHub Forks](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fforks\u002Fsansan0\u002FTrendRadar?style=flat-square&logo=github&color=blue)](https:\u002F\u002Fgithub.com\u002Fsansan0\u002FTrendRadar\u002Fnetwork\u002Fmembers)\n[![License](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-GPL--3.0-blue.svg?style=flat-square)](LICENSE)\n[![Version](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fversion-v6.6.2-blue.svg)](https:\u002F\u002Fgithub.com\u002Fsansan0\u002FTrendRadar)\n[![MCP](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FMCP-v4.0.2-green.svg)](https:\u002F\u002Fgithub.com\u002Fsansan0\u002FTrendRadar)\n[![RSS](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FRSS-订阅源支持-orange.svg?style=flat-square&logo=rss&logoColor=white)](https:\u002F\u002Fgithub.com\u002Fsansan0\u002FTrendRadar)\n[![AI翻译](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FAI-多语言推送-purple.svg?style=flat-square)](https:\u002F\u002Fgithub.com\u002Fsansan0\u002FTrendRadar)\n\n[![企业微信通知](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F企业微信-通知-00D4AA?style=flat-square)](https:\u002F\u002Fwork.weixin.qq.com\u002F)\n[![个人微信通知](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F个人微信-通知-00D4AA?style=flat-square)](https:\u002F\u002Fweixin.qq.com\u002F)\n[![Telegram通知](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FTelegram-通知-00D4AA?style=flat-square)](https:\u002F\u002Ftelegram.org\u002F)\n[![dingtalk通知](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F钉钉-通知-00D4AA?style=flat-square)](#)\n[![飞书通知](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F飞书-通知-00D4AA?style=flat-square)](https:\u002F\u002Fwww.feishu.cn\u002F)\n[![邮件通知](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FEmail-通知-00D4AA?style=flat-square)](#)\n[![ntfy通知](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fntfy-通知-00D4AA?style=flat-square)](https:\u002F\u002Fgithub.com\u002Fbinwiederhier\u002Fntfy)\n[![Bark通知](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FBark-通知-00D4AA?style=flat-square)](https:\u002F\u002Fgithub.com\u002FFinb\u002FBark)\n[![Slack通知](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FSlack-通知-00D4AA?style=flat-square)](https:\u002F\u002Fslack.com\u002F)\n[![通用Webhook](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F通用-Webhook-607D8B?style=flat-square&logo=webhook&logoColor=white)](#)\n\n\n[![GitHub Actions](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FGitHub_Actions-自动化-2088FF?style=flat-square&logo=github-actions&logoColor=white)](https:\u002F\u002Fgithub.com\u002Fsansan0\u002FTrendRadar)\n[![GitHub Pages](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FGitHub_Pages-部署-4285F4?style=flat-square&logo=github&logoColor=white)](https:\u002F\u002Fsansan0.github.io\u002FTrendRadar)\n[![Docker](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDocker-部署-2496ED?style=flat-square&logo=docker&logoColor=white)](https:\u002F\u002Fhub.docker.com\u002Fr\u002Fwantcat\u002Ftrendradar)\n[![MCP Support](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FMCP-AI分析支持-FF6B6B?style=flat-square&logo=ai&logoColor=white)](https:\u002F\u002Fmodelcontextprotocol.io\u002F)\n[![AI分析推送](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FAI-分析推送-FF6B6B?style=flat-square&logo=openai&logoColor=white)](#)\n[![AI智能筛选](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FAI-智能筛选新闻-9B59B6?style=flat-square&logo=openai&logoColor=white)](#)\n\n\u003C\u002Fdiv>\n\n\u003Cdiv align=\"center\">\n\n**中文** | **[English](README-EN.md)**\n\n\u003C\u002Fdiv>\n\n> 本项目以轻量，易部署为目标\n\n\u003Cbr>\n\n## 📑 快速导航\n\n> 💡 **点击下方链接**可快速跳转到对应章节。部署推荐从「**快速开始**」入手，需要详细自定义请看「**配置详解**」\n\n\u003Cdiv align=\"center\">\n\n|   |   |   |\n|:---:|:---:|:---:|\n| [🚀 **快速开始**](#-快速开始) | [AI 智能分析](#-ai-智能分析) | [⚙️ **配置详解**](#配置详解) |\n| [Docker部署](#6-docker-部署) | [MCP客户端](#-mcp-客户端) | [📝 **更新日志**](#-更新日志) |\n| [🎯 **核心功能**](#-核心功能) | [☕ **支持项目**](#-支持项目) | [📚 **项目相关**](#-项目相关) |\n\n\u003C\u002Fdiv>\n\n\u003Cbr>\n\n- 感谢**为项目点 star** 的观众们，**fork** 你所欲也，**star** 我所欲也，两者得兼😍是对开源精神最好的支持\n\n\u003Cdetails>\n\u003Csummary>👉 点击展开：\u003Cstrong>致谢名单\u003C\u002Fstrong> (天使轮荣誉榜 🔥73+🔥 位)\u003C\u002Fsummary>\n\n### 早期支持者致谢\n\n> 💡 **特别说明**：\n>\n> 1. **关于名单**：下方表格记录了项目起步阶段（天使轮）的支持者。因早期人工统计繁琐，**难免存在疏漏或记录不全的情况，如有遗漏，实非本意，万望海涵**。\n> 2. **未来规划**：为了将有限的精力回归代码与功能迭代，**即日起不再人工维护此名单**。\n>\n> 无论名字是否上榜，你们的每一份支持都是 TrendRadar 能够走到今天的基石。🙏\n\n### 基础设施支持\n\n感谢 **GitHub** 免费提供的基础设施，这是本项目得以**一键 fork**便捷运行的最大前提。\n\n### 数据支持\n\n本项目使用 [newsnow](https:\u002F\u002Fgithub.com\u002Fourongxing\u002Fnewsnow) 项目的 API 获取多平台数据，特别感谢作者提供的服务。\n\n经联系，作者表示无需担心服务器压力，但这是基于他的善意和信任。请大家：\n- **前往 [newsnow 项目](https:\u002F\u002Fgithub.com\u002Fourongxing\u002Fnewsnow) 点 star 支持**\n- Docker 部署时，请合理控制推送频率，勿竭泽而渔\n\n### 推广助力\n\n> 感谢以下平台和个人的推荐(按时间排列)\n\n- [小众软件](https:\u002F\u002Fmp.weixin.qq.com\u002Fs\u002FfvutkJ_NPUelSW9OGK39aA) - 开源软件推荐平台\n- [LinuxDo 社区](https:\u002F\u002Flinux.do\u002F) - 技术爱好者的聚集地\n- [阮一峰周刊](https:\u002F\u002Fgithub.com\u002Fruanyf\u002Fweekly) - 技术圈有影响力的周刊\n\n### 观众支持\n\n> 感谢**给予资金支持**的朋友们，你们的慷慨已化身为键盘旁的零食饮料，陪伴着项目的每一次迭代。\n>\n> **关于\"一元点赞\"的回归**：\n> 随着 v5.0.0 版本的发布，项目迈入了一个新的阶段。为了支持日益增长的 API 成本和咖啡因消耗，\"一元点赞\"通道现已重新开启。你的每一份心意，都将转化为代码世界里的 Token 和动力。🚀 [前往支持](#-支持项目)\n\n|           点赞人            |  金额  |  日期  |             备注             |\n| :-------------------------: | :----: | :----: | :-----------------------: |\n|           D*5          |  1.8 * 3 | 2025.11.24  |    | \n|           *鬼          |  1 | 2025.11.17  |    | \n|           *超          |  10 | 2025.11.17  |    | \n|           R*w          |  10 | 2025.11.17  | 这 agent 做的牛逼啊,兄弟    | \n|           J*o          |  1 | 2025.11.17  | 感谢开源,祝大佬事业有成    | \n|           *晨          |  8.88  | 2025.11.16  | 项目不错,研究学习中    | \n|           *海          |  1  | 2025.11.15  |    | \n|           *德          |  1.99  | 2025.11.15  |    | \n|           *疏          |  8.8  | 2025.11.14  |  感谢开源，项目很棒，支持一下   | \n|           M*e          |  10  | 2025.11.14  |  开源不易，大佬辛苦了   | \n|           **柯          |  1  | 2025.11.14  |     | \n|           *云          |  88  | 2025.11.13  |    好项目，感谢开源  | \n|           *W          |  6  | 2025.11.13  |      | \n|           *凯          |  1  | 2025.11.13  |      | \n|           对*.          |  1  | 2025.11.13  |    Thanks for your TrendRadar  | \n|           s*y          |  1  | 2025.11.13  |      | \n|           **翔          |  10  | 2025.11.13  |   好项目，相见恨晚，感谢开源！     | \n|           *韦          |  9.9  | 2025.11.13  |   TrendRadar超赞，请老师喝咖啡~     | \n|           h*p          |  5  | 2025.11.12  |   支持中国开源力量，加油！     | \n|           c*r          |  6  | 2025.11.12  |        | \n|           a*n          |  5  | 2025.11.12  |        | \n|           。*c          |  1  | 2025.11.12  |    感谢开源分享    | \n|           *记          |  1  | 2025.11.11  |        | \n|           *主          |  1  | 2025.11.10  |        | \n|           *了          |  10  | 2025.11.09  |        | \n|           *杰          |  5  | 2025.11.08  |        | \n|           *点          |  8.80  | 2025.11.07  |   开发不易，支持一下。     | \n|           Q*Q          |  6.66  | 2025.11.07  |   感谢开源！     | \n|           C*e          |  1  | 2025.11.05  |        | \n|           Peter Fan          |  20  | 2025.10.29  |        | \n|           M*n          |  1  | 2025.10.27  |      感谢开源  | \n|           *许          |  8.88  | 2025.10.23  |      老师 小白一枚，摸了几天了还没整起来，求教  | \n|           Eason           |  1  | 2025.10.22  |      还没整明白，但你在做好事  | \n|           P*n           |  1  | 2025.10.20  |          |\n|           *杰           |  1  | 2025.10.19  |          |\n|           *徐           |  1  | 2025.10.18  |          |\n|           *志           |  1  | 2025.10.17  |          |\n|           *😀           |  10  | 2025.10.16  |     点赞     |\n|           **杰           |  10  | 2025.10.16  |          |\n|           *啸           |  10  | 2025.10.16  |          |\n|           *纪           |  5  | 2025.10.14  | TrendRadar         |\n|           J*d           |  1  | 2025.10.14  | 谢谢你的工具，很好玩...          |\n|           *H           |  1  | 2025.10.14  |           |\n|           那*O           |  10  | 2025.10.13  |           |\n|           *圆           |  1  | 2025.10.13  |           |\n|           P*g           |  6  | 2025.10.13  |           |\n|           Ocean           |  20  | 2025.10.12  |  ...真的太棒了！！！小白级别也能直接用...         |\n|           **培           |  5.2  | 2025.10.2  |  github-yzyf1312:开源万岁         |\n|           *椿           |  3  | 2025.9.23  |  加油，很不错         |\n|           *🍍           |  10  | 2025.9.21  |           |\n|           E*f           |  1  | 2025.9.20  |           |\n|           *记            |  1  | 2025.9.20  |           |\n|           z*u            |  2  | 2025.9.19  |           |\n|           **昊            |  5  | 2025.9.17  |           |\n|           *号            |  1  | 2025.9.15  |           |\n|           T*T            |  2  | 2025.9.15  |  点赞         |\n|           *家            |  10  | 2025.9.10  |           |\n|           *X            |  1.11  | 2025.9.3  |           |\n|           *飙            |  20  | 2025.8.31  |  来自老童谢谢         |\n|           *下            |  1  | 2025.8.30  |           |\n|           2*D            |  88  | 2025.8.13 下午 |           |\n|           2*D            |  1  | 2025.8.13 上午 |           |\n|           S*o            |  1  | 2025.8.05 |   支持一下        |\n|           *侠            |  10  | 2025.8.04 |           |\n|           x*x            |  2  | 2025.8.03 |  trendRadar 好项目 点赞          |\n|           *远            |  1  | 2025.8.01 |            |\n|           *邪            |  5  | 2025.8.01 |            |\n|           *梦            |  0.1  | 2025.7.30 |            |\n|           **龙            |  10  | 2025.7.29 |      支持一下      |\n\n\n\u003C\u002Fdetails>\n\n\u003Cbr>\n\n## 🪄 赞助商\n\n\u003Cdiv align=\"center\">\n\n> **虚位以待**\n\n\u003C\u002Fdiv>\n\n\u003Cbr>\n\n\u003Ca name=\"-支持项目\">\u003C\u002Fa>\n\n### ❤️ 觉得好用？支持一下\n\n> 若 TrendRadar 曾为你捕捉价值，不妨为它注入动力，助其持续进化\n>\n> 金额随意，1 元也是对开源的鼓励。欢迎在赞赏时备注留言 (´▽`ʃ♡ƪ)\n\n\u003Cdiv align=\"center\">\n\n| 微信赞赏 | 支付宝赞赏 |\n|:---:|:---:|\n| \u003Cimg src=\"https:\u002F\u002Fcdn-1258574687.cos.ap-shanghai.myqcloud.com\u002Fimg\u002F%2F2025%2F07%2F17%2F2ae0a88d98079f7e876c2b4dc85233c6-9e8025.JPG\" width=\"240\" alt=\"微信赞赏\"> | \u003Cimg src=\"https:\u002F\u002Fcdn-1258574687.cos.ap-shanghai.myqcloud.com\u002Fimg\u002F%2F2025%2F07%2F17%2F1ed4f20ab8e35be51f8e84c94e6e239b4-fe4947.JPG\" width=\"240\" alt=\"支付宝赞赏\"> |\n\n\u003C\u002Fdiv>\n\n\n### 🤝 二次开发与引用\n\n如果你在项目中使用或借鉴了本项目的思路、核心代码，**非常欢迎**在 README 或文档中注明来源并附上本仓库链接。\n\n这将有助于项目的持续维护和社区发展，感谢你的尊重与支持！❤️\n\n\n### 💬 交流与反馈\n\n- **GitHub Issues**：适合具体的技术问题。提问时请提供完整信息（截图、错误日志等），有助于快速定位。\n- **公众号交流**：建议优先在相关文章下的留言区交流。若需后台提问，**先点赞\u002F推荐**文章是最好的\"敲门砖\"，我在后台都能感受到这份心意哟 (´▽`ʃ♡ƪ)。\n- **QQ 群交流**：关注公众号，回复「**交流群**」即可加入。无论你是 AI 小白还是硬核开发者，想求助技术问题还是分享折腾心得，这里都欢迎你。群里主打互助交流和灵感碰撞，入群请先看群公告；提问时描述清楚问题、附上截图，群友有空就会帮忙，大家的实战经验往往比我一个人更快更全面 🤝\n\n> **友情提示**：\n> 本项目为开源分享，非商业产品。把作者当朋友而非客服，沟通效率会更高哦！\n\n\u003Cdiv align=\"center\">\n\n|公众号关注 |\n|:---:|\n| \u003Cimg src=\"_image\u002Fweixin.png\" width=\"500\" title=\"硅基茶水间\"\u002F> |\n\n\u003C\u002Fdiv>\n\n\u003Cbr>\n\n## 📝 更新日志\n\n> **📌 查看最新更新**：**[原仓库更新日志](https:\u002F\u002Fgithub.com\u002Fsansan0\u002FTrendRadar?tab=readme-ov-file#-更新日志)** ：\n- **提示**：建议查看【历史更新】，明确具体的【功能内容】\n\n\n### 2026\u002F03\u002F28 - v6.6.0\n\n- **HTML 报告浏览器增强**：在浏览器中打开报告可自动切换宽屏布局，关键词分组和独立展区均支持 Tab 快速切换，搜索框实时过滤新闻标题，邮件客户端仍显示原始窄屏布局，零回归\n- **暗色模式**：一键切换深色主题，自动记住偏好，适合夜间阅读\n- **一键复制新闻**：鼠标悬停新闻序号即可复制标题和链接，方便快速分享\n- **导出优化**：整页截图和分段截图合并为下拉式导出按钮，截图时自动还原干净布局\n- **快捷键系统**：支持 `W` 宽屏切换、`D` 暗色模式、`\u002F` 搜索、`?` 查看快捷键提示\n- **阅读进度条**：页面顶部实时显示阅读进度\n\n### 2026\u002F02\u002F09 - mcp-v4.0.0\n\n- **🔥 AI 消息直推所有渠道**：让 AI 写好的内容一键推送到飞书、钉钉、Telegram、邮件等 9 个渠道，Markdown 自动适配各平台格式，不用操心格式差异\n- **新增格式化策略指南**：新增 `get_channel_format_guide` 工具，告诉 AI 每个渠道支持什么格式、有什么限制，生成的内容排版更好看\n- **智能分批发送**：超长消息自动按各渠道字节限制拆分（飞书 30KB、钉钉 20KB 等），配置读取自 config.yaml\n- **修复渠道误检测**：ntfy 不再因为默认地址被误报为\"已配置\"\n- **代码复用优化**：批次处理函数直接复用 trendradar 核心模块，不重复造轮子\n\n\n\u003Cdetails>\n\u003Csummary>👉 点击展开：\u003Cstrong>历史更新\u003C\u002Fstrong>\u003C\u002Fsummary>\n\n### 2026\u002F03\u002F12 - v6.5.0\n\n- **AI 智能筛选系统**：不用再手动设关键词！在 `ai_interests.txt` 里用日常语言写下你关注的方向（如\"我想看 AI 和新能源相关新闻\"），AI 会自动提取标签并对每条新闻打分，只推送真正和你相关的内容。万一 AI 筛选出了问题，会自动切回关键词匹配，推送不中断\n- **每个时段支持不同的筛选方式和关注方向**：Timeline 中的每个时间段现在可以独立设置用什么方式筛选、看什么类型的新闻。比如：早上用\"科技关键词\"快速过滤，晚上换成\"金融 AI 兴趣描述\"做深度筛选——同一个系统，不同时段看不同内容\n- **AI 分析范围独立于推送**：AI 分析的数据范围可以和推送内容不同。比如推送只发新增消息（避免重复打扰），但 AI 分析当天全部新闻（看完整趋势）。每个时段也能单独设置 AI 分析模式\n- **AI 筛选智能省钱**：已分析过的新闻不会重复消耗 token；兴趣描述修改后，AI 自动判断变化幅度——小改动只更新受影响的标签，大改动才全量重新分类\n- **多文件配置与标签隔离**：自定义关键词文件放 `config\u002Fcustom\u002Fkeyword\u002F`，AI 兴趣文件放 `config\u002Fcustom\u002Fai\u002F`，不同文件产生的标签各自独立、互不干扰\n- **AI 翻译精准控制**：可分别控制热榜、RSS、独立展示区是否翻译，没开启显示的区域自动跳过，不浪费 token\n- **远程存储批量上传**：多次写操作攒在一起统一提交云端，减少 API 调用次数\n- **每组关键词\u002F标签展示数量限制**：通过 `max_news_per_keyword` 控制每个分组最多显示多少条新闻，避免单个热门话题占满整条推送\n- **时段冲突智能检测**：两个时间段如果有时间重叠，系统会自动报错提醒修改，避免配置冲突导致意外行为\n- 修复若干bug\n\n### 2026\u002F02\u002F09 - v6.0.0\n\n> **Breaking Change**：配置文件升级（config.yaml 2.0.0），旧版 `push_window` 和 `analysis_window` 配置不再兼容，请参考新版 config.yaml 迁移\n\n- **统一调度系统**：新增 `timeline.yaml`，用一套配置控制「什么时间采集 \u002F 推送 \u002F AI 分析」\n- **5 种预设模板**：`always_on`（全天候，默认）、`morning_evening`（早晚汇总）、`office_hours`（办公时间）、`night_owl`（夜猫子）、`custom`（自定义）；也支持在 `presets:` 下新增自己的模板，只要 key 不重复，然后在 config.yaml 里填你的模板名即可\n- **灵活的时间段配置**：支持工作日\u002F周末差异化、跨午夜时间段、per-period once 去重\n- **可视化配置编辑器**：\n  - 新增 `timeline.yaml` 编辑标签页，与 config.yaml \u002F frequency_words.txt 并列\n  - 预设模式卡片选择：点击即切换，自动同步 config.yaml 的 `schedule.preset`\n  - 周视图时间线：7 天 × 24 小时水平条，用颜色区分推送\u002F分析\u002F采集状态\n  - 可交互控件：开关、下拉框、时间选择器，右侧修改实时同步到左侧 YAML\n  - 周映射下拉选择：根据日计划动态填充，拖拉点击即可完成调度配置\n- **AI 提示词稳定性优化**（ai_analysis_prompt.txt v2.0.0）：\n  - 格式规范独立说明：将换行\u002F标签\u002F序号\u002F禁止事项从 JSON value 中抽出，作为独立章节\n  - JSON 模板简化：字段描述缩短为一句话 + 字数限制，减少 AI 输出格式混乱\n  - 去除 system prompt 中的 Markdown 格式，与\"禁止 Markdown\"指令保持一致\n  - 所有 JSON 字段声明为可选，缺少任何字段不会报错，增强容错性\n- **新增独立展示区 AI 概括分析**（`ai_analysis.include_standalone`）：\n  - 新增独立开关，开启后 AI 对每个 standalone 源生成核心概括\n  - AI 分析与推送展示解耦：无需开启独立展示区的推送显示，AI 也可独立分析完整热榜数据\n  - 支持热榜平台和 RSS 源，含排名\u002F时间\u002F轨迹数据\n  - 轨迹分析与 `include_rank_timeline` 联动：开启时利用轨迹数据做深度趋势分析，关闭时基于排名做简要判断\n  - 新增 `standalone_summaries` JSON 字段（独立源点速览），所有推送渠道均已适配渲染\n\n\n### 2026\u002F01\u002F28 - v5.5.0\n\n> 和 mcp 功能一样, 这个小工具我也不新开一个仓库维护了, 反正纯前端, 都搁一起吧\n\n- 增加 trendradar 的可视化配置编辑器\n\n\n### 2026\u002F02\u002F02 - mcp-v3.2.0\n\n- **新增 read_article 工具**：通过 Jina AI Reader 读取单篇文章正文（Markdown 格式）\n- **新增 read_articles_batch 工具**：批量读取多篇文章（最多 5 篇，自动限速）\n- **推荐工作流**：`search_news(query=\"关键词\", include_url=True)` → `read_article(url=...)` 读取正文\n- **文档更新**：README-MCP-FAQ.md 和 README-MCP-FAQ-EN.md 新增 Q19-Q20 文章读取相关说明\n\n\n### 2026\u002F01\u002F10 - mcp-v3.0.0~v3.1.5\n\n- **Breaking Change**：所有工具返回值统一为 `{success, summary, data, error}` 结构\n- **异步一致性**：所有 21 个工具函数使用 `asyncio.to_thread()` 包装同步调用\n- **MCP Resources**：新增 4 个资源（platforms、rss-feeds、available-dates、keywords）\n- **RSS 增强**：`get_latest_rss` 支持多日查询（days 参数），跨日期 URL 去重\n- **正则匹配修复**：`get_trending_topics` 支持 `\u002Fpattern\u002F` 正则语法和 `display_name`\n- **缓存优化**：新增 `make_cache_key()` 函数，参数排序+MD5 哈希确保一致性\n- **新增 check_version 工具**：支持同时检查 TrendRadar 和 MCP Server 版本更新\n\n\n### 2026\u002F01\u002F23 - v5.4.0\n\n- 增加 AI 分析模式的独立控制功能，可选 follow_report | daily | current | incremental \n- 新增 AI 分析时间窗口控制，支持自定义运行段及每日频次限制\n- 增加配置文件版本管理功能\n- 修复若干bug\n\n\n### 2026\u002F01\u002F19 - v5.3.0\n\n> **重大重构：AI 模块迁移至 LiteLLM**\n\n- **统一 AI 接口**：使用 LiteLLM 替代手动实现，支持 100+ AI 提供商\n- **简化配置**：移除 `provider` 字段，改用 `model: \"provider\u002Fmodel_name\"` 格式\n- **新增功能**：自动重试 (`num_retries`)、备用模型 (`fallback_models`)\n- **配置变更**：\n  - `ai.provider` → 移除（已合并到 model）\n  - `ai.base_url` → `ai.api_base`\n  - `AI_PROVIDER` 环境变量 → 移除\n  - `AI_BASE_URL` 环境变量 → `AI_API_BASE`\n- **模型格式示例**：\n  - DeepSeek: `deepseek\u002Fdeepseek-chat`\n  - OpenAI: `openai\u002Fgpt-4o`\n  - Gemini: `gemini\u002Fgemini-2.5-flash`\n  - Anthropic: `anthropic\u002Fclaude-3-5-sonnet`\n\n### 2026\u002F01\u002F17 - v5.2.0\n\n> 主要见 config.yaml 描述\n\n**🌐 AI 翻译功能**\n\n- **多语言翻译**：支持将推送内容翻译为任意语言\n- **批量翻译**：智能批量处理，减少 API 调用次数\n- **自定义提示词**：支持自定义翻译风格\n\n**🔧 配置架构优化**\n\n- **AI 模型配置独立**：分析和翻译共享模型配置\n- **区域开关统一**：统一管理推送区域显示\n- **区域排序自定义**：支持自定义各区域的显示顺序\n\n**✨ AI 分析增强**\n\n- **AI 分析嵌入 HTML**：分析结果直接嵌入 HTML 报告，邮件通知直接使用\n- **富样式 AI 区块**：渐变蓝色背景卡片式布局，清晰分隔各分析维度\n- **排名时间线支持**：AI 可获取每条新闻在每个抓取时间点的精确排名\n- **板块重组 (7→4)**：整合为核心热点态势、舆论风向争议、异动与弱信号、研判策略建议\n\n**🔧 多模型适配**\n\n- **通用参数透传**：支持向 API 透传任意高级参数\n- **Gemini 适配**：原生参数支持，内置安全策略放宽\n\n**🐛 Bug 修复**\n\n- 修复若干已知问题，提升系统稳定性\n\n### 2026\u002F01\u002F10 - v5.0.0\n\n> **开发小插曲**：\n> 致敬那个陪伴我两年多、却在刚续费后反手弹出 `\"This organization has been disabled\"` 的某 C 厂模型\n\n**✨ 推送内容\"五大板块\"重构**\n\n本次更新对推送消息进行了区域化重构，现在推送内容清晰地划分为五大核心板块：\n\n1.  **📊 热榜新闻**：根据你的关键词精准筛选后的全网热点聚合。\n2.  **📰 RSS 订阅**：你的个性化订阅源内容，支持按关键词分组。\n3.  **🆕 本次新增**：实时捕捉自上次运行以来的全新热点（带 🆕 标记）。\n4.  **📋 独立展示区**：指定平台的完整热榜或 RSS 源展示，**完全不受关键词过滤限制**。\n5.  **✨ AI 分析板块**：由 AI 驱动的深度洞察，包含趋势概述、热度走势及**极其重要**的情感倾向分析。\n\n**✨ AI 智能分析推送功能**\n\n- **AI 分析集成**：使用 AI 大模型对推送内容进行深度分析，自动生成热点趋势概述、关键词热度分析、跨平台关联、潜在影响评估等\n- **情感倾向分析**：新增深度情感识别，精准捕捉舆论的正负面、争议或担忧情绪\n- **多 AI 提供商支持**：支持 DeepSeek（默认，性价比高）、OpenAI、Google Gemini 及任意 OpenAI 兼容接口\n- **两种推送模式**：`only_analysis`（仅 AI 分析）、`both`（两者都推送）\n- **自定义提示词**：通过 `config\u002Fai_analysis_prompt.txt` 文件自定义 AI 分析角色和输出格式\n- **多维度数据分析**：AI 可分析排名变化、热度持续时间、跨平台表现、趋势预测等\n\n**📋 独立展示区功能**\n\n- **完整热榜展示**：指定平台的完整热榜单独展示，不受关键词过滤影响\n- **RSS 独立展示**：RSS 源内容可完整展示，适合内容较少的订阅源\n- **灵活配置**：支持配置展示平台列表、RSS 源列表、最大展示条数\n\n**📊 推送体验重构**\n\n- **排版升级**：重新设计并统一各渠道统计头部，强化区块组织，消息层次一目了然\n- **配置简化**：优化飞书等通知渠道的配置逻辑，上手更简单\n- **热度趋势箭头**：新增 🔺(上升)、🔻(下降)、➖(持平) 趋势标识，直观展示热度变化\n- **通用 Webhook**：支持自定义 Webhook URL 和 JSON 模板，轻松适配 Discord、Matrix、IFTTT 等任意平台\n\n**🔧 配置优化**\n\n- **频率词配置增强**：新增 `[组别名]` 语法，支持 `#` 注释行，配置更清晰（感谢 [@songge8](https:\u002F\u002Fgithub.com\u002Fsansan0\u002FTrendRadar\u002Fissues\u002F752) 提出的建议）\n- **环境变量支持**：AI 分析相关配置支持环境变量覆盖（`AI_API_KEY`、`AI_PROVIDER` 等）\n\n> 💡 详细配置教程见 [让 AI 帮我分析热点](#12-让-ai-帮我分析热点)\n\n\n### 2026\u002F01\u002F02 - v4.7.0\n\n- **修复 RSS HTML 显示**：修复 RSS 数据格式不匹配导致的渲染问题，现在按关键词分组正确显示\n- **新增正则表达式语法**：关键词配置支持 `\u002Fpattern\u002F` 正则语法，解决英文子字符串误匹配问题（如 `ai` 匹配 `training`）[📖 查看语法详解](#关键词基础语法)\n- **新增显示名称语法**：使用 `=> 备注` 给复杂的正则表达式起个好记的名字，推送消息显示更清晰（如 `\u002F\\bai\\b\u002F => AI相关`）\n- **不会写正则？** README 新增 AI 生成正则的引导，告诉 ChatGPT\u002FGemini\u002FDeepSeek 你想匹配什么，让 AI 帮你写\n\n\n### 2025\u002F12\u002F30 - mcp-v2.0.0\n\n- **架构调整**：移除 TXT 支持，统一使用 SQLite 数据库\n- **RSS 查询**：新增 `get_latest_rss`、`search_rss`、`get_rss_feeds_status`\n- **统一搜索**：`search_news` 支持 `include_rss` 参数同时搜索热榜和 RSS\n\n\n### 2026\u002F01\u002F01 - v4.6.0\n\n- **修复 RSS HTML 显示**：将 RSS 内容合并到热榜 HTML 页面，按源分组显示\n- **新增 display_mode 配置**：支持 `keyword`（按关键词分组）和 `platform`（按平台分组）两种显示模式\n\n\n### 2025\u002F12\u002F30 - v4.5.0\n\n- **RSS 订阅源支持**：新增 RSS\u002FAtom 抓取，按关键词分组统计（与热榜格式一致）\n- **存储结构重构**：扁平化目录结构 `output\u002F{type}\u002F{date}.db`\n- **统一排序配置**：`sort_by_position_first` 同时影响热榜和 RSS\n- **配置结构重构**：`config.yaml` 重新组织为 7 个逻辑分组（app、report、notification、storage、platforms、rss、advanced），配置路径更清晰\n\n\n### 2025\u002F12\u002F26 - mcp-v1.2.0\n\n  **MCP 模块更新 - 优化工具集，新增聚合对比功能，合并冗余工具:**\n  - 新增 `aggregate_news` 工具 - 跨平台新闻去重聚合\n  - 新增 `compare_periods` 工具 - 时期对比分析（周环比\u002F月环比）\n  - 合并 `find_similar_news` + `search_related_news_history` → `find_related_news`\n  - 增强 `get_trending_topics` - 新增 `auto_extract` 模式自动提取热点\n  - 修复若干bug\n  - 同步更新 README-MCP-FAQ.md 文档的中英文版 (Q1-Q18)\n\n\n### 2025\u002F12\u002F20 - v4.0.3\n\n- 新增 URL 标准化功能，解决微博等平台因动态参数（如 `band_rank`）导致的重复推送问题\n- 修复增量模式检测逻辑，正确识别历史标题\n\n\n### 2025\u002F12\u002F17 - v4.0.1\n\n- StorageManager 添加推送记录代理方法\n- S3 客户端切换至 virtual-hosted style 以提升兼容性（支持腾讯云 COS 等更多服务）\n\n\n### 2025\u002F12\u002F13 - mcp-v1.1.0\n\n  **MCP 模块更新:**\n  - 适配 v4.0.0，同时也兼容 v3.x 的数据\n  - 新增存储同步工具：`sync_from_remote`、`get_storage_status`、`list_available_dates`\n\n\n### 2025\u002F12\u002F13 - v4.0.0\n\n**🎉 重大更新：全面重构存储和核心架构**\n\n- **多存储后端支持**：引入全新的存储模块，支持本地 SQLite 和远程云存储（S3 兼容协议，例如 Cloudflare R2），适应 GitHub Actions、Docker 和本地环境。\n- **数据库结构优化**：重构 SQLite 数据库表结构，提升数据效率和查询能力。\n- **核心代码模块化**：将主程序逻辑拆分为 trendradar 包的多个模块，显著提升代码可维护性。\n- **增强功能**：实现日期格式标准化、数据保留策略、时区配置支持、时间显示优化，并修复远程存储数据持久化问题，确保数据合并的准确性。\n- **清理和兼容**：移除了大部分历史兼容代码，统一了数据存储和读取方式。\n\n\n### 2025\u002F12\u002F03 - v3.5.0\n\n**🎉 核心功能增强**\n\n1. **多账号推送支持**\n   - 所有推送渠道（飞书、钉钉、企业微信、Telegram、ntfy、Bark、Slack）支持多账号配置\n   - 使用分号 `;` 分隔多个账号，例如：`FEISHU_WEBHOOK_URL=url1;url2`\n   - 自动验证配对配置（如 Telegram 的 token 和 chat_id）数量一致性\n\n2. **推送区域配置**\n   - 通过 `display.region_order` 自定义各区域的显示顺序（v5.2.0 替代原 `reverse_content_order`）\n   - 通过 `display.regions` 控制各区域是否显示（热榜、新增热点、RSS、独立展示区、AI 分析）\n\n3. **全局过滤关键词**\n   - 新增 `[GLOBAL_FILTER]` 区域标记，支持全局过滤不想看到的内容\n   - 适用场景：过滤广告、营销、低质内容等\n\n**🐳 Docker 双路径 HTML 生成优化**\n\n- **问题修复**：解决 Docker 环境下 `index.html` 无法同步到宿主机的问题\n- **双路径生成**：当日汇总 HTML 同时生成到两个位置\n  - `index.html`（项目根目录）：供 GitHub Pages 访问\n  - `output\u002Findex.html`：通过 Docker Volume 挂载，宿主机可直接访问\n- **兼容性**：确保 Docker、GitHub Actions、本地运行环境均能正常访问网页版报告\n\n**🐳 Docker MCP 镜像支持**\n\n- 新增独立的 MCP 服务镜像 `wantcat\u002Ftrendradar-mcp`\n- 支持 Docker 部署 AI 分析功能，通过 HTTP 接口（端口 3333）提供服务\n- 双容器架构：新闻推送服务与 MCP 服务独立运行，可分别扩展和重启\n- 详见 [Docker 部署 - MCP 服务](#6-docker-部署)\n\n**🌐 Web 服务器支持**\n\n- 新增内置 Web 服务器，支持通过浏览器访问生成的报告\n- 通过 `manage.py` 命令控制启动\u002F停止：`docker exec -it trendradar python manage.py start_webserver`\n- 访问地址：`http:\u002F\u002Flocalhost:8080`（端口可配置）\n- 安全特性：静态文件服务、目录限制、本地访问\n- 支持自动启动和手动控制两种模式\n\n**📖 文档优化**\n\n- 新增 [推送内容怎么显示？](#7-推送内容怎么显示) 章节：自定义推送样式和内容\n- 新增 [什么时候给我推送？](#8-什么时候给我推送) 章节：设置推送时间段\n- 新增 [多久运行一次？](#9-多久运行一次) 章节：设置自动运行频率\n- 新增 [推送到多个群\u002F设备](#10-推送到多个群设备) 章节：同时推送给多个接收者\n- 优化各配置章节：统一添加\"配置位置\"说明\n- 简化快速开始配置说明：三个核心文件一目了然\n- 优化 [Docker 部署](#6-docker-部署) 章节：新增镜像说明、推荐 git clone 部署、重组部署方式\n\n**🔧 升级说明**：\n- **GitHub Fork 用户**：更新 `main.py`、`config\u002Fconfig.yaml`（新增多账号推送支持，无需修改现有配置）\n- **多账号推送**：新功能，默认不启用，现有单账号配置不受影响\n\n\n### 2025\u002F11\u002F26 - mcp-v1.0.3\n\n  **MCP 模块更新:**\n  - 新增日期解析工具 resolve_date_range,解决 AI 模型计算日期不一致的问题\n  - 支持自然语言日期表达式解析(本周、最近7天、上月等)\n  - 工具总数从 13 个增加到 14 个\n\n\n### 2025\u002F11\u002F28 - v3.4.1\n\n**🔧 格式优化**\n\n1. **Bark 推送增强**\n   - Bark 现支持 Markdown 渲染\n   - 启用原生 Markdown 格式：粗体、链接、列表、代码块等\n   - 移除纯文本转换，充分利用 Bark 原生渲染能力\n\n2. **Slack 格式精准化**\n   - 使用专用 mrkdwn 格式处理分批内容\n   - 提升字节大小估算准确性（避免消息超限）\n   - 优化链接格式：`\u003Curl|text>` 和加粗语法：`*text*`\n\n3. **性能提升**\n   - 格式转换在分批过程中完成，避免二次处理\n   - 准确估算消息大小，减少发送失败率\n\n**🔧 升级说明**：\n- **GitHub Fork 用户**：更新 `main.py`，`config.yaml`\n\n\n### 2025\u002F11\u002F25 - v3.4.0\n\n**🎉 新增 Slack 推送支持**\n\n1. **团队协作推送渠道**\n   - 支持 Slack Incoming Webhooks（全球流行的团队协作工具）\n   - 消息集中管理，适合团队共享热点资讯\n   - 支持 mrkdwn 格式（粗体、链接等）\n\n2. **多种部署方式**\n   - GitHub Actions：配置 `SLACK_WEBHOOK_URL` Secret\n   - Docker：环境变量 `SLACK_WEBHOOK_URL`\n   - 本地运行：`config\u002Fconfig.yaml` 配置文件\n\n\n> 📖 **详细配置教程**：[快速开始 - Slack 推送](#-快速开始)\n\n- 优化 setup-windows.bat 和 setup-windows-en.bat 一键安装 MCP 的体验\n\n**🔧 升级说明**：\n- **GitHub Fork 用户**：更新 `main.py`、`config\u002Fconfig.yaml`、`.github\u002Fworkflows\u002Fcrawler.yml`\n\n\n### 2025\u002F11\u002F24 - v3.3.0\n\n**🎉 新增 Bark 推送支持**\n\n1. **iOS 专属推送渠道**\n   - 支持 Bark 推送（基于 APNs，iOS 平台）\n   - 免费开源，简洁高效，无广告干扰\n   - 支持官方服务器和自建服务器两种方式\n\n2. **多种部署方式**\n   - GitHub Actions：配置 `BARK_URL` Secret\n   - Docker：环境变量 `BARK_URL`\n   - 本地运行：`config\u002Fconfig.yaml` 配置文件\n\n> 📖 **详细配置教程**：[快速开始 - Bark 推送](#-快速开始)\n\n**🐛 Bug 修复**\n- 修复 `config.yaml` 中 `ntfy_server_url` 配置不生效的问题 ([#345](https:\u002F\u002Fgithub.com\u002Fsansan0\u002FTrendRadar\u002Fissues\u002F345))\n\n**🔧 升级说明**：\n- **GitHub Fork 用户**：更新 `main.py`、`config\u002Fconfig.yaml`、`.github\u002Fworkflows\u002Fcrawler.yml`\n\n### 2025\u002F11\u002F23 - v3.2.0\n\n**🎯 新增高级定制功能**\n\n1. **关键词排序优先级配置**\n   - 支持两种排序策略：热度优先 vs 配置顺序优先\n   - 满足不同使用场景：热点追踪 or 个性化关注\n\n2. **显示数量精准控制**\n   - 全局配置：统一限制所有关键词显示数量\n   - 单独配置：使用 `@数字` 语法为特定关键词设置限制\n   - 有效控制推送长度，突出重点内容\n\n> 📖 **详细配置教程**：[关键词配置 - 高级配置](#关键词高级配置)\n\n**🔧 升级说明**：\n- **GitHub Fork 用户**：更新 `main.py`、`config\u002Fconfig.yaml`\n\n\n### 2025\u002F11\u002F18 - mcp-v1.0.2\n\n  **MCP 模块更新:**\n  - 优化查询今日新闻却可能错误返回过去日期的情况\n\n\n### 2025\u002F11\u002F22 - v3.1.1\n\n- **修复数据异常导致的崩溃问题**：解决部分用户在 GitHub Actions 环境中遇到的 `'float' object has no attribute 'lower'` 错误\n- 新增双重防护机制：在数据获取阶段过滤无效标题（None、float、空字符串），同时在函数调用处添加类型检查\n- 提升系统稳定性，确保在数据源返回异常格式时仍能正常运行\n\n**升级说明**（GitHub Fork 用户）：\n- 必须更新：`main.py`\n- 建议使用小版本升级方式：复制替换上述文件\n\n\n### 2025\u002F11\u002F20 - v3.1.0\n\n- **新增个人微信推送支持**：企业微信应用可推送到个人微信，无需安装企业微信 APP\n- 支持两种消息格式：`markdown`（企业微信群机器人）和 `text`（个人微信应用）\n- 新增 `WEWORK_MSG_TYPE` 环境变量配置，支持 GitHub Actions、Docker、docker compose 等多种部署方式\n- `text` 模式自动清除 Markdown 语法，提供纯文本推送效果\n- 详见快速开始中的「个人微信推送」配置说明\n\n**升级说明**（GitHub Fork 用户）：\n- 必须更新：`main.py`、`config\u002Fconfig.yaml`\n- 可选更新：`.github\u002Fworkflows\u002Fcrawler.yml`（如使用 GitHub Actions 部署）\n- 建议使用小版本升级方式：复制替换上述文件\n\n### 2025\u002F11\u002F12 - v3.0.5\n\n- 修复邮件发送 SSL\u002FTLS 端口配置逻辑错误\n- 优化邮箱服务商（QQ\u002F163\u002F126）默认使用 465 端口（SSL）\n- **新增 Docker 环境变量支持**：核心配置项（`enable_crawler`、`report_mode`、`push_window` 等）支持通过环境变量覆盖，解决 NAS 用户修改配置文件不生效的问题（详见 [🐳 Docker 部署](#-docker-部署) 章节）\n\n\n### 2025\u002F10\u002F26 - mcp-v1.0.1\n\n  **MCP 模块更新:**\n  - 修复日期查询参数传递错误\n  - 统一所有工具的时间参数格式\n\n\n### 2025\u002F10\u002F31 - v3.0.4\n\n- 解决飞书因推送内容过长而产生的错误，实现了分批推送\n\n\n### 2025\u002F10\u002F23 - v3.0.3\n\n- 扩大 ntfy 错误信息显示范围\n\n\n### 2025\u002F10\u002F21 - v3.0.2\n\n- 修复 ntfy 推送编码问题\n\n### 2025\u002F10\u002F20 - v3.0.0\n\n**重大更新 - AI 分析功能上线** ✨\n\n- **核心功能**：\n  - 新增基于 MCP (Model Context Protocol) 的 AI 分析服务器\n  - 支持17种智能分析工具：基础查询、智能检索、高级分析、RSS 查询、系统管理\n  - 自然语言交互：通过对话方式查询和分析新闻数据\n  - 多客户端支持：Claude Desktop、Cherry Studio、Cursor、Cline 等\n\n- **分析能力**：\n  - 话题趋势分析（热度追踪、生命周期、爆火检测、趋势预测）\n  - 数据洞察（平台对比、活跃度统计、关键词共现）\n  - 情感分析、相似新闻查找、智能摘要生成\n  - 历史相关新闻检索、多模式搜索\n\n- **更新提示**：\n  - 这是独立的 AI 分析功能，不影响现有的推送功能\n  - 可选择性使用，无需升级现有部署\n\n\n### 2025\u002F10\u002F15 - v2.4.4\n\n- **更新内容**：\n    - 修复 ntfy 推送编码问题 + 1\n    - 修复推送时间窗口判断问题\n\n- **更新提示**：\n  - 建议【小版本升级】\n\n\n### 2025\u002F10\u002F10 - v2.4.3\n\n> 感谢 [nidaye996](https:\u002F\u002Fgithub.com\u002Fsansan0\u002FTrendRadar\u002Fissues\u002F98) 发现的体验问题\n\n- **更新内容**：\n    - 重构\"静默推送模式\"命名为\"推送时间窗口控制\"，提升功能理解度\n    - 明确推送时间窗口作为可选附加功能，可与三种推送模式搭配使用\n    - 改进注释和文档描述，使功能定位更加清晰\n\n- **更新提示**：\n  - 这个仅仅是重构，可以不用升级\n\n\n### 2025\u002F10\u002F8 - v2.4.2\n\n- **更新内容**：\n    - 修复 ntfy 推送编码问题\n    - 修复配置文件缺失问题\n    - 优化 ntfy 推送效果\n    - 增加 github page 图片分段导出功能\n\n- **更新提示**：\n  - 建议使用【大版本更新】\n\n\n### 2025\u002F10\u002F2 - v2.4.0\n\n**新增 ntfy 推送通知**\n\n- **核心功能**：\n  - 支持 ntfy.sh 公共服务和自托管服务器\n\n- **使用场景**：\n  - 适合追求隐私的用户（支持自托管）\n  - 跨平台推送（iOS、Android、Desktop、Web）\n  - 无需注册账号（公共服务器）\n  - 开源免费（MIT 协议）\n\n- **更新提示**：\n  - 建议使用【大版本更新】\n\n\n### 2025\u002F09\u002F26 - v2.3.2\n\n- 修正了邮件通知配置检查被遗漏的问题（[#88](https:\u002F\u002Fgithub.com\u002Fsansan0\u002FTrendRadar\u002Fissues\u002F88)）\n\n**修复说明**：\n- 解决了即使正确配置邮件通知，系统仍提示\"未配置任何webhook\"的问题\n\n### 2025\u002F09\u002F22 - v2.3.1\n\n- **新增邮件推送功能**，支持将热点新闻报告发送到邮箱\n- **智能 SMTP 识别**：自动识别 Gmail、QQ邮箱、Outlook、网易邮箱等 10+ 种邮箱服务商配置\n- **HTML 精美格式**：邮件内容采用与网页版相同的 HTML 格式，排版精美，移动端适配\n- **批量发送支持**：支持多个收件人，用逗号分隔即可同时发送给多人\n- **自定义 SMTP**：可自定义 SMTP 服务器和端口\n- 修复Docker构建网络连接问题\n\n**使用说明**：\n- 适用场景：适合需要邮件归档、团队分享、定时报告的用户\n- 支持邮箱：Gmail、QQ邮箱、Outlook\u002FHotmail、163\u002F126邮箱、新浪邮箱、搜狐邮箱等\n\n**更新提示**：\n- 此次更新的内容比较多，如果想升级，建议采用【大版本升级】\n\n### 2025\u002F09\u002F17 - v2.2.0\n\n- 新增一键保存新闻图片功能，让你轻松分享关注的热点\n\n**使用说明**：\n- 适用场景：当你按照教程开启了网页版功能后(GitHub Pages)\n- 使用方法：用手机或电脑打开该网页链接，点击页面顶部的\"保存为图片\"按钮\n- 实际效果：系统会自动将当前的新闻报告制作成一张精美图片，保存到你的手机相册或电脑桌面\n- 分享便利：你可以直接把这张图片发给朋友、发到朋友圈，或分享到工作群，让别人也能看到你发现的重要资讯\n\n### 2025\u002F09\u002F13 - v2.1.2\n\n- 解决钉钉的推送容量限制导致的新闻推送失败问题(采用分批推送)\n\n### 2025\u002F09\u002F04 - v2.1.1\n\n- 修复docker在某些架构中无法正常运行的问题\n- 正式发布官方 Docker 镜像 wantcat\u002Ftrendradar，支持多架构\n- 优化 Docker 部署流程，无需本地构建即可快速使用\n\n### 2025\u002F08\u002F30 - v2.1.0\n\n**核心改进**：\n- **推送逻辑优化**：从\"每次执行都推送\"改为\"时间窗口内可控推送\"\n- **时间窗口控制**：可设定推送时间范围，避免非工作时间打扰\n- **推送频率可选**：时间段内支持单次推送或多次推送\n\n**更新提示**：\n- 本功能默认关闭，需手动在 config.yaml 中开启推送时间窗口控制\n- 升级需同时更新 main.py 和 config.yaml 两个文件\n\n### 2025\u002F08\u002F27 - v2.0.4\n\n- 本次版本不是功能修复，而是重要提醒\n- 请务必妥善保管好 webhooks，不要公开，不要公开，不要公开\n- 如果你以 fork 的方式将本项目部署在 GitHub 上，请将 webhooks 填入 GitHub Secret，而非 config.yaml\n- 如果你已经暴露了 webhooks 或将其填入了 config.yaml，建议删除后重新生成\n\n### 2025\u002F08\u002F06 - v2.0.3\n\n- 优化 github page 的网页版效果，方便移动端使用\n\n### 2025\u002F07\u002F28 - v2.0.2\n\n- 重构代码\n- 解决版本号容易被遗漏修改的问题\n\n### 2025\u002F07\u002F27 - v2.0.1\n\n**修复问题**: \n\n1. docker 的 shell 脚本的换行符为 CRLF 导致的执行异常问题\n2. frequency_words.txt 为空时，导致新闻发送也为空的逻辑问题\n  - 修复后，当你选择 frequency_words.txt 为空时，将**推送所有新闻**，但受限于消息推送大小限制，请做如下调整\n    - 方案一：关闭手机推送，只选择 Github Pages 布置(这是能获得最完整信息的方案，将把所有平台的热点按照你**自定义的热搜算法**进行重新排序)\n    - 方案二：减少推送平台，优先选择**企业微信**或**Telegram**，这两个推送我做了分批推送功能(因为分批推送影响推送体验，且只有这两个平台只给一点点推送容量，所以才不得已做了分批推送功能，但至少能保证获得的信息完整)\n    - 方案三：可与方案二结合，模式选择 current 或 incremental 可有效减少一次性推送的内容 \n\n### 2025\u002F07\u002F17 - v2.0.0\n\n**重大重构**：\n- 配置管理重构：所有配置现在通过 `config\u002Fconfig.yaml` 文件管理（main.py 我依旧没拆分，方便你们复制升级）\n- 运行模式升级：支持三种模式 - `daily`（当日汇总）、`current`（当前榜单）、`incremental`（增量监控）\n- Docker 支持：完整的 Docker 部署方案，支持容器化运行\n\n**配置文件说明**：\n- `config\u002Fconfig.yaml` - 主配置文件（应用设置、爬虫配置、通知配置、平台配置等）\n- `config\u002Ffrequency_words.txt` - 关键词配置（监控词汇设置）\n\n### 2025\u002F07\u002F09 - v1.4.1\n\n**功能新增**：增加增量推送(在 main.py 头部配置 FOCUS_NEW_ONLY)，该开关只关心新话题而非持续热度，只在有新内容时才发通知。\n\n**修复问题**: 某些情况下，由于新闻本身含有特殊符号导致的偶发性排版异常。\n\n### 2025\u002F06\u002F23 - v1.3.0\n\n企业微信 和 Telegram 的推送消息有长度限制，对此我采用将消息拆分推送的方式。开发文档详见[企业微信](https:\u002F\u002Fdeveloper.work.weixin.qq.com\u002Fdocument\u002Fpath\u002F91770) 和 [Telegram](https:\u002F\u002Fcore.telegram.org\u002Fbots\u002Fapi)\n\n### 2025\u002F06\u002F21 - v1.2.1\n\n在本版本之前的旧版本，不仅 main.py 需要复制替换， crawler.yml 也需要你复制替换\nhttps:\u002F\u002Fgithub.com\u002Fsansan0\u002FTrendRadar\u002Fblob\u002Fmaster\u002F.github\u002Fworkflows\u002Fcrawler.yml\n\n### 2025\u002F06\u002F19 - v1.2.0\n\n> 感谢 claude research 整理的各平台 api ,让我快速完成各平台适配（虽然代码更多冗余了~\n\n1. 支持 telegram ，企业微信，钉钉推送渠道, 支持多渠道配置和同时推送\n\n### 2025\u002F06\u002F18 - v1.1.0\n\n> **200 star⭐** 了, 继续给大伙儿助兴~近期，在我的\"怂恿\"下，挺多人在我公众号点赞分享推荐助力了我，我都在后台看见了具体账号的鼓励数据，很多都成了天使轮老粉（我玩公众号才一个多月，虽然注册是七八年前的事了哈哈，属于上车早，发车晚），但因为你们没有留言或私信我，所以我也无法一一回应并感谢支持，在此一并谢谢！\n\n1. 重要的更新，加了权重，你现在看到的新闻都是最热点最有关注度的出现在最上面\n2. 更新文档使用，因为近期更新了很多功能，而且之前的使用文档我偷懒写的简单（见下面的 ⚙️ frequency_words.txt 配置完整教程）\n\n### 2025\u002F06\u002F16 - v1.0.0\n\n1. 增加了一个项目新版本更新提示，默认打开，如要关掉，可以在 main.py 中把 \"FEISHU_SHOW_VERSION_UPDATE\": True 中的 True 改成 False 即可\n\n### 2025\u002F06\u002F13+14\n\n1. 去掉了兼容代码，之前 fork 的同学，直接复制代码会在当天显示异常（第二天会恢复正常）\n2. feishu 和 html 底部增加一个新增新闻显示\n\n### 2025\u002F06\u002F09\n\n**100 star⭐** 了，写个小功能给大伙儿助助兴\nfrequency_words.txt 文件增加了一个【必须词】功能，使用 + 号\n\n1. 必须词语法如下：  \n   唐僧或者猪八戒必须在标题里同时出现，才会收录到推送新闻中\n\n```\n+唐僧\n+猪八戒\n```\n\n2. 过滤词的优先级更高：  \n   如果标题中过滤词匹配到唐僧念经，那么即使必须词里有唐僧，也不显示\n\n```\n+唐僧\n!唐僧念经\n```\n\n### 2025\u002F06\u002F02\n\n1. **网页**和**飞书消息**支持手机直接跳转详情新闻\n2. 优化显示效果 + 1\n\n### 2025\u002F05\u002F26\n\n1. 飞书消息显示效果优化\n\n\u003Ctable>\n\u003Ctr>\n\u003Ctd align=\"center\">\n优化前\u003Cbr>\n\u003Cimg src=\"_image\u002Fbefore.jpg\" alt=\"飞书消息界面 - 优化前\" width=\"400\"\u002F>\n\u003C\u002Ftd>\n\u003Ctd align=\"center\">\n优化后\u003Cbr>\n\u003Cimg src=\"_image\u002Fafter.jpg\" alt=\"飞书消息界面 - 优化后\" width=\"400\"\u002F>\n\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftable>\n\n\u003C\u002Fdetails>\n\n\u003Cbr>\n\n## ✨ 核心功能\n\n### **全网热点聚合**\n\n- 知乎\n- 抖音\n- bilibili 热搜\n- 华尔街见闻\n- 贴吧\n- 百度热搜\n- 财联社热门\n- 澎湃新闻\n- 凤凰网\n- 今日头条\n- 微博\n\n默认监控 11 个主流平台，也可自行增加额外的平台\n\n> 💡 详细配置教程见 [配置详解 - 平台配置](#1-平台配置)\n\n### **RSS 订阅源支持**（v4.5.0 新增）\n\n支持 RSS\u002FAtom 订阅源抓取，按关键词分组统计（与热榜格式一致）：\n\n- **统一格式**：RSS 与热榜使用相同的关键词匹配和显示格式\n- **简单配置**：直接在 `config.yaml` 中添加 RSS 源\n- **合并推送**：热榜和 RSS 合并为一条消息推送\n- **新鲜度过滤**：自动过滤超过指定天数的旧文章，避免重复推送。支持全局默认天数和单源独立设置\n\n> 💡 RSS 使用与热榜相同的 `frequency_words.txt` 进行关键词过滤\n\n### **可视化配置编辑器**\n\n提供基于 Web 的图形化配置界面，无需手动编辑 YAML 文件，通过表单即可完成所有配置项的修改与导出。\n\n👉 **在线体验**：[https:\u002F\u002Fsansan0.github.io\u002FTrendRadar\u002F](https:\u002F\u002Fsansan0.github.io\u002FTrendRadar\u002F)\n\n\u003Cimg src=\"\u002F_image\u002Feditor.png\" alt=\"可视化配置编辑器\" width=\"80%\">\n\n### **智能推送策略**\n\n**三种推送模式**：\n\n| 模式 | 适用场景 | 推送特点 |\n|------|---------|---------|\n| **当日汇总** (daily) | 企业管理者\u002F普通用户 | 按时推送当日所有匹配新闻（会包含之前推送过的） |\n| **当前榜单** (current) | 自媒体人\u002F内容创作者 | 按时推送当前榜单匹配新闻（持续在榜的每次都出现） |\n| **增量监控** (incremental) | 投资者\u002F交易员 | 仅推送新增内容，零重复 |\n\n> 💡 **快速选择指南：**\n> - 不想看到重复新闻 → 用 `incremental`（增量监控）\n> - 想看完整榜单趋势 → 用 `current`（当前榜单）\n> - 需要每日汇总报告 → 用 `daily`（当日汇总）\n>\n> 详细对比和配置教程见 [配置详解 - 推送模式详解](#3-推送模式详解)\n\n**附加功能**（可选）：\n\n| 功能 | 说明 | 默认 |\n|------|------|------|\n| **调度系统** | 按周一到周日逐日编排：为每天分配不同时间段、推送模式和 AI 分析策略。**每个时段可独立设置筛选方式（关键词\u002FAI）和关注方向**，实现不同时间看不同类型新闻。内置 5 种预设（always_on \u002F morning_evening \u002F office_hours \u002F night_owl \u002F custom），也可自定义。支持工作日\u002F周末差异化、跨午夜时段、per-period 去重、时段冲突检测（v6.0.0 + v6.5.0） | morning_evening |\n| **内容顺序配置** | 通过 `display.region_order` 调整各区域（热榜、新增热点、RSS、独立展示区、AI 分析）的显示顺序；通过 `display.regions` 控制各区域是否显示（v5.2.0） | 见配置文件 |\n| **显示模式切换** | `keyword`=按关键词分组，`platform`=按平台分组（v4.6.0 新增） | keyword |\n\n> 💡 详细配置教程见 [推送内容怎么显示？](#7-推送内容怎么显示) 和 [什么时候给我推送？](#8-什么时候给我推送)\n\n### **精准内容筛选**\n\n设置个人关键词（如：AI、比亚迪、教育政策），只推送相关热点，过滤无关信息\n\n> 💡 **基础配置教程**：[关键词配置 - 基础语法](#关键词基础语法)\n>\n> 💡 **高级配置教程**：[关键词配置 - 高级配置](#关键词高级配置)\n>\n> 💡 也可以不做筛选，完整推送所有热点（将 frequency_words.txt 留空）\n\n### **AI 智能筛选新闻**（v6.5.0 新增）\n\n用自然语言描述你的兴趣，AI 自动分类新闻，替代传统关键词匹配\n\n- **自然语言兴趣描述**：在 `ai_interests.txt` 中用日常语言写下关注方向，无需学习关键词语法\n- **两阶段智能处理**：AI 先从兴趣描述提取结构化标签，再对新闻按标签批量分类打分\n- **分数阈值控制**：通过 `ai_filter.min_score` 精确控制推送质量，只推送高相关度新闻\n- **自动回退保障**：AI 筛选失败时自动回退到关键词匹配，确保推送不中断\n- **智能标签更新**：兴趣变更时 AI 自动评估变化幅度，决定增量或全量重分类\n- **灵活切换**：`filter.method` 支持 `keyword`（默认）和 `ai` 两种模式，Timeline 可按时段覆盖\n- **分时段个性化**：不同时间段可以使用不同的关键词文件或 AI 兴趣描述。例如早上用\"科技词库\"快速过滤，晚上换成\"金融兴趣\"做 AI 深度筛选\n\n```yaml\n# config.yaml 快速启用示例\nfilter:\n  method: ai          # keyword（默认）| ai\nai_filter:\n  min_score: 6         # 推送最低分数阈值（1-10）\n```\n\n> 💡 AI 筛选与 AI 分析\u002F翻译共享模型配置，只需配置一次 `ai.api_key`\n\n### **热点趋势分析**\n\n实时追踪新闻热度变化，让你不仅知道\"什么在热搜\"，更了解\"热点如何演变\"\n\n- **时间轴追踪**：记录每条新闻从首次出现到最后出现的完整时间跨度\n- **热度变化**：统计新闻在不同时间段的排名变化和出现频次\n- **新增检测**：实时识别新出现的热点话题，用🆕标记第一时间提醒\n- **持续性分析**：区分一次性热点话题和持续发酵的深度新闻\n- **跨平台对比**：同一新闻在不同平台的排名表现，看出媒体关注度差异\n\n> 💡 推送格式说明见 [消息样式说明](#5-我收到的消息长什么样)\n\n### **个性化热点算法**\n\n不再被各个平台的算法牵着走，TrendRadar 会重新整理全网热搜\n\n> 💡 三个比例可以调整，详见 [配置详解 - 热点权重调整](#4-热点权重调整)\n\n### **多渠道多账号推送**\n\n支持**企业微信**(+ 微信推送方案)、**飞书**、**钉钉**、**Telegram**、**邮件**、**ntfy**、**Bark**、**Slack**、**通用 Webhook**（可对接 Discord、IFTTT 等任意平台），消息直达手机和邮箱\n\n> 💡 详细配置教程见 [推送到多个群\u002F设备](#10-推送到多个群设备)\n\n### **AI 多语言翻译**（v5.2.0 新增）\n\n将推送内容翻译为任意语言，打破语言壁垒，无论是阅读国内热点还是通过 RSS 订阅海外资讯，都能以母语轻松获取\n\n- **一键翻译**：在 `config.yaml` 中设置 `ai_translation.enabled: true` 和目标语言即可\n- **多语言支持**：支持 English、Korean、Japanese、French 等任意语言\n- **智能批量处理**：自动批量翻译，减少 API 调用次数，节省成本\n- **自定义风格**：通过 `ai_translation_prompt.txt` 自定义翻译风格和术语\n- **共享模型配置**：与 AI 分析功能共用 `ai` 配置段的模型设置\n\n```yaml\n# config.yaml 快速启用示例\nai_translation:\n  enabled: true\n  language: \"English\"  # 翻译目标语言\n```\n\n> 💡 翻译功能与 AI 分析功能共享模型配置，只需配置一次 `ai.api_key` 即可同时使用两个功能\n\n**RSS 源参考**：以下是一些 RSS 订阅源合集，可按需选用\n- [awesome-tech-rss](https:\u002F\u002Fgithub.com\u002Ftuan3w\u002Fawesome-tech-rss) - 科技、创业、编程领域博客和媒体\n- [awesome-rss-feeds](https:\u002F\u002Fgithub.com\u002Fplenaryapp\u002Fawesome-rss-feeds) - 世界各国主流新闻媒体 RSS 合集\n\n> ⚠️ 部分海外媒体内容可能涉及敏感话题，AI 模型可能拒绝翻译，建议根据实际需求筛选订阅源\n\n### **HTML 报告浏览器增强**（v6.6.0 新增）\n\n在浏览器中打开推送的 HTML 报告，自动解锁增强体验（邮件客户端不受影响）：\n\n- **宽屏模式**：桌面端自动切换 1200px 宽屏布局，充分利用屏幕空间\n- **Tab 快速切换**：关键词分组和独立展区均支持 Tab 导航，告别长页面翻滚\n- **暗色模式**：一键切换深色主题，自动记住偏好\n- **实时搜索**：按 `\u002F` 唤起搜索框，即时过滤新闻标题\n- **一键复制**：悬停新闻序号即可复制标题和链接\n- **快捷键**：`W` 宽屏、`D` 暗色、`\u002F` 搜索、`?` 查看所有快捷键\n\n> 💡 所有增强功能基于渐进增强，邮件客户端仍显示原始 600px 布局，零回归\n\n### **灵活存储架构**（v4.0.0 重大更新）\n\n**多存储后端支持**：\n- **远程云存储**：GitHub Actions 环境默认，支持 S3 兼容协议（R2\u002FOSS\u002FCOS 等），数据存储在云端，不污染仓库\n- **本地 SQLite 数据库**：Docker\u002F本地环境默认，数据完全可控\n- **自动后端选择**：根据运行环境智能切换存储方式\n\n> 💡 详细说明见 [数据保存在哪里？](#11-数据保存在哪里)\n\n### **多端部署**\n- **GitHub Actions**：定时自动爬取 + 远程云存储（需签到续期）\n- **Docker 部署**：支持多架构容器化运行，数据本地存储\n- **本地运行**：Windows\u002FMac\u002FLinux 直接运行\n\n\n### **AI 分析推送（v5.0.0 新增）**\n\n使用 AI 大模型对推送内容进行深度分析，自动生成热点洞察报告\n\n- **智能分析**：自动分析热点趋势、关键词热度、跨平台关联、潜在影响\n- **多提供商**：基于 LiteLLM 统一接口，支持 100+ AI 提供商（DeepSeek、OpenAI、Gemini、Anthropic、本地 Ollama 等），还支持备用模型自动切换\n- **分析模式独立**：AI 的分析范围可以和推送不同——推送只发新增消息（避免打扰），但 AI 可以分析当天全部新闻（看完整趋势）\n- **灵活推送**：可选仅原始内容、仅 AI 分析、或两者都推送\n- **自定义提示词**：通过 `config\u002Fai_analysis_prompt.txt` 自定义分析角度\n\n> 💡 详细配置教程见 [让 AI 帮我分析热点](#12-让-ai-帮我分析热点)\n\n### **独立展示区（v5.0.0 新增）**\n\n为指定平台提供完整热榜展示，不受关键词过滤影响\n\n- **完整热榜**：指定平台的热榜完整展示，适合想看完整排名的用户\n- **RSS 独立展示**：RSS 源内容可完整展示，不受关键词限制\n- **AI 深度分析**：可独立开启 AI 对完整热榜的趋势分析，无需在推送中展示\n- **灵活配置**：支持配置展示平台、RSS 源、最大条数\n\n> 💡 详细配置教程见 [推送内容怎么显示？ - 独立展示区](#7-推送内容怎么显示)\n\n### **AI 智能分析（v3.0.0 新增）**\n\n基于 MCP (Model Context Protocol) 协议的 AI 对话分析系统，让你用自然语言深度挖掘新闻数据\n\n> **💡 使用提示**：AI 功能需要本地新闻数据支持\n> - 项目自带测试数据，可立即体验功能\n> - 建议自行部署运行项目，获取更实时的数据\n>\n> 详见 [AI 智能分析](#-ai-智能分析)\n\n### **网页部署**\n\n运行后根目录生成 `index.html`，即为完整的新闻报告页面。\n\n> **部署方式**：点击 **Use this template** 创建仓库，可部署到 Cloudflare Pages 或 GitHub Pages 等静态托管平台。\n>\n> **💡 提示**：启用 GitHub Pages 可获得在线访问地址，进入仓库 Settings → Pages 即可开启。[效果预览](https:\u002F\u002Fsansan0.github.io\u002FTrendRadar\u002F)\n>\n> ⚠️ 原 GitHub Actions 自动存储功能已下线（该方案曾导致 GitHub 服务器负载过高，影响平台稳定性）。\n\n### **减少 APP 依赖**\n\n从\"被算法推荐绑架\"变成\"主动获取自己想要的信息\"\n\n**适合人群：** 投资者、自媒体人、企业公关、关心时事的普通用户\n\n**典型场景：** 股市投资监控、品牌舆情追踪、行业动态关注、生活资讯获取\n\n\n| 网页效果(邮箱推送效果) | 飞书推送效果 | AI 分析推送效果 |\n|:---:|:---:|:---:|\n| ![网页效果](_image\u002Fgithub-pages.png) | ![飞书推送效果](_image\u002Ffeishu.jpg) | ![AI分析推送效果](_image\u002Fai.jpg) |\n\n\n\u003Cbr>\n\n## 🚀 快速开始\n\n> **提醒**：建议先 **[查看最新官方文档](https:\u002F\u002Fgithub.com\u002Fsansan0\u002FTrendRadar?tab=readme-ov-file)**，确保配置步骤是最新的。\n\n### 请选择适合你的部署方式\n\n#### 🅰️ 方案一：Docker 部署（推荐 🔥）\n\n* **特点**：比 GitHub Actions 更稳定，数据本地存储（无需配置云存储）\n* **适用**：有自己的服务器、NAS 或长期运行的电脑\n* **注意**：你需要阅读了解下方的基础配置流程，然后跳转到 Docker 教程进行部署。\n\n#### 🅱️ 方案二：GitHub Actions 部署（本章节内容 ⬇️）\n\n* **特点**：无服务器，数据存储在 **远程云存储**（推荐配置）\n* **适用**：没有服务器的用户，利用 GitHub 免费资源\n* **注意**：需配置云存储以获得完整体验，且需定期签到续期\n\n### 1️⃣ 第一步：获取项目代码\n\n   点击本仓库页面右上角的绿色 **[Use this template]** 按钮 → 选择 \"Create a new repository\"。\n\n   > ⚠️ 提醒：\n   > - 后续文档中提到的 \"Fork\" 均可理解为 \"Use this template\"\n   > - 使用 Fork 可能导致运行异常，详见 [Issue #606](https:\u002F\u002Fgithub.com\u002Fsansan0\u002FTrendRadar\u002Fissues\u002F606)\n\n   \u003Cbr>\n\n### 2️⃣ 第二步：设置 GitHub Secrets\n\n   在你 Fork 后的仓库中，进入 `Settings` > `Secrets and variables` > `Actions` > `New repository secret`\n\n   **📌 重要说明（请务必仔细阅读）：**\n\n   - **一个 Name 对应一个 Secret**：每添加一个配置项，点击一次\"New repository secret\"按钮，填写一对\"Name\"和\"Secret\"\n   - **保存后看不到值是正常的**：出于安全考虑，保存后重新编辑时，只能看到 Name（名称），看不到 Secret（值）的内容\n   - **严禁自创名称**：Secret 的 Name（名称）必须**严格使用**下方列出的名称（如 `WEWORK_WEBHOOK_URL`、`FEISHU_WEBHOOK_URL` 等），不能自己随意修改或创造新名称，否则系统无法识别\n   - **可以同时配置多个平台**：系统会向所有配置的平台发送通知\n\n   **配置示例：**\n\n   \u003Cimg src=\"_image\u002Fsecrets.png\" alt=\"GitHub Secrets 配置示例\"\u002F>\n\n   如上图所示，每一行是一个配置项：\n   - **Name（名称）**：必须使用下方展开内容中列出的固定名称（如 `WEWORK_WEBHOOK_URL`）\n   - **Secret（值）**：填写你从对应平台获取的实际内容（如 Webhook 地址、Token 等）\n\n   \u003Cbr>\n\n   \u003Cdetails>\n   \u003Csummary>👉 点击展开：\u003Cstrong>企业微信机器人\u003C\u002Fstrong>（配置最简单最迅速）\u003C\u002Fsummary>\n   \u003Cbr>\n\n   **GitHub Secret 配置（⚠️ Name 名称必须严格一致）：**\n   - **Name（名称）**：`WEWORK_WEBHOOK_URL`（请复制粘贴此名称，不要手打，避免打错）\n   - **Secret（值）**：你的企业微信机器人 Webhook 地址\n\n   \u003Cbr>\n\n   **机器人设置步骤：**\n\n   #### 手机端设置：\n   1. 打开企业微信 App → 进入目标内部群聊\n   2. 点击右上角\"…\"按钮 → 选择\"消息推送\"\n   3. 点击\"添加\" → 名称输入\"TrendRadar\"\n   4. 复制 Webhook 地址，点击保存，复制的内容配置到上方的 GitHub Secret 中\n\n   #### PC 端设置流程类似\n   \u003C\u002Fdetails>\n\n   \u003Cdetails>\n   \u003Csummary>👉 点击展开：\u003Cstrong>个人微信推送\u003C\u002Fstrong>（基于企业微信应用，推送到个人微信）\u003C\u002Fsummary>\n   \u003Cbr>\n\n   > 由于该方案是基于企业微信的插件机制，推送样式为纯文本（无 markdown 格式），但可以直接推送到个人微信，无需安装企业微信 App。\n\n   **GitHub Secret 配置（⚠️ Name 名称必须严格一致）：**\n   - **Name（名称）**：`WEWORK_WEBHOOK_URL`（请复制粘贴此名称，不要手打）\n   - **Secret（值）**：你的企业微信应用 Webhook 地址\n\n   - **Name（名称）**：`WEWORK_MSG_TYPE`（请复制粘贴此名称，不要手打）\n   - **Secret（值）**：`text`\n\n   \u003Cbr>\n\n   **设置步骤：**\n\n   1. 完成上方的企业微信机器人 Webhook 设置\n   2. 添加 `WEWORK_MSG_TYPE` Secret，值设为 `text`\n   3. 按照下面图片操作，关联个人微信\n   4. 配置好后，手机上的企业微信 App 可以删除\n\n   \u003Cimg src=\"_image\u002Fwework.png\" title=\"个人微信推送配置\"\u002F>\n\n   **说明**：\n   - 与企业微信机器人使用相同的 Webhook 地址\n   - 区别在于消息格式：`text` 为纯文本，`markdown` 为富文本（默认）\n   - 纯文本格式会自动去除所有 markdown 语法（粗体、链接等）\n\n   \u003C\u002Fdetails>\n\n   \u003Cdetails>\n   \u003Csummary>👉 点击展开：\u003Cstrong>飞书机器人\u003C\u002Fstrong>（消息显示相对友好）\u003C\u002Fsummary>\n   \u003Cbr>\n\n   若启用 **AI 分析**，飞书推送偶发（约 5% 概率）会有数分钟延迟（推测为平台对 AI 生成内容的合规性审核）。\n\n   **GitHub Secret 配置（⚠️ Name 名称必须严格一致）：**\n   - **Name（名称）**：`FEISHU_WEBHOOK_URL`（请复制粘贴此名称，不要手打）\n   - **Secret（值）**：你的飞书机器人 Webhook 地址（该链接开头类似 https:\u002F\u002Fwww.feishu.cn\u002Fflow\u002Fapi\u002Ftrigger-webhook\u002F********）\n   \u003Cbr>\n\n   有两个方案，**方案一**配置简单，**方案二**配置复杂(但是稳定推送)\n\n   其中方案一，由 **ziventian**发现并提供建议，在这里感谢他，默认是个人推送，也可以配置群组推送操作[#97](https:\u002F\u002Fgithub.com\u002Fsansan0\u002FTrendRadar\u002Fissues\u002F97) ，\n\n   **方案一：**\n\n   > 对部分人存在额外操作，否则会报\"系统错误\"。需要手机端搜索下机器人，然后开启飞书机器人应用(该建议来自于网友，可参考)\n\n   1. 电脑浏览器打开 https:\u002F\u002Fbotbuilder.feishu.cn\u002Fhome\u002Fmy-command\n\n   2. 点击\"新建机器人指令\" \n\n   3. 点击\"选择触发器\"，往下滑动，点击\"Webhook 触发\"\n\n   4. 此时你会看到\"Webhook 地址\"，把这个链接先复制到本地记事本暂存，继续接下来的操作\n\n   5. \"参数\"里面放上下面的内容，然后点击\"完成\"\n\n   ```json\n   {\n     \"message_type\": \"text\",\n     \"content\": {\n       \"text\": \"{{内容}}\"\n     }\n   }\n   ```\n\n   6. 点击\"选择操作\" > \"通过官方机器人发消息\"\n\n   7. 消息标题填写\"TrendRadar 热点监控\"\n\n   8. 最关键的部分来了，点击 + 按钮，选择\"Webhook 触发\"，然后按照下面的图片摆放\n\n   ![飞书机器人配置示例](_image\u002Ffeishu.png)\n\n   9. 配置完成后，将第 4 步复制的 Webhook 地址配置到 GitHub Secrets 中的 `FEISHU_WEBHOOK_URL`\n\n   \u003Cbr>\n\n   **方案二：**\n\n   1. 电脑浏览器打开 https:\u002F\u002Fbotbuilder.feishu.cn\u002Fhome\u002Fmy-app\n\n   2. 点击\"新建机器人应用\"\n\n   3. 进入创建的应用后，点击\"流程设计\" > \"创建流程\" > \"选择触发器\"\n\n   4. 往下滑动，点击\"Webhook 触发\"\n\n   5. 此时你会看到\"Webhook 地址\"，把这个链接先复制到本地记事本暂存，继续接下来的操作\n\n   6. \"参数\"里面放上下面的内容，然后点击\"完成\"\n\n   ```json\n   {\n     \"message_type\": \"text\",\n     \"content\": {\n       \"text\": \"{{内容}}\"\n     }\n   }\n   ```\n\n   7. 点击\"选择操作\" > \"发送飞书消息\"，勾选 \"群消息\"，然后点击下面的输入框，点击\"我管理的群组\"（如果没有群组，你可以在飞书 app 上创建群组）\n\n   8. 消息标题填写\"TrendRadar 热点监控\"\n\n   9. 最关键的部分来了，点击 + 按钮，选择\"Webhook 触发\"，然后按照下面的图片摆放\n\n   ![飞书机器人配置示例](_image\u002Ffeishu.png)\n\n   10. 配置完成后，将第 5 步复制的 Webhook 地址配置到 GitHub Secrets 中的 `FEISHU_WEBHOOK_URL`\n\n   \u003C\u002Fdetails>\n\n   \u003Cdetails>\n   \u003Csummary>👉 点击展开：\u003Cstrong>钉钉机器人\u003C\u002Fstrong>\u003C\u002Fsummary>\n   \u003Cbr>\n\n   **GitHub Secret 配置（⚠️ Name 名称必须严格一致）：**\n   - **Name（名称）**：`DINGTALK_WEBHOOK_URL`（请复制粘贴此名称，不要手打）\n   - **Secret（值）**：你的钉钉机器人 Webhook 地址\n\n   \u003Cbr>\n\n   **机器人设置步骤：**\n\n   1. **创建机器人（仅 PC 端支持）**：\n      - 打开钉钉 PC 客户端，进入目标群聊\n      - 点击群设置图标（⚙️）→ 往下翻找到\"机器人\"点开\n      - 选择\"添加机器人\" → \"自定义\"\n\n   2. **配置机器人**：\n      - 设置机器人名称\n      - **安全设置**：\n        - **自定义关键词**：设置 \"热点\"\n\n   3. **完成设置**：\n      - 勾选服务条款协议 → 点击\"完成\"\n      - 复制获得的 Webhook URL\n      - 将 URL 配置到 GitHub Secrets 中的 `DINGTALK_WEBHOOK_URL`\n\n   **注意**：移动端只能接收消息，无法创建新机器人。\n   \u003C\u002Fdetails>\n\n   \u003Cdetails>\n   \u003Csummary>👉 点击展开：\u003Cstrong>Telegram Bot\u003C\u002Fstrong>\u003C\u002Fsummary>\n   \u003Cbr>\n\n   **GitHub Secret 配置（⚠️ Name 名称必须严格一致）：**\n   - **Name（名称）**：`TELEGRAM_BOT_TOKEN`（请复制粘贴此名称，不要手打）\n   - **Secret（值）**：你的 Telegram Bot Token\n\n   - **Name（名称）**：`TELEGRAM_CHAT_ID`（请复制粘贴此名称，不要手打）\n   - **Secret（值）**：你的 Telegram Chat ID\n\n   **说明**：Telegram 需要配置**两个** Secret，请分别点击两次\"New repository secret\"按钮添加\n\n   \u003Cbr>\n\n   **机器人设置步骤：**\n\n   1. **创建机器人**：\n      - 在 Telegram 中搜索 `@BotFather`（大小写注意，有蓝色徽章勾勾，有类似 37849827 monthly users，这个才是官方的，有一些仿官方的账号注意辨别）\n      - 发送 `\u002Fnewbot` 命令创建新机器人\n      - 设置机器人名称（必须以\"bot\"结尾，很容易遇到重复名字，所以你要绞尽脑汁想不同的名字）\n      - 获取 Bot Token（格式如：`123456789:AAHfiqksKZ8WmR2zSjiQ7_v4TMAKdiHm9T0`）\n\n   2. **获取 Chat ID**：\n\n      **方法一：通过官方 API 获取**\n      - 先向你的机器人发送一条消息\n      - 访问：`https:\u002F\u002Fapi.telegram.org\u002Fbot\u003C你的Bot Token>\u002FgetUpdates`\n      - 在返回的 JSON 中找到 `\"chat\":{\"id\":数字}` 中的数字\n\n      **方法二：使用第三方工具**\n      - 搜索 `@userinfobot` 并发送 `\u002Fstart`\n      - 获取你的用户 ID 作为 Chat ID\n\n   3. **配置到 GitHub**：\n      - `TELEGRAM_BOT_TOKEN`：填入第 1 步获得的 Bot Token\n      - `TELEGRAM_CHAT_ID`：填入第 2 步获得的 Chat ID\n   \u003C\u002Fdetails>\n\n   \u003Cdetails>\n   \u003Csummary>👉 点击展开：\u003Cstrong>邮件推送\u003C\u002Fstrong>（支持所有主流邮箱）\u003C\u002Fsummary>\n   \u003Cbr>\n\n   - 注意事项：为防止邮件群发功能被**滥用**，当前的群发是所有收件人都能看到彼此的邮箱地址。\n   - 如果你没有过配置下面这种邮箱发送的经历，不建议尝试\n\n   > ⚠️ **重要配置依赖**：邮件推送需要 HTML 报告文件。请确保 `config\u002Fconfig.yaml` 中的 `storage.formats.html` 设置为 `true`：\n   > ```yaml\n   > storage:\n   >   formats:\n   >     sqlite: true\n   >     txt: false\n   >     html: true   # 必须启用，否则邮件推送会失败\n   > ```\n   > 如果设置为 `false`，邮件推送时会报错：`错误：HTML文件不存在或未提供: None`\n\n   \u003Cbr>\n\n   **GitHub Secret 配置（⚠️ Name 名称必须严格一致）：**\n   - **Name（名称）**：`EMAIL_FROM`（请复制粘贴此名称，不要手打）\n   - **Secret（值）**：发件人邮箱地址\n\n   - **Name（名称）**：`EMAIL_PASSWORD`（请复制粘贴此名称，不要手打）\n   - **Secret（值）**：邮箱密码或授权码\n\n   - **Name（名称）**：`EMAIL_TO`（请复制粘贴此名称，不要手打）\n   - **Secret（值）**：收件人邮箱地址（多个收件人用英文逗号分隔，也可以和 EMAIL_FROM 一样，自己发送给自己）\n\n   - **Name（名称）**：`EMAIL_SMTP_SERVER`（可选配置，请复制粘贴此名称）\n   - **Secret（值）**：SMTP服务器地址（可留空，系统会自动识别）\n\n   - **Name（名称）**：`EMAIL_SMTP_PORT`（可选配置，请复制粘贴此名称）\n   - **Secret（值）**：SMTP端口（可留空，系统会自动识别）\n\n   **说明**：邮件推送需要配置至少**3个必需** Secret（EMAIL_FROM、EMAIL_PASSWORD、EMAIL_TO），后两个为可选配置\n\n   \u003Cbr>\n\n   **支持的邮箱服务商**（自动识别 SMTP 配置）：\n\n   | 邮箱服务商 | 域名 | SMTP 服务器 | 端口 | 加密方式 |\n   |-----------|------|------------|------|---------|\n   | **Gmail** | gmail.com | smtp.gmail.com | 587 | TLS |\n   | **QQ邮箱** | qq.com | smtp.qq.com | 465 | SSL |\n   | **Outlook** | outlook.com | smtp-mail.outlook.com | 587 | TLS |\n   | **Hotmail** | hotmail.com | smtp-mail.outlook.com | 587 | TLS |\n   | **Live** | live.com | smtp-mail.outlook.com | 587 | TLS |\n   | **163邮箱** | 163.com | smtp.163.com | 465 | SSL |\n   | **126邮箱** | 126.com | smtp.126.com | 465 | SSL |\n   | **新浪邮箱** | sina.com | smtp.sina.com | 465 | SSL |\n   | **搜狐邮箱** | sohu.com | smtp.sohu.com | 465 | SSL |\n   | **天翼邮箱** | 189.cn | smtp.189.cn | 465 | SSL |\n   | **阿里云邮箱** | aliyun.com | smtp.aliyun.com | 465 | TLS |\n   | **Yandex邮箱** | yandex.com | smtp.yandex.com | 465 | TLS |\n   | **iCloud邮箱** | icloud.com | smtp.mail.me.com | 587 | SSL |\n\n   > **自动识别**：使用以上邮箱时，无需手动配置 `EMAIL_SMTP_SERVER` 和 `EMAIL_SMTP_PORT`，系统会自动识别。\n   >\n   > **反馈说明**：\n   > - 如果你使用**其他邮箱**测试成功，欢迎开 [Issues](https:\u002F\u002Fgithub.com\u002Fsansan0\u002FTrendRadar\u002Fissues) 告知，我会添加到支持列表\n   > - 如果上述邮箱配置有误或无法使用，也请开 [Issues](https:\u002F\u002Fgithub.com\u002Fsansan0\u002FTrendRadar\u002Fissues) 反馈，帮助改进项目\n   >\n   > **特别感谢**：\n   > - 感谢 [@DYZYD](https:\u002F\u002Fgithub.com\u002FDYZYD) 贡献天翼邮箱（189.cn）配置并完成自发自收测试 ([#291](https:\u002F\u002Fgithub.com\u002Fsansan0\u002FTrendRadar\u002Fissues\u002F291))\n   > - 感谢 [@longzhenren](https:\u002F\u002Fgithub.com\u002Flongzhenren) 贡献阿里云邮箱（aliyun.com）配置并完成测试 ([#344](https:\u002F\u002Fgithub.com\u002Fsansan0\u002FTrendRadar\u002Fissues\u002F344))\n   > - 感谢 [@ACANX](https:\u002F\u002Fgithub.com\u002FACANX) 贡献 Yandex 邮箱（yandex.com）配置并完成测试 ([#663](https:\u002F\u002Fgithub.com\u002Fsansan0\u002FTrendRadar\u002Fissues\u002F663))\n   > - 感谢 [@Sleepy-Tianhao](https:\u002F\u002Fgithub.com\u002FSleepy-Tianhao) 贡献 iCloud 邮箱（icloud.com）配置并完成测试 ([#728](https:\u002F\u002Fgithub.com\u002Fsansan0\u002FTrendRadar\u002Fissues\u002F728))\n\n   **常见邮箱设置：**\n\n   #### QQ邮箱：\n   1. 登录 QQ邮箱网页版 → 设置 → 账户\n   2. 开启 POP3\u002FSMTP 服务\n   3. 生成授权码（16位字母）\n   4. `EMAIL_PASSWORD` 填写授权码，而非 QQ 密码\n\n   #### Gmail：\n   1. 开启两步验证\n   2. 生成应用专用密码\n   3. `EMAIL_PASSWORD` 填写应用专用密码\n\n   #### 163\u002F126邮箱：\n   1. 登录网页版 → 设置 → POP3\u002FSMTP\u002FIMAP\n   2. 开启 SMTP 服务\n   3. 设置客户端授权码\n   4. `EMAIL_PASSWORD` 填写授权码\n   \u003Cbr>\n\n   **高级配置**：\n   如果自动识别失败，可手动配置 SMTP：\n   - `EMAIL_SMTP_SERVER`：如 smtp.gmail.com\n   - `EMAIL_SMTP_PORT`：如 587（TLS）或 465（SSL）\n   \u003Cbr>\n\n   **如果有多个收件人(注意是英文逗号分隔)**：\n   - EMAIL_TO=\"user1@example.com,user2@example.com,user3@example.com\"\n\n   \u003C\u002Fdetails>\n\n   \u003Cdetails>\n   \u003Csummary>👉 点击展开：\u003Cstrong>ntfy 推送\u003C\u002Fstrong>（开源免费，支持自托管）\u003C\u002Fsummary>\n   \u003Cbr>\n\n   **两种使用方式：**\n\n   ### 方式一：免费使用（推荐新手） 🆓\n\n   **特点**：\n   - ✅ 无需注册账号，立即使用\n   - ✅ 每天 250 条消息（足够 90% 用户）\n   - ✅ Topic 名称即\"密码\"（需选择不易猜测的名称）\n   - ⚠️ 消息未加密，不适合敏感信息, 但适合我们这个项目的不敏感信息\n\n   **快速开始：**\n\n   1. **下载 ntfy 应用**：\n      - Android：[Google Play](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=io.heckel.ntfy) \u002F [F-Droid](https:\u002F\u002Ff-droid.org\u002Fen\u002Fpackages\u002Fio.heckel.ntfy\u002F)\n      - iOS：[App Store](https:\u002F\u002Fapps.apple.com\u002Fus\u002Fapp\u002Fntfy\u002Fid1625396347)\n      - 桌面：访问 [ntfy.sh](https:\u002F\u002Fntfy.sh)\n\n   2. **订阅主题**（选择一个难猜的名称）：\n      ```\n      建议格式：trendradar-{你的名字缩写}-{随机数字}\n   \n      不能使用中文\n      \n      ✅ 好例子：trendradar-zs-8492\n      ❌ 坏例子：news、alerts（太容易被猜到）\n      ```\n\n   3. **配置 GitHub Secret（⚠️ Name 名称必须严格一致）**：\n      - **Name（名称）**：`NTFY_TOPIC`（请复制粘贴此名称，不要手打）\n      - **Secret（值）**：填写你刚才订阅的主题名称\n\n      - **Name（名称）**：`NTFY_SERVER_URL`（可选配置，请复制粘贴此名称）\n      - **Secret（值）**：留空（默认使用 ntfy.sh）\n\n      - **Name（名称）**：`NTFY_TOKEN`（可选配置，请复制粘贴此名称）\n      - **Secret（值）**：留空\n\n      **说明**：ntfy 至少需要配置 1 个必需 Secret (NTFY_TOPIC)，后两个为可选配置\n\n   4. **测试**：\n      ```bash\n      curl -d \"测试消息\" ntfy.sh\u002F你的主题名称\n      ```\n\n   ---\n\n   ### 方式二：自托管（完全隐私控制） 🔒\n\n   **适合人群**：有服务器、追求完全隐私、技术能力强\n\n   **优势**：\n   - ✅ 完全开源（Apache 2.0 + GPLv2）\n   - ✅ 数据完全自主控制\n   - ✅ 无任何限制\n   - ✅ 零费用\n\n   **Docker 一键部署**：\n   ```bash\n   docker run -d \\\n     --name ntfy \\\n     -p 80:80 \\\n     -v \u002Fvar\u002Fcache\u002Fntfy:\u002Fvar\u002Fcache\u002Fntfy \\\n     binwiederhier\u002Fntfy \\\n     serve --cache-file \u002Fvar\u002Fcache\u002Fntfy\u002Fcache.db\n   ```\n\n   **配置 TrendRadar**：\n   ```yaml\n   NTFY_SERVER_URL: https:\u002F\u002Fntfy.yourdomain.com\n   NTFY_TOPIC: trendradar-alerts  # 自托管可用简单名称\n   NTFY_TOKEN: tk_your_token  # 可选：启用访问控制\n   ```\n\n   **在应用中订阅**：\n   - 点击\"Use another server\"\n   - 输入你的服务器地址\n   - 输入主题名称\n   - （可选）输入登录凭据\n\n   ---\n\n   **常见问题：**\n\n   \u003Cdetails>\n   \u003Csummary>\u003Cstrong>Q1: 免费版够用吗？\u003C\u002Fstrong>\u003C\u002Fsummary>\n\n   每天 250 条消息对大多数用户足够。按 30 分钟抓取一次计算，每天约 48 次推送，完全够用。\n   \u003C\u002Fdetails>\n\n   \u003Cdetails>\n   \u003Csummary>\u003Cstrong>Q2: Topic 名称真的安全吗？\u003C\u002Fstrong>\u003C\u002Fsummary>\n\n   如果你选择随机的、足够长的名称（如 `trendradar-zs-8492-news`），暴力破解几乎不可能：\n   - ntfy 有严格的速率限制（1 秒 1 次请求）\n   - 64 个字符选择（A-Z, a-z, 0-9, _, -）\n   - 10 位随机字符串有 64^10 种可能性（需要数年才能破解）\n   \u003C\u002Fdetails>\n\n   ---\n\n   **推荐选择：**\n\n   | 用户类型 | 推荐方案 | 理由 |\n   |---------|---------|------|\n   | 普通用户 | 方式一（免费） | 简单快速，够用 |\n   | 技术用户 | 方式二（自托管） | 完全控制，无限制 |\n   | 高频用户 | 方式三（付费） | 这个自己去官网看吧 |\n\n   **相关链接：**\n   - [ntfy 官方文档](https:\u002F\u002Fdocs.ntfy.sh\u002F)\n   - [自托管教程](https:\u002F\u002Fdocs.ntfy.sh\u002Finstall\u002F)\n   - [GitHub 仓库](https:\u002F\u002Fgithub.com\u002Fbinwiederhier\u002Fntfy)\n\n   \u003C\u002Fdetails>\n\n   \u003Cdetails>\n   \u003Csummary>👉 点击展开：\u003Cstrong>Bark 推送\u003C\u002Fstrong>（iOS 专属，简洁高效）\u003C\u002Fsummary>\n   \u003Cbr>\n\n   **GitHub Secret 配置（⚠️ Name 名称必须严格一致）：**\n   - **Name（名称）**：`BARK_URL`（请复制粘贴此名称，不要手打）\n   - **Secret（值）**：你的 Bark 推送 URL\n\n   \u003Cbr>\n\n   **Bark 简介：**\n\n   Bark 是一款 iOS 平台的免费开源推送工具，特点是简单、快速、无广告。\n\n   **使用方式：**\n\n   ### 方式一：使用官方服务器（推荐新手） 🆓\n\n   1. **下载 Bark App**：\n      - iOS：[App Store](https:\u002F\u002Fapps.apple.com\u002Fcn\u002Fapp\u002Fbark-给你的手机发推送\u002Fid1403753865)\n\n   2. **获取推送 URL**：\n      - 打开 Bark App\n      - 复制首页显示的推送 URL（格式如：`https:\u002F\u002Fapi.day.app\u002Fyour_device_key`）\n      - 将 URL 配置到 GitHub Secrets 中的 `BARK_URL`\n\n   ### 方式二：自建服务器（完全隐私控制） 🔒\n\n   **适合人群**：有服务器、追求完全隐私、技术能力强\n\n   **Docker 一键部署**：\n   ```bash\n   docker run -d \\\n     --name bark-server \\\n     -p 8080:8080 \\\n     finab\u002Fbark-server\n   ```\n\n   **配置 TrendRadar**：\n   ```yaml\n   BARK_URL: http:\u002F\u002Fyour-server-ip:8080\u002Fyour_device_key\n   ```\n\n   ---\n\n   **注意事项：**\n   - ✅ Bark 使用 APNs 推送，单条消息最大 4KB\n   - ✅ 支持自动分批推送，无需担心消息过长\n   - ✅ 推送格式为纯文本（自动去除 Markdown 语法）\n   - ⚠️ 仅支持 iOS 平台\n\n   **相关链接：**\n   - [Bark 官方网站](https:\u002F\u002Fbark.day.app\u002F)\n   - [Bark GitHub 仓库](https:\u002F\u002Fgithub.com\u002FFinb\u002FBark)\n   - [Bark Server 自建教程](https:\u002F\u002Fgithub.com\u002FFinb\u002Fbark-server)\n\n   \u003C\u002Fdetails>\n\n   \u003Cdetails>\n   \u003Csummary>👉 点击展开：\u003Cstrong>Slack 推送\u003C\u002Fstrong>\u003C\u002Fsummary>\n   \u003Cbr>\n\n   **GitHub Secret 配置（⚠️ Name 名称必须严格一致）：**\n   - **Name（名称）**：`SLACK_WEBHOOK_URL`（请复制粘贴此名称，不要手打）\n   - **Secret（值）**：你的 Slack Incoming Webhook URL\n\n   \u003Cbr>\n\n   **Slack 简介：**\n\n   Slack 是团队协作工具，Incoming Webhooks 可以将消息推送到 Slack 频道。\n\n   **设置步骤：**\n\n   ### 步骤 1：创建 Slack App\n\n   1. **访问 Slack API 页面**：\n      - 打开 https:\u002F\u002Fapi.slack.com\u002Fapps?new_app=1\n      - 如果未登录，先登录你的 Slack 工作空间\n\n   2. **选择创建方式**：\n      - 点击 **\"From scratch\"**（从头开始创建）\n\n   3. **填写 App 信息**：\n      - **App Name**：填写应用名称（如 `TrendRadar` 或 `热点新闻监控`）\n      - **Workspace**：从下拉列表选择你的工作空间\n      - 点击 **\"Create App\"** 按钮\n\n   ### 步骤 2：启用 Incoming Webhooks\n\n   1. **导航到 Incoming Webhooks**：\n      - 在左侧菜单中找到并点击 **\"Incoming Webhooks\"**\n\n   2. **启用功能**：\n      - 找到 **\"Activate Incoming Webhooks\"** 开关\n      - 将开关从 `OFF` 切换到 `ON`\n      - 页面会自动刷新显示新的配置选项\n\n   ### 步骤 3：生成 Webhook URL\n\n   1. **添加新的 Webhook**：\n      - 滚动到页面底部\n      - 点击 **\"Add New Webhook to Workspace\"** 按钮\n\n   2. **选择目标频道**：\n      - 系统会弹出授权页面\n      - 从下拉列表中选择要接收消息的频道（如 `#热点新闻`）\n      - ⚠️ 如果要选择私有频道，必须先加入该频道\n\n   3. **授权应用**：\n      - 点击 **\"Allow\"** 按钮完成授权\n      - 系统会自动跳转回配置页面\n\n   ### 步骤 4：复制并保存 Webhook URL\n\n   1. **查看生成的 URL**：\n      - 在 \"Webhook URLs for Your Workspace\" 区域\n      - 会看到刚刚生成的 Webhook URL\n      - 格式如：`https:\u002F\u002Fhooks.slack.com\u002Fservices\u002FT00000000\u002FB00000000\u002FXXXXXXXXXXXXXXXXXXXXXXXX`\n\n   2. **复制 URL**：\n      - 点击 URL 右侧的 **\"Copy\"** 按钮\n      - 或手动选中 URL 并复制\n\n   3. **配置到 TrendRadar**：\n      - **GitHub Actions**：将 URL 添加到 GitHub Secrets 中的 `SLACK_WEBHOOK_URL`\n      - **本地测试**：将 URL 填入 `config\u002Fconfig.yaml` 的 `slack_webhook_url` 字段\n      - **Docker 部署**：将 URL 添加到 `docker\u002F.env` 文件的 `SLACK_WEBHOOK_URL` 变量\n\n   ---\n\n   **注意事项：**\n   - ✅ 支持 Markdown 格式（自动转换为 Slack mrkdwn）\n   - ✅ 支持自动分批推送（每批 4KB）\n   - ✅ 适合团队协作，消息集中管理\n   - ⚠️ Webhook URL 包含密钥，切勿公开\n\n   **消息格式预览：**\n   ```\n   *[第 1\u002F2 批次]*\n\n   📊 *热点词汇统计*\n\n   🔥 *[1\u002F3] AI ChatGPT* : 2 条\n\n     1. [百度热搜] 🆕 ChatGPT-5正式发布 *[1]* - 09时15分 (1次)\n\n     2. [今日头条] AI芯片概念股暴涨 *[3]* - [08时30分 ~ 10时45分] (3次)\n   ```\n\n   **相关链接：**\n   - [Slack Incoming Webhooks 官方文档](https:\u002F\u002Fapi.slack.com\u002Fmessaging\u002Fwebhooks)\n   - [Slack API 应用管理](https:\u002F\u002Fapi.slack.com\u002Fapps)\n\n   \u003C\u002Fdetails>\n\n   \u003Cdetails>\n   \u003Csummary>👉 点击展开：\u003Cstrong>通用 Webhook 推送\u003C\u002Fstrong>（支持 Discord、Matrix、IFTTT 等）\u003C\u002Fsummary>\n   \u003Cbr>\n\n   **GitHub Secret 配置（⚠️ Name 名称必须严格一致）：**\n   - **Name（名称）**：`GENERIC_WEBHOOK_URL`（请复制粘贴此名称，不要手打）\n   - **Secret（值）**：你的 Webhook URL\n\n   - **Name（名称）**：`GENERIC_WEBHOOK_TEMPLATE`（可选配置，请复制粘贴此名称）\n   - **Secret（值）**：JSON 模板字符串，支持 `{title}` 和 `{content}` 占位符\n\n   \u003Cbr>\n\n   **通用 Webhook 简介：**\n\n   通用 Webhook 支持任意接受 HTTP POST 请求的平台，包括但不限于：\n   - **Discord**：通过 Webhook 推送到频道\n   - **Matrix**：通过 Webhook 桥接推送\n   - **IFTTT**：触发自动化流程\n   - **自建服务**：任何支持 Webhook 的自定义服务\n\n   **配置示例：**\n\n   ### Discord 配置\n\n   1. **获取 Webhook URL**：\n      - 进入 Discord 服务器设置 → 整合 → Webhooks\n      - 创建新 Webhook，复制 URL\n\n   2. **配置模板**：\n      ```json\n      {\"content\": \"{content}\"}\n      ```\n\n   3. **GitHub Secret 配置**：\n      - `GENERIC_WEBHOOK_URL`：Discord Webhook URL\n      - `GENERIC_WEBHOOK_TEMPLATE`：`{\"content\": \"{content}\"}`\n\n   ### 自定义模板\n\n   模板支持两个占位符：\n   - `{title}` - 消息标题\n   - `{content}` - 消息内容\n\n   **模板示例**：\n   ```json\n   # 默认格式（留空时使用）\n   {\"title\": \"{title}\", \"content\": \"{content}\"}\n\n   # Discord 格式\n   {\"content\": \"{content}\"}\n\n   # 自定义格式\n   {\"text\": \"{content}\", \"username\": \"TrendRadar\"}\n   ```\n\n   ---\n\n   **注意事项：**\n   - ✅ 支持 Markdown 格式（与企业微信格式一致）\n   - ✅ 支持自动分批推送\n   - ✅ 支持多账号配置（用 `;` 分隔）\n   - ⚠️ 模板必须是有效的 JSON 格式\n   - ⚠️ 不同平台对消息格式要求不同，请参考目标平台文档\n\n   \u003C\u002Fdetails>\n\n   \u003Cbr>\n\n### 3️⃣ 第三步：手动测试新闻推送\n\n   > ⚠️ 提醒：\n   > - 完成第 1-2 步后，请立即测试！测试成功后再根据需要调整配置（第 4 步）\n   > - 请进入你自己的项目，不是本项目！\n\n   **如何找到你的 Actions 页面**：\n\n   - **方法一**：打开你 fork 的项目主页，点击顶部的 **Actions** 标签\n   - **方法二**：直接访问 `https:\u002F\u002Fgithub.com\u002F你的用户名\u002FTrendRadar\u002Factions`\n\n   **示例对比**：\n   - ❌ 作者的项目：`https:\u002F\u002Fgithub.com\u002Fsansan0\u002FTrendRadar\u002Factions`\n   - ✅ 你的项目：`https:\u002F\u002Fgithub.com\u002F你的用户名\u002FTrendRadar\u002Factions`\n\n   **测试步骤**：\n   1. 进入你项目的 Actions 页面\n   2. 找到 **\"Get Hot News\"**(必须得是这个字)点进去，点击右侧的 **\"Run workflow\"** 按钮运行 \n      - 如果看不到该字样，参照 [#109](https:\u002F\u002Fgithub.com\u002Fsansan0\u002FTrendRadar\u002Fissues\u002F109) 解决\n   3. 3 分钟左右，消息会推送到你配置的平台\n\n   \u003Cbr>\n\n   > ⚠️ 提醒：\n   > - 手动测试不要太频繁，避免触发 GitHub Actions 限制\n   > - 点击 Run workflow 后需要刷新浏览器页面才能看到新的运行记录\n\n   \u003Cbr>\n\n### 4️⃣ 第四步：配置说明（可选）\n\n   默认配置已可正常使用，如需个性化调整，了解以下文件即可：\n\n   | 文件 | 作用 |\n   |------|------|\n   | `config\u002Fconfig.yaml` | 主配置文件：推送模式、时间窗口、平台列表、热点权重等 |\n   | `config\u002Ffrequency_words.txt` | 关键词文件：设置你关心的词汇，筛选推送内容 |\n   | `config\u002Fai_analysis_prompt.txt` | AI 提示词模板：自定义 AI 分析师的角色和分析维度 |\n   | `.github\u002Fworkflows\u002Fcrawler.yml` | 执行频率：控制多久运行一次（⚠️ 谨慎修改） |\n\n   👉 **详细配置教程**：[配置详解](#配置详解)\n\n   \u003Cbr>\n\n### 5️⃣ 第五步：远程云存储 & 签到配置\n\n   **v4.0.0 重要变更**：引入「活跃度检测」机制，GitHub Actions 需定期签到以维持运行。\n\n   - **运行周期**：有效期为 **7 天**，倒计时结束后服务将自动挂起。\n   - **续期方式**：在 Actions 页面手动触发 \"Check In\" workflow，即可重置 7 天有效期。\n   - **操作路径**：`Actions` → `Check In` → `Run workflow`\n   - **设计理念**：\n     - 如果 7 天都忘了签到，或许这些资讯对你来说并非刚需。适时的暂停，能帮你从信息流中抽离，给大脑留出喘息的空间。\n     - GitHub Actions 是宝贵的公共计算资源。引入签到机制旨在避免算力的无效空转，确保资源能分配给真正活跃且需要的用户。感谢你的理解与支持。\n\n   ---\n\n   **关于远程云存储配置（请根据部署方式选择）：**\n\n   - **GitHub Actions 用户**：\n     - **现状**：Actions 每次运行都是全新环境，不保存文件。如果不配置云存储，项目将运行在**轻量模式**（无增量推送、无历史追踪）。\n     - **建议**：配置远程云存储以获得完整体验。\n\n   - **Docker \u002F 本地用户**：\n     - **现状**：数据默认保存在本地硬盘。\n     - **建议**：云存储为可选项，可作为异地备份。\n\n   \u003Cdetails>\n   \u003Csummary>👉 点击展开：\u003Cstrong>远程云存储配置教程（以 Cloudflare R2 为例）\u003C\u002Fstrong>\u003C\u002Fsummary>\n   \u003Cbr>\n\n   **⚠️ 前置条件（重要）：**\n\n   根据 Cloudflare 平台规则，开通 R2 需绑定支付方式。\n\n   * **目的**：仅作身份验证（Verify Only），**不产生扣费**。\n   * **支付**：支持双币信用卡或国区 PayPal。\n   * **用量**：R2 的免费额度（10GB存储\u002F月）足以覆盖本项目日常运行，无需担心付费。\n\n   ---\n\n   **GitHub Secret 配置（需添加 4 项）：**\n\n   | Name（名称） | Secret（值）说明 |\n   |-------------|-----------------|\n   | `S3_BUCKET_NAME` | 存储桶名称（如 `trendradar-data`） |\n   | `S3_ACCESS_KEY_ID` | 访问密钥 ID（Access Key ID） |\n   | `S3_SECRET_ACCESS_KEY` | 访问密钥（Secret Access Key） |\n   | `S3_ENDPOINT_URL` | S3 API 端点（如 R2：`https:\u002F\u002F\u003Caccount-id>.r2.cloudflarestorage.com`） |\n\n   **可选配置：**\n\n   | Name（名称） | Secret（值）说明 |\n   |-------------|-----------------|\n   | `S3_REGION` | 区域（默认 `auto`，部分服务商可能需要指定） |\n\n   > 💡 **更多存储配置选项**：参见 [数据保存在哪里？](#11-数据保存在哪里)\n\n   \u003Cbr>\n\n   **详细操作步骤（获取凭据）：**\n\n   1. **进入 R2 概览**：\n      - 登录 [Cloudflare Dashboard](https:\u002F\u002Fdash.cloudflare.com\u002F)。\n      - 在左侧侧边栏找到并点击 `R2对象存储`。\n\n   2. **创建存储桶**：\n      - 点击`概述`\n      - 点击右上角的 `创建存储桶` (Create bucket)。\n      - 输入名称（例如 `trendradar-data`），点击 `创建存储桶`。\n\n   3. **创建 API 令牌**：\n      - 回到 **概述**页面。\n      - 点击**右下角** `Account Details `找到并点击 `Manage` (Manage R2 API Tokens)。\n      - 同时你会看到 `S3 API`：`https:\u002F\u002F\u003Caccount-id>.r2.cloudflarestorage.com`(这就是 S3_ENDPOINT_URL)\n      - 点击 `创建 Account APl 令牌` 。\n      - **⚠️ 关键设置**：\n        - **令牌名称**：随意填写（如 `github-action-write`）。\n        - **权限**：选择 `管理员读和写` 。\n        - **指定存储桶**：为了安全，建议选择 `仅适用于指定存储桶` 并选中你的桶（如 `trendradar-data`）。\n      - 点击 `创建 API 令牌`，**立即复制** 显示的 `Access Key ID` 和 `Secret Access Key`（只显示一次！）。\n\n   \u003C\u002Fdetails>\n\n   \u003Cbr>\n\n### 6️⃣ 第六步：开启 AI 分析推送\n\n   这是 v5.0.0 的核心功能，让 AI 帮你总结和分析新闻，建议尝试。\n\n   **配置方法：**\n   在 GitHub Secrets (或 `.env` \u002F `config.yaml`) 中添加：\n   - `AI_API_KEY`: 你的 API Key（支持 DeepSeek、OpenAI 等）\n   - `AI_PROVIDER`: 服务商名称（如 `deepseek`, `openai`）\n\n   就这样，无需复杂部署，下次推送时你就会看到智能分析报告了。\n\n   \u003Cbr>\n\n### 7️⃣ 第七步：🎉 部署成功！\n\n   恭喜！现在你可以开始享受 TrendRadar 带来的高效信息流了。\n\n   💬 **加入社区**：欢迎关注公众号「**[硅基茶水间](#-支持项目)**」，分享你的使用心得和高级玩法。\n\n   \u003Cbr>\n\n### 8️⃣ 第八步：进阶：选择你的 AI 助手\n\n   TrendRadar 提供了两种 AI 使用方式，满足不同需求：\n\n   | 特性 | ✨ AI 分析推送 | 🧠 AI 智能分析 |\n   | :--- | :--- | :--- |\n   | **模式** | **被动接收** (每日日报) | **主动对话** (深度调研) |\n   | **场景** | \"今天有什么大事？\" | \"分析一下过去一周 AI 行业的变化\" |\n   | **部署** | 极简 (填 Key 即可) | 进阶 (需本地运行\u002FDocker) |\n   | **客户端** | 手机 |  电脑 |\n  \n\n   👉 **结论**：先用 **AI 分析推送** 满足日常需求；如果你是数据分析师或需要深度挖掘，再尝试 **[AI 智能分析](#-ai-智能分析)**。\n\n\u003Cbr>\n\n\u003Ca name=\"配置详解\">\u003C\u002Fa>\n\n## ⚙️ 配置详解\n\n> **📖 提醒**：本章节提供详细的配置说明，建议先完成 [快速开始](#-快速开始) 的基础配置，再根据需要回来查看详细选项。\n\n### 1. 我要看哪些平台？\n\n\u003Cdetails id=\"自定义监控平台\">\n\u003Csummary>👉 点击展开：\u003Cstrong>选择资讯来源\u003C\u002Fstrong>\u003C\u002Fsummary>\n\u003Cbr>\n\n**配置位置：** `config\u002Fconfig.yaml` 的 `platforms` 部分\n\n本项目的资讯数据来源于 [newsnow](https:\u002F\u002Fgithub.com\u002Fourongxing\u002Fnewsnow) ，你可以点击[网站](https:\u002F\u002Fnewsnow.busiyi.world\u002F)，点击[更多]，查看是否有你想要的平台。\n\n具体添加可访问 [项目源代码](https:\u002F\u002Fgithub.com\u002Fourongxing\u002Fnewsnow\u002Ftree\u002Fmain\u002Fserver\u002Fsources)，根据里面的文件名，在 `config\u002Fconfig.yaml` 文件中修改 `platforms` 配置：\n\n```yaml\nplatforms:\n  enabled: true                       # 是否启用热榜平台抓取\n  sources:\n    - id: \"toutiao\"\n      name: \"今日头条\"\n    - id: \"baidu\"\n      name: \"百度热搜\"\n    - id: \"wallstreetcn-hot\"\n      name: \"华尔街见闻\"\n    # 添加更多平台...\n```\n\n> 💡 **快捷方式**：如果不会看源代码，可以复制他人整理好的 [平台配置汇总](https:\u002F\u002Fgithub.com\u002Fsansan0\u002FTrendRadar\u002Fissues\u002F95)\n\n> ⚠️ **注意**：平台不是越多越好，建议选择 10-15 个核心平台。过多平台会导致信息过载，反而降低使用体验。\n\n\u003C\u002Fdetails>\n\n### 2. 我关心什么内容？\n\n在 `frequency_words.txt` 文件中告诉机器人你想看什么，它就会帮你盯着。支持普通词、必须词、过滤词等多种玩法。\n\n| 语法类型 | 符号 | 作用 | 示例 | 匹配逻辑 |\n|---------|------|------|------|---------|\n| **普通词** | 无 | 基础匹配 | `华为` | 包含任意一个即可 |\n| **必须词** | `+` | 限定范围 | `+手机` | 必须同时包含 |\n| **过滤词** | `!` | 排除干扰 | `!广告` | 包含则直接排除 |\n| **数量限制** | `@` | 控制显示数量 | `@10` | 最多显示10条新闻（v3.2.0新增） |\n| **全局过滤** | `[GLOBAL_FILTER]` | 全局排除指定内容 | 见下方示例 | 任何情况下都过滤（v3.5.0新增） |\n| **正则表达式** | `\u002Fpattern\u002F` | 精确匹配模式 | `\u002F\\bai\\b\u002F` | 使用正则表达式匹配（v4.7.0新增） |\n| **显示名称** | `=> 备注` | 自定义显示文本 | `\u002F\\bai\\b\u002F => AI相关` | 推送和HTML显示备注名称（v4.7.0新增） |\n\n#### 2.1 基础语法\n\n\u003Ca name=\"关键词基础语法\">\u003C\u002Fa>\n\n\u003Cdetails>\n\u003Csummary>👉 点击展开：\u003Cstrong>基础语法教程\u003C\u002Fstrong>\u003C\u002Fsummary>\n\u003Cbr>\n\n**配置位置：** `config\u002Ffrequency_words.txt`\n\n##### 1. **普通关键词** - 基础匹配\n```txt\n华为\nOPPO\n苹果\n```\n**作用：** 新闻标题包含其中**任意一个词**就会被捕获\n\n##### 2. **必须词** `+词汇` - 限定范围\n```txt\n华为\nOPPO\n+手机\n```\n**作用：** 必须同时包含普通词**和**必须词才会被捕获\n\n##### 3. **过滤词** `!词汇` - 排除干扰\n```txt\n苹果\n华为\n!水果\n!价格\n```\n**作用：** 包含过滤词的新闻会被**直接排除**，即使包含关键词\n\n##### 4. **数量限制** `@数字` - 控制显示数量（v3.2.0 新增）\n```txt\n特斯拉\n马斯克\n@5\n```\n**作用：** 限制该关键词组最多显示的新闻条数\n\n**配置优先级：** `@数字` > 全局配置 > 不限制\n\n##### 5. **全局过滤** `[GLOBAL_FILTER]` - 全局排除指定内容（v3.5.0 新增）\n```txt\n[GLOBAL_FILTER]\n广告\n推广\n营销\n震惊\n标题党\n\n[WORD_GROUPS]\n科技\nAI\n\n华为\n鸿蒙\n!车\n```\n**作用：** 在任何情况下过滤包含指定词的新闻，**优先级最高**\n\n**使用场景：**\n- 过滤低质内容：震惊、标题党、爆料等\n- 过滤营销内容：广告、推广、赞助等\n- 过滤特定主题：娱乐、八卦（根据需求）\n\n**过滤优先级：** 全局过滤 > 词组内过滤(`!`) > 词组匹配\n\n**区域说明：**\n- `[GLOBAL_FILTER]`：全局过滤区，包含的词在任何情况下都会被过滤\n- `[WORD_GROUPS]`：词组区，保持现有语法（`!`、`+`、`@`）\n- 如果不使用区域标记，默认全部作为词组处理（向后兼容）\n\n**匹配示例：**\n```txt\n[GLOBAL_FILTER]\n广告\n\n[WORD_GROUPS]\n科技\nAI\n```\n- ❌ \"广告：最新科技产品发布\" ← 包含全局过滤词\"广告\"，直接拒绝\n- ✅ \"科技公司发布AI新产品\" ← 不包含全局过滤词，匹配\"科技\"词组\n- ✅ \"AI技术突破引发关注\" ← 不包含全局过滤词，匹配\"科技\"词组中的\"AI\"\n\n**注意事项：**\n- 全局过滤词应谨慎使用，避免过度过滤导致遗漏有价值内容\n- 建议全局过滤词控制在 5-15 个以内\n- 对于特定词组的过滤，优先使用词组内过滤词（`!` 前缀）\n\n##### 6. **正则表达式** `\u002Fpattern\u002F` - 精确匹配模式（v4.7.0 新增）\n\n普通关键词使用子字符串匹配，这在中文环境下很方便，但在英文环境可能会产生误匹配。例如 `ai` 会匹配到 `training` 中的 `ai`。\n\n使用正则表达式语法 `\u002Fpattern\u002F` 可以实现精确匹配：\n\n```txt\n\u002F(?\u003C![a-z])ai(?![a-z])\u002F\n人工智能\n```\n\n**作用：** 使用正则表达式进行匹配，支持所有 Python 正则语法\n\n**常用正则模式：**\n\n| 需求 | 正则写法 | 说明 |\n|------|---------|------|\n| 英文单词边界 | `\u002F\\bword\\b\u002F` | 匹配独立单词，如 `\u002F\\bai\\b\u002F` 匹配 \"AI\" 但不匹配 \"training\" |\n| 前后非字母 | `\u002F(?\u003C![a-z])ai(?![a-z])\u002F` | 更宽松的边界，适合中英混合场景 |\n| 开头匹配 | `\u002F^breaking\u002F` | 只匹配以 \"breaking\" 开头的标题 |\n| 结尾匹配 | `\u002F发布$\u002F` | 只匹配以 \"发布\" 结尾的标题 |\n| 多选一 | `\u002F苹果\\|华为\\|小米\u002F` | 匹配其中任意一个（注意转义 `\\|`） |\n\n**匹配示例：**\n```txt\n# 配置\n\u002F(?\u003C![a-z])ai(?![a-z])\u002F\n人工智能\n```\n\n- ✅ \"AI is the future\" ← 匹配独立的 \"AI\"\n- ✅ \"你好ai这里\" ← 前后是中文，匹配 \"ai\"\n- ✅ \"人工智能发展迅速\" ← 匹配 \"人工智能\"\n- ❌ \"Resistance training is important\" ← \"training\" 中的 \"ai\" 不匹配\n- ❌ \"The maid cleaned the room\" ← \"maid\" 中的 \"ai\" 不匹配\n\n**组合使用：**\n```txt\n# 正则 + 普通词 + 过滤词\n\u002F\\bai\\b\u002F\n人工智能\n机器学习\n!广告\n```\n\n**注意事项：**\n- 正则表达式自动启用大小写不敏感匹配（`re.IGNORECASE`）\n- 支持 `\u002Fpattern\u002Fi` 等 JavaScript 风格写法（flags 会被忽略，因为默认已启用忽略大小写）\n- 无效的正则语法会被当作普通词处理\n- 正则可用于普通词、必须词(`+`)、过滤词(`!`)\n\n**💡 不会写正则？让 AI 帮你生成！**\n\n如果你不熟悉正则表达式，可以直接让 ChatGPT \u002F Gemini \u002F DeepSeek 帮你生成。只需告诉 AI：\n\n> 我需要一个 Python 正则表达式，用于匹配英文单词 \"ai\"，但不匹配 \"training\" 中的 \"ai\"。\n> 请直接给出正则表达式，格式为 `\u002Fpattern\u002F`，不需要额外解释。\n\nAI 会给你类似这样的结果：`\u002F(?\u003C![a-zA-Z])ai(?![a-zA-Z])\u002F`\n\n##### 7. **显示名称** `=> 备注` - 自定义显示文本（v4.7.0 新增）\n\n正则表达式在推送消息和 HTML 页面显示时可能不太友好。使用 `=> 备注` 语法可以设置显示名称：\n\n```txt\n\u002F(?\u003C![a-zA-Z])ai(?![a-zA-Z])\u002F => AI 相关\n人工智能\n```\n\n**作用：** 推送消息和 HTML 页面显示 \"AI 相关\" 而不是复杂的正则表达式\n\n**语法格式：**\n```txt\n# 正则 + 显示名称\n\u002Fpattern\u002F => 显示名称\n\u002Fpattern\u002Fi => 显示名称    # 支持 flags 写法（flags 被忽略）\n\u002Fpattern\u002F=>显示名称       # => 两边空格可选\n\n# 普通词 + 显示名称\ndeepseek => DeepSeek 动态\n```\n\n**匹配示例：**\n```txt\n# 配置\n\u002F(?\u003C![a-zA-Z])ai(?![a-zA-Z])\u002F => AI 相关\n人工智能\n```\n\n| 原始配置 | 推送\u002FHTML 显示 |\n|---------|---------------|\n| `\u002F(?\u003C![a-z])ai(?![a-z])\u002F` + `人工智能` | `(?\u003C![a-z])ai(?![a-z]) 人工智能` |\n| `\u002F(?\u003C![a-z])ai(?![a-z])\u002F => AI 相关` + `人工智能` | **`AI 相关`** |\n\n**注意事项：**\n- 显示名称只需写在词组的第一个词上\n- 如果词组中多个词都有显示名称，使用第一个\n- 不设置显示名称时，自动使用词组内所有词拼接\n\n---\n\n#### 🔗 词组功能 - 空行分隔的重要作用\n\n**核心规则：** 用**空行**分隔不同的词组，每个词组独立统计\n\n##### 示例配置：\n```txt\niPhone\n华为\nOPPO\n+发布\n\nA股\n上证\n深证\n+涨跌\n!预测\n\n世界杯\n欧洲杯\n亚洲杯\n+比赛\n```\n\n##### 词组解释及匹配效果：\n\n**第1组 - 手机新品类：**\n- 关键词：iPhone、华为、OPPO\n- 必须词：发布\n- 效果：必须包含手机品牌名，同时包含\"发布\"\n\n**匹配示例：**\n- ✅ \"iPhone 15正式发布售价公布\" ← 有\"iPhone\"+\"发布\"\n- ✅ \"华为Mate60系列发布会直播\" ← 有\"华为\"+\"发布\"\n- ✅ \"OPPO Find X7发布时间确定\" ← 有\"OPPO\"+\"发布\"\n- ❌ \"iPhone销量创新高\" ← 有\"iPhone\"但缺少\"发布\"\n\n**第2组 - 股市行情类：**\n- 关键词：A股、上证、深证\n- 必须词：涨跌\n- 过滤词：预测\n- 效果：关注股市涨跌实况，排除预测类内容\n\n**匹配示例：**\n- ✅ \"A股今日大幅涨跌分析\" ← 有\"A股\"+\"涨跌\"\n- ✅ \"上证指数涨跌幅创新高\" ← 有\"上证\"+\"涨跌\"\n- ❌ \"专家预测A股涨跌趋势\" ← 有\"A股\"+\"涨跌\"但包含\"预测\"\n\n**第3组 - 足球赛事类：**\n- 关键词：世界杯、欧洲杯、亚洲杯\n- 必须词：比赛\n- 效果：只关注比赛相关新闻\n\n---\n\n#### 📝 配置技巧\n\n##### 1. **从宽到严**\n```txt\n# 第一步：先用宽泛关键词测试\n人工智能\nAI\nChatGPT\n\n# 第二步：发现误匹配后，加入必须词限定\n人工智能\nAI\nChatGPT\n+技术\n\n# 第三步：发现干扰内容后，加入过滤词\n人工智能\nAI\nChatGPT\n+技术\n!广告\n!培训\n```\n\n##### 2. **避免过度复杂**\n\n❌ **不推荐：** 一个词组包含太多词汇\n```txt\n华为\nOPPO\n苹果\n三星\nvivo\n一加\n魅族\n+手机\n+发布\n+销量\n!假货\n!维修\n!二手\n```\n\n✅ **推荐：** 拆分成多个精确的词组\n```txt\n华为\nOPPO\n+新品\n\n苹果\n三星\n+发布\n\n手机\n销量\n+市场\n```\n\n\u003C\u002Fdetails>\n\n#### 2.2 高级配置（v3.2.0 新增）\n\n\u003Ca name=\"关键词高级配置\">\u003C\u002Fa>\n\n\u003Cdetails>\n\u003Csummary>👉 点击展开：\u003Cstrong>高级配置教程\u003C\u002Fstrong>\u003C\u002Fsummary>\n\u003Cbr>\n\n##### 关键词排序优先级\n\n**配置位置：** `config\u002Fconfig.yaml`\n\n```yaml\nreport:\n  sort_by_position_first: false  # 排序优先级配置\n```\n\n| 配置值 | 排序规则 | 适用场景 |\n|--------|---------|---------|\n| `false`（默认） | 热点条数 ↓ → 配置位置 ↑ | 关注热度趋势 |\n| `true` | 配置位置 ↑ → 热点条数 ↓ | 关注个人优先级 |\n\n**示例：** 配置顺序 A、B、C，热点数 A(3条)、B(10条)、C(5条)\n- `false`：B(10条) → C(5条) → A(3条)\n- `true`：A(3条) → B(10条) → C(5条)\n\n##### 全局显示数量限制\n\n```yaml\nreport:\n  max_news_per_keyword: 10  # 每个关键词最多显示10条（0=不限制）\n```\n\n**Docker 环境变量：**\n```bash\nSORT_BY_POSITION_FIRST=true\nMAX_NEWS_PER_KEYWORD=10\n```\n\n**综合示例：**\n```yaml\n# config.yaml\nreport:\n  sort_by_position_first: true   # 按配置顺序优先\n  max_news_per_keyword: 10       # 全局默认每个关键词最多10条\n```\n\n```txt\n# frequency_words.txt\n特斯拉\n马斯克\n@20              # 重点关注，显示20条（覆盖全局配置）\n\n华为            # 使用全局配置，显示10条\n\n比亚迪\n@5               # 限制5条\n```\n\n**最终效果：** 按配置顺序显示 特斯拉(20条) → 华为(10条) → 比亚迪(5条)\n\n\u003C\u002Fdetails>\n\n### 3. 推送模式选哪个？\n\n\u003Cdetails>\n\u003Csummary>👉 点击展开：\u003Cstrong>三种推送模式详细对比\u003C\u002Fstrong>\u003C\u002Fsummary>\n\u003Cbr>\n\n**配置位置：** `config\u002Fconfig.yaml` 的 `report.mode`\n\n```yaml\nreport:\n  mode: \"daily\"  # 可选: \"daily\" | \"incremental\" | \"current\"\n```\n\n#### 详细对比表格\n\n| 模式 | 适用人群 | 推送时机 | 显示内容 | 典型使用场景 |\n|------|----------|----------|----------|------------|\n| **当日汇总**\u003Cbr\u002F>`daily` | 📋 企业管理者\u002F普通用户 | 按时推送(默认每小时推送一次) | 当日所有匹配新闻\u003Cbr\u002F>+ 新增新闻区域 | **案例**：每天下午6点查看今天所有重要新闻\u003Cbr\u002F>**特点**：看全天完整趋势，不漏掉任何热点\u003Cbr\u002F>**提醒**：会包含之前推送过的新闻 |\n| **当前榜单**\u003Cbr\u002F>`current` | 📰 自媒体人\u002F内容创作者 | 按时推送(默认每小时推送一次) | 当前榜单匹配新闻\u003Cbr\u002F>+ 新增新闻区域 | **案例**：每小时追踪\"哪些话题现在最火\"\u003Cbr\u002F>**特点**：实时了解当前热度排名变化\u003Cbr\u002F>**提醒**：持续在榜的新闻每次都会出现 |\n| **增量监控**\u003Cbr\u002F>`incremental` | 📈 投资者\u002F交易员 | 有新增才推送 | 新出现的匹配频率词新闻 | **案例**：监控\"特斯拉\"，只在有新消息时通知\u003Cbr\u002F>**特点**：零重复，只看首次出现的新闻\u003Cbr\u002F>**适合**：高频监控、避免信息打扰 |\n\n#### 实际推送效果举例\n\n假设你监控\"苹果\"关键词，每小时执行一次：\n\n| 时间 | daily 模式推送 | current 模式推送 | incremental 模式推送 |\n|-----|--------------|----------------|-------------------|\n| 10:00 | 新闻A、新闻B | 新闻A、新闻B | 新闻A、新闻B |\n| 11:00 | 新闻A、新闻B、新闻C | 新闻B、新闻C、新闻D | **仅**新闻C |\n| 12:00 | 新闻A、新闻B、新闻C | 新闻C、新闻D、新闻E | **仅**新闻D、新闻E |\n\n**说明**：\n- `daily`：累积展示当天所有新闻（A、B、C 都保留）\n- `current`：展示当前榜单的新闻（排名变化，新闻D上榜，新闻A掉榜）\n- `incremental`：**只推送新出现的新闻**（避免重复干扰）\n\n#### 常见问题\n\n> **💡 遇到这个问题？** 👉 \"每个小时执行一次，第一次执行完输出的新闻，在下一个小时执行时还会出现\"\n> - **原因**：你可能选择了 `daily`（当日汇总）或 `current`（当前榜单）模式\n> - **解决**：改用 `incremental`（增量监控）模式，只推送新增内容\n\n#### ⚠️ 增量模式重要提示\n\n> **选择了 `incremental`（增量监控）模式的用户请注意：**\n>\n> 📌 **增量模式只在有新增匹配新闻时才会推送**\n>\n> **如果长时间没有收到推送，可能是因为：**\n> 1. 当前时段没有符合你关键词的新热点出现\n> 2. 关键词配置过于严格或过于宽泛\n> 3. 监控平台数量较少\n>\n> **解决方案：**\n> - 方案1：👉 [优化关键词配置](#2-关键词配置) - 调整关键词的精准度，增加或修改监控词汇\n> - 方案2：切换推送模式 - 改用 `current` 或 `daily` 模式，可以定时接收推送\n> - 方案3：👉 [增加监控平台](#1-平台配置) - 添加更多新闻平台，扩大信息来源\n\n\u003C\u002Fdetails>\n\n### 4. 调整热点算法\n\n\u003Cdetails>\n\u003Csummary>👉 点击展开：\u003Cstrong>自定义热点权重\u003C\u002Fstrong>\u003C\u002Fsummary>\n\u003Cbr>\n\n**配置位置：** `config\u002Fconfig.yaml` 的 `advanced.weight` 部分\n\n```yaml\nadvanced:\n  weight:\n    rank: 0.6           # 排名权重\n    frequency: 0.3      # 频次权重\n    hotness: 0.1        # 热度权重\n```\n\n当前默认的配置是平衡性配置\n\n#### 两个核心场景\n\n**追实时热点型**：\n```yaml\nadvanced:\n  weight:\n    rank: 0.8           # 主要看排名\n    frequency: 0.1      # 不太在乎持续性\n    hotness: 0.1\n```\n**适用人群**：自媒体博主、营销人员、想快速了解当下最火话题的用户\n\n**追深度话题型**：\n```yaml\nadvanced:\n  weight:\n    rank: 0.4           # 适度看排名\n    frequency: 0.5      # 重视当天内的持续热度\n    hotness: 0.1\n```\n**适用人群**：投资者、研究人员、新闻工作者、需要深度分析趋势的用户\n\n#### 调整的方法\n1. **三个数字加起来必须等于 1.0**\n2. **哪个重要就调大哪个**：在乎排名就调大 `rank`，在乎持续性就调大 `frequency`\n3. **建议每次只调 0.1-0.2**，观察效果\n\n核心思路：追求速度和时效性的用户提高排名权重，追求深度和稳定性的用户提高频次权重。\n\n\u003C\u002Fdetails>\n\n### 5. 我收到的消息长什么样？\n\n\u003Cdetails>\n\u003Csummary>👉 点击展开：\u003Cstrong>消息样式预览\u003C\u002Fstrong>\u003C\u002Fsummary>\n\u003Cbr>\n\n#### 推送示例\n\n📊 热点词汇统计\n\n🔥 [1\u002F3] AI ChatGPT : 2 条\n\n  1. [百度热搜] 🆕 ChatGPT-5正式发布 [**1**] - 09时15分 (1次)\n\n  2. [今日头条] AI芯片概念股暴涨 [**3**] - [08时30分 ~ 10时45分] (3次)\n\n━━━━━━━━━━━━━━━━━━━\n\n📈 [2\u002F3] 比亚迪 特斯拉 : 2 条\n\n  1. [微博] 🆕 比亚迪月销量破纪录 [**2**] - 10时20分 (1次)\n\n  2. [抖音] 特斯拉降价促销 [**4**] - [07时45分 ~ 09时15分] (2次)\n\n━━━━━━━━━━━━━━━━━━━\n\n📌 [3\u002F3] A股 股市 : 1 条\n\n  1. [华尔街见闻] A股午盘点评分析 [**5**] - [11时30分 ~ 12时00分] (2次)\n\n🆕 本次新增热点新闻 (共 2 条)\n\n**百度热搜** (1 条):\n  1. ChatGPT-5正式发布 [**1**]\n\n**微博** (1 条):\n  1. 比亚迪月销量破纪录 [**2**]\n\n更新时间：2025-01-15 12:30:15\n\n#### 消息格式说明\n\n| 格式元素      | 示例                        | 含义         | 说明                                    |\n| ------------- | --------------------------- | ------------ | --------------------------------------- |\n| 🔥📈📌        | 🔥 [1\u002F3] AI ChatGPT        | 热度等级     | 🔥高热度(≥10条) 📈中热度(5-9条) 📌普通热度(\u003C5条) |\n| [序号\u002F总数]   | [1\u002F3]                       | 排序位置     | 当前词组在所有匹配词组中的排名          |\n| 频率词组      | AI ChatGPT                  | 关键词组     | 配置文件中的词组，标题必须包含其中词汇   |\n| : N 条        | : ","TrendRadar 是一个基于 AI 的舆情监控与热点筛选工具，能够聚合多平台的热点信息和 RSS 订阅，并支持关键词精准筛选。其核心功能包括 AI 智能筛选新闻、AI 翻译及分析简报直接推送至手机，同时也支持接入 MCP 架构以实现更深入的自然语言对话分析、情感洞察与趋势预测等功能。该工具采用 Python 编写，支持 Docker 部署，数据可以存储在本地或云端，并且集成了多种通知渠道如微信、飞书、钉钉、Telegram、邮件等，便于用户在不同场景下接收重要信息更新。适用于需要高效获取并处理大量网络信息的企业和个人，帮助他们快速把握舆论动态和社会趋势。",2,"2026-06-11 02:30:53","trending"]