🚀 TrendRadar
A hot news assistant that can be deployed in as fast as 30 seconds, helping you bid farewell to ineffective information browsing and focus only on the news you truly care about.
This project aims to be lightweight and easy to deploy.
🚨 [Must Read] Important Announcement: Changes in Deployment Method and Storage Architecture in v4.0.0
🛠️ Please Choose the Deployment Method That Suits You
🅰️ Option 1: Docker Deployment (Recommended 🔥)
- Features: The most stable and simplest method. Data is stored in local SQLite, giving you full control.
- Suitable for: Users with their own servers, NAS, or computers that run continuously.
👉 Jump to Docker Deployment Tutorial
🅱️ Option 2: GitHub Actions Deployment (Restored ✅)
- Features: Data is no longer directly written to the repository (Git Commit) but stored in remote cloud storage.
- Recommended: Configure a remote cloud storage service (such as Cloudflare R2, Alibaba Cloud OSS, Tencent Cloud COS, etc.).
👉 Click to View Detailed Configuration Tutorial
📑 Quick Navigation
| 🚀 Quick Start |
🤖 AI Intelligent Analysis |
⚙️ Configuration Details |
📝 Update Log |
❓ Q&A and Communication |
| 🐳 Docker Deployment |
🔌 MCP Client |
📚 Project Related |
🪄 Sponsors |
|
- Thanks to the contributors who patiently reported bugs. Every piece of your feedback makes the project more perfect 😉;
- Thanks to the viewers who gave stars to the project. Forking is an option, and starring is also appreciated. Having both is the best support for the open-source spirit 😍;
- Thanks to the readers who followed the official account. Your positive interactions such as leaving messages, liking, sharing, and recommending make the content more engaging 😎.
👉 Click to Expand: List of Thanks (Currently 🔥73🔥 People)
Infrastructure Support
Thanks to GitHub for providing free infrastructure, which is the biggest prerequisite for this project to run conveniently with a single click of "fork".
Data Support
This project uses the API of the newsnow project to obtain multi-platform data. Special thanks to the author for providing this service.
After contacting the author, he said there's no need to worry about server pressure, which is based on his kindness and trust. Please:
- Go to the newsnow project and give it a star to show your support
- When deploying with Docker, please reasonably control the push frequency and don't overuse the resources.
Promotion Assistance
Thanks to the following platforms and individuals for their recommendations (listed in chronological order)
Audience Support
Thanks to the friends who provided financial support. Your generosity has turned into snacks and drinks beside the keyboard, accompanying every iteration of the project.
The "One Yuan Like" feature has been suspended. If you still want to support the author, you can click "Like the Author" at the bottom of the article on the official account.
A friend with a cute cat avatar, I don't know where you found my payment code, but you gave three consecutive likes of 1.8. I've received your kind intention. Thank you for your love.
| Liker |
Amount |
Date |
Note |
| D*5 |
1.8 * 3 |
2025.11.24 |
|
| *Ghost |
1 |
2025.11.17 |
|
| *Chao |
10 |
2025.11.17 |
|
| R*w |
10 |
2025.11.17 |
This agent is amazing, bro |
| J*o |
1 |
2025.11.17 |
Thanks for the open source. Wish the boss success in his career |
| *Chen |
8.88 |
2025.11.16 |
The project is good. I'm studying it |
| *Hai |
1 |
2025.11.15 |
|
| *De |
1.99 |
2025.11.15 |
|
| *Shu |
8.8 |
2025.11.14 |
Thanks for the open source. The project is great. Support it |
| M*e |
10 |
2025.11.14 |
Open source is not easy. The boss has worked hard |
| **Ke |
1 |
2025.11.14 |
|
| *Yun |
88 |
2025.11.13 |
Great project. Thanks for the open source |
| *W |
6 |
2025.11.13 |
|
| *Kai |
1 |
2025.11.13 |
|
| Dui*. |
1 |
2025.11.13 |
Thanks for your TrendRadar |
| s*y |
1 |
2025.11.13 |
|
| **Xiang |
10 |
2025.11.13 |
Great project. Wish I had found it earlier. Thanks for the open source! |
| *Wei |
9.9 |
2025.11.13 |
TrendRadar is awesome. Treat the teacher to a cup of coffee~ |
| h*p |
5 |
2025.11.12 |
Support Chinese open source. Come on! |
| c*r |
6 |
2025.11.12 |
|
| a*n |
5 |
2025.11.12 |
|
| 。*c |
1 |
2025.11.12 |
Thanks for the open source sharing |
| *Ji |
1 |
2025.11.11 |
|
| *Zhu |
1 |
2025.11.10 |
|
| *Liao |
10 |
2025.11.09 |
|
| *Jie |
5 |
2025.11.08 |
|
| *Dian |
8.80 |
2025.11.07 |
Development is not easy. Support it. |
| Q*Q |
6.66 |
2025.11.07 |
Thanks for the open source! |
| C*e |
1 |
2025.11.05 |
|
| Peter Fan |
20 |
2025.10.29 |
|
| M*n |
1 |
2025.10.27 |
Thanks for the open source |
| *Xu |
8.88 |
2025.10.23 |
Teacher, I'm a newbie. I've been struggling for a few days. Please teach me |
| Eason |
1 |
2025.10.22 |
I still don't understand, but you're doing a good thing |
| P*n |
1 |
2025.10.20 |
|
| *Jie |
1 |
2025.10.19 |
|
| *Xu |
1 |
2025.10.18 |
|
| *Zhi |
1 |
2025.10.17 |
|
| *😀 |
10 |
2025.10.16 |
Like |
| **Jie |
10 |
2025.10.16 |
|
| *Xiao |
10 |
2025.10.16 |
|
| *Ji |
5 |
2025.10.14 |
TrendRadar |
| J*d |
1 |
2025.10.14 |
Thanks for your tool. It's fun... |
| *H |
1 |
2025.10.14 |
|
| Na*O |
10 |
2025.10.13 |
|
| *Yuan |
1 |
2025.10.13 |
|
| P*g |
6 |
2025.10.13 |
|
| Ocean |
20 |
2025.10.12 |
...It's really great!! Even newbies can use it directly... |
| **Pei |
5.2 |
2025.10.2 |
github-yzyf1312: Long live open source |
| *Chun |
3 |
2025.9.23 |
Come on. It's very good |
| *🍍 |
10 |
2025.9.21 |
|
| E*f |
1 |
2025.9.20 |
|
| *Ji |
1 |
2025.9.20 |
|
| z*u |
2 |
2025.9.19 |
|
| **Hao |
5 |
2025.9.17 |
|
| *Hao |
1 |
2025.9.15 |
|
| T*T |
2 |
2025.9.15 |
Like |
| *Jia |
10 |
2025.9.10 |
|
| *X |
1.11 |
2025.9.3 |
|
| *Biao |
20 |
2025.8.31 |
From Lao Tong. Thanks |
| *Xia |
1 |
2025.8.30 |
|
| 2*D |
88 |
2025.8.13 afternoon |
|
| 2*D |
1 |
2025.8.13 morning |
|
| S*o |
1 |
2025.8.05 |
Support |
| *Xia |
10 |
2025.8.04 |
|
| x*x |
2 |
2025.8.03 |
trendRadar is a great project. Like it |
| *Yuan |
1 |
2025.8.01 |
|
| *Xie |
5 |
2025.8.01 |
|
| *Meng |
0.1 |
2025.7.30 |
|
| **Long |
10 |
2025.7.29 |
Support |
✨ Features
Aggregation of Hotspots from Across the Web
- Zhihu
- Douyin
- Bilibili Hot Searches
- Wall Street News
- Tieba
- Baidu Hot Searches
- Cailian Press Popular News
- The Paper
- Phoenix News
- Toutiao
- Weibo
By default, it monitors 11 mainstream platforms, and you can also add additional platforms manually.
💡 For detailed configuration tutorials, see Configuration Details - Platform Configuration.
Intelligent Push Strategy
Three Push Modes:
| Mode |
Suitable Scenarios |
Push Features |
| Daily Summary (daily) |
Corporate managers/Ordinary users |
Push all matching news of the day on time (including previously pushed news) |
| Current List (current) |
Self-media people/Content creators |
Push news matching the current list on time (news that remains on the list will appear every time) |
| Incremental Monitoring (incremental) |
Investors/Traders |
Only push new content, with zero duplication |
💡 Quick Selection Guide:
- 🔄 Don't want to see duplicate news → Use
incremental (Incremental Monitoring)
- 📊 Want to see the complete list trend → Use
current (Current List)
- 📝 Need a daily summary report → Use
daily (Daily Summary)
For detailed comparison and configuration tutorials, see Configuration Details - Push Mode Details.
Additional Features (Optional):
| Feature |
Description |
Default |
| Push Time Window Control |
Set the time range for pushing (e.g., 09:00 - 18:00) to avoid disturbing during non-working hours |
Off |
| Content Order Configuration |
Adjust the display order of "Hot Word Statistics" and "New Hot News" (Added in v3.5.0) |
Statistics first |
💡 For detailed configuration tutorials, see Configuration Details - Report Configuration and Configuration Details - Push Time Window.
Precise Content Filtering
Set your personal keywords (e.g., AI, BYD, Education Policy) to only push relevant hotspots and filter out irrelevant information.
Basic Syntax (5 types):
- Ordinary words: Basic matching
- Required words
+: Limit the scope
- Filter words
!: Exclude interference
- Quantity limit
@: Control the number of displayed items (Added in v3.2.0)
- Global filter
[GLOBAL_FILTER]: Globally exclude specified content (Added in v3.5.0)
Advanced Features (Added in v3.2.0):
- 🔢 Keyword sorting control: Prioritize by popularity or configuration order
- 📊 Precise limit on the number of displayed items: Global configuration + individual configuration for flexible control of the push length
Phrase management:
- Separate different topics with blank lines for independent statistics.
💡 Basic configuration tutorial: Keyword Configuration - Basic Syntax
💡 Advanced configuration tutorial: Keyword Configuration - Advanced Configuration
💡 You can also choose not to filter and push all hotspots completely (leave the frequency_words.txt file empty).
Hotspot Trend Analysis
Track the real-time changes in news popularity, allowing you to not only know "what's on the hot search" but also understand "how the hotspots evolve".
- Timeline tracking: Record the complete time span of each news item from its first appearance to its last appearance.
- Popularity changes: Count the ranking changes and the number of appearances of news items in different time periods.
- New detection: Identify newly emerging hot topics in real-time and mark them with 🆕 for immediate notification.
- Persistence analysis: Distinguish between one-time hot topics and in-depth news that continues to ferment.
- Cross-platform comparison: Compare the ranking performance of the same news item on different platforms to see the differences in media attention.
💡 For the description of the push format, see Configuration Details - Push Format Reference.
Personalized Hotspot Algorithm
No longer be led by the algorithms of various platforms. TrendRadar will reorganize the hot searches across the web:
- Emphasize high-ranking news (60%): Prioritize the news ranked at the top of each platform.
- Pay attention to topics that appear continuously (30%): News that appears repeatedly is more important.
- Consider the ranking quality (10%): News that not only appears multiple times but also ranks high frequently.
💡 These three proportions can be adjusted. See Configuration Details - Hotspot Weight Adjustment for details.
Multi-channel Real-time Push
Supports Enterprise WeChat (+ WeChat Push Solution), Feishu, DingTalk, Telegram, Email, ntfy, Bark, Slack, sending messages directly to your mobile phone and email.
📌 Multi-account Push Description (Added in v3.5.0):
- ✅ Supports multi-account configuration: All push channels (Feishu, DingTalk, Enterprise WeChat, Telegram, ntfy, Bark, Slack) support configuring multiple accounts.
- ✅ Configuration method: Use the English semicolon
; to separate multiple account values.
- ✅ Example: For the Secret value of
FEISHU_WEBHOOK_URL, fill in https://webhook1;https://webhook2.
- ⚠️ Pairing configuration: Telegram and ntfy require the number of paired parameters (such as token and chat_id) to be consistent.
- ⚠️ Quantity limit: By default, each channel supports a maximum of 3 accounts, and any additional accounts will be truncated.
Flexible Storage Architecture (Major Update in v4.0.0)
Support for Multiple Storage Backends:
- ☁️ Remote Cloud Storage: The default for the GitHub Actions environment, supporting the S3-compatible protocol (R2/OSS/COS, etc.). Data is stored in the cloud without polluting the repository.
- 💾 Local SQLite Database: The default for Docker/local environments, giving you full control over your data.
- 🔄 Automatic Backend Selection: Automatically switch the storage method based on the running environment.
Data Formats:
| Format |
Purpose |
Description |
| SQLite |
Main storage |
A single-file database with fast querying and support for MCP AI analysis |
| TXT |
Optional snapshot |
A readable text format for easy direct viewing |
| HTML |
Report display |
A beautifully visualized page compatible with both PC and mobile devices |
Data Management:
- ✅ Automatically clean up expired data (the number of retention days can be configured).
- ✅ Support for time zone configuration (global time zones).
💡 For detailed descriptions, see Configuration Details - Storage Configuration.
Multi-platform Deployment
- GitHub Actions: Automatically crawl data at regular intervals and store it remotely in the cloud (requires sign-in for renewal).
- Docker Deployment: Supports containerized operation on multiple architectures, with data stored locally.
- Local Run: Can be directly run on Windows/Mac/Linux.
AI Intelligent Analysis (Added in v3.0.0)
An AI dialogue analysis system based on the MCP (Model Context Protocol), allowing you to deeply mine news data using natural language.
- Dialogue-based query: Ask questions in natural language, such as "Query the hotspots on Zhihu yesterday" or "Analyze the recent popularity trend of Bitcoin".
- 13 analysis tools: Cover basic queries, intelligent retrieval, trend analysis, data insights, sentiment analysis, etc.
- Support for multiple clients: Cherry Studio (GUI configuration), Claude Desktop, Cursor, Cline, etc.
- Deep analysis capabilities:
- Topic trend tracking (popularity changes, lifecycle, explosion detection, trend prediction)
- Cross-platform data comparison (activity statistics, keyword co-occurrence)
- Intelligent summary generation, similar news search, historical association retrieval
💡 Usage Tip: The AI function requires local news data support.
- The project comes with test data from November 1 - 15, allowing you to experience the AI function immediately.
- It is recommended to deploy and run the project yourself to obtain more real-time data.
See AI Intelligent Analysis for details.
Zero Technical Threshold Deployment
You can use it with a single click of "Fork" on GitHub, without the need for programming skills.
30-second deployment: GitHub Pages (web browsing) supports one-click saving as an image, which can be easily shared with others at any time.
1-minute deployment: Enterprise WeChat (mobile phone notification).
💡 Tip: Want a real-time updated web version? After forking, go to your repository's Settings → Pages and enable GitHub Pages. Preview the effect.
Reduce Dependence on Apps
Change from being "kidnapped by algorithm recommendations" to "actively obtaining the information you want".
Suitable for: Investors, self-media people, corporate public relations personnel, and ordinary users who care about current affairs.
Typical scenarios: Stock market investment monitoring, brand public opinion tracking, industry trend monitoring, and obtaining daily life information.
| Github Pages Effect (Mobile-friendly, Email Push Effect) |
Feishu Push Effect |
|
|
📝 Update Log
Upgrade Instructions:
- 📌 Check the latest updates: Original Repository Update Log
- Tip: Do not update this project through Sync fork. It is recommended to check the [Historical Updates] and clarify the specific [Upgrade Method] and [Function Content].
- Major Version Upgrade: When upgrading from v1.x to v2.y, it is recommended to delete the existing fork and then fork it again. This is more labor-saving and can avoid configuration conflicts.
December 20, 2025 - v4.0.3
- Added URL standardization function to solve the problem of duplicate pushes caused by dynamic parameters (such as
band_rank) on platforms like Weibo.
- Fixed the detection logic of the incremental mode to correctly identify historical titles.
December 13, 2025 - mcp-v1.1.0
MCP Module Update:
- Adapted to v4.0.0 and is also compatible with v3.x data.
- Added storage synchronization tools:
sync_from_remote: Pull data from remote storage to local.
get_storage_status: Get storage configuration and status.
list_available_dates: List the available date ranges locally/remotely.
👉 Click to Expand: Historical Updates
December 17, 2025 - v4.0.1
- Added a proxy method for push records in the StorageManager.
- Switched the S3 client to the virtual-hosted style to improve compatibility (supporting more services such as Tencent Cloud COS).
December 13, 2025 - v4.0.0
🎉 Major Update: Comprehensive Reconstruction of Storage and Core Architecture
- Support for Multiple Storage Backends: Introduced a new storage module supporting local SQLite and remote cloud storage (S3-compatible protocol, recommended free Cloudflare R2), suitable for GitHub Actions, Docker, and local environments.
- Optimized Database Structure: Reconstructed the SQLite database table structure to improve data efficiency and query capabilities.
- Modularized Core Code: Split the main program logic into multiple modules in the trendradar package, significantly improving code maintainability.
- Enhanced Features: Implemented date format standardization, data retention policies, time zone configuration support, time display optimization, and fixed the problem of data persistence in remote storage, ensuring the accuracy of data merging.
- Cleaned and Compatible: Removed most historical compatibility code and unified the data storage and reading methods.
December 3, 2025 - v3.5.0
🎉 Core Function Enhancement
-
Support for Multi-account Push
- All push channels (Feishu, DingTalk, Enterprise WeChat, Telegram, ntfy, Bark, Slack) support multi-account configuration.
- Use the semicolon
; to separate multiple accounts, for example: FEISHU_WEBHOOK_URL=url1;url2.
- Automatically verify the consistency of the number of paired configurations (such as Telegram's token and chat_id).
-
Configurable Push Content Order
- Added the
reverse_content_order configuration item.
- Supports customizing the display order of hot word statistics and new hot news.
-
Global Filter Keywords
- Added the
[GLOBAL_FILTER] area marker, supporting global filtering of content you don't want to see.
- Suitable scenarios: Filtering advertisements, marketing content, and low-quality content.
🐳 Docker Dual-path HTML Generation Optimization
- Problem Fix: Solved the problem that
index.html could not be synchronized to the host in the Docker environment.
- Dual-path Generation: The daily summary HTML is generated in two locations simultaneously.
index.html (Project root directory): Accessed by GitHub Pages.
output/index.html: Mounted via Docker Volume, directly accessible from the host.
- Compatibility: Ensures that the web version report can be accessed normally in Docker, GitHub Actions, and local running environments.
🐳 Docker MCP Image Support
- Added an independent MCP service image
wantcat/trendradar-mcp.
- Supports Docker deployment of the AI analysis function, providing services through the HTTP interface (port 3333).
- Dual-container architecture: The news push service and the MCP service run independently and can be scaled and restarted separately.
- See Docker Deployment - MCP Service for details.
🌐 Web Server Support
- Added a built-in web server, supporting access to the generated reports through a browser.
- Control the start/stop via the
manage.py command: docker exec -it trend-radar python manage.py start_webserver.
- Access address:
http://localhost:8080 (The port can be configured).
- Security features: Static file service, directory restriction, local access.
- Supports both automatic startup and manual control modes.
📖 Documentation Optimization
- Added the Report Configuration section: Detailed explanation of report-related parameters.
- Added the Push Time Window Configuration section: Tutorial on push_window configuration.
- Added the Execution Frequency Configuration section: Explanation of Cron expressions and common examples.
- Added the Multi-account Push Configuration section: Detailed explanation of multi-account push configuration.
- Optimized each configuration section: Uniformly added "Configuration Location" descriptions.
- Simplified the quick start configuration instructions: The three core files are clear at a glance.
- Optimized the Docker Deployment section: Added image descriptions, recommended git clone for deployment, and reorganized the deployment methods.
🔧 Upgrade Instructions:
- GitHub Fork Users: Update
main.py, config/config.yaml (Multi-account push support is added, and there is no need to modify the existing configuration).
- Multi-account Push: A new feature, not enabled by default, and the existing single-account configuration will not be affected.
November 26, 2025 - mcp-v1.0.3
MCP Module Update:
- Added a date parsing tool
resolve_date_range to solve the problem of inconsistent date calculations in AI models.
- Supports parsing natural language date expressions (this week, last 7 days, last month, etc.).
- The total number of tools increased from 13 to 14.
November 28, 2025 - v3.4.1
🔧 Format Optimization
-
Enhanced Bark Push
- Bark now supports Markdown rendering.
- Enables native Markdown formats: bold, links, lists, code blocks, etc.
- Removed pure text conversion, fully utilizing Bark's native rendering capabilities.
-
Precise Slack Formatting
- Uses the dedicated mrkdwn format to process batched content.
- Improves the accuracy of byte size estimation (avoiding message overrun).
- Optimizes the link format:
<url|text> and bold syntax: *text*.
-
Performance Improvement
- Format conversion is completed during the batching process, avoiding secondary processing.
- Accurately estimates the message size, reducing the failure rate of sending.
🔧 Upgrade Instructions:
- GitHub Fork Users: Update
main.py, config.yaml.
November 25, 2025 - v3.4.0
🎉 Added Slack Push Support
-
Team Collaboration Push Channel
- Supports Slack Incoming Webhooks (a globally popular team collaboration tool).
- Centralized message management, suitable for teams to share hot news.
- Supports the mrkdwn format (bold, links, etc.).
-
Multiple Deployment Methods
- GitHub Actions: Configure the
SLACK_WEBHOOK_URL Secret.
- Docker: Set the environment variable
SLACK_WEBHOOK_URL.
- Local Run: Configure it in the
config/config.yaml file.
📖 Detailed Configuration Tutorial: Quick Start - Slack Push.
- Optimized the one-click installation experience of MCP in
setup-windows.bat and setup-windows-en.bat.
🔧 Upgrade Instructions:
- GitHub Fork Users: Update
main.py, config/config.yaml, .github/workflows/crawler.yml.
November 24, 2025 - v3.3.0
🎉 Added Bark Push Support
-
iOS Exclusive Push Channel
- Supports Bark push (based on APNs, iOS platform).
- Free and open source, simple and efficient, without advertising interference.
- Supports both the official server and self-built servers.
-
Multiple Deployment Methods
- GitHub Actions: Configure the
BARK_URL Secret.
- Docker: Set the environment variable
BARK_URL.
- Local Run: Configure it in the
config/config.yaml file.
📖 Detailed Configuration Tutorial: Quick Start - Bark Push.
🐛 Bug Fix
- Fixed the problem that the
ntfy_server_url configuration in config.yaml was not taking effect (#345).
🔧 Upgrade Instructions:
- GitHub Fork Users: Update
main.py, config/config.yaml, .github/workflows/crawler.yml.
November 23, 2025 - v3.2.0
🎯 Added Advanced Customization Features
-
Keyword Sorting Priority Configuration
- Supports two sorting strategies: popularity first vs. configuration order first.
- Meets different usage scenarios: hotspot tracking or personalized attention.
-
Precise Control of Display Quantity
- Global configuration: Uniformly limit the number of news displayed for all keywords.
- Individual configuration: Use the
@number syntax to set a limit for specific keywords.
- Effectively control the push length and highlight key content.
📖 Detailed Configuration Tutorial: Keyword Configuration - Advanced Configuration.
🔧 Upgrade Instructions:
- GitHub Fork Users: Update
main.py, config/config.yaml.
November 18, 2025 - mcp-v1.0.2
MCP Module Update:
- Optimized the situation where querying today's news might incorrectly return data from the past.
November 22, 2025 - v3.1.1
- Fixed the Crash Problem Caused by Abnormal Data: Solved the
'float' object has no attribute 'lower' error encountered by some users in the GitHub Actions environment.
- Added a dual protection mechanism: Filter invalid titles (None, float, empty strings) during data acquisition, and add type checks at function calls.
- Improved system stability, ensuring normal operation even when the data source returns abnormal formats.
Upgrade Instructions (GitHub Fork Users):
- Must update:
main.py.
- It is recommended to use the minor version upgrade method: Copy and replace the above file.
November 20, 2025 - v3.1.0
- Added Personal WeChat Push Support: The Enterprise WeChat application can push messages to personal WeChat without the need to install the Enterprise WeChat APP.
- Supports two message formats:
markdown (Enterprise WeChat group robot) and text (Personal WeChat application).
- Added the
WEWORK_MSG_TYPE environment variable configuration, supporting multiple deployment methods such as GitHub Actions, Docker, and docker compose.
- The
text mode automatically removes Markdown syntax, providing a pure text push effect.
- See the "Personal WeChat Push" configuration instructions in the quick start for details.
Upgrade Instructions (GitHub Fork Users):
- Must update:
main.py, config/config.yaml.
- Optional update:
.github/workflows/crawler.yml (if deploying using GitHub Actions).
- It is recommended to use the minor version upgrade method: Copy and replace the above files.
November 12, 2025 - v3.0.5
- Fixed the logical error in the SSL/TLS port configuration for email sending.
- Optimized the default use of port 465 (SSL) for email service providers (QQ/163/126).
- Added Docker Environment Variable Support: Core configuration items (
enable_crawler, report_mode, push_window, etc.) support being overridden by environment variables, solving the problem that NAS users' configuration file modifications were not taking effect (see the 🐳 Docker Deployment section for details).
October 26, 2025 - mcp-v1.0.1
MCP Module Update:
- Fixed the error in passing date query parameters.
- Unified the time parameter formats of all tools.
October 31, 2025 - v3.0.4
- Solved the problem of Feishu errors caused by overly long push content by implementing batch push.
October 23, 2025 - v3.0.3
- Expanded the display range of ntfy error messages.
October 21, 2025 - v3.0.2
- Fixed the encoding problem of ntfy push.
October 20, 2025 - v3.0.0
Major Update - AI Analysis Function Launched 🤖
-
Core Features:
- Added an AI analysis server based on MCP (Model Context Protocol).
- Supports 13 intelligent analysis tools: basic queries, intelligent retrieval, advanced analysis, system management.
- Natural language interaction: Query and analyze news data through dialogue.
- Support for multiple clients: Claude Desktop, Cherry Studio, Cursor, Cline, etc.
-
Analysis Capabilities:
- Topic trend analysis (popularity tracking, lifecycle, explosion detection, trend prediction)
- Data insights (platform comparison, activity statistics, keyword co-occurrence)
- Sentiment analysis, similar news search, intelligent summary generation
- Historical related news retrieval, multi-mode search
-
Update Notice:
- This is an independent AI analysis function and does not affect the existing push function.
- It can be used optionally without upgrading the existing deployment.
October 15, 2025 - v2.4.4
-
Update Content:
- Fixed the ntfy push encoding problem + 1.
- Fixed the problem of push time window judgment.
-
Update Notice:
- It is recommended to use the "minor version upgrade".
October 10, 2025 - v2.4.3
Thanks to nidaye996 for discovering the experience issue.
-
Update Content:
- Renamed the "Silent Push Mode" to "Push Time Window Control" to improve the understandability of the function.
- Clarified that the push time window is an optional additional feature that can be used in combination with the three push modes.
- Improved the comments and documentation descriptions to make the function positioning clearer.
-
Update Notice:
- This is just a refactoring, and there is no need to upgrade.
October 8, 2025 - v2.4.2
-
Update Content:
- Fixed the ntfy push encoding problem.
- Fixed the problem of missing configuration files.
- Optimized the ntfy push effect.
- Added the function of segmented export of GitHub page images.
-
Update Notice:
- It is recommended to use the "major version update".
October 2, 2025 - v2.4.0
Added ntfy Push Notification
-
Core Features:
- Supports the ntfy.sh public service and self-hosted servers.
-
Use Scenarios:
- Suitable for users who value privacy (supports self-hosting).
- Cross-platform push (iOS, Android, Desktop, Web).
- No need to register an account (public server).
- Open source and free (MIT protocol).
-
Update Notice:
- It is recommended to use the "major version update".
September 26, 2025 - v2.3.2
- Fixed the problem that the email notification configuration check was being overlooked (#88).
Fix Description:
- Solved the problem that the system still prompted "No webhook configured" even when the email notification was correctly configured.
September 22, 2025 - v2.3.1
- Added Email Push Function: Supports sending hot news reports to email.
- Intelligent SMTP Recognition: Automatically recognizes the configurations of more than 10 email service providers such as Gmail, QQ Mail, Outlook, and NetEase Mail.
- Beautiful HTML Format: The email content uses the same HTML format as the web version, with a beautiful layout and mobile device compatibility.
- Support for Batch Sending: Supports multiple recipients, and you can send to multiple people simultaneously by separating them with commas.
- Customizable SMTP: Allows you to customize the SMTP server and port.
- Fixed the Docker build network connection problem.
Usage Instructions:
- Suitable scenarios: Suitable for users who need email archiving, team sharing, and scheduled reports.
- Supported email service providers: Gmail, QQ Mail, Outlook/Hotmail, 163/126 Mail, Sina Mail, Sohu Mail, etc.
Update Notice:
- Since there are many updates this time, if you want to upgrade, it is recommended to use the "major version upgrade".
September 17, 2025 - v2.2.0
- Added a one-click function to save news as images, allowing you to easily share the hotspots you're interested in.
Usage Instructions:
- Suitable scenarios: After you have enabled the web version function according to the tutorial (GitHub Pages).
- Usage method: Open the web link on your mobile phone or computer and click the "Save as Image" button at the top of the page.
- Actual effect: The system will automatically create a beautiful image of the current news report and save it to your mobile phone album or computer desktop.
- Sharing convenience: You can directly send this image to your friends, post it on your WeChat Moments, or share it in your work group, allowing others to see the important news you've discovered.
September 13, 2025 - v2.1.2
- Solved the problem of news push failures caused by DingTalk's push capacity limit by implementing batch push.
September 4, 2025 - v2.1.1
- Fixed the problem that Docker could not run properly on some architectures.
- Officially released the official Docker image
wantcat/trendradar, supporting multiple architectures.
- Optimized the Docker deployment process, allowing you to use it quickly without local building.
August 30, 2025 - v2.1.0
Core Improvement:
- Optimized Push Logic: Changed from "push every time the task is executed" to "controllable push within the time window".
- Time Window Control: Allows you to set the time range for pushing to avoid disturbing during non-working hours.
- Optional Push Frequency: Supports single or multiple pushes within the time period.
Update Notice:
- This function is disabled by default and needs to be manually enabled in
config.yaml to control the push time window.
- When upgrading, both
main.py and config.yaml need to be updated.
August 27, 2025 - v2.0.4
- This version is not a functional fix but an important reminder.
- Please make sure to keep your webhooks safe and do not make them public, do not make them public, do not make them public.
- If you have deployed this project on GitHub by forking, please fill in the webhooks in GitHub Secrets instead of
config.yaml.
- If you have already exposed your webhooks or filled them in
config.yaml, it is recommended to delete them and regenerate new ones.
August 6, 2025 - v2.0.3
- Optimized the web version effect of GitHub Pages for better mobile device use.
July 28, 2025 - v2.0.2
- Refactored the code.
- Solved the problem that the version number was easily overlooked and not modified.
July 27, 2025 - v2.0.1
Fixed Issues:
- The problem of abnormal execution caused by the CRLF line break in the Docker shell script.
- The logical problem that when
frequency_words.txt was empty, no news was sent.
- After the fix, when you choose to leave
frequency_words.txt empty, all news will be pushed, but due to the message push size limit, please make the following adjustments:
- Option 1: Turn off mobile phone push and only choose to deploy on GitHub Pages (this is the solution that can provide the most complete information, as it will reorder the hotspots from all platforms according to your customized hot search algorithm).
- Option 2: Reduce the number of push platforms and give priority to Enterprise WeChat or Telegram. I have implemented batch push for these two platforms (since batch push affects the push experience and only these two platforms have very limited push capacity, I had to implement batch push, but at least it can ensure the integrity of the information).
- Option 3: Can be combined with Option 2. Choosing the
current or incremental mode can effectively reduce the amount of content pushed at one time.
July 17, 2025 - v2.0.0
Major Refactoring:
- Refactored Configuration Management: All configurations are now managed through the
config/config.yaml file (I still haven't split main.py to make it easier for you to copy and upgrade).
- Upgraded Running Modes: Supports three modes -
daily (Daily Summary), current (Current List), incremental (Incremental Monitoring).
- Docker Support: A complete Docker deployment solution supporting containerized operation.
Configuration File Description:
config/config.yaml - The main configuration file (application settings, crawler configuration, notification configuration, platform configuration, etc.).
config/frequency_words.txt - Keyword configuration (setting the monitored keywords).
July 9, 2025 - v1.4.1
Added Function: Added incremental push (configure FOCUS_NEW_ONLY at the top of main.py). This switch only cares about new topics rather than continuous popularity and only sends notifications when there is new content.
Fixed Issue: In some cases, occasional typesetting abnormalities caused by special symbols in the news itself.
June 23, 2025 - v1.3.0
Since the push messages of Enterprise WeChat and Telegram have length limits, I adopted the method of splitting the messages for pushing. For development documentation, see Enterprise WeChat and Telegram.
June 21, 2025 - v1.2.1
In previous versions before this one, not only did you need to copy and replace main.py, but you also needed to copy and replace crawler.yml.
https://github.com/sansan0/TrendRadar/blob/master/.github/workflows/crawler.yml
June 19, 2025 - v1.2.0
Thanks to claude research for organizing the APIs of various platforms, which allowed me to quickly complete the adaptation of each platform (although the code became more redundant~
- Supported Telegram, Enterprise WeChat, and DingTalk push channels, supporting multi-channel configuration and simultaneous push.
June 18, 2025 - v1.1.0
200 stars⭐! Let's keep the momentum going~ Recently, with my "encouragement", quite a few people have liked, shared, and recommended on my official account. I've seen the specific account data in the background, and many have become early supporters. Although I've had the official account for over a month (even though I registered it seven or eight years ago, it's like getting on the bus early but starting late), since you didn't leave messages or private messages, I couldn't respond and thank you individually. So, thank you all here!
- An important update: Added weights. Now, the news you see are the hottest and most attention-grabbing ones at the top.
- Updated the documentation. Since many functions have been updated recently and I was a bit lazy with the previous usage documentation, here is a complete tutorial on configuring ⚙️
frequency_words.txt below.
June 16, 2025 - v1.0.0
- Added a new version update prompt for the project, which is enabled by default. If you want to turn it off, you can change
True to False in "FEISHU_SHOW_VERSION_UPDATE": True in main.py.
June 13 + 14, 2025
- Removed the compatibility code. If you forked the project before, directly copying the code will cause abnormal display on the same day (it will return to normal the next day).
- Added a display of new news at the bottom of Feishu and HTML.
June 9, 2025
100 stars⭐! Let's add a small feature to celebrate.
The frequency_words.txt file added a "must-include word" function using the + sign.
- The syntax for must-include words is as follows:
Either "Tang Seng" or "Zhu Bajie" must be in the title for the news to be included in the push.
+Tang Seng
+Zhu Bajie
- The filtering words have a higher priority:
If the filtering word "Tang Seng's chanting scriptures" is matched in the title, even if "Tang Seng" is a must-include word, the news will not be displayed.
+Tang Seng
!Tang Seng's chanting scriptures
June 2, 2025
- The webpage and Feishu messages support direct redirection to the detailed news on mobile phones.
- Optimized the display effect + 1.
May 26, 2025
- Optimized the display effect of Feishu messages.
Before optimization
|
After optimization
|
🚀 Quick Start
📖 Reminder: Fork users are recommended to first check the latest official documentation to ensure that the configuration steps are up-to-date.
1️⃣ Get the Project Code
Click the green [Use this template] button in the upper right corner of the repository page → Select "Create a new repository".
⚠️ Reminder:
- "Fork" mentioned in the following documentation can be understood as "Use this template".
- Using Fork may cause abnormal operation. See Issue #606 for details.
2️⃣ Set GitHub Secrets (Required + Optional Platforms):
In your forked repository, go to Settings > Secrets and variables > Actions > New repository secret.
⚠️ Instructions for Using GitHub Actions
Important Change in v4.0.0: Introduced an "activity detection" mechanism. GitHub Actions requires regular sign-ins to maintain operation.
🔄 Sign-in Renewal Mechanism:
- Running Cycle: The validity period is 7 days. The service will automatically suspend after the countdown ends.
- Renewal Method: Manually trigger the "Check In" workflow on the Actions page to reset the 7-day validity period.
- Operation Path:
Actions → Check In → Run workflow.
- Design Concept:
- If you forget to sign in for 7 days, perhaps these news are not a necessity for you. A timely pause can help you break away from the information flow and give your brain some breathing space.
- GitHub Actions is a valuable public computing resource. Introducing the sign-in mechanism aims to avoid ineffective idling of computing power and ensure that resources are allocated to truly active and in-need users. Thank you for your understanding and support.
📌 Important Note (Please Read Carefully):
- One Name Corresponds to One Secret: For each configuration item added, click the "New repository secret" button once and fill in a pair of "Name" and "Secret".
- It's Normal Not to See the Value After Saving: For security reasons, after saving and re-editing, you can only see the Name, not the content of the Secret.
- Do Not Create Custom Names: The Name of the Secret must strictly follow the names listed below (such as
WEWORK_WEBHOOK_URL, FEISHU_WEBHOOK_URL, etc.) and cannot be modified or created arbitrarily. Otherwise, the system will not recognize them.
- You Can Configure Multiple Platforms Simultaneously: The system will send notifications to all configured platforms.
👉 Click to Expand: Lightweight Mode vs. Full Mode + AI Analysis
Two Deployment Modes:
| Mode |
Configuration Requirements |
Function Scope |
| Lightweight Mode |
No need to configure storage |
Real-time crawling + Keyword screening + Multi-channel push |
| Full Mode |
Configure remote cloud storage |
Lightweight mode + New detection + Trend tracking + Incremental push + AI analysis |
Explanation of Lightweight Mode:
- ✅ Available: Real-time news crawling, keyword screening, hotspot weight sorting, current list push.
- ❌ Unavailable: New news detection (🆕), popularity trend tracking, incremental mode, daily summary accumulation, MCP AI analysis.
Explanation of Full Mode:
After configuring remote cloud storage, all functions are unlocked (see Recommended Configuration: Remote Cloud Storage below).
🚀 Recommendation: Docker Deployment
If you need long-term and stable operation, it is recommended to use Docker Deployment. The data is stored locally, and there is no need to sign in, but you need to purchase a cloud server at an additional cost.
👉 Click to Expand: Multi-account Push Description (Added in v3.5.0)
- Supports Multi-account Configuration: All push channels (Feishu, DingTalk, Enterprise WeChat, Telegram, ntfy, Bark, Slack) support configuring multiple accounts.
- Configuration Method: Use the English semicolon
; to separate multiple account values.
- Example: For the Secret value of
FEISHU_WEBHOOK_URL, fill in https://webhook1;https://webhook2.
- Pairing Configuration: Telegram and ntfy require the number of paired parameters (such as token and chat_id) to be consistent.
- Quantity Limit: By default, each channel supports a maximum of 3 accounts, and any additional accounts will be truncated.
Example of Multi-account Configuration:
| Name |
Secret Example |
FEISHU_WEBHOOK_URL |
https://webhook1;https://webhook2;https://webhook3 |
TELEGRAM_BOT_TOKEN |
token1;token2 |
TELEGRAM_CHAT_ID |
chatid1;chatid2 |
NTFY_TOPIC |
topic1;topic2 |
NTFY_TOKEN |
;token2 (Leave it empty if the first one doesn't require a token) |
Configuration Example:
As shown above, each line is a configuration item:
- Name: Must use the fixed names listed in the expanded content below (such as
WEWORK_WEBHOOK_URL).
- Secret: Fill in the actual content you obtained from the corresponding platform (such as Webhook address, Token, etc.).
👉 Click to Expand: Recommended Configuration: Remote Cloud Storage
⚠️ Prerequisites for Configuration Using Cloudflare R2 as an Example:
According to the rules of the Cloudflare platform, you need to bind a payment method to activate R2.
- Purpose: Only for identity verification (Verify Only), no charges will be incurred.
- Payment: Supports dual-currency credit cards or PayPal in the Chinese region.
- Usage: The free quota of R2 (10GB storage per month) is sufficient to cover the daily operation of this project, so there's no need to worry about payment.
GitHub Secret Configuration:
Required Configuration (4 Items):
| Name |
Secret Description |
S3_BUCKET_NAME |
Name of the storage bucket (e.g., trendradar-data) |
S3_ACCESS_KEY_ID |
Access Key ID |
S3_SECRET_ACCESS_KEY |
Secret Access Key |
S3_ENDPOINT_URL |
S3 API endpoint (e.g., for R2: https://<account-id>.r2.cloudflarestorage.com) |
Optional Configuration:
| Name |
Secret Description |
S3_REGION |
Region (default auto, some service providers may require specification) |
💡 More Storage Configuration Options: See Storage Configuration Details.
How to Obtain Credentials (Using Cloudflare R2 as an Example):
-
Enter the R2 Overview Page:
-
Create a Storage Bucket:
- Click
Overview.
- Click the
Create bucket button in the upper right corner.
- Enter a name (e.g.,
trendradar-data) and click Create bucket.
-
Create an API Token:
- Return to the Overview page.
- Click
Account Details in the bottom right corner and find and click Manage (Manage R2 API Tokens).
- You will also see
S3 API: https://<account-id>.r2.cloudflarestorage.com (this is the S3_ENDPOINT_URL).
- Click
Create Account APl Token.
- ⚠️ Key Settings:
- Token Name: You can fill in any name (e.g.,
github-action-write).
- Permissions: Select
Administrator read and write.
- Specify Storage Bucket: For security reasons, it is recommended to select
Only apply to the specified bucket and select your bucket (e.g., trendradar-data).
- Click
Create API Token and immediately copy the displayed Access Key ID and Secret Access Key (they will only be shown once!).
👉 Click to Expand: Enterprise WeChat Robot (The Simplest and Quickest Configuration)
GitHub Secret Configuration (⚠️ The Name Must Be Exactly the Same):
- Name:
WEWORK_WEBHOOK_URL (Please copy and paste this name instead of typing it to avoid errors).
- Secret: Your Enterprise WeChat robot Webhook address.
Steps to Set Up the Robot:
Mobile App Setup:
- Open the Enterprise WeChat app → Enter the target internal group chat.
- Click the "..." button in the upper right corner → Select "Message Push".
- Click "Add" → Enter "TrendRadar" as the name.
- Copy the Webhook address, click "Save", and configure the copied content in the above GitHub Secret.
PC Setup Process is Similar
👉 Click to Expand: Personal WeChat Push (Based on the Enterprise WeChat App, Pushing to Personal WeChat)
Since this solution is based on the plugin mechanism of Enterprise WeChat, the push style is pure text (without Markdown format), but it can directly push messages to personal WeChat without installing the Enterprise WeChat app.
GitHub Secret Configuration (⚠️ The Name Must Be Exactly the Same):
-
Name: WEWORK_WEBHOOK_URL (Please copy and paste this name instead of typing it).
-
Secret: Your Enterprise WeChat app Webhook address.
-
Name: WEWORK_MSG_TYPE (Please copy and paste this name instead of typing it).
-
Secret: text.
Setup Steps:
- Complete the above setup of the Enterprise WeChat robot Webhook.
- Add the
WEWORK_MSG_TYPE Secret and set its value to text.
- Follow the steps in the picture below to link your personal WeChat.
- After configuration, you can delete the Enterprise WeChat app on your phone.
Explanation:
- Uses the same Webhook address as the Enterprise WeChat robot.
- The difference lies in the message format:
text is pure text, and markdown is rich text (default).
- The pure text format will automatically remove all Markdown syntax (bold, links, etc.).
👉 Click to Expand: Feishu Robot (The Most User-Friendly Message Display)
GitHub Secret Configuration (⚠️ The Name Must Be Exactly the Same):
- Name:
FEISHU_WEBHOOK_URL (Please copy and paste this name instead of typing it).
- Secret: Your Feishu robot Webhook address (the link starts with something like https://www.feishu.cn/flow/api/trigger-webhook/********).
There are two options. Option 1 is simple to configure, and Option 2 is more complex (but with stable push).
Among them, Option 1 was discovered and suggested by ziventian. Thank you here. By default, it is for personal push, and you can also configure group push operations #97.
Option 1:
For some people, additional operations are required; otherwise, a "system error" will be reported. You need to search for the robot on your mobile phone and then enable the Feishu robot app (this suggestion is from a netizen and can be used as a reference).
- Open https://botbuilder.feishu.cn/home/my-command in your computer browser.
- Click "New Robot Command".
- Click "Select Trigger", scroll down, and click "Webhook Trigger".
- At this point, you will see the "Webhook Address". Copy this link to a local notepad temporarily and continue with the following operations.
- Put the following content in the "Parameters" section and click "Finish".
{
"message_type": "text",
"content": {
"total_titles": "{{content}}",
"timestamp": "{{content}}",
"report_type": "{{content}}",
"text": "{{content}}"
}
}
- Click "Select Action" > "Send a Message via the Official Robot".
- Enter "TrendRadar Hotspot Monitoring" as the message title.
- The most crucial part: Click the "+" button, select "Webhook Trigger", and then arrange it as shown in the picture below.
- After configuration, configure the Webhook address copied in Step 4 in
FEISHU_WEBHOOK_URL in GitHub Secrets.
Option 2:
- Open https://botbuilder.feishu.cn/home/my-app in your computer browser.
- Click "New Robot App".
- After entering the created app, click "Process Design" > "Create Process" > "Select Trigger".
- Scroll down and click "Webhook Trigger".
- At this point, you will see the "Webhook Address". Copy this link to a local notepad temporarily and continue with the following operations.
- Put the following content in the "Parameters" section and click "Finish".
{
"message_type": "text",
"content": {
"total_titles": "{{content}}",
"timestamp": "{{content}}",
"report_type": "{{content}}",
"text": "{{content}}"
}
}
- Click "Select Action" > "Send a Feishu Message", check "Group Message", then click the input box below and click "Groups I Manage" (if you don't have a group, you can create one in the Feishu app).
- Enter "TrendRadar Hotspot Monitoring" as the message title.