[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-sansan0--TrendRadar":3,"tool-sansan0--TrendRadar":61},[4,18,26,36,44,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",151918,2,"2026-04-12T11:33:05",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",108322,"2026-04-10T11:39:34",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":32,"last_commit_at":50,"category_tags":51,"status":17},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[52,13,15,14],"插件",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":32,"last_commit_at":59,"category_tags":60,"status":17},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[52,14],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":66,"readme_en":67,"readme_zh":68,"quickstart_zh":69,"use_case_zh":70,"hero_image_url":71,"owner_login":72,"owner_name":73,"owner_avatar_url":74,"owner_bio":75,"owner_company":76,"owner_location":76,"owner_email":76,"owner_twitter":76,"owner_website":76,"owner_url":77,"languages":78,"stars":99,"forks":100,"last_commit_at":101,"license":102,"difficulty_score":32,"env_os":103,"env_gpu":104,"env_ram":104,"env_deps":105,"category_tags":108,"github_topics":109,"view_count":32,"oss_zip_url":76,"oss_zip_packed_at":76,"status":17,"created_at":126,"updated_at":127,"faqs":128,"releases":159},6946,"sansan0\u002FTrendRadar","TrendRadar","⭐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 等渠道智能推送。","TrendRadar 是一款轻量级、AI 驱动的开源舆情监控与热点筛选助手，旨在帮助用户在信息爆炸的时代告别无效刷屏，只关注真正有价值的资讯。它通过聚合多平台热点数据和自定义 RSS 订阅源，利用人工智能技术对新闻进行智能筛选、多语言翻译及深度分析，并生成精简简报直推至用户的手机或办公协作软件。\n\n该工具主要解决了用户面临的信息过载痛点，避免了手动在不同平台间切换查找信息的繁琐，同时通过情感洞察与趋势预测功能，让用户能快速把握舆论风向。无论是需要追踪行业动态的市场研究人员、关注技术前沿的开发者，还是希望高效获取每日要闻的普通用户，都能从中受益。\n\nTrendRadar 的技术亮点在于其极高的灵活性与现代化架构：支持最快 30 秒完成的 Docker 一键部署，数据可由用户本地或云端自主掌控，保障隐私安全；创新性地接入 MCP（模型上下文协议）架构，赋能更自然的 AI 对话式数据分析；并提供微信、飞书、钉钉、Telegram、邮件等十余种通知渠道的集成能力，确保重要信息即时触达。作为一个开源项目，它以轻量易用的设计理念，让每个人都能拥有个性化的智能情报中心。","\u003Cdiv align=\"center\" id=\"trendradar\">\n\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fsansan0\u002FTrendRadar\" title=\"TrendRadar\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsansan0_TrendRadar_readme_928f64d22b66.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\u002Foss.gittoolsai.com\u002Fimages\u002Fsansan0_TrendRadar_readme_4a68feb902da.png\" 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.1-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\u002Foss.gittoolsai.com\u002Fimages\u002Fsansan0_TrendRadar_readme_2ae0a88d9807.jpg\" width=\"240\" alt=\"微信赞赏\"> | \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsansan0_TrendRadar_readme_ed4f20ab8e35.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=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsansan0_TrendRadar_readme_7bd157d40877.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=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsansan0_TrendRadar_readme_a84fc73f948b.jpg\" alt=\"飞书消息界面 - 优化前\" width=\"400\"\u002F>\n\u003C\u002Ftd>\n\u003Ctd align=\"center\">\n优化后\u003Cbr>\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsansan0_TrendRadar_readme_9ee061ddff7a.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=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsansan0_TrendRadar_readme_4d02c89e688f.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| ![网页效果](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsansan0_TrendRadar_readme_3307ed963ba1.png) | ![飞书推送效果](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsansan0_TrendRadar_readme_cfe4dbafdf58.jpg) | ![AI分析推送效果](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsansan0_TrendRadar_readme_793f9ec6a17e.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=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsansan0_TrendRadar_readme_42bc52ff6c92.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=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsansan0_TrendRadar_readme_45671f7c6ba0.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   ![飞书机器人配置示例](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsansan0_TrendRadar_readme_4fe9da679917.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   ![飞书机器人配置示例](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsansan0_TrendRadar_readme_4fe9da679917.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 条        | : 2 条                      | 匹配数量     | 该词组匹配的新闻总数                    |\n| [平台名]      | [百度热搜]                  | 来源平台     | 新闻所属的平台名称                      |\n| 🆕            | 🆕 ChatGPT-5正式发布        | 新增标记     | 本轮抓取中首次出现的热点                |\n| [**数字**]    | [**1**]                     | 高排名       | 排名≤阈值的热搜，红色加粗显示           |\n| [数字]        | [7]                         | 普通排名     | 排名>阈值的热搜，普通显示               |\n| - 时间        | - 09时15分                  | 首次时间     | 该新闻首次被发现的时间                  |\n| [时间~时间]   | [08时30分 ~ 10时45分]       | 持续时间     | 从首次出现到最后出现的时间范围          |\n| (N次)         | (3次)                       | 出现频率     | 在监控期间出现的总次数                  |\n| **新增区域**  | 🆕 **本次新增热点新闻**      | 新话题汇总   | 单独展示本轮新出现的热点话题            |\n\n\u003C\u002Fdetails>\n\n\n### 6. Docker 部署\n\n**镜像说明：**\n\nTrendRadar 提供两个独立的 Docker 镜像，可根据需求选择部署：\n\n| 镜像名称 | 用途 | 说明 |\n|---------|------|------|\n| `wantcat\u002Ftrendradar` | 新闻推送服务 | 定时抓取新闻、推送通知（必选） |\n| `wantcat\u002Ftrendradar-mcp` | AI 分析服务 | MCP 协议支持、AI 对话分析（可选） |\n\n> 💡 **建议**：\n> - 只需要推送功能：仅部署 `wantcat\u002Ftrendradar` 镜像\n> - 需要 AI 分析功能：同时部署两个镜像\n\n\u003Cdetails>\n\u003Csummary>👉 点击展开：\u003Cstrong>Docker 部署完整指南\u003C\u002Fstrong>\u003C\u002Fsummary>\n\u003Cbr>\n\n#### 方式一：使用 docker compose（推荐）\n\n1. **创建项目目录和配置**:\n\n   ```bash\n   # 克隆项目到本地\n   git clone https:\u002F\u002Fgithub.com\u002Fsansan0\u002FTrendRadar.git\n   cd TrendRadar\n   ```\n\n   > 💡 **说明**：Docker 部署需要的关键目录结构如下：\n```\n当前目录\u002F\n├── config\u002F\n│   ├── config.yaml                 # 核心功能配置（必需）\n│   ├── frequency_words.txt         # 关键词配置（必需）\n│   ├── timeline.yaml               # 时间线配置\n│   ├── ai_analysis_prompt.txt      # AI 分析提示词（可选）\n│   ├── ai_translation_prompt.txt   # AI 翻译提示词（可选）\n│   ├── ai_interests.txt            # AI 兴趣过滤配置（可选）\n│   ├── ai_filter\u002F                  # AI 过滤相关提示词\n│   │   ├── prompt.txt\n│   │   ├── extract_prompt.txt\n│   │   └── update_tags_prompt.txt\n│   └── custom\u002F                     # 用户自定义配置（可选）\n│       ├── ai\u002F                     # 自定义 AI 提示词\n│       └── keyword\u002F                # 自定义关键词文件\n└── docker\u002F\n    ├── .env                        # 敏感信息 + Docker 特有配置\n    └── docker-compose.yml          # Docker Compose 编排文件\n```\n\n2. **配置文件说明**:\n\n   **配置分工原则（v4.6.0 优化）**：\n\n   | 文件 | 用途 | 修改频率 | 说明 |\n   |------|------|---------|------|\n   | `config\u002Fconfig.yaml` | **核心功能配置** | 低 | 报告模式、推送设置、存储格式、推送窗口、AI 分析开关、平台启用等全局行为控制 |\n   | `config\u002Ffrequency_words.txt` | **关键词配置** | 高 | 设置你关心的热点词汇，支持分组、正则、别名等高级语法 |\n   | `config\u002Ftimeline.yaml` | **时间线配置** | 低 | 控制新闻时间线的展示和过滤规则 |\n   | `config\u002Fai_analysis_prompt.txt` | **AI 分析提示词** | 中 | 自定义 AI 分析的角色定义和输出格式（v5.0.0+） |\n   | `config\u002Fai_translation_prompt.txt` | **AI 翻译提示词** | 低 | 自定义 AI 翻译的提示词模板 |\n   | `config\u002Fai_interests.txt` | **AI 兴趣过滤** | 中 | 定义 AI 基于兴趣自动过滤新闻的规则 |\n   | `config\u002Fai_filter\u002F` | **AI 过滤提示词** | 低 | AI 过滤模块的内部提示词（一般无需修改） |\n   | `config\u002Fcustom\u002F` | **用户自定义扩展** | 按需 | `custom\u002Fai\u002F` 放自定义 AI 提示词，`custom\u002Fkeyword\u002F` 放自定义关键词文件 |\n   | `docker\u002F.env` | **敏感信息 + Docker 特有配置** | 低 | webhook URLs、API Key、S3 密钥、定时任务等，**不会被 git 追踪** |\n\n   > 💡 **分工要点**：\n   > - **功能行为** → 改 `config.yaml`（如开启\u002F关闭某个平台、调整推送模式）\n   > - **关注内容** → 改 `frequency_words.txt`（如添加新的关注关键词）\n   > - **AI 输出风格** → 改 `ai_analysis_prompt.txt` 或 `ai_translation_prompt.txt`\n   > - **密钥与凭证** → 改 `docker\u002F.env`（API Key、Webhook URL 等敏感信息统一放这里）\n   > - **个性化扩展** → 使用 `config\u002Fcustom\u002F` 目录，避免直接修改默认配置被升级覆盖\n\n   > 💡 **配置修改生效**：修改 `config.yaml` 后，执行 `docker compose up -d` 重启容器即可生效\n\n   **⚙️ 环境变量覆盖机制（v3.0.5+）**\n\n   `.env` 文件中的环境变量会覆盖 `config.yaml` 中的对应配置：\n\n   | 环境变量 | 对应配置 | 示例值 | 说明 |\n   |---------|---------|-------|------|\n   | `WEBSERVER_PORT` | - | `8080` | Web 服务器端口 |\n   | `FEISHU_WEBHOOK_URL` | `notification.channels.feishu.webhook_url` | `https:\u002F\u002F...` | 飞书 Webhook（多账号用 `;` 分隔） |\n   | `AI_ANALYSIS_ENABLED` | `ai_analysis.enabled` | `true` \u002F `false` | 是否启用 AI 分析（v5.0.0 新增） |\n   | `AI_API_KEY` | `ai.api_key` | `sk-xxx...` | AI API Key（ai_analysis 和 ai_translation 共享） |\n   | `AI_PROVIDER` | `ai.provider` | `deepseek` \u002F `openai` \u002F `gemini` | AI 提供商 |\n   | `S3_*` | `storage.remote.*` | - | 远程存储配置（5 个参数） |\n\n   **配置优先级**：环境变量 > config.yaml\n\n   **使用方法**：\n   - 修改 `.env` 文件，填写需要的配置\n   - 或在 NAS\u002F群晖 Docker 管理界面的\"环境变量\"中直接添加\n   - 重启容器后生效：`docker compose up -d`\n\n\n3. **启动服务**:\n\n   **选项 A：启动所有服务（推送 + AI 分析）**\n   ```bash\n   # 拉取最新镜像\n   docker compose pull\n\n   # 启动所有服务（trendradar + trendradar-mcp）\n   docker compose up -d\n   ```\n\n   **选项 B：仅启动新闻推送服务**\n   ```bash\n   # 只启动 trendradar（定时抓取和推送）\n   docker compose pull trendradar\n   docker compose up -d trendradar\n   ```\n\n   **选项 C：仅启动 MCP AI 分析服务**\n   ```bash\n   # 只启动 trendradar-mcp（提供 AI 分析接口）\n   docker compose pull trendradar-mcp\n   docker compose up -d trendradar-mcp\n   ```\n\n   > 💡 **提示**：\n   > - 大多数用户只需启动 `trendradar` 即可实现新闻推送功能\n   > - 只有需要使用 ChatGPT\u002FGemini 进行 AI 对话分析时，才需启动 `trendradar-mcp`\n   > - 两个服务相互独立，可根据需求灵活组合\n\n4. **查看运行状态**:\n   ```bash\n   # 查看新闻推送服务日志\n   docker logs -f trendradar\n\n   # 查看 MCP AI 分析服务日志\n   docker logs -f trendradar-mcp\n\n   # 查看所有容器状态\n   docker ps | grep trendradar\n\n   # 停止特定服务\n   docker compose stop trendradar      # 停止推送服务\n   docker compose stop trendradar-mcp  # 停止 MCP 服务\n   ```\n\n#### 方式二：本地构建（开发者选项）\n\n如果需要自定义修改代码或构建自己的镜像：\n\n```bash\n# 克隆项目\ngit clone https:\u002F\u002Fgithub.com\u002Fsansan0\u002FTrendRadar.git\ncd TrendRadar\n\n# 修改配置文件\nvim config\u002Fconfig.yaml\nvim config\u002Ffrequency_words.txt\n\n# 使用构建版本的 docker compose\ncd docker\ncp docker-compose-build.yml docker-compose.yml\n```\n\n**构建并启动服务**：\n\n```bash\n# 选项 A：构建并启动所有服务\ndocker compose build\ndocker compose up -d\n\n# 选项 B：仅构建并启动新闻推送服务\ndocker compose build trendradar\ndocker compose up -d trendradar\n\n# 选项 C：仅构建并启动 MCP AI 分析服务\ndocker compose build trendradar-mcp\ndocker compose up -d trendradar-mcp\n```\n\n> 💡 **架构参数说明**：\n> - 默认构建 `amd64` 架构镜像（适用于大多数 x86_64 服务器）\n> - 如需构建 `arm64` 架构（Apple Silicon、树莓派等），设置环境变量：\n>   ```bash\n>   export DOCKER_ARCH=arm64\n>   docker compose build\n>   ```\n\n#### 镜像更新\n\n```bash\n# 方式一：手动更新（爬虫 + MCP 镜像）\ndocker pull wantcat\u002Ftrendradar:latest\ndocker pull wantcat\u002Ftrendradar-mcp:latest\ndocker compose down\ndocker compose up -d\n\n# 方式二：使用 docker compose 更新\ndocker compose pull\ndocker compose up -d\n```\n\n**可用镜像**：\n\n| 镜像名称 | 用途 | 说明 |\n|---------|------|------|\n| `wantcat\u002Ftrendradar` | 新闻推送服务 | 定时抓取新闻、推送通知 |\n| `wantcat\u002Ftrendradar-mcp` | MCP 服务 | AI 分析功能（可选） |\n\n#### 服务管理命令\n\n```bash\n# 查看运行状态\ndocker exec -it trendradar python manage.py status\n\n# 手动执行一次爬虫\ndocker exec -it trendradar python manage.py run\n\n# 查看实时日志\ndocker exec -it trendradar python manage.py logs\n\n# 显示当前配置\ndocker exec -it trendradar python manage.py config\n\n# 显示输出文件\ndocker exec -it trendradar python manage.py files\n\n# Web 服务器管理（用于浏览器访问生成的报告）\ndocker exec -it trendradar python manage.py start_webserver   # 启动 Web 服务器\ndocker exec -it trendradar python manage.py stop_webserver    # 停止 Web 服务器\ndocker exec -it trendradar python manage.py webserver_status  # 查看 Web 服务器状态\n\n# 查看帮助信息\ndocker exec -it trendradar python manage.py help\n\n# 重启容器\ndocker restart trendradar\n\n# 停止容器\ndocker stop trendradar\n\n# 删除容器（保留数据）\ndocker rm trendradar\n```\n\n> 💡 **Web 服务器说明**：\n> - cron 模式下自动启动，通过浏览器访问 `http:\u002F\u002Flocalhost:8080` 查看最新报告\n> - 通过目录导航访问历史报告（如：`http:\u002F\u002Flocalhost:8080\u002F2025-xx-xx\u002F`）\n> - 端口可在 `.env` 文件中配置 `WEBSERVER_PORT` 参数\n> - 手动停止：`docker exec -it trendradar python manage.py stop_webserver`\n> - 手动启动：`docker exec -it trendradar python manage.py start_webserver`\n> - 安全提示：仅提供静态文件访问，限制在 output 目录，只绑定本地访问\n\n#### 数据持久化\n\n生成的报告和数据默认保存在 `.\u002Foutput` 目录下，即使容器重启或删除，数据也会保留。\n\n**📊 网页版报告访问路径**：\n\nTrendRadar 生成的当日汇总 HTML 报告会同时保存到两个位置：\n\n| 文件位置 | 访问方式 | 适用场景 |\n|---------|---------|---------|\n| `output\u002Findex.html` | 宿主机直接访问 | **Docker 部署**（通过 Volume 挂载，宿主机可见） |\n| `index.html` | 根目录访问 | **GitHub Pages**（仓库根目录，Pages 自动识别） |\n| `output\u002Fhtml\u002FYYYY-MM-DD\u002F当日汇总.html` | 历史报告访问 | 所有环境（按日期归档） |\n\n**本地访问示例**：\n```bash\n# 方式 1：通过 Web 服务器访问（推荐，Docker 环境）\n# 1. 启动 Web 服务器\ndocker exec -it trendradar python manage.py start_webserver\n# 2. 在浏览器访问\nhttp:\u002F\u002Flocalhost:8080                           # 访问最新报告（默认 index.html）\nhttp:\u002F\u002Flocalhost:8080\u002Fhtml\u002F2025-xx-xx\u002F          # 访问指定日期的报告\n\n# 方式 2：直接打开文件（本地环境）\nopen .\u002Foutput\u002Findex.html             # macOS\nstart .\u002Foutput\u002Findex.html            # Windows\nxdg-open .\u002Foutput\u002Findex.html         # Linux\n\n# 方式 3：访问历史归档\nopen .\u002Foutput\u002Fhtml\u002F2025-xx-xx\u002F当日汇总.html\n```\n\n**为什么有两个 index.html？**\n- `output\u002Findex.html`：Docker Volume 挂载到宿主机，本地可直接打开\n- `index.html`：GitHub Actions 推送到仓库，GitHub Pages 自动部署\n\n> 💡 **提示**：两个文件内容完全相同，选择任意一个访问即可。\n\n#### 故障排查\n\n```bash\n# 检查容器状态\ndocker inspect trendradar\n\n# 查看容器日志\ndocker logs --tail 100 trendradar\n\n# 进入容器调试\ndocker exec -it trendradar \u002Fbin\u002Fbash\n\n# 验证配置文件\ndocker exec -it trendradar ls -la \u002Fapp\u002Fconfig\u002F\n```\n\n#### MCP 服务部署（AI 分析功能）\n\n如果需要使用 AI 分析功能，可以部署独立的 MCP 服务容器。\n\n**架构说明**：\n\n```mermaid\nflowchart TB\n    subgraph trendradar[\"trendradar\"]\n        A1[定时抓取新闻]\n        A2[推送通知]\n    end\n    \n    subgraph trendradar-mcp[\"trendradar-mcp\"]\n        B1[127.0.0.1:3333]\n        B2[AI 分析接口]\n    end\n    \n    subgraph shared[\"共享卷\"]\n        C1[\"config\u002F (ro)\"]\n        C2[\"output\u002F (ro)\"]\n    end\n    \n    trendradar --> shared\n    trendradar-mcp --> shared\n```\n\n**快速启动**：\n\n如果已按照 [方式一：使用 docker compose](#方式一使用-docker-compose推荐) 完成部署，只需启动 MCP 服务：\n\n```bash\ncd TrendRadar\u002Fdocker\ndocker compose up -d trendradar-mcp\n\n# 查看运行状态\ndocker ps | grep trendradar-mcp\n```\n\n**单独启动 MCP 服务**（不使用 docker compose）：\n\n```bash\n# Linux\u002FMac\ndocker run -d --name trendradar-mcp \\\n  -p 127.0.0.1:3333:3333 \\\n  -v $(pwd)\u002Fconfig:\u002Fapp\u002Fconfig:ro \\\n  -v $(pwd)\u002Foutput:\u002Fapp\u002Foutput:ro \\\n  -e TZ=Asia\u002FShanghai \\\n  wantcat\u002Ftrendradar-mcp:latest\n\n# Windows PowerShell\ndocker run -d --name trendradar-mcp `\n  -p 127.0.0.1:3333:3333 `\n  -v ${PWD}\u002Fconfig:\u002Fapp\u002Fconfig:ro `\n  -v ${PWD}\u002Foutput:\u002Fapp\u002Foutput:ro `\n  -e TZ=Asia\u002FShanghai `\n  wantcat\u002Ftrendradar-mcp:latest\n```\n\n> ⚠️ **注意**：单独运行时，确保当前目录下有 `config\u002F` 和 `output\u002F` 文件夹，且包含配置文件和新闻数据。\n\n**验证服务**：\n\n```bash\n# 检查 MCP 服务健康状态\ncurl http:\u002F\u002F127.0.0.1:3333\u002Fmcp\n\n# 查看 MCP 服务日志\ndocker logs -f trendradar-mcp\n```\n\n**在 AI 客户端中配置**：\n\nMCP 服务启动后，根据不同客户端进行配置：\n\n**Cherry Studio**（推荐，GUI 配置）：\n- 设置 → MCP 服务器 → 添加\n- 类型：`streamableHttp`\n- URL：`http:\u002F\u002F127.0.0.1:3333\u002Fmcp`\n\n**Claude Desktop \u002F Cline**（JSON 配置）：\n```json\n{\n  \"mcpServers\": {\n    \"trendradar\": {\n      \"url\": \"http:\u002F\u002F127.0.0.1:3333\u002Fmcp\",\n      \"type\": \"streamableHttp\"\n    }\n  }\n}\n```\n\n> 💡 **提示**：MCP 服务仅监听本地端口（127.0.0.1），确保安全性。如需远程访问，请自行配置反向代理和认证。\n\n\u003C\u002Fdetails>\n\n### 7. 推送内容怎么显示？\n\n\u003Cdetails>\n\u003Csummary>👉 点击展开：\u003Cstrong>自定义推送样式和内容\u003C\u002Fstrong>\u003C\u002Fsummary>\n\u003Cbr>\n\n**配置位置：** `config\u002Fconfig.yaml` 的 `report` 和 `display` 部分\n\n```yaml\nreport:\n  mode: \"daily\"                    # 推送模式\n  display_mode: \"keyword\"          # 显示模式（v4.6.0 新增）\n  rank_threshold: 5                # 排名高亮阈值\n  sort_by_position_first: false    # 排序优先级\n  max_news_per_keyword: 0          # 每个关键词最大显示数量\n\ndisplay:\n  region_order:                    # 区域显示顺序（v5.2.0 新增）\n    - new_items                    # 新增热点区域\n    - hotlist                      # 热榜区域\n    - rss                          # RSS 订阅区域\n    - standalone                   # 独立展示区\n    - ai_analysis                  # AI 分析区域\n```\n\n#### 常用配置项说明\n\n| 我想调整什么 | 修改哪个参数 | 默认值 | 说明 |\n|-------------|-------------|-------|------|\n| **推送模式** | `mode` | `daily` | 决定推送时机和内容，详见 [推送模式详解](#3-推送模式详解) |\n| **分组方式** | `display_mode` | `keyword` | `keyword`=按关键词分组(如\"AI\")，`platform`=按平台分组(如\"微博\") |\n| **高亮重点** | `rank_threshold` | `5` | 排名在前 5 的新闻会**加粗**显示，一眼看到最火的 |\n| **排序规则** | `sort_by_position_first` | `false` | `false`=热度高的排前面，`true`=你配置的词排前面 |\n| **数量限制** | `max_news_per_keyword` | `0` | 每个关键词最多看几条？`0`表示不限制 |\n| **显示顺序** | `display.region_order` | 见上方配置 | 调整列表顺序即可控制各区域的显示位置 |\n\n#### 分组方式对比（display_mode）\n\n你是想看\"这个话题下有哪些新闻\"，还是\"这个平台上有哪些新闻\"？\n\n| 模式 | 分组方式 | 标题前缀 | 适用场景 |\n|------|---------|---------|---------|\n| `keyword`（默认） | **按关键词聚合** | `[平台名]` | 我关注\"AI\"，想看各平台关于AI的新闻 |\n| `platform` | **按平台聚合** | `[关键词]` | 我关注\"微博\"，想看微博上关于我关注词的新闻 |\n\n#### 区域显示顺序（region_order）\n\n通过调整 `display.region_order` 列表的顺序，可以控制推送消息中各区域的显示位置。\n\n**默认顺序**：新增热点 → 热榜 → RSS → 独立展示区 → AI 分析\n\n**自定义示例**：想让 AI 分析放在最前面？\n\n```yaml\ndisplay:\n  region_order:\n    - ai_analysis                  # 移到第一行\n    - new_items\n    - hotlist\n    - rss\n    - standalone\n```\n\n**注意**：区域需同时满足两个条件才会显示：\n1. 在 `region_order` 列表中\n2. 在 `display.regions` 中对应开关为 `true`\n\n#### 区域开关（regions）\n\n通过 `display.regions` 控制各区域是否在推送中显示：\n\n```yaml\ndisplay:\n  regions:\n    hotlist: true                    # 热榜区域（关键词匹配的热点新闻）\n    new_items: false                 # 新增热点区域（含热榜新增 + RSS 新增）\n    rss: true                       # RSS 订阅区域（关键词匹配的 RSS 内容）\n    standalone: false                # 独立展示区（完整热榜\u002FRSS，不受关键词过滤）\n    ai_analysis: true                # AI 分析区域\n```\n\n| 区域 | 配置键 | 默认值 | 说明 |\n|------|--------|-------|------|\n| **热榜** | `hotlist` | `true` | 按关键词匹配的热点新闻聚合 |\n| **新增热点** | `new_items` | `false` | 本轮新出现的热点话题（含热榜新增 + RSS 新增）。注：热榜区域中的 🆕 标记不受此开关影响 |\n| **RSS** | `rss` | `true` | 按关键词匹配的 RSS 订阅内容。关闭后跳过 RSS 分析，但独立展示区中的 RSS 不受影响 |\n| **独立展示区** | `standalone` | `false` | 指定平台\u002FRSS 的完整内容展示，不受关键词过滤 |\n| **AI 分析** | `ai_analysis` | `true` | AI 生成的热点分析摘要 |\n\n#### 排序优先级（sort_by_position_first）\n\n假设你配置了关键词：1.特斯拉，2.比亚迪。\n实际热度：比亚迪(10条)，特斯拉(3条)。\n\n| 配置值 | 排序结果 | 你的想法 |\n|-------|---------|---------|\n| `false`（默认） | 比亚迪(10条) → 特斯拉(3条) | \"谁火谁排前面\" |\n| `true` | 特斯拉(3条) → 比亚迪(10条) | \"我配置的顺序就是优先级，不管它火不火\" |\n\n#### 独立展示区（standalone）\n\n**场景**：有些平台（比如知乎热榜、HackerNews），我想**完整看一遍**，不管有没有匹配我的关键词。\n\n```yaml\ndisplay:\n  regions:\n    standalone: true                  # 推送中展示独立展示区（关闭不影响 AI 分析）\n\n  standalone:\n    platforms: [\"zhihu\", \"weibo\"]     # 这些平台的热榜给我完整显示\n    rss_feeds: [\"hacker-news\"]        # 这些RSS源的内容给我完整显示\n    max_items: 20                     # 最多显示多少条\n```\n\n> 💡 **推送展示与 AI 分析独立控制**：`regions.standalone` 只控制推送中是否显示独立展示区。即使关闭推送展示，只要在 AI 配置中开启 `include_standalone: true`，AI 仍会分析这些平台的完整数据。适合想让 AI 做深度分析、但不想推送消息太长的用户。\n\n\u003C\u002Fdetails>\n\n### 8. 什么时候给我推送？\n\n\u003Cdetails>\n\u003Csummary>👉 点击展开：\u003Cstrong>设置推送时间（调度系统）\u003C\u002Fstrong>\u003C\u002Fsummary>\n\u003Cbr>\n\n**配置位置：** `config\u002Fconfig.yaml` 的 `schedule` 部分 + `config\u002Ftimeline.yaml`\n\n#### 快速上手\n\n只需在 `config.yaml` 中选一个预设模板，不需要编辑 `timeline.yaml`：\n\n```yaml\nschedule:\n  enabled: true\n  preset: \"morning_evening\"     # 改这里就行\n```\n\n#### 可选预设模板\n\n| 模板名 | 说明 | 推送行为 |\n|-------|------|---------|\n| `morning_evening` | 全天增量 + 晚间汇总（推荐） | 全天有新增就推 + 19:00-21:00 晚间当日汇总 |\n| `always_on` | 全天候监控 | 全天有新增就推送，不划分时间段 |\n| `office_hours` | 办公时间 | 工作日三段式（到岗速览→午间热点→收工汇总），周末增量自由推 |\n| `night_owl` | 夜猫子 | 午后速览 + 深夜全天汇总（22:00-01:00 跨午夜） |\n| `custom` | 完全自定义 | 编辑 `timeline.yaml` 底部的 custom 段 |\n\n#### 完全自定义\n\n如果预设模板都不满足需求，可以编辑 `config\u002Ftimeline.yaml` 底部的 `custom` 段，自由定义时间段、日计划和周映射。详见 `timeline.yaml` 文件内的注释说明。\n\n#### 重要提示\n\n> ⚠️ **从旧版本升级的用户注意：**\n> - v6.0.0 移除了旧的 `notification.push_window` 和 `ai_analysis.analysis_window` 配置\n> - 请改用新的 `schedule` + `timeline.yaml` 调度系统\n> - 旧的\"每天推送一次\"可用 `morning_evening` 预设替代\n> - 旧的\"工作时间推送\"可用 `office_hours` 预设替代\n\n> ⚠️ **GitHub Actions 用户注意：**\n> - GitHub Actions 执行时间不稳定，可能有 ±15 分钟的偏差\n> - 时间段范围建议至少留足 **2 小时**\n> - 如果想要精准的定时推送，建议使用 **Docker 部署**在个人服务器上\n\n\u003C\u002Fdetails>\n\n### 9. 多久运行一次？\n\n\u003Cdetails>\n\u003Csummary>👉 点击展开：\u003Cstrong>设置自动运行频率\u003C\u002Fstrong>\u003C\u002Fsummary>\n\u003Cbr>\n\n**配置位置：** `.github\u002Fworkflows\u002Fcrawler.yml` 的 `schedule` 部分\n\n```yaml\non:\n  schedule:\n    - cron: \"0 * * * *\"  # 每小时运行一次\n```\n\n#### 怎么修改运行频率？\n\nGitHub Actions 使用一种叫 \"Cron\" 的时间格式，不需要深入理解，直接复制下面的代码替换即可。\n\n**配置位置：** `.github\u002Fworkflows\u002Fcrawler.yml` 文件中的 `schedule` 部分\n\n| 我想要... | 复制这行代码 | 说明 |\n|-----------|------------|------|\n| **每小时一次** | `- cron: \"0 * * * *\"` | **默认配置**，第 0 分钟运行 |\n| **每 30 分钟** | `- cron: \"*\u002F30 * * * *\"` | 每隔 30 分钟运行一次 |\n| **每天早 8 点** | `- cron: \"0 0 * * *\"` | ⚠️ 写 `0` 是因为 UTC 时间 (0点) = 北京时间 (8点) |\n| **工作时间每半小时** | `- cron: \"*\u002F30 0-14 * * *\"` | 对应北京时间 8:00 - 22:00 |\n| **一日三餐点** | `- cron: \"0 0,6,12 * * *\"` | 对应北京时间 8:00、14:00、20:00 |\n\n#### ⚠️ 两个重要提醒\n\n1. **时差问题**：GitHub 的服务器在国外，用的是 UTC 时间。\n   - **简单的算术题**：你想设定的北京时间 **减去 8 小时** = 你要填的时间。\n   - *例子：想让它北京时间 20:00 运行，设置里要填 12:00*\n\n2. **不要太频繁**：建议间隔不要少于 30 分钟。\n   - GitHub 免费资源有限，跑得太勤可能会被官方限制账号。\n   - 而且 Actions 启动本身就有几分钟延迟，太精确的控制没有意义。\n\n#### 手把手修改步骤\n\n1. 在你的 GitHub 仓库中，找到 `.github\u002Fworkflows\u002Fcrawler.yml` 文件\n2. 点击右上角的 ✏️ (Edit) 按钮\n3. 找到 `cron: \"...\"` 那一行，把引号里的内容换成上面的\"代码\"\n4. 点击右上角的绿色 **Commit changes** 按钮保存\n\n\u003C\u002Fdetails>\n\n### 10. 推送到多个群\u002F设备\n\n\u003Cdetails>\n\u003Csummary>👉 点击展开：\u003Cstrong>同时推送给多个接收者\u003C\u002Fstrong>\u003C\u002Fsummary>\n\n> ### ⚠️ **安全第一**\n> **不要在 `config.yaml` 里直接写密码\u002FToken！**\n> 如果你把包含密码的文件上传到 GitHub，全世界都能看到。\n>\n> **正确做法**：\n> - **GitHub Actions 用户**：去 Settings -> Secrets 里添加\n> - **Docker 用户**：写在 `.env` 文件里（这个文件不会被上传）\n\n#### 怎么同时推送到多个地方？\n\n很简单，在配置时用分号 `;` 把多个地址隔开就行了。\n\n**举个例子**：\n假设你有两个飞书群，想同时收到推送：\n- 群1地址：`https:\u002F\u002F...\u002Fwebhook\u002Faaa`\n- 群2地址：`https:\u002F\u002F...\u002Fwebhook\u002Fbbb`\n\n配置时填写：\n`https:\u002F\u002F...\u002Fwebhook\u002Faaa;https:\u002F\u002F...\u002Fwebhook\u002Fbbb`\n\n#### 支持多账号的平台\n\n| 平台 | 配置方法 | 注意事项 |\n|------|---------|----------|\n| **飞书\u002F钉钉\u002F企微** | 用 `;` 分隔多个 Webhook URL | 最简单，直接串起来就行 |\n| **Bark (iOS)** | 用 `;` 分隔多个 Key URL | 推送到多台 iPhone |\n| **Telegram** | Token 和 ChatID 都要用 `;` 分隔 | ⚠️ **注意顺序要对应**：\u003Cbr>Token1 对应 ChatID1\u003Cbr>Token2 对应 ChatID2 |\n| **ntfy** | Topic 和 Token 都要用 `;` 分隔 | 如果某个Topic不需要Token，留空即可：\u003Cbr>`token1;;token3` (中间那个是空的) |\n\n#### 常用配置示例 (GitHub Secrets \u002F .env)\n\n```bash\n# 飞书发给 3 个群\nFEISHU_WEBHOOK_URL=https:\u002F\u002Fhook1...;https:\u002F\u002Fhook2...;https:\u002F\u002Fhook3...\n\n# 钉钉发给 2 个群\nDINGTALK_WEBHOOK_URL=https:\u002F\u002Foapi...;https:\u002F\u002Foapi...\n\n# Telegram 发给 2 个人 (注意一一对应)\nTELEGRAM_BOT_TOKEN=tokenA;tokenB\nTELEGRAM_CHAT_ID=userA;userB\n```\n\n> **提示**：为了防止滥用，默认限制每个平台最多推送到 3 个账号。如果需要更多，可以修改 `MAX_ACCOUNTS_PER_CHANNEL` 配置。\n\n\u003C\u002Fdetails>\n\n### 11. 数据保存在哪里？\n\n\u003Cdetails id=\"storage-config\">\n\u003Csummary>👉 点击展开：\u003Cstrong>选择数据存储位置\u003C\u002Fstrong>\u003C\u002Fsummary>\n\u003Cbr>\n\n#### 数据会存在哪里？\n\n系统会自动帮你选择最合适的地方，你通常不需要操心：\n\n| 你的运行环境 | 数据存在哪 | 说明 |\n|-------------|-----------|------|\n| **Docker \u002F 本地运行** | **本地硬盘** | 存在项目目录下的 `output\u002F` 文件夹里，随时可以查看。 |\n| **GitHub Actions** | **云端存储** | 因为 GitHub Actions 运行完就会销毁环境，所以必须配置云存储（例如 Cloudflare R2）。 |\n\n#### 怎么配置云存储？(GitHub Actions 用户必看)\n\n如果你是用 GitHub Actions 运行，你需要一个\"云端硬盘\"来存数据。例如使用 Cloudflare R2（因为有免费额度）。\n\n**在 GitHub Secrets 里添加这 5 个变量：**\n\n| 变量名 | 填什么 |\n|-------|-------|\n| `STORAGE_BACKEND` | `remote` |\n| `S3_BUCKET_NAME` | 你的存储桶名字 |\n| `S3_ACCESS_KEY_ID` | 你的 Access Key |\n| `S3_SECRET_ACCESS_KEY` | 你的 Secret Key |\n| `S3_ENDPOINT_URL` | 你的 R2 接口地址 |\n\n> 💡 **详细教程**：怎么申请 R2？请看 [快速开始 - 远程存储配置](#-快速开始)\n\n#### 数据会保存多久？\n\n默认情况下，我们不会自动删除你的数据。但如果你觉得数据太多占空间，可以设置\"自动清理\"。\n\n**配置位置**：`config\u002Fconfig.yaml`\n\n```yaml\nstorage:\n  local:\n    retention_days: 30    # 本地数据只保留 30 天 (0 表示永久)\n  remote:\n    retention_days: 30    # 云端数据只保留 30 天\n```\n\n#### 推送时间不对？(时区设置)\n\n如果你身在海外，或者发现推送时间跟你的本地时间对不上，可以修改时区。\n\n**配置位置**：`config\u002Fconfig.yaml`\n\n```yaml\napp:\n  timezone: \"Asia\u002FShanghai\"  # 默认是中国时间\n```\n- 比如你在美国洛杉矶，改成：`America\u002FLos_Angeles`\n- 比如你在英国伦敦，改成：`Europe\u002FLondon`\n\n\u003C\u002Fdetails>\n\n### 12. 让 AI 帮我分析热点\n\n\u003Cdetails id=\"ai-analysis-config\">\n\u003Csummary>👉 点击展开：\u003Cstrong>开启 AI 智能分析功能\u003C\u002Fstrong>\u003C\u002Fsummary>\n\u003Cbr>\n\n#### AI 能帮我做什么？\n\n开启这个功能后，AI 会像一个专业的分析师，在推送每一批新闻时：\n1. **自动阅读**：阅读所有匹配到的热点新闻\n2. **深度思考**：分析原本孤立的新闻之间的关联\n3. **撰写报告**：在推送消息的末尾，附上一份简短深刻的\"洞察报告\"\n\n**包含内容**：热点趋势总结、舆论风向判断、跨平台关联分析、潜在影响评估等。\n\n#### 怎么开启 AI 分析？\n\n最简单的方法是通过环境变量配置（推荐 GitHub Secrets 或 .env）。\n\n**必需的配置项**：\n\n| 变量名 | 填什么 | 说明 |\n|-------|-------|------|\n| `AI_ANALYSIS_ENABLED` | `true` | 开启开关 |\n| `AI_API_KEY` | `sk-xxxxxx` | 你的 API Key |\n| `AI_MODEL` | `deepseek\u002Fdeepseek-chat` | 模型标识（格式：`provider\u002Fmodel`） |\n\n**支持的 AI 提供商**（基于 LiteLLM，支持 100+ 提供商）：\n\n| 提供商 | AI_MODEL 填什么 | 说明 |\n|-------|----------------|------|\n| **DeepSeek** (推荐) | `deepseek\u002Fdeepseek-chat` | 性价比极高，适合高频分析 |\n| **OpenAI** | `openai\u002Fgpt-4o`\u003Cbr>`openai\u002Fgpt-4o-mini` | GPT-4o 系列 |\n| **Google Gemini** | `gemini\u002Fgemini-1.5-flash`\u003Cbr>`gemini\u002Fgemini-1.5-pro` | Gemini 系列 |\n| **自定义 API** | 任意格式 | 配合 `AI_API_BASE` 使用 |\n\n> 💡 **新特性**：现已基于 [LiteLLM](https:\u002F\u002Fgithub.com\u002FBerriAI\u002Flitellm) 统一接口，支持 100+ AI 提供商，配置更简单、错误处理更完善。\n\n**可选配置项**：\n\n| 变量名 | 默认值 | 说明 |\n|-------|-------|------|\n| `AI_API_BASE` | (自动) | 自定义 API 地址（如 OneAPI、本地模型） |\n| `AI_TEMPERATURE` | `1.0` | 采样温度（0-2，越高越随机） |\n| `AI_MAX_TOKENS` | `5000` | 最大生成 token 数 |\n| `AI_TIMEOUT` | `120` | 请求超时时间（秒） |\n| `AI_NUM_RETRIES` | `2` | 失败重试次数 |\n\n#### 进阶玩法：AI 翻译\n\n如果你关注了国外的 RSS 源（比如 Hacker News），AI 可以帮你把内容翻译成中文推送。\n\n**配置位置**：`config\u002Fconfig.yaml`\n\n```yaml\nai_translation:\n  enabled: true          # 开启翻译\n  language: \"Chinese\"    # 翻译成什么语言 (Chinese, English, Japanese...)\n```\n\n#### 进阶玩法：自定义 AI \"人设\"\n\n觉得 AI 说话太官方？你可以修改它的提示词，让它变成你喜欢的风格（比如\"毒舌评论员\"、\"资深投资顾问\"）。\n\n- **修改文件**：`config\u002Fai_analysis_prompt.txt`\n- **修改方法**：直接用记事本打开编辑，告诉 AI 你想要什么样的分析风格。\n\n\u003C\u002Fdetails>\n\n\u003Cbr>\n\n## ✨ AI 智能分析\n\nTrendRadar v3.0.0 新增了基于 **MCP (Model Context Protocol)** 的 AI 分析功能，让你可以通过自然语言与新闻数据对话，进行深度分析。\n\n\n### ⚠️ 使用前必读\n\n\n**重要提示：AI 功能需要本地新闻数据支持**\n\nAI 分析功能**不是**直接查询网络实时数据，而是分析你**本地已积累的新闻数据**（存储在 `output` 文件夹中）\n\n\n#### 使用说明：\n\n1. **项目自带测试数据**：`output` 目录默认包含 **2025-12-21～2025-12-27** 一周的热榜新闻数据，可用于快速体验 AI 功能\n\n2. **查询限制**：\n   - ✅ 只能查询已有日期范围内的数据（12月21-27日，共7天）\n   - ❌ 无法查询实时新闻或未来日期\n\n3. **获取最新数据**：\n   - 测试数据仅供快速体验，**建议自行部署项目**获取实时数据\n   - 按照 [快速开始](#-快速开始) 部署运行项目\n   - 等待至少 1 天积累新闻数据后，即可查询最新热点\n\n\n### 1. 快速部署\n\nCherry Studio 提供 GUI 配置界面，5 分钟快速部署，复杂的部分是一键安装的。\n\n**图文部署教程**：现已更新到我的[公众号](#-支持项目)，回复 \"mcp\" 即可\n\n**详细部署教程**：[README-Cherry-Studio.md](README-Cherry-Studio.md)\n\n**部署模式说明**：\n- **STDIO 模式（推荐）**：一次配置后续无需重复配置，**图文部署教程**中仅以此模式的配置为例。\n- **HTTP 模式（备选）**：如果 STDIO 模式配置遇到问题，可使用 HTTP 模式。此模式的配置方式与 STDIO 基本一致，但复制粘贴的内容就一行，不易出错。唯一需要注意的是每次使用前都需要手动启动一下服务。详细请参考 [README-Cherry-Studio.md](README-Cherry-Studio.md) 底部的 HTTP 模式说明。\n\n### 2. 学习与 AI 对话的姿势\n\n**详细对话教程**：[README-MCP-FAQ.md](README-MCP-FAQ.md)\n\n> 💡 **提示**：实际不建议一次性问多个问题。如果你选择的 AI 模型连下图的按顺序调用都无法做到，建议换一个。\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsansan0_TrendRadar_readme_985370d459ca.png\" alt=\"mcp 使用效果图\" width=\"600\">\n\n\u003Cbr>\n\n## 🔌 MCP 客户端\n\nTrendRadar MCP 服务支持标准的 Model Context Protocol (MCP) 协议，可以接入各种支持 MCP 的 AI 客户端进行智能分析。\n\n### 支持的客户端\n\n**注意事项**：\n- 将 `\u002Fpath\u002Fto\u002FTrendRadar` 替换为你的项目实际路径\n- Windows 路径使用双反斜杠：`C:\\\\Users\\\\YourName\\\\TrendRadar`\n- 保存后记得重启\n\n\u003Cdetails>\n\u003Csummary>👉 点击展开：\u003Cb>Cursor\u003C\u002Fb>\u003C\u002Fsummary>\n\n#### 方式一：HTTP 模式\n\n1. **启动 HTTP 服务**：\n   ```bash\n   # Windows\n   start-http.bat\n   \n   # Mac\u002FLinux\n   .\u002Fstart-http.sh\n   ```\n\n2. **配置 Cursor**：\n\n   **项目级配置**（推荐）：\n   在项目根目录创建 `.cursor\u002Fmcp.json`：\n   ```json\n   {\n     \"mcpServers\": {\n       \"trendradar\": {\n         \"url\": \"http:\u002F\u002Flocalhost:3333\u002Fmcp\",\n         \"description\": \"TrendRadar 新闻热点聚合分析\"\n       }\n     }\n   }\n   ```\n\n   **全局配置**：\n   在用户目录创建 `~\u002F.cursor\u002Fmcp.json`（同样内容）\n\n3. **使用步骤**：\n   - 保存配置文件后重启 Cursor\n   - 在聊天界面的 \"Available Tools\" 中查看已连接的工具\n   - 开始使用：`搜索今天的\"AI\"相关新闻`\n\n#### 方式二：STDIO 模式（推荐）\n\n创建 `.cursor\u002Fmcp.json`：\n```json\n{\n  \"mcpServers\": {\n    \"trendradar\": {\n      \"command\": \"uv\",\n      \"args\": [\n        \"--directory\",\n        \"\u002Fpath\u002Fto\u002FTrendRadar\",\n        \"run\",\n        \"python\",\n        \"-m\",\n        \"mcp_server.server\"\n      ]\n    }\n  }\n}\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>👉 点击展开：\u003Cb>VSCode (Cline\u002FContinue)\u003C\u002Fb>\u003C\u002Fsummary>\n\n#### Cline 配置\n\n在 Cline 的 MCP 设置中添加：\n\n**HTTP 模式**：\n```json\n{\n  \"trendradar\": {\n    \"url\": \"http:\u002F\u002Flocalhost:3333\u002Fmcp\",\n    \"type\": \"streamableHttp\",\n    \"autoApprove\": [],\n    \"disabled\": false\n  }\n}\n```\n\n**STDIO 模式**（推荐）：\n```json\n{\n  \"trendradar\": {\n    \"command\": \"uv\",\n    \"args\": [\n      \"--directory\",\n      \"\u002Fpath\u002Fto\u002FTrendRadar\",\n      \"run\",\n      \"python\",\n      \"-m\",\n      \"mcp_server.server\"\n    ],\n    \"type\": \"stdio\",\n    \"disabled\": false\n  }\n}\n```\n\n#### Continue 配置\n\n编辑 `~\u002F.continue\u002Fconfig.json`：\n```json\n{\n  \"experimental\": {\n    \"modelContextProtocolServers\": [\n      {\n        \"transport\": {\n          \"type\": \"stdio\",\n          \"command\": \"uv\",\n          \"args\": [\n            \"--directory\",\n            \"\u002Fpath\u002Fto\u002FTrendRadar\",\n            \"run\",\n            \"python\",\n            \"-m\",\n            \"mcp_server.server\"\n          ]\n        }\n      }\n    ]\n  }\n}\n```\n\n**使用示例**：\n```\n分析最近7天\"特斯拉\"的热度变化趋势\n生成今天的热点摘要报告\n搜索\"比特币\"相关新闻并分析情感倾向\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>👉 点击展开：\u003Cb>MCP Inspector\u003C\u002Fb>（调试工具）\u003C\u002Fsummary>\n\u003Cbr>\n\nMCP Inspector 是官方调试工具，用于测试 MCP 连接：\n\n#### 使用步骤\n\n1. **启动 TrendRadar HTTP 服务**：\n   ```bash\n   # Windows\n   start-http.bat\n   \n   # Mac\u002FLinux\n   .\u002Fstart-http.sh\n   ```\n\n2. **启动 MCP Inspector**：\n   ```bash\n   npx @modelcontextprotocol\u002Finspector\n   ```\n\n3. **在浏览器中连接**：\n   - 访问：`http:\u002F\u002Flocalhost:3333\u002Fmcp`\n   - 测试 \"Ping Server\" 功能验证连接\n   - 检查 \"List Tools\" 是否返回 17 个工具：\n     - 基础查询：get_latest_news, get_news_by_date, get_trending_topics\n     - 智能检索：search_news, find_related_news\n     - 高级分析：analyze_topic_trend, analyze_data_insights, analyze_sentiment, aggregate_news, compare_periods, generate_summary_report\n     - RSS 查询：get_latest_rss, search_rss, get_rss_feeds_status\n     - 系统管理：get_current_config, get_system_status, resolve_date_range\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>👉 点击展开：\u003Cb>其他支持 MCP 的客户端\u003C\u002Fb>\u003C\u002Fsummary>\n\u003Cbr>\n\n任何支持 Model Context Protocol 的客户端都可以连接 TrendRadar：\n\n#### HTTP 模式\n\n**服务地址**：`http:\u002F\u002Flocalhost:3333\u002Fmcp`\n\n**基本配置模板**：\n```json\n{\n  \"name\": \"trendradar\",\n  \"url\": \"http:\u002F\u002Flocalhost:3333\u002Fmcp\",\n  \"type\": \"http\",\n  \"description\": \"新闻热点聚合分析\"\n}\n```\n\n#### STDIO 模式（推荐）\n\n**基本配置模板**：\n```json\n{\n  \"name\": \"trendradar\",\n  \"command\": \"uv\",\n  \"args\": [\n    \"--directory\",\n    \"\u002Fpath\u002Fto\u002FTrendRadar\",\n    \"run\",\n    \"python\",\n    \"-m\",\n    \"mcp_server.server\"\n  ],\n  \"type\": \"stdio\"\n}\n```\n\n**注意事项**：\n- 替换 `\u002Fpath\u002Fto\u002FTrendRadar` 为实际项目路径\n- Windows 路径使用反斜杠转义：`C:\\\\Users\\\\...`\n- 确保已完成项目依赖安装（运行过 setup 脚本）\n\n\u003C\u002Fdetails>\n\n\n\n### 常见问题\n\n\u003Cdetails>\n\u003Csummary>👉 点击展开：\u003Cb>Q1: HTTP 服务无法启动？\u003C\u002Fb>\u003C\u002Fsummary>\n\u003Cbr>\n\n**检查步骤**：\n1. 确认端口 3333 未被占用：\n   ```bash\n   # Windows\n   netstat -ano | findstr :3333\n   \n   # Mac\u002FLinux\n   lsof -i :3333\n   ```\n\n2. 检查项目依赖是否安装：\n   ```bash\n   # 重新运行安装脚本\n   # Windows: setup-windows.bat 或者 setup-windows-en.bat\n   # Mac\u002FLinux: .\u002Fsetup-mac.sh\n   ```\n\n3. 查看详细错误日志：\n   ```bash\n   uv run python -m mcp_server.server --transport http --port 3333\n   ```\n4. 尝试自定义端口:\n   ```bash\n   uv run python -m mcp_server.server --transport http --port 33333\n   ```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>👉 点击展开：\u003Cb>Q2: 客户端无法连接到 MCP 服务？\u003C\u002Fb>\u003C\u002Fsummary>\n\u003Cbr>\n\n**解决方案**：\n\n1. **STDIO 模式**：\n   - 确认 UV 路径正确（运行 `which uv` 或 `where uv`）\n   - 确认项目路径正确且无中文字符\n   - 查看客户端错误日志\n\n2. **HTTP 模式**：\n   - 确认服务已启动（访问 `http:\u002F\u002Flocalhost:3333\u002Fmcp`）\n   - 检查防火墙设置\n   - 尝试使用 127.0.0.1 替代 localhost\n\n3. **通用检查**：\n   - 重启客户端应用\n   - 查看 MCP 服务日志\n   - 使用 MCP Inspector 测试连接\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>👉 点击展开：\u003Cb>Q3: 工具调用失败或返回错误？\u003C\u002Fb>\u003C\u002Fsummary>\n\u003Cbr>\n\n**可能原因**：\n\n1. **数据不存在**：\n   - 确认已运行过爬虫（有 output 目录数据）\n   - 检查查询日期范围是否有数据\n   - 查看 output 目录的可用日期\n\n2. **参数错误**：\n   - 检查日期格式：`YYYY-MM-DD`\n   - 确认平台 ID 正确：`zhihu`, `weibo` 等\n   - 查看工具文档中的参数说明\n\n3. **配置问题**：\n   - 确认 `config\u002Fconfig.yaml` 存在\n   - 确认 `config\u002Ffrequency_words.txt` 存在\n   - 检查配置文件格式是否正确\n\n\u003C\u002Fdetails>\n\n\u003Cbr>\n\n## 📚 项目相关\n\n> **4 篇文章**：\n\n- [可在该文章下方留言，方便项目作者用手机答疑](https:\u002F\u002Fmp.weixin.qq.com\u002Fs\u002FKYEPfTPVzZNWFclZh4am_g)\n- [2个月破 1000 star，我的GitHub项目推广实战经验](https:\u002F\u002Fmp.weixin.qq.com\u002Fs\u002Fjzn0vLiQFX408opcfpPPxQ)\n- [github fork 运行本项目的注意事项 ](https:\u002F\u002Fmp.weixin.qq.com\u002Fs\u002FC8evK-U7onG1sTTdwdW2zg)\n- [基于本项目，如何开展公众号或者新闻资讯类文章写作](https:\u002F\u002Fmp.weixin.qq.com\u002Fs\u002F8ghyfDAtQZjLrnWTQabYOQ)\n\n>**AI 开发**：\n- 如果你有小众需求，完全可以基于我的项目自行开发，零编程基础的也可以试试\n- 我所有的开源项目或多或少都使用了自己写的**AI辅助软件**来提升开发效率，这款工具已开源\n- **核心功能**：迅速筛选项目代码喂给AI，你只需要补充个人需求即可\n- **项目地址**：https:\u002F\u002Fgithub.com\u002Fsansan0\u002Fai-code-context-helper\n\n### 其余项目\n\n> 📍 毛主席足迹地图 - 交互式动态展示1893-1976年完整轨迹。欢迎诸位同志贡献数据\n\n- https:\u002F\u002Fgithub.com\u002Fsansan0\u002Fmao-map\n\n> 哔哩哔哩(bilibili)评论区数据可视化分析软件\n\n- https:\u002F\u002Fgithub.com\u002Fsansan0\u002Fbilibili-comment-analyzer\n\n\n[![Star History Chart](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsansan0_TrendRadar_readme_ceb19cc67862.png)](https:\u002F\u002Fwww.star-history.com\u002F#sansan0\u002FTrendRadar&Date)\n\n\u003Cbr>\n\n## 📄 许可证\n\nGPL-3.0 License\n\n---\n\n\u003Cdiv align=\"center\">\n\n[🔝 回到顶部](#trendradar)\n\n\u003C\u002Fdiv>\n","\u003Cdiv align=\"center\" id=\"trendradar\">\n\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fsansan0\u002FTrendRadar\" title=\"TrendRadar\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsansan0_TrendRadar_readme_928f64d22b66.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\u002Foss.gittoolsai.com\u002Fimages\u002Fsansan0_TrendRadar_readme_4a68feb902da.png\" 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.1-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\u002Foss.gittoolsai.com\u002Fimages\u002Fsansan0_TrendRadar_readme_2ae0a88d9807.jpg\" width=\"240\" alt=\"微信赞赏\"> | \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsansan0_TrendRadar_readme_ed4f20ab8e35.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=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsansan0_TrendRadar_readme_7bd157d40877.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年3月12日 - 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年2月9日 - v6.0.0\n\n> **重大变更**：配置文件升级（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 也可独立分析UAGE 数据\n  - 支持热榜平台和 RSS 源，含排名\u002F时间\u002F轨迹数据\n  - 轨迹分析与 `include_rank_timeline` 联动：开启时利用轨迹数据做深度趋势分析，关闭时基于排名做简要判断\n  - 新增 `standalone_summaries` JSON 字段（独立源点速览），所有推送渠道均已适配渲染\n\n\n### 2026年1月28日 - v5.5.0\n\n> 和 mcp 功能一样, 这个小工具我也不新开一个仓库维护了, 反正纯前端, 都搁一起吧\n\n- 增加 trendradar 的可视化配置编辑器\n\n\n### 2026年2月2日 - 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年1月10日 - 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年1月23日 - v5.4.0\n\n- 增加 AI 分析模式的独立控制功能，可选 follow_report | daily | current | incremental \n- 新增 AI 分析时间窗口控制，支持自定义运行段及每日频次限制\n- 增加配置文件版本管理功能\n- 修复若干bug\n\n\n### 2026年1月19日 - 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年1月17日 - 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年1月10日 - v5.0.0\n\n> **开发小插曲**：\n> 致敬那个陪伴我两年多、却在刚续费后反手弹出 `\"This organization has been disabled\"` 的某 C 厂模型\n\n**✨ 推送内容\"五大板块\"重构**\n\n本次更新对推送消息进行了区域化重构，现在推送内容清晰地划分为五大核心板块：\n\n1.  **📊 热榜新闻**：根据你的关键词精准筛选后的全网热点聚合。\n2.  **📰 RSS 订阅**：你的个性化订阅源内容，支持按关键词分组。\n3.  **🆕 本次新增**：实时捕捉自上次运行以来的全新热点（带 🆕 标记）。\n4.  **📋 独立展示区**：指定平台的UAGE 或 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- **UAGE 展示**：指定平台的UAGE 单独展示，不受关键词过滤影响\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年1月2日 - 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年12月30日 - 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年1月1日 - v4.6.0\n\n- **修复 RSS HTML 显示**：将 RSS 内容合并到热榜 HTML 页面，按源分组显示\n- **新增 display_mode 配置**：支持 `keyword`（按关键词分组）和 `platform`（按平台分组）两种显示模式\n\n\n### 2025年12月30日 - 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年12月26日 - 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年12月20日 - v4.0.3\n\n- 新增 URL 标准化功能，解决微博等平台因动态参数（如 `band_rank`）导致的重复推送问题\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年9月17日 - v2.2.0\n\n- 新增一键保存新闻图片功能，让你轻松分享关注的热点\n\n**使用说明**：\n- 适用场景：当你按照教程开启了网页版功能后(GitHub Pages)\n- 使用方法：用手机或电脑打开该网页链接，点击页面顶部的\"保存为图片\"按钮\n- 实际效果：系统会自动将当前的新闻报告制作成一张精美图片，保存到你的手机相册或电脑桌面\n- 分享便利：你可以直接把这张图片发给朋友、发到朋友圈，或分享到工作群，让别人也能看到你发现的重要资讯\n\n### 2025年9月13日 - v2.1.2\n\n- 解决钉钉的推送容量限制导致的新闻推送失败问题(采用分批推送)\n\n### 2025年9月4日 - v2.1.1\n\n- 修复docker在某些架构中无法正常运行的问题\n- 正式发布官方 Docker 镜像 wantcat\u002Ftrendradar，支持多架构\n- 优化 Docker 部署流程，无需本地构建即可快速使用\n\n### 2025年8月30日 - v2.1.0\n\n**核心改进**：\n- **推送逻辑优化**：从\"每次执行都推送\"改为\"时间窗口内可控推送\"\n- **时间窗口控制**：可设定推送时间范围，避免非工作时间打扰\n- **推送频率可选**：时间段内支持单次推送或多次推送\n\n**更新提示**：\n- 本功能默认关闭，需手动在 config.yaml 中开启推送时间窗口控制\n- 升级需同时更新 main.py 和 config.yaml 两个文件\n\n### 2025年8月27日 - v2.0.4\n\n- 本次版本不是功能修复，而是重要提醒\n- 请务必妥善保管好 webhooks，不要公开，不要公开，不要公开\n- 如果你以 fork 的方式将本项目部署在 GitHub 上，请将 webhooks 填入 GitHub Secret，而非 config.yaml\n- 如果你已经暴露了 webhooks 或将其填入了 config.yaml，建议删除后重新生成\n\n### 2025年8月6日 - v2.0.3\n\n- 优化 github page 的网页版效果，方便移动端使用\n\n### 2025年7月28日 - v2.0.2\n\n- 重构代码\n- 解决版本号容易被遗漏修改的问题\n\n### 2025年7月27日 - 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年7月17日 - 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年7月9日 - v1.4.1\n\n**功能新增**：增加增量推送(在 main.py 头部配置 FOCUS_NEW_ONLY)，该开关只关心新话题而非持续热度，只在有新内容时才发通知。\n\n**修复问题**: 某些情况下，由于新闻本身含有特殊符号导致的偶发性排版异常。\n\n### 2025年6月23日 - 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年6月21日 - 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年6月19日 - v1.2.0\n\n> 感谢 claude research 整理的各平台 api ,让我快速完成各平台适配（虽然代码更多冗余了~\n\n1. 支持 telegram ，企业微信，钉钉推送渠道, 支持多渠道配置和同时推送\n\n### 2025年6月18日 - v1.1.0\n\n> **200 star⭐** 了, 继续给大伙儿助兴~近期，在我的\"怂恿\"下，挺多人在我公众号点赞分享推荐助力了我，我都在后台看见了具体账号的鼓励数据，很多都成了天使轮老粉（我玩公众号才一个多月，虽然注册是七八年前的事了哈哈，属于上车早，发车晚），但因为你们没有留言或私信我，所以我也无法一一回应并感谢支持，在此一并谢谢！\n\n1. 重要的更新，加了权重，你现在看到的新闻都是最热点最有关注度的出现在最上面\n2. 更新文档使用，因为近期更新了很多功能，而且之前的使用文档我偷懒写的简单（见下面的 ⚙️ frequency_words.txt 配置完整教程）\n\n### 2025年6月16日 - v1.0.0\n\n1. 增加了一个项目新版本更新提示，默认打开，如要关掉，可以在 main.py 中把 \"FEISHU_SHOW_VERSION_UPDATE\": True 中的 True 改成 False 即可\n\n### 2025年6月13+14日\n\n1. 去掉了兼容代码，之前 fork 的同学，直接复制代码会在当天显示异常（第二天会恢复正常）\n2. feishu 和 html 底部增加一个新增新闻显示\n\n### 2025年6月9日 - v0.9.9\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年6月2日 - v0.8.8\n\n1. **网页**和**飞书消息**支持手机直接跳转详情新闻\n2. 优化显示效果 + 1\n\n### 2025年5月26日 - v0.7.7\n\n1. 飞书消息显示效果优化\n\n\u003Ctable>\n\u003Ctr>\n\u003Ctd align=\"center\">\n优化前\u003Cbr>\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsansan0_TrendRadar_readme_a84fc73f948b.jpg\" alt=\"飞书消息界面 - 优化前\" width=\"400\"\u002F>\n\u003C\u002Ftd>\n\u003Ctd align=\"center\">\n优化后\u003Cbr>\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsansan0_TrendRadar_readme_9ee061ddff7a.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=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsansan0_TrendRadar_readme_4d02c89e688f.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\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为指定平台提供UAGE展示，不受关键词过滤影响\n\n- **UAGE**：指定平台的热榜完整展示，适合想看完整排名的用户\n- **RSS 独立展示**：RSS 源内容可完整展示，不受关键词限制\n- **AI 深度分析**：可独立开启 AI 对UAGE的趋势分析，无需在推送中展示\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| ![网页效果](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsansan0_TrendRadar_readme_3307ed963ba1.png) | ![飞书推送效果](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsansan0_TrendRadar_readme_cfe4dbafdf58.jpg) | ![AI分析推送效果](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsansan0_TrendRadar_readme_793f9ec6a17e.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=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsansan0_TrendRadar_readme_42bc52ff6c92.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=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsansan0_TrendRadar_readme_45671f7c6ba0.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   ![飞书机器人配置示例](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsansan0_TrendRadar_readme_4fe9da679917.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   ![飞书机器人配置示例](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsansan0_TrendRadar_readme_4fe9da679917.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 配置（⚠️ 名称必须严格一致）：**\n   - **名称**：`DINGTALK_WEBHOOK_URL`（请复制粘贴此名称，不要手打）\n   - **值**：你的钉钉机器人 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 配置（⚠️ 名称必须严格一致）：**\n   - **名称**：`TELEGRAM_BOT_TOKEN`（请复制粘贴此名称，不要手打）\n   - **值**：你的 Telegram Bot Token\n\n   - **名称**：`TELEGRAM_CHAT_ID`（请复制粘贴此名称，不要手打）\n   - **值**：你的 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 配置（⚠️ 名称必须严格一致）：**\n   - **名称**：`EMAIL_FROM`（请复制粘贴此名称，不要手打）\n   - **值**：发件人邮箱地址\n\n   - **名称**：`EMAIL_PASSWORD`（请复制粘贴此名称，不要手打）\n   - **值**：邮箱密码或授权码\n\n   - **名称**：`EMAIL_TO`（请复制粘贴此名称，不要手打）\n   - **值**：收件人邮箱地址（多个收件人用英文逗号分隔，也可以和 EMAIL_FROM 一样，自己发送给自己）\n\n   - **名称**：`EMAIL_SMTP_SERVER`（可选配置，请复制粘贴此名称）\n   - **值**：SMTP服务器地址（可留空，系统会自动识别）\n\n   - **名称**：`EMAIL_SMTP_PORT`（可选配置，请复制粘贴此名称）\n   - **值**：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（⚠️ 名称必须严格一致）**：\n      - **名称**：`NTFY_TOPIC`（请复制粘贴此名称，不要手打）\n      - **值**：填写你刚才订阅的主题名称\n\n      - **名称**：`NTFY_SERVER_URL`（可选配置，请复制粘贴此名称）\n      - **值**：留空（默认使用 ntfy.sh）\n\n      - **名称**：`NTFY_TOKEN`（可选配置，请复制粘贴此名称）\n      - **值**：留空\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\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# 配置\n\u002F(?\u003C![a-z])ai(?![a-z])\u002F  \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(?\u003C![a-z])ai(?![a-z])\u002F  \n\n# 中文关键词\n人工智能\n\n# 混合场景\n\u002F(?\u003C![a-z])ai(?![a-z])|人工智能\u002F\n```\n\n- ✅ \"AI is the future and China is developing AI technology\" ← 匹配 \"AI\" 和 \"人工智能\"  \n- ❌ \"The maid cleaned the room and trained her staff on AI\" ← \"training\" 中的 \"ai\" 不匹配  \n\n**注意事项：**  \n1. 正则表达式语法较为复杂，建议先从简单模式开始尝试。  \n2. 对于中英混合场景，可以使用 `|` 进行多选一匹配。  \n3. 测试时可以通过在线正则工具（如 regex101.com）验证匹配效果。  \n\n---\n\n### 7. **显示名称** `=> 备注` - 自定义显示文本（v4.7.0 新增）\n\n默认情况下，机器人会直接展示新闻标题作为推送内容。但有时你可能希望对关键词进行更清晰的分类或标注，这时就可以使用 `=> 备注` 语法：\n\n```txt\n\u002F\\bai\\b\u002F => AI相关  \n华为  \n鸿蒙  \n!车 => 智能汽车  \n```\n\n**作用：** 在推送和HTML页面中显示自定义备注名称，方便快速识别。\n\n**示例场景：**  \n1. **分类标签：**  \n   ```txt\n   \u002F\\bai\\b\u002F => AI相关  \n   \u002F智能\u002F => 智能设备  \n   !广告 => 营销内容  \n   ```\n   - 推送内容：  \n     - \"AI相关：最新AI模型发布\"  \n     - \"智能设备：新款智能手表上市\"  \n     - \"营销内容：新广告上线\"\n\n2. **特定领域聚焦：**  \n   ```txt\n   \u002F\\bai\\b\u002F => AI前沿  \n   \u002F自动驾驶\u002F => 自动驾驶技术  \n   !事故 => 安全问题  \n   ```\n   - 推送内容：  \n     - \"AI前沿：新AI算法突破\"  \n     - \"自动驾驶技术：最新测试进展\"  \n     - \"安全问题：近期自动驾驶事故汇总\"\n\n3. **品牌与产品区分：**  \n   ```txt\n   Huawei => 华为新闻  \n   Apple => 苹果新品  \n   Samsung => 三星动态  \n   ```\n   - 推送内容：  \n     - \"华为新闻：最新旗舰手机发布\"  \n     - \"苹果新品：下一代iPhone设计曝光\"  \n     - \"三星动态：QLED电视新品上市\"\n\n**匹配逻辑：**  \n1. 如果同时存在普通词和备注名称，优先使用备注名称。  \n   - 示例：  \n     ```txt\n     \u002F\\bai\\b\u002F => AI相关  \n     AI  \n     ```\n     - 匹配结果：  \n       - \"AI相关：最新AI模型发布\"\n\n2. 如果没有备注名称，直接使用普通词。  \n   - 示例：  \n     ```txt\n     AI  \n     ```\n     - 匹配结果：  \n       - \"AI：最新技术趋势\"\n\n**使用建议：**  \n1. 对于高频关键词，建议添加备注名称以提高可读性。  \n2. 备注名称应简洁明了，避免过长导致显示不完整。  \n3. 可以结合不同颜色或格式在HTML页面中进一步突出显示。  \n\n---\n\n### 8. **全局配置 vs. 词组内配置**\n\n#### 1. **全局配置**\n- 应用范围：所有关键词组  \n- 优先级：最高  \n- 使用场景：  \n  - 过滤低质内容：震惊、标题党、爆料等  \n  - 过滤营销内容：广告、推广、赞助等  \n  - 过滤特定主题：娱乐、八卦（根据需求）  \n\n#### 2. **词组内配置**\n- 应用范围：特定关键词组  \n- 优先级：低于全局配置  \n- 使用场景：  \n  - 精细化过滤：针对特定主题或领域  \n  - 控制显示数量：限制某组关键词的推送条数  \n\n**总结对比：**  \n| 特性            | 全局配置                     | 词组内配置                  |\n|------------------|------------------------------|-----------------------------|\n| 应用范围         | 所有关键词组                 | 特定关键词组                |\n| 优先级           | 最高                         | 次高                        |\n| 主要用途         | 大范围过滤                   | 精细化控制                  |\n| 示例             | [GLOBAL_FILTER]              | [WORD_GROUPS]               |\n\n**最佳实践：**  \n1. 先设置全局配置过滤低质内容。  \n2. 根据需要再为特定关键词组添加精细化配置。  \n3. 保持配置简洁，避免过度过滤导致遗漏重要信息。\n\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 条        | : 2 条                      | 匹配数量     | 该词组匹配的新闻总数                    |\n| [平台名]      | [百度热搜]                  | 来源平台     | 新闻所属的平台名称                      |\n| 🆕            | 🆕 ChatGPT-5正式发布        | 新增标记     | 本轮抓取中首次出现的热点                |\n| [**数字**]    | [**1**]                     | 高排名       | 排名≤阈值的热搜，红色加粗显示           |\n| [数字]        | [7]                         | 普通排名     | 排名>阈值的热搜，普通显示               |\n| - 时间        | - 09时15分                  | 首次时间     | 该新闻首次被发现的时间                  |\n| [时间~时间]   | [08时30分 ~ 10时45分]       | 持续时间     | 从首次出现到最后出现的时间范围          |\n| (N次)         | (3次)                       | 出现频率     | 在监控期间出现的总次数                  |\n| **新增区域**  | 🆕 **本次新增热点新闻**      | 新话题汇总   | 单独展示本轮新出现的热点话题            |\n\n\u003C\u002Fdetails>\n\n\n### 6. Docker 部署\n\n**镜像说明：**\n\nTrendRadar 提供两个独立的 Docker 镜像，可根据需求选择部署：\n\n| 镜像名称 | 用途 | 说明 |\n|---------|------|------|\n| `wantcat\u002Ftrendradar` | 新闻推送服务 | 定时抓取新闻、推送通知（必选） |\n| `wantcat\u002Ftrendradar-mcp` | AI 分析服务 | MCP 协议支持、AI 对话分析（可选） |\n\n> 💡 **建议**：\n> - 只需要推送功能：仅部署 `wantcat\u002Ftrendradar` 镜像\n> - 需要 AI 分析功能：同时部署两个镜像\n\n\u003Cdetails>\n\u003Csummary>👉 点击展开：\u003Cstrong>Docker 部署完整指南\u003C\u002Fstrong>\u003C\u002Fsummary>\n\u003Cbr>\n\n#### 方式一：使用 docker compose（推荐）\n\n1. **创建项目目录和配置**:\n\n   ```bash\n   # 克隆项目到本地\n   git clone https:\u002F\u002Fgithub.com\u002Fsansan0\u002FTrendRadar.git\n   cd TrendRadar\n   ```\n\n   > 💡 **说明**：Docker 部署需要的关键目录结构如下：\n```\n当前目录\u002F\n├── config\u002F\n│   ├── config.yaml                 # 核心功能配置（必需）\n│   ├── frequency_words.txt         # 关键词配置（必需）\n│   ├── timeline.yaml               # 时间线配置\n│   ├── ai_analysis_prompt.txt      # AI 分析提示词（可选）\n│   ├── ai_translation_prompt.txt   # AI 翻译提示词（可选）\n│   ├── ai_interests.txt            # AI 兴趣过滤配置（可选）\n│   ├── ai_filter\u002F                  # AI 过滤相关提示词\n│   │   ├── prompt.txt\n│   │   ├── extract_prompt.txt\n│   │   └ой update_tags_prompt.txt\n│   └── custom\u002F                     # 用户自定义配置（可选）\n│       ├── ai\u002F                     # 自定义 AI 提示词\n│       └ой keyword\u002F                # 自定义关键词文件\n└oy docker\u002F\n    ├── .env                        # 敏感信息 + Docker 特有配置\n    └oy docker-compose.yml          # Docker Compose 编排文件\n```\n\n2. **配置文件说明**:\n\n   **配置分工原则（v4.6.0 优化）**：\n\n   | 文件 | 用途 | 修改频率 | 说明 |\n   |------|------|---------|------|\n   | `config\u002Fconfig.yaml` | **核心功能配置** | 低 | 报告模式、推送设置、存储格式、推送窗口、AI 分析开关、平台启用等全局行为控制 |\n   | `config\u002Ffrequency_words.txt` | **关键词配置** | 高 | 设置你关心的热点词汇，支持分组、正则、别名等高级语法 |\n   | `config\u002Ftimeline.yaml` | **时间线配置** | 低 | 控制新闻时间线的展示和过滤规则 |\n   | `config\u002Fai_analysis_prompt.txt` | **AI 分析提示词** | 中 | 自定义 AI 分析的角色定义和输出格式（v5.0.0+） |\n   | `config\u002Fai_translation_prompt.txt` | **AI 翻译提示词** | 低 | 自定义 AI 翻译的提示词模板 |\n   | `config\u002Fai_interests.txt` | **AI 兴趣过滤** | 中 | 定义 AI 基于兴趣自动过滤新闻的规则 |\n   | `config\u002Fai_filter\u002F` | **AI 过滤提示词** | 低 | AI 过滤模块的内部提示词（一般无需修改） |\n   | `config\u002Fcustom\u002F` | **用户自定义扩展** | 按需 | `custom\u002Fai\u002F` 放自定义 AI 提示词，`custom\u002Fkeyword\u002F` 放自定义关键词文件 |\n   | `docker\u002F.env` | **敏感信息 + Docker 特有配置** | 低 | webhook URLs、API Key、S3 密钥、定时任务等，**不会被 git 追踪** |\n\n   > 💡 **分工要点**：\n   > - **功能行为** → 改 `config.yaml`（如开启\u002F关闭某个平台、调整推送模式）\n   > - **关注内容** → 改 `frequency_words.txt`（如添加新的关注关键词）\n   > - **AI 输出风格** → 改 `ai_analysis_prompt.txt` 或 `ai_translation_prompt.txt`\n   > - **密钥与凭证** → 改 `docker\u002F.env`（API Key、Webhook URL 等敏感信息统一放这里）\n   > - **个性化扩展** → 使用 `config\u002Fcustom\u002F` 目录，避免直接修改默认配置被升级覆盖\n\n   > 💡 **配置修改生效**：修改 `config.yaml` 后，执行 `docker compose up -d` 重启容器即可生效\n\n   **⚙️ 环境变量覆盖机制（v3.0.5+）**\n\n   `.env` 文件中的环境变量会覆盖 `config.yaml` 中的对应配置：\n\n   | 环境变量 | 对应配置 | 示例值 | 说明 |\n   |---------|---------|-------|------|\n   | `WEBSERVER_PORT` | - | `8080` | Web 服务器端口 |\n   | `FEISHU_WEBHOOK_URL` | `notification.channels.feishu.webhook_url` | `https:\u002F\u002F...` | 飞书 Webhook（多账号用 `;` 分隔） |\n   | `AI_ANALYSIS_ENABLED` | `ai_analysis.enabled` | `true` \u002F `false` | 是否启用 AI 分析（v5.0.0 新增） |\n   | `AI_API_KEY` | `ai.api_key` | `sk-xxx...` | AI API Key（ai_analysis 和 ai_translation 共享） |\n   | `AI_PROVIDER` | `ai.provider` | `deepseek` \u002F `openai` \u002F `gemini` | AI 提供商 |\n   | `S3_*` | `storage.remote.*` | - | 远程存储配置（5 个参数） |\n\n   **配置优先级**：环境变量 > config.yaml\n\n   **使用方法**：\n   - 修改 `.env` 文件，填写需要的配置\n   - 或在 NAS\u002F群晖 Docker 管理界面的\"环境变量\"中直接添加\n   - 重启容器后生效：`docker compose up -d`\n\n\n3. **启动服务**:\n\n   **选项 A：启动所有服务（推送 + AI 分析）**\n   ```bash\n   # 拉取最新镜像\n   docker compose pull\n\n   # 启动所有服务（trendradar + trendradar-mcp）\n   docker compose up -d\n   ```\n\n   **选项 B：仅启动新闻推送服务**\n   ```bash\n   # 只启动 trendradar（定时抓取和推送）\n   docker compose pull trendradar\n   docker compose up -d trendradar\n   ```\n\n   **选项 C：仅启动 MCP AI 分析服务**\n   ```bash\n   # 只启动 trendradar-mcp（提供 AI 分析接口）\n   docker compose pull trendradar-mcp\n   docker compose up -d trendradar-mcp\n   ```\n\n   > 💡 **提示**：\n   > - 大多数用户只需启动 `trendradar` 即可实现新闻推送功能\n   > - 只有需要使用 ChatGPT\u002FGemini 进行 AI 对话分析时，才需启动 `trendradar-mcp`\n   > - 两个服务相互独立，可根据需求灵活组合\n\n4. **查看运行状态**:\n   ```bash\n   # 查看新闻推送服务日志\n   docker logs -f trendradar\n\n   # 查看 MCP AI 分析服务日志\n   docker logs -f trendradar-mcp\n\n   # 查看所有容器状态\n   docker ps | grep trendradar\n\n   # 停止特定服务\n   docker compose stop trendradar      # 停止推送服务\n   docker compose stop trendradar-mcp  # 停止 MCP 服务\n   ```\n\n#### 方式二：本地构建（开发者选项）\n\n如果需要自定义修改代码或构建自己的镜像：\n\n```bash\n# 克лон проекта\ngit clone https:\u002F\u002Fgithub.com\u002Fsansan0\u002FTrendRadar.git\ncd TrendRadar\n\n# Изменить конфигурационные файлы\nvim config\u002Fconfig.yaml\nvim config\u002Ffrequency_words.txt\n\n# Использовать версию docker compose для сборки\ncd docker\ncp docker-compose-build.yml docker-compose.yml\n```\n\n**Сборка и запуск сервисов**:\n\n```bash\n# Вариант А: Собрать и запустить все сервисы\ndocker compose build\ndocker compose up -d\n\n# Вариант Б: Только собрать и запустить сервис новостных уведомлений\ndocker compose build trendradar\ndocker compose up -d trendradar\n\n# Вариант В: Только собрать и запустить сервис анализа на базе MCP\ndocker compose build trendradar-mcp\ndocker compose up -d trendradar-mcp\n```\n\n> 💡 **Пояснение по архитектурным параметрам**:\n> - По умолчанию собирается образ с архитектурой `amd64` (подходит для большинства серверов x86_64)\n> - Если требуется собрать образ с архитектурой `arm64` (Apple Silicon, Raspberry Pi и т.д.), необходимо установить переменную окружения:\n>   ```bash\n>   export DOCKER_ARCH=arm64\n>   docker compose build\n>   ```\n\n#### Обновление образов\n\n```bash\n# Способ 1: Ручное обновление (образы скрапера и MCP)\ndocker pull wantcat\u002Ftrendradar:latest\ndocker pull wantcat\u002Ftrendradar-mcp:latest\ndocker compose down\ndocker compose up -d\n\n# 方式二：使用 docker compose 更新\ndocker compose pull\ndocker compose up -d\n```\n\n**可用镜像**：\n\n| 镜像名称 | 用途 | 说明 |\n|---------|------|------|\n| `wantcat\u002Ftrendradar` | 新闻推送服务 | 定时抓取新闻、推送通知 |\n| `wantcat\u002Ftrendradar-mcp` | MCP 服务 | AI 分析功能（可选） |\n\n#### 服务管理命令\n\n```bash\n# 查看运行状态\ndocker exec -it trendradar python manage.py status\n\n# 手动执行一次爬虫\ndocker exec -it trendradar python manage.py run\n\n# 查看实时日志\ndocker exec -it trendradar python manage.py logs\n\n# 显示当前配置\ndocker exec -it trendradar python manage.py config\n\n# 显示输出文件\ndocker exec -it trendradar python manage.py files\n\n# Web 服务器管理（用于浏览器访问生成的报告）\ndocker exec -it trendradar python manage.py start_webserver   # 启动 Web 服务器\ndocker exec -it trendradar python manage.py stop_webserver    # 停止 Web 服务器\ndocker exec -it trendradar python manage.py webserver_status  # 查看 Web 服务器状态\n\n# 查看帮助信息\ndocker exec -it trendradar python manage.py help\n\n# 重启容器\ndocker restart trendradar\n\n# 停止容器\ndocker stop trendradar\n\n# 删除容器（保留数据）\ndocker rm trendradar\n```\n\n> 💡 **Web 服务器说明**：\n> - cron 模式下自动启动，通过浏览器访问 `http:\u002F\u002Flocalhost:8080` 查看最新报告\n> - 通过目录导航访问历史报告（如：`http:\u002F\u002Flocalhost:8080\u002F2025-xx-xx\u002F`）\n> - 端口可在 `.env` 文件中配置 `WEBSERVER_PORT` 参数\n> - 手动停止：`docker exec -it trendradar python manage.py stop_webserver`\n> - 手动启动：`docker exec -it trendradar python manage.py start_webserver`\n> - 安全提示：仅提供静态文件访问，限制在 output 目录，只绑定本地访问\n\n#### 数据持久化\n\n生成的报告和数据默认保存在 `.\u002Foutput` 目录下，即使容器重启或删除，数据也会保留。\n\n**📊 网页版报告访问路径**：\n\nTrendRadar 生成的当日汇总 HTML 报告会同时保存到两个位置：\n\n| 文件位置 | 访问方式 | 适用场景 |\n|---------|---------|---------|\n| `output\u002Findex.html` | 宿主机直接访问 | **Docker 部署**（通过 Volume 挂载，宿主机可见） |\n| `index.html` | 根目录访问 | **GitHub Pages**（仓库根目录，Pages 自动识别） |\n| `output\u002Fhtml\u002FYYYY-MM-DD\u002F当日汇总.html` | 历史报告访问 | 所有环境（按日期归档） |\n\n**本地访问示例**：\n```bash\n# 方式 1：通过 Web 服务器访问（推荐，Docker 环境）\n# 1. 启动 Web 服务器\ndocker exec -it trendradar python manage.py start_webserver\n# 2. 在浏览器访问\nhttp:\u002F\u002Flocalhost:8080                           # 访问最新报告（默认 index.html）\nhttp:\u002F\u002Flocalhost:8080\u002Fhtml\u002F2025-xx-xx\u002F          # 访问指定日期的报告\n\n# 方式 2：直接打开文件（本地环境）\nopen .\u002Foutput\u002Findex.html             # macOS\nstart .\u002Foutput\u002Findex.html            # Windows\nxdg-open .\u002Foutput\u002Findex.html         # Linux\n\n# 方式 3：访问历史归档\nopen .\u002Foutput\u002Fhtml\u002F2025-xx-xx\u002F当日汇总.html\n```\n\n**为什么有两个 index.html？**\n- `output\u002Findex.html`：Docker Volume 挂载到宿主机，本地可直接打开\n- `index.html`：GitHub Actions 推送到仓库，GitHub Pages 自动部署\n\n> 💡 **提示**：两个文件内容完全相同，选择任意一个访问即可。\n\n#### 故障排查\n\n```bash\n# 检查容器状态\ndocker inspect trendradar\n\n# 查看容器日志\ndocker logs --tail 100 trendradar\n\n# 进入容器调试\ndocker exec -it trendradar \u002Fbin\u002Fbash\n\n# 验证配置文件\ndocker exec -it trendradar ls -la \u002Fapp\u002Fconfig\u002F\n```\n\n#### MCP 服务部署（AI 分析功能）\n\n如果需要使用 AI 分析功能，可以部署独立的 MCP 服务容器。\n\n**架构说明**：\n\n```mermaid\nflowchart TB\n    subgraph trendradar[\"trendradar\"]\n        A1[定时抓取新闻]\n        A2[推送通知]\n    end\n    \n    subgraph trendradar-mcp[\"trendradar-mcp\"]\n        B1[127.0.0.1:3333]\n        B2[AI 分析接口]\n    end\n    \n    subgraph shared[\"共享卷\"]\n        C1[\"config\u002F (ro)\"]\n        C2[\"output\u002F (ro)\"]\n    end\n    \n    trendradar --> shared\n    trendradar-mcp --> shared\n```\n\n**快速启动**：\n\n如果已按照 [方式一：使用 docker compose](#方式一使用-docker-compose推荐) 完成部署，只需启动 MCP 服务：\n\n```bash\ncd TrendRadar\u002Fdocker\ndocker compose up -d trendradar-mcp\n\n# 查看运行状态\ndocker ps | grep trendradar-mcp\n```\n\n**单独启动 MCP 服务**（不使用 docker compose）：\n\n```bash\n# Linux\u002FMac\ndocker run -d --name trendradar-mcp \\\n  -p 127.0.0.1:3333:3333 \\\n  -v $(pwd)\u002Fconfig:\u002Fapp\u002Fconfig:ro \\\n  -v $(pwd)\u002Foutput:\u002Fapp\u002Foutput:ro \\\n  -e TZ=Asia\u002FShanghai \\\n  wantcat\u002Ftrendradar-mcp:latest\n\n# Windows PowerShell\ndocker run -d --name trendradar-mcp `\n  -p 127.0.0.1:3333:3333 `\n  -v ${PWD}\u002Fconfig:\u002Fapp\u002Fconfig:ro `\n  -v ${PWD}\u002Foutput:\u002Fapp\u002Foutput:ro `\n  -e TZ=Asia\u002FShanghai `\n  wantcat\u002Ftrendradar-mcp:latest\n```\n\n> ⚠️ **注意**：单独运行时，确保当前目录下有 `config\u002F` 和 `output\u002F` 文件夹，且包含配置文件和新闻数据。\n\n**验证服务**：\n\n```bash\n# 检查 MCP 服务健康状态\ncurl http:\u002F\u002F127.0.0.1:3333\u002Fmcp\n\n# 查看 MCP 服务日志\ndocker logs -f trendradar-mcp\n```\n\n**在 AI 客户端中配置**：\n\nMCP 服务启动后，根据不同客户端进行配置：\n\n**Cherry Studio**（推荐，GUI 配置）：\n- 设置 → MCP 服务器 → 添加\n- 类型：`streamableHttp`\n- URL：`http:\u002F\u002F127.0.0.1:3333\u002Fmcp`\n\n**Claude Desktop \u002F Cline**（JSON 配置）：\n```json\n{\n  \"mcpServers\": {\n    \"trendradar\": {\n      \"url\": \"http:\u002F\u002F127.0.0.1:3333\u002Fmcp\",\n      \"type\": \"streamableHttp\"\n    }\n  }\n}\n```\n\n> 💡 **提示**：MCP 服务仅监听本地端口（127.0.0.1），确保安全性。如需远程访问，请自行配置反向代理和认证。\n\n\u003C\u002Fdetails>\n\n### 7. 推送内容怎么显示？\n\n\u003Cdetails>\n\u003Csummary>👉 点击展开：\u003Cstrong>自定义推送样式和内容\u003C\u002Fstrong>\u003C\u002Fsummary>\n\u003Cbr>\n\n**配置位置：** `config\u002Fconfig.yaml` 的 `report` 和 `display` 部分\n\n```yaml\nreport:\n  mode: \"daily\"                    # 推送模式\n  display_mode: \"keyword\"          # 显示模式（v4.6.0 新增）\n  rank_threshold: 5                # 排名高亮阈值\n  sort_by_position_first: false    # 排序优先级\n  max_news_per_keyword: 0          # 每个关键词最大显示数量\n\ndisplay:\n  region_order:                    # 区域显示顺序（v5.2.0 新增）\n    - new_items                    # 新增热点区域\n    - hotlist                      # 热榜区域\n    - rss                          # RSS 订阅区域\n    - standalone                   # 独立展示区\n    - ai_analysis                  # AI 分析区域\n```\n\n#### 常用配置项说明\n\n| 我想调整什么 | 修改哪个参数 | 默认值 | 说明 |\n|-------------|-------------|-------|------|\n| **推送模式** | `mode` | `daily` | 决定推送时机和内容，详见 [推送模式详解](#3-推送模式详解) |\n| **分组方式** | `display_mode` | `keyword` | `keyword`=按关键词分组(如\"AI\")，`platform`=按平台分组(如\"微博\") |\n| **高亮重点** | `rank_threshold` | `5` | 排名在前 5 的新闻会**加粗**显示，一眼看到最火的 |\n| **排序规则** | `sort_by_position_first` | `false` | `false`=热度高的排前面，`true`=你配置的词排前面 |\n| **数量限制** | `max_news_per_keyword` | `0` | 每个关键词最多看几条？`0`表示不限制 |\n| **显示顺序** | `display.region_order` | 见上方配置 | 调整列表顺序即可控制各区域的显示位置 |\n\n#### 分组方式对比（display_mode）\n\n你是想看\"这个话题下有哪些新闻\"，还是\"这个平台上有哪些新闻\"?\n\n| 模式 | 分组方式 | 标题前缀 | 适用场景 |\n|------|---------|---------|---------|\n| `keyword`（默认） | **按关键词聚合** | `[平台名]` | 我关注\"AI\"，想看各平台关于AI的新闻 |\n| `platform` | **按平台聚合** | `[关键词]` | 我关注\"微博\"，想看微博上关于我关注词的新闻 |\n\n#### 区域显示顺序（region_order）\n\n通过调整 `display.region_order` 列表的顺序，可以控制推送消息中各区域的显示位置。\n\n**默认顺序**：新增热点 → 热榜 → RSS → 独立展示区 → AI 分析\n\n**自定义示例**：想让 AI 分析放在最前面？\n\n```yaml\ndisplay:\n  region_order:\n    - ai_analysis                  # 移到第一行\n    - new_items\n    - hotlist\n    - rss\n    - standalone\n```\n\n**注意**：区域需同时满足两个条件才会显示：\n1. 在 `region_order` 列表中\n2. 在 `display.regions` 中对应开关为 `true`\n\n#### 区域开关（regions）\n\n通过 `display.regions` 控制各区域是否在推送中显示：\n\n```yaml\ndisplay:\n  regions:\n    hotlist: true                    # 热榜区域（关键词匹配的热点新闻）\n    new_items: false                 # 新增热点区域（含热榜新增 + RSS 新增）\n    rss: true                       # RSS 订阅区域（关键词匹配的 RSS 内容）\n    standalone: false                # 独立展示区（международн\u002FRSS，不受关键词过滤）\n    ai_analysis: true                # AI 分析区域\n```\n\n| 区域 | 配置键 | 默认值 | 说明 |\n|------|--------|-------|------|\n| **热榜** | `hotlist` | `true` | 按关键词匹配的热点新闻聚合 |\n| **新增热点** | `new_items` | `false` | 本轮新出现的热点话题（含热榜新增 + RSS 新增）。注：热榜区域中的 🆕 标记不受此开关影响 |\n| **RSS** | `rss` | `true` | 按关键词匹配的 RSS 订阅内容。关闭后跳过 RSS 分析，但独立展示区中的 RSS 不受影响 |\n| **独立展示区** | `standalone` | `false` | 指定平台\u002FRSS 的完整内容展示，不受关键词过滤 |\n| **AI 分析** | `ai_analysis` | `true` | AI 生成的热点分析摘要 |\n\n#### 排序优先级（sort_by_position_first）\n\n假设你配置了关键词：1.特斯拉，2.比亚迪。\n实际热度：比亚迪(10条)，特斯拉(3条)。\n\n| 配置值 | 排序结果 | 你的想法 |\n|-------|---------|---------|\n| `false`（默认） | 比亚迪(10条) → 特斯拉(3条) | \"谁火谁排前面\" |\n| `true` | 特斯拉(3条) → 比亚迪(10条) | \"我配置的顺序就是优先级，不管它火不火\" |\n\n#### 独立展示区（standalone）\n\n**场景**：有些平台（比如知乎热榜、HackerNews），我想**完整看一遍**，不管有没有匹配我的关键词。\n\n```yaml\ndisplay:\n  regions:\n    standalone: true                  # 推送中展示独立展示区（关闭不影响 AI 分析）\n\n  standalone:\n    platforms: [\"zhihu\", \"weibo\"]     # 这些平台的热榜给我完整显示\n    rss_feeds: [\"hacker-news\"]        # 这些RSS源的内容给我完整显示\n    max_items: 20                     # 最多显示多少条\n```\n\n> 💡 **推送展示与 AI 分析独立控制**：`regions.standalone` 只控制推送中是否显示独立展示区。即使关闭推送展示，只要在 AI 配置中开启 `include_standalone: true`，AI 仍会分析这些平台的完整数据。适合想让 AI 做深度分析、但不想推送消息太长的用户。\n\n\u003C\u002Fdetails>\n\n### 8. 什么时候给我推送？\n\n\u003Cdetails>\n\u003Csummary>👉 点击展开：\u003Cstrong>设置推送时间（调度系统）\u003C\u002Fstrong>\u003C\u002Fsummary>\n\u003Cbr>\n\n**配置位置：** `config\u002Fconfig.yaml` 的 `schedule` 部分 + `config\u002Ftimeline.yaml`\n\n#### 快速上手\n\n只需在 `config.yaml` 中选一个预设模板，不需要编辑 `timeline.yaml`：\n\n```yaml\nschedule:\n  enabled: true\n  preset: \"morning_evening\"     # 改这里就行\n```\n\n#### 可选预设模板\n\n| 模板名 | 说明 | 推送行为 |\n|-------|------|---------|\n| `morning_evening` | 全天增量 + 晚间汇总（推荐） | 全天有新增就推 + 19:00-21:00 晚间当日汇总 |\n| `always_on` | 全天候监控 | 全天有新增就推送，不划分时间段 |\n| `office_hours` | 办公时间 | 工作日三段式（到岗速览→午间热点→收工汇总），周末增量自由推 |\n| `night_owl` | 夜猫子 | 午后速览 + 深夜全天汇总（22:00-01:00 跨午夜） |\n| `custom` | 完全自定义 | 编辑 `timeline.yaml` 底部的 custom 段 |\n\n#### 完全自定义\n\n如果预设模板都不满足需求，可以编辑 `config\u002Ftimeline.yaml` 底部的 `custom` 段，自由定义时间段、日计划和周映射。详见 `timeline.yaml` 文件内的注释说明。\n\n#### 重要提示\n\n> ⚠️ **从旧版本升级的用户注意：**\n> - v6.0.0 移除了旧的 `notification.push_window` 和 `ai_analysis.analysis_window` 配置\n> - 请改用新的 `schedule` + `timeline.yaml` 调度系统\n> - 旧的\"每天推送一次\"可用 `morning_evening` 预设替代\n> - 旧的\"工作时间推送\"可用 `office_hours` 预设替代\n\n> ⚠️ **GitHub Actions 用户注意：**\n> - GitHub Actions 执行时间不稳定，可能有 ±15 分钟的偏差\n> - 时间段范围建议至少留足 **2 小时**\n> - 如果想要精准的定时推送，建议使用 **Docker 部署**在个人服务器上\n\n\u003C\u002Fdetails>\n\n### 9. 多久运行一次？\n\n\u003Cdetails>\n\u003Csummary>👉 点击展开：\u003Cstrong>设置自动运行频率\u003C\u002Fstrong>\u003C\u002Fsummary>\n\u003Cbr>\n\n**配置位置：** `.github\u002Fworkflows\u002Fcrawler.yml` 的 `schedule` 部分\n\n```yaml\non:\n  schedule:\n    - cron: \"0 * * * *\"  # 每小时运行一次\n```\n\n#### 怎么修改运行频率？\n\nGitHub Actions 使用一种叫 \"Cron\" 的时间格式，不需要深入理解，直接复制下面的代码替换即可。\n\n**配置位置：** `.github\u002Fworkflows\u002Fcrawler.yml` 文件中的 `schedule` 部分\n\n| 我想要... | 复制这行代码 | 说明 |\n|-----------|------------|------|\n| **每小时一次** | `- cron: \"0 * * * *\"` | **默认配置**，第 0 分钟运行 |\n| **每 30 分钟** | `- cron: \"*\u002F30 * * * *\"` | 每隔 30 分钟运行一次 |\n| **每天早 8 点** | `- cron: \"0 0 * * *\"` | ⚠️ 写 `0` 是因为 UTC 时间 (0点) = 北京时间 (8点) |\n| **工作时间每半小时** | `- cron: \"*\u002F30 0-14 * * *\"` | 对应北京时间 8:00 - 22:00 |\n| **一日三餐点** | `- cron: \"0 0,6,12 * * *\"` | 对应北京时间 8:00、14:00、20:00 |\n\n#### ⚠️ 两个重要提醒\n\n1. **时差问题**：GitHub 的服务器在国外，用的是 UTC 时间。\n   - **简单的算术题**：你想设定的北京时间 **减去 8 小时** = 你要填的时间。\n   - *例子：想让它北京时间 20:00 运行，设置里要填 12:00*\n\n2. **不要太频繁**：建议间隔不要少于 30 分钟。\n   - GitHub 免费资源有限，跑得太勤可能会被官方限制账号。\n   - 而且 Actions 启动本身就有几分钟延迟，太精确的控制没有意义。\n\n#### 手把手修改步骤\n\n1. 在你的 GitHub 仓库中，找到 `.github\u002Fworkflows\u002Fcrawler.yml` 文件\n2. 点击右上角的 ✏️ (Edit) 按钮\n3. 找到 `cron: \"...\"` 那一行，把引号里的内容换成上面的\"代码\"\n4. 点击右上角的绿色 **Commit changes** 按钮保存\n\n\u003C\u002Fdetails>\n\n### 10. 推送到多个群\u002F设备\n\n\u003Cdetails>\n\u003Csummary>👉 点击展开：\u003Cstrong>同时推送给多个接收者\u003C\u002Fstrong>\u003C\u002Fsummary>\n\n> ### ⚠️ **安全第一**\n> **不要在 `config.yaml` 里直接写密码\u002FToken！**\n> 如果你把包含密码的文件上传到 GitHub，全世界都能看到。\n>\n> **正确做法**：\n> - **GitHub Actions 用户**：去 Settings -> Secrets 里添加\n> - **Docker 用户**：写在 `.env` 文件里（这个文件不会被上传）\n\n#### 怎么同时推送到多个地方？\n\n很简单，在配置时用分号 `;` 把多个地址隔开就行了。\n\n**举个例子**：\n假设你有两个飞书群，想同时收到推送：\n- 群1地址：`https:\u002F\u002F...\u002Fwebhook\u002Faaa`\n- 群2地址：`https:\u002F\u002F...\u002Fwebhook\u002Fbbb`\n\n配置时填写：\n`https:\u002F\u002F...\u002Fwebhook\u002Faaa;https:\u002F\u002F...\u002Fwebhook\u002Fbbb`\n\n#### 支持多账号的平台\n\n| 平台 | 配置方法 | 注意事项 |\n|------|---------|----------|\n| **飞书\u002F钉钉\u002F企微** | 用 `;` 分隔多个 Webhook URL | 最简单，直接串起来就行 |\n| **Bark (iOS)** | 用 `;` 分隔多个 Key URL | 推送到多台 iPhone |\n| **Telegram** | Token 和 ChatID 都要用 `;` 分隔 | ⚠️ **注意顺序要对应**：\u003Cbr>Token1 对应 ChatID1\u003Cbr>Token2 对应 ChatID2 |\n| **ntfy** | Topic 和 Token 都要用 `;` 分隔 | 如果某个Topic不需要Token，留空即可：\u003Cbr>`token1;;token3` (中间那个是空的) |\n\n#### 常用配置示例 (GitHub Secrets \u002F .env)\n\n```bash\n# 飞书发给 3 个群\nFEISHU_WEBHOOK_URL=https:\u002F\u002Fhook1...;https:\u002F\u002Fhook2...;https:\u002F\u002Fhook3...\n\n# 钉钉发给 2 个群\nDINGTALK_WEBHOOK_URL=https:\u002F\u002Foapi...;https:\u002F\u002Foapi...\n\n# Telegram 发给 2 个人 (注意一一对应)\nTELEGRAM_BOT_TOKEN=tokenA;tokenB\nTELEGRAM_CHAT_ID=userA;userB\n```\n\n> **提示**：为了防止滥用，默认限制每个平台最多推送到 3 个账号。如果需要更多，可以修改 `MAX_ACCOUNTS_PER_CHANNEL` 配置。\n\n\u003C\u002Fdetails>\n\n### 11. 数据保存在哪里？\n\n\u003Cdetails id=\"storage-config\">\n\u003Csummary>👉 点击展开：\u003Cstrong>选择数据存储位置\u003C\u002Fstrong>\u003C\u002Fsummary>\n\u003Cbr>\n\n#### 数据会存在哪里？\n\n系统会自动帮你选择最合适的地方，你通常不需要操心：\n\n| 你的运行环境 | 数据存在哪 | 说明 |\n|-------------|-----------|------|\n| **Docker \u002F 本地运行** | **本地硬盘** | 存在项目目录下的 `output\u002F` 文件夹里，随时可以查看。 |\n| **GitHub Actions** | **云端存储** | 因为 GitHub Actions 运行完就会销毁环境，所以必须配置云存储（例如 Cloudflare R2）。 |\n\n#### 怎么配置云存储？(GitHub Actions 用户必看)\n\n如果你是用 GitHub Actions 运行，你需要一个\"云端硬盘\"来存数据。例如使用 Cloudflare R2（因为有免费额度）。\n\n**在 GitHub Secrets 里添加这 5 个变量：**\n\n| 变量名 | 填什么 |\n|-------|-------|\n| `STORAGE_BACKEND` | `remote` |\n| `S3_BUCKET_NAME` | 你的存储桶名字 |\n| `S3_ACCESS_KEY_ID` | 你的 Access Key |\n| `S3_SECRET_ACCESS_KEY` | 你的 Secret Key |\n| `S3_ENDPOINT_URL` | 你的 R2 接口地址 |\n\n> 💡 **详细教程**：怎么申请 R2？请看 [快速开始 - 远程存储配置](#-快速开始)\n\n#### 数据会保存多久？\n\n默认情况下，我们不会自动删除你的数据。但如果你觉得数据太多占空间，可以设置\"自动清理\"。\n\n**配置位置**：`config\u002Fconfig.yaml`\n\n```yaml\nstorage:\n  local:\n    retention_days: 30    # 本地数据只保留 30 天 (0 表示永久)\n  remote:\n    retention_days: 30    # 云端数据只保留 30 天\n```\n\n#### 推送时间不对？(时区设置)\n\n如果你身在海外，或者发现推送时间跟你的本地时间对不上，可以修改时区。\n\n**配置位置**：`config\u002Fconfig.yaml`\n\n```yaml\napp:\n  timezone: \"Asia\u002FShanghai\"  # 默认是中国时间\n```\n- 比如你在美国洛杉矶，改成：`America\u002FLos_Angeles`\n- 比如你在英国伦敦，改成：`Europe\u002FLondon`\n\n\u003C\u002Fdetails>\n\n### 12. 让 AI 帮我分析热点\n\n\u003Cdetails id=\"ai-analysis-config\">\n\u003Csummary>👉 点击展开：\u003Cstrong>开启 AI 智能分析功能\u003C\u002Fstrong>\u003C\u002Fsummary>\n\u003Cbr>\n\n#### AI 能帮我做什么？\n\n开启这个功能后，AI 会像一个专业的分析师，在推送每一批新闻时：\n1. **自动阅读**：阅读所有匹配到的热点新闻\n2. **深度思考**：分析原本孤立的新闻之间的关联\n3. **撰写报告**：在推送消息的末尾，附上一份简短深刻的\"洞察报告\"\n\n**包含内容**：热点趋势总结、舆论风向判断、跨平台关联分析、潜在影响评估等。\n\n#### 怎么开启 AI 分析？\n\n最简单的方法是通过环境变量配置（推荐 GitHub Secrets 或 .env）。\n\n**必需的配置项**：\n\n| 变量名 | 填什么 | 说明 |\n|-------|-------|------|\n| `AI_ANALYSIS_ENABLED` | `true` | 开启开关 |\n| `AI_API_KEY` | `sk-xxxxxx` | 你的 API Key |\n| `AI_MODEL` | `deepseek\u002Fdeepseek-chat` | 模型标识（格式：`provider\u002Fmodel`） |\n\n**支持的 AI 提供商**（基于 LiteLLM，支持 100+ 提供商）：\n\n| 提供商 | AI_MODEL 填什么 | 说明 |\n|-------|----------------|------|\n| **DeepSeek** (推荐) | `deepseek\u002Fdeepseek-chat` | 性价比极高，适合高频分析 |\n| **OpenAI** | `openai\u002Fgpt-4o`\u003Cbr>`openai\u002Fgpt-4o-mini` | GPT-4o 系列 |\n| **Google Gemini** | `gemini\u002Fgemini-1.5-flash`\u003Cbr>`gemini\u002Fgemini-1.5-pro` | Gemini 系列 |\n| **自定义 API** | 任意格式 | 配合 `AI_API_BASE` 使用 |\n\n> 💡 **新特性**：现已基于 [LiteLLM](https:\u002F\u002Fgithub.com\u002FBerriAI\u002Flitellm) 统一接口，支持 100+ AI 提供商，配置更简单、错误处理更完善。\n\n**可选配置项**：\n\n| 变量名 | 默认值 | 说明 |\n|-------|-------|------|\n| `AI_API_BASE` | (自动) | 自定义 API 地址（如 OneAPI、本地模型） |\n| `AI_TEMPERATURE` | `1.0` | 采样温度（0-2，越高越随机） |\n| `AI_MAX_TOKENS` | `5000` | 最大生成 token 数 |\n| `AI_TIMEOUT` | `120` | 请求超时时间（秒） |\n| `AI_NUM_RETRIES` | `2` | 失败重试次数 |\n\n#### 进阶玩法：AI 翻译\n\n如果你关注了国外的 RSS 源（比如 Hacker News），AI 可以帮你把内容翻译成中文推送。\n\n**配置位置**：`config\u002Fconfig.yaml`\n\n```yaml\nai_translation:\n  enabled: true          # 开启翻译\n  language: \"Chinese\"    # 翻译成什么语言 (Chinese, English, Japanese...)\n```\n\n#### 进阶玩法：自定义 AI \"人设\"\n\n觉得 AI 说话太官方？你可以修改它的提示词，让它变成你喜欢的风格（比如\"毒舌评论员\"、\"资深投资顾问\"）。\n\n- **修改文件**：`config\u002Fai_analysis_prompt.txt`\n- **修改方法**：直接用记事本打开编辑，告诉 AI 你想要什么样的分析风格。\n\n\u003C\u002Fdetails>\n\n\u003Cbr>\n\n## ✨ AI 智能分析\n\nTrendRadar v3.0.0 新增了基于 **MCP (Model Context Protocol)** 的 AI 分析功能，让你可以通过自然语言与新闻数据对话，进行深度分析。\n\n\n### ⚠️ 使用前必读\n\n\n**重要提示：AI 功能需要本地新闻数据支持**\n\nAI 分析功能**不是**直接查询网络实时数据，而是分析你**本地已积累的新闻数据**（存储在 `output` 文件夹中）\n\n\n#### 使用说明：\n\n1. **项目自带测试数据**：`output` 目录默认包含 **2025-12-21～2025-12-27** 一周的热榜新闻数据，可用于快速体验 AI 功能\n\n2. **查询限制**：\n   - ✅ 只能查询已有日期范围内的数据（12月21-27日，共7天）\n   - ❌ 无法查询实时新闻或未来日期\n\n3. **获取最新数据**：\n   - 测试数据仅供快速体验，**建议自行部署项目**获取实时数据\n   - 按照 [快速开始](#-快速开始) 部署运行项目\n   - 等待至少 1 天积累新闻数据后，即可查询最新热点\n\n\n### 1. 快速部署\n\nCherry Studio 提供 GUI 配置界面，5 分钟快速部署，复杂的部分是一键安装的。\n\n**图文部署教程**：现已更新到我的[公众号](#-支持项目)，回复 \"mcp\" 即可\n\n**详细部署教程**：[README-Cherry-Studio.md](README-Cherry-Studio.md)\n\n**部署模式说明**：\n- **STDIO 模式（推荐）**：一次配置后续无需重复配置，**图文部署教程**中仅以此模式的配置为例。\n- **HTTP 模式（备选）**：如果 STDIO 模式配置遇到问题，可使用 HTTP 模式。此模式的配置方式与 STDIO 基本一致，但复制粘贴的内容就一行，不易出错。唯一需要注意的是每次使用前都需要手动启动一下服务。详细请参考 [README-Cherry-Studio.md](README-Cherry-Studio.md) 底部的 HTTP 模式说明。\n\n### 2. 学习与 AI 对话的姿势\n\n**详细对话教程**：[README-MCP-FAQ.md](README-MCP-FAQ.md)\n\n> 💡 **提示**：实际不建议一次性问多个问题。如果你选择的 AI 模型连下图的按顺序调用都无法做到，建议换一个。\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsansan0_TrendRadar_readme_985370d459ca.png\" alt=\"mcp 使用效果图\" width=\"600\">\n\n\u003Cbr>\n\n## 🔌 MCP 客户端\n\nTrendRadar MCP 服务支持标准的 Model Context Protocol (MCP) 协议，可以接入各种支持 MCP 的 AI 客户端进行智能分析。\n\n### 支持的客户端\n\n**注意事项**：\n- 将 `\u002Fpath\u002Fto\u002FTrendRadar` 替换为你的项目实际路径\n- Windows 路径使用双反斜杠：`C:\\\\Users\\\\YourName\\\\TrendRadar`\n- 保存后记得重启\n\n\u003Cdetails>\n\u003Csummary>👉 点击展开：\u003Cb>Cursor\u003C\u002Fb>\u003C\u002Fsummary>\n\n#### 方式一：HTTP 模式\n\n1. **启动 HTTP 服务**：\n   ```bash\n   # Windows\n   start-http.bat\n   \n   # Mac\u002FLinux\n   .\u002Fstart-http.sh\n   ```\n\n2. **配置 Cursor**：\n\n   **项目级配置**（推荐）：\n   在项目根目录创建 `.cursor\u002Fmcp.json`：\n   ```json\n   {\n     \"mcpServers\": {\n       \"trendradar\": {\n         \"url\": \"http:\u002F\u002Flocalhost:3333\u002Fmcp\",\n         \"description\": \"TrendRadar 新闻热点聚合分析\"\n       }\n     }\n   }\n   ```\n\n   **全局配置**：\n   在用户目录创建 `~\u002F.cursor\u002Fmcp.json`（同样内容）\n\n3. **使用步骤**：\n   - 保存配置文件后重启 Cursor\n   - 在聊天界面的 \"Available Tools\" 中查看已连接的工具\n   - 开始使用：`搜索今天的\"AI\"相关新闻`\n\n#### 方式二：STDIO 模式（推荐）\n\n创建 `.cursor\u002Fmcp.json`：\n```json\n{\n  \"mcpServers\": {\n    \"trendradar\": {\n      \"command\": \"uv\",\n      \"args\": [\n        \"--directory\",\n        \"\u002Fpath\u002Fto\u002FTrendRadar\",\n        \"run\",\n        \"python\",\n        \"-m\",\n        \"mcp_server.server\"\n      ]\n    }\n  }\n}\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>👉 点击展开：\u003Cb>VSCode (Cline\u002FContinue)\u003C\u002Fb>\u003C\u002Fsummary>\n\n#### Cline 配置\n\n在 Cline 的 MCP 设置中添加：\n\n**HTTP 模式**：\n```json\n{\n  \"trendradar\": {\n    \"url\": \"http:\u002F\u002Flocalhost:3333\u002Fmcp\",\n    \"type\": \"streamableHttp\",\n    \"autoApprove\": [],\n    \"disabled\": false\n  }\n}\n```\n\n**STDIO 模式**（推荐）：\n```json\n{\n  \"trendradar\": {\n    \"command\": \"uv\",\n    \"args\": [\n      \"--directory\",\n      \"\u002Fpath\u002Fto\u002FTrendRadar\",\n      \"run\",\n      \"python\",\n      \"-m\",\n      \"mcp_server.server\"\n    ],\n    \"type\": \"stdio\",\n    \"disabled\": false\n  }\n}\n```\n\n#### Continue 配置\n\n编辑 `~\u002F.continue\u002Fconfig.json`：\n```json\n{\n  \"experimental\": {\n    \"modelContextProtocolServers\": [\n      {\n        \"transport\": {\n          \"type\": \"stdio\",\n          \"command\": \"uv\",\n          \"args\": [\n            \"--directory\",\n            \"\u002Fpath\u002Fto\u002FTrendRadar\",\n            \"run\",\n            \"python\",\n            \"-m\",\n            \"mcp_server.server\"\n          ]\n        }\n      }\n    ]\n  }\n}\n```\n\n**使用示例**：\n```\n分析最近7天\"特斯拉\"的热度变化趋势\n生成今天的热点摘要报告\n搜索\"比特币\"相关新闻并分析情感倾向\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>👉 点击展开：\u003Cb>MCP Inspector\u003C\u002Fb>（调试工具）\u003C\u002Fsummary>\n\u003Cbr>\n\nMCP Inspector 是官方调试工具，用于测试 MCP 连接：\n\n#### 使用步骤\n\n1. **启动 TrendRadar HTTP 服务**：\n   ```bash\n   # Windows\n   start-http.bat\n   \n   # Mac\u002FLinux\n   .\u002Fstart-http.sh\n   ```\n\n2. **启动 MCP Inspector**：\n   ```bash\n   npx @modelcontextprotocol\u002Finspector\n   ```\n\n3. **在浏览器中连接**：\n   - 访问：`http:\u002F\u002Flocalhost:3333\u002Fmcp`\n   - 测试 \"Ping Server\" 功能验证连接\n   - 检查 \"List Tools\" 是否返回 17 个工具：\n     - 基础查询：get_latest_news, get_news_by_date, get_trending_topics\n     - 智能检索：search_news, find_related_news\n     - 高级分析：analyze_topic_trend, analyze_data_insights, analyze_sentiment, aggregate_news, compare_periods, generate_summary_report\n     - RSS 查询：get_latest_rss, search_rss, get_rss_feeds_status\n     - 系统管理：get_current_config, get_system_status, resolve_date_range\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>👉 点击展开：\u003Cb>其他支持 MCP 的客户端\u003C\u002Fb>\u003C\u002Fsummary>\n\u003Cbr>\n\n任何支持 Model Context Protocol 的客户端都可以连接 TrendRadar：\n\n#### HTTP 模式\n\n**服务地址**：`http:\u002F\u002Flocalhost:3333\u002Fmcp`\n\n**基本配置模板**：\n```json\n{\n  \"name\": \"trendradar\",\n  \"url\": \"http:\u002F\u002Flocalhost:3333\u002Fmcp\",\n  \"type\": \"http\",\n  \"description\": \"新闻热点聚合分析\"\n}\n```\n\n#### STDIO 模式（推荐）\n\n**基本配置模板**：\n```json\n{\n  \"name\": \"trendradar\",\n  \"command\": \"uv\",\n  \"args\": [\n    \"--directory\",\n    \"\u002Fpath\u002Fto\u002FTrendRadar\",\n    \"run\",\n    \"python\",\n    \"-m\",\n    \"mcp_server.server\"\n  ],\n  \"type\": \"stdio\"\n}\n```\n\n**注意事项**：\n- 替换 `\u002Fpath\u002Fto\u002FTrendRadar` 为实际项目路径\n- Windows 路径使用反斜杠转义：`C:\\\\Users\\\\...`\n- 确保已完成项目依赖安装（运行过 setup 脚本）\n\n\u003C\u002Fdetails>\n\n\n\n### 常见问题\n\n\u003Cdetails>\n\u003Csummary>👉 点击展开：\u003Cb>Q1: HTTP 服务无法启动？\u003C\u002Fb>\u003C\u002Fsummary>\n\u003Cbr>\n\n**检查步骤**：\n1. 确认端口 3333 未被占用：\n   ```bash\n   # Windows\n   netstat -ano | findstr :3333\n   \n   # Mac\u002FLinux\n   lsof -i :3333\n   ```\n\n2. 检查项目依赖是否安装：\n   ```bash\n   # 重新运行安装脚本\n   # Windows: setup-windows.bat 或者 setup-windows-en.bat\n   # Mac\u002FLinux: .\u002Fsetup-mac.sh\n   ```\n\n3. 查看详细错误日志：\n   ```bash\n   uv run python -m mcp_server.server --transport http --port 3333\n   ```\n4. 尝试自定义端口:\n   ```bash\n   uv run python -m mcp_server.server --transport http --port 33333\n   ```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>👉 点击展开：\u003Cb>Q2: 客户端无法连接到 MCP 服务？\u003C\u002Fb>\u003C\u002Fsummary>\n\u003Cbr>\n\n**解决方案**：\n\n1. **STDIO 模式**：\n   - 确认 UV 路径正确（运行 `which uv` 或 `where uv`）\n   - 确认项目路径正确且无中文字符\n   - 查看客户端错误日志\n\n2. **HTTP 模式**：\n   - 确认服务已启动（访问 `http:\u002F\u002Flocalhost:3333\u002Fmcp`）\n   - 检查防火墙设置\n   - 尝试使用 127.0.0.1 替代 localhost\n\n3. **通用检查**：\n   - 重启客户端应用\n   - 查看 MCP 服务日志\n   - 使用 MCP Inspector 测试连接\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>👉 点击展开：\u003Cb>Q3: 工具调用失败或返回错误？\u003C\u002Fb>\u003C\u002Fsummary>\n\u003Cbr>\n\n**可能原因**：\n\n1. **数据不存在**：\n   - 确认已运行过爬虫（有 output 目录数据）\n   - 检查查询日期范围是否有数据\n   - 查看 output 目录的可用日期\n\n2. **参数错误**：\n   - 检查日期格式：`YYYY-MM-DD`\n   - 确认平台 ID 正确：`zhihu`, `weibo` 等\n   - 查看工具文档中的参数说明\n\n3. **配置问题**：\n   - 确认 `config\u002Fconfig.yaml` 存在\n   - 确认 `config\u002Ffrequency_words.txt` 存在\n   - 检查配置文件格式是否正确\n\n\u003C\u002Fdetails>\n\n\u003Cbr>\n\n## 📚 项目相关\n\n> **4 篇文章**：\n\n- [可在该文章下方留言，方便项目作者用手机答疑](https:\u002F\u002Fmp.weixin.qq.com\u002Fs\u002FKYEPfTPVzZNWFclZh4am_g)\n- [2个月破 1000 star，我的GitHub项目推广实战经验](https:\u002F\u002Fmp.weixin.qq.com\u002Fs\u002Fjzn0vLiQFX408opcfpPPxQ)\n- [github fork 运行本项目的注意事项 ](https:\u002F\u002Fmp.weixin.qq.com\u002Fs\u002FC8evK-U7onG1sTTdwdW2zg)\n- [基于本项目，如何开展公众号或者新闻资讯类文章写作](https:\u002F\u002Fmp.weixin.qq.com\u002Fs\u002F8ghyfDAtQZjLrnWTQabYOQ)\n\n>**AI 开发**：\n- 如果你有小众需求，完全可以基于我的项目自行开发，零编程基础的也可以试试\n- 我所有的开源项目或多或少都使用了自己写的**AI辅助软件**来提升开发效率，这款工具已开源\n- **核心功能**：迅速筛选项目代码喂给AI，你只需要补充个人需求即可\n- **项目地址**：https:\u002F\u002Fgithub.com\u002Fsansan0\u002Fai-code-context-helper\n\n### 其余项目\n\n> 📍 毛主席足迹地图 - 交互式动态展示1893-1976年完整轨迹。欢迎诸位同志贡献数据\n\n- https:\u002F\u002Fgithub.com\u002Fsansan0\u002Fmao-map\n\n> 哔哩哔哩(bilibili)评论区数据可视化分析软件\n\n- https:\u002F\u002Fgithub.com\u002Fsansan0\u002Fbilibili-comment-analyzer\n\n\n[![Star History Chart](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsansan0_TrendRadar_readme_ceb19cc67862.png)](https:\u002F\u002Fwww.star-history.com\u002F#sansan0\u002FTrendRadar&Date)\n\n\u003Cbr>\n\n## 📄 许可证\n\nGPL-3.0 License\n\n---\n\n\u003Cdiv align=\"center\">\n\n[🔝 回到顶部](#trendradar)\n\n\u003C\u002Fdiv>","# TrendRadar 快速上手指南\n\nTrendRadar 是一款轻量级热点资讯助手，支持多平台新闻聚合、AI 智能筛选与多渠道推送。最快 30 秒即可完成部署。\n\n## 1. 环境准备\n\n在开始之前，请确保你的运行环境满足以下要求：\n\n*   **操作系统**：Linux \u002F macOS \u002F Windows (推荐 Linux 服务器或 NAS)\n*   **前置依赖**：\n    *   **方案 A (推荐)**：已安装 [Docker](https:\u002F\u002Fwww.docker.com\u002F) 及 `docker-compose`。\n    *   **方案 B**：已安装 Python 3.8+ 及 Git（如需源码运行）。\n*   **网络环境**：需能访问 GitHub 拉取镜像\u002F代码，以及目标新闻源接口。\n\n## 2. 安装步骤\n\n### 方式一：Docker 部署（推荐）\n\n这是最快捷的部署方式，无需配置本地 Python 环境。\n\n1.  **创建项目目录并下载配置文件**\n    ```bash\n    mkdir -p trendradar && cd trendradar\n    # 下载默认配置文件 (如果无法直接访问，可手动从 GitHub 复制 config.yaml 内容)\n    curl -o config.yaml https:\u002F\u002Fraw.githubusercontent.com\u002Fsansan0\u002FTrendRadar\u002Fmain\u002Fconfig.yaml\n    ```\n\n2.  **启动容器**\n    使用官方镜像启动服务：\n    ```bash\n    docker run -d \\\n      --name trendradar \\\n      -v $(pwd)\u002Fconfig.yaml:\u002Fapp\u002Fconfig.yaml \\\n      -v $(pwd)\u002Fdata:\u002Fapp\u002Fdata \\\n      -p 8080:8080 \\\n      wantcat\u002Ftrendradar:latest\n    ```\n    *注：`-v` 参数用于持久化配置文件和数据，`-p` 将服务映射到宿主机的 8080 端口。*\n\n### 方式二：源码运行\n\n适合需要二次开发或调试的用户。\n\n1.  **克隆仓库**\n    ```bash\n    git clone https:\u002F\u002Fgithub.com\u002Fsansan0\u002FTrendRadar.git\n    cd TrendRadar\n    ```\n\n2.  **安装依赖**\n    ```bash\n    pip install -r requirements.txt\n    ```\n\n3.  **运行程序**\n    ```bash\n    python main.py\n    ```\n\n## 3. 基本使用\n\n部署完成后，按以下步骤即可开始接收热点资讯：\n\n### 第一步：配置通知渠道\n编辑根目录下的 `config.yaml` 文件，填入你的通知渠道密钥。TrendRadar 支持企业微信、钉钉、飞书、Telegram、Email 等。\n\n**示例（配置企业微信机器人）：**\n```yaml\nnotify:\n  wecom:\n    enabled: true\n    webhook: \"https:\u002F\u002Fqyapi.weixin.qq.com\u002Fcgi-bin\u002Fwebhook\u002Fsend?key=YOUR_KEY\"\n```\n*其他渠道配置请参考 `config.yaml` 中的注释说明。*\n\n### 第二步：定制关注内容\n你可以通过两种方式定义关心的新闻：\n\n1.  **关键词模式**：在 `config.yaml` 中设置 `keywords` 列表。\n2.  **AI 智能模式（推荐）**：\n    创建或编辑 `config\u002Fcustom\u002Fai\u002Fai_interests.txt`，用自然语言描述兴趣。\n    ```text\n    我想看关于大模型技术突破、新能源车市动态以及苹果最新产品的新闻。\n    ```\n    *系统会自动提取标签并对新闻打分，仅推送高相关内容。*\n\n### 第三步：查看与验证\n*   **自动推送**：程序将根据配置的时间表（默认每小时）自动抓取并推送新闻到你的通知渠道。\n*   **Web 报告**：在浏览器访问 `http:\u002F\u002F\u003C你的服务器 IP>:8080`，可查看可视化的热点日报，支持暗色模式、宽屏布局及一键复制新闻链接。\n\n### 第四步：调整运行频率（可选）\n在 `config.yaml` 的 `schedule` 部分修改定时任务，例如仅在工作日早晚推送：\n```yaml\nschedule:\n  - time: \"09:00\"\n    enabled: true\n  - time: \"18:00\"\n    enabled: true\n```\n\n修改配置后，重启容器即可生效：\n```bash\ndocker restart trendradar\n```","某跨境电商市场分析师需要实时追踪全球社交媒体上关于“可持续包装”的舆情动态，以便快速调整营销策略。\n\n### 没有 TrendRadar 时\n- **信息过载严重**：每天需手动刷新 Twitter、Reddit、新闻网站等十几个平台，耗费数小时筛选噪音，极易遗漏关键小众讨论。\n- **语言壁垒阻碍**：面对德语、日语等非英语源头的突发热点，依赖人工翻译或插件，导致响应滞后，错失最佳介入时机。\n- **洞察深度不足**：仅能获取原始链接，缺乏对情感倾向（正面\u002F负面）和趋势走向的量化分析，难以向团队提供有数据支撑的决策建议。\n- **通知分散低效**：重要信息散落在不同网页标签中，无法第一时间推送到手机或办公 IM，经常等到发现时热度已消退。\n\n### 使用 TrendRadar 后\n- **聚合精准筛选**：配置好关键词后，TrendRadar 自动聚合多平台及 RSS 源，利用 AI 智能过滤无关内容，只推送高相关性资讯，每日节省 3 小时以上。\n- **无障碍全球视野**：内置 AI 翻译功能将多语言热点实时转为中文简报，确保分析师能同步掌握全球各地的一手动向，反应速度提升至分钟级。\n- **深度智能洞察**：TrendRadar 自动生成包含情感分析和趋势预测的 AI 简报，直接指出舆情是“爆发前夜”还是“衰退期”，让汇报方案更具前瞻性。\n- **多渠道即时触达**：通过飞书和微信实时接收结构化警报，无论是在通勤路上还是会议间隙，都能立刻掌握核心情报并下达指令。\n\nTrendRadar 将原本被动、碎片化的信息搜集工作，转变为主动、智能化的决策辅助流程，让专业人士真正从“刷新闻”进化为“驾驭趋势”。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsansan0_TrendRadar_3307ed96.png","sansan0","sansan","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fsansan0_4267cbd5.jpg","星星之火，可以燎原\r\n\u002F A single spark can start a prairie fire  \r\n",null,"https:\u002F\u002Fgithub.com\u002Fsansan0",[79,83,87,91,95],{"name":80,"color":81,"percentage":82},"Python","#3572A5",96.5,{"name":84,"color":85,"percentage":86},"HTML","#e34c26",2.1,{"name":88,"color":89,"percentage":90},"Batchfile","#C1F12E",0.8,{"name":92,"color":93,"percentage":94},"Shell","#89e051",0.4,{"name":96,"color":97,"percentage":98},"Dockerfile","#384d54",0.2,51500,23084,"2026-04-12T15:17:34","GPL-3.0","Linux, macOS, Windows","未说明",{"notes":106,"python":104,"dependencies":107},"该项目主打轻量易部署，支持多种运行方式：1. 可通过 Docker 一键部署（镜像名：wantcat\u002Ftrendradar）；2. 支持 GitHub Actions 自动化运行；3. 支持 GitHub Pages 静态部署。项目依赖外部 API (newsnow) 获取数据，并可选配各类通知渠道（微信、钉钉、飞书、Telegram 等）及 AI 模型进行智能分析和翻译，具体资源消耗取决于是否启用 AI 功能及推送频率。",[104],[16,13,15,14,35],[110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125],"data-analysis","python","trending-topics","news","hot-news","docker","ntfy","mail","mcp","mcp-server","wechat","wework","bark","rss","ai","llm","2026-03-27T02:49:30.150509","2026-04-13T04:24:20.647981",[129,134,139,144,149,154],{"id":130,"question_zh":131,"answer_zh":132,"source_url":133},31301,"Fork 项目后修改了关键词配置，但 GitHub Pages 页面长时间未更新怎么办？","不要直接使用 Fork 功能。解决方法是：点击原仓库页面上的 \"Use this template\"（使用此模板）按钮，创建一个包含所有分支的新仓库。这样可以确保所有工作流和配置正确初始化，避免同步延迟或配置不生效的问题。","https:\u002F\u002Fgithub.com\u002Fsansan0\u002FTrendRadar\u002Fissues\u002F109",{"id":135,"question_zh":136,"answer_zh":137,"source_url":138},31302,"Docker 部署时 Ntfy 推送报错 `'latin-1' codec can't encode characters` 是什么原因？","这是因为 Docker 读取环境变量的优先级问题。如果你使用 docker-compose 部署，程序会优先读取 `.env` 文件中的配置。如果 `.env` 文件中没有填写 `NTFY_TOPIC`，程序可能会错误地读取到配置文件中的注释内容（包含 # 号等非拉丁字符），导致编码错误。\n\n解决方法：检查并确保 `.env` 文件中已正确填写 `NTFY_TOPIC` 的值，不要留空或依赖 yaml 文件中的默认值。","https:\u002F\u002Fgithub.com\u002Fsansan0\u002FTrendRadar\u002Fissues\u002F110",{"id":140,"question_zh":141,"answer_zh":142,"source_url":143},31303,"配置了邮箱发送功能，但运行后收不到任何邮件通知怎么办？","常见原因是邮箱账号和密码的配置格式错误。在 GitHub Secrets 或配置文件中，邮箱账号（用户名）和密码必须**分开填写**在两个不同的变量中（例如 `EMAIL_USER` 和 `EMAIL_PASS`），不能将两者合并写在同一个变量里。请检查配置并将它们拆分后重试。","https:\u002F\u002Fgithub.com\u002Fsansan0\u002FTrendRadar\u002Fissues\u002F190",{"id":145,"question_zh":146,"answer_zh":147,"source_url":148},31304,"飞书（Feishu\u002FLark）机器人配置了 Secret 且日志显示发送成功，但实际收不到消息怎么办？","如果日志显示发送成功但终端无消息，通常是因为飞书机器人的安全设置不匹配。请检查飞书后台机器人配置：\n1. 确认已启用“签名校验”并正确复制 Secret 到项目配置中；\n2. 或者，如果未使用签名校验，请确保机器人权限设置允许接收来自该 IP 或 Webhook 的消息；\n3. 检查是否误选了“加密”选项但未在代码中对应处理。大多数情况下，重新核对 Secret 是否完全一致（无多余空格）可解决问题。","https:\u002F\u002Fgithub.com\u002Fsansan0\u002FTrendRadar\u002Fissues\u002F7",{"id":150,"question_zh":151,"answer_zh":152,"source_url":153},31305,"Fork 的旧版本仓库突然无法打开，Action 一直排队且收到大量失败邮件怎么办？","这通常是因为 Fork 的仓库版本过旧（如 3.0.5），而上游仓库发生了重大架构变更或资源限制调整，导致旧版工作流无法正常执行或占用过多资源被挂起。\n\n建议方案：\n1. 不要尝试修复旧 Fork，直接删除该仓库；\n2. 回到原项目主页，使用 \"Use this template\" 重新创建一个新的仓库；\n3. 将旧的配置文件（如 keywords, secrets 等）迁移到新仓库中。新仓库会自动适配最新的运行环境和规则。","https:\u002F\u002Fgithub.com\u002Fsansan0\u002FTrendRadar\u002Fissues\u002F516",{"id":155,"question_zh":156,"answer_zh":157,"source_url":158},31306,"Docker 容器启动后不断重启（Restarting），状态码为 1，如何排查？","容器不断重启通常是因为缺少必要的环境变量或配置文件格式错误，导致入口脚本（entrypoint.sh）执行失败退出。\n\n排查步骤：\n1. 运行 `docker logs \u003C容器 ID>` 查看具体报错信息；\n2. 检查 `docker-compose.yml` 中是否挂载了正确的配置文件路径；\n3. 确认所有必填的环境变量（如 API Keys, 数据库地址等）已在 `.env` 文件或 compose 文件中正确定义；\n4. 如果是权限问题，尝试给配置文件添加执行权限或修正用户映射。","https:\u002F\u002Fgithub.com\u002Fsansan0\u002FTrendRadar\u002Fissues\u002F239",[]]