sansan0/trendradar
⭐AI-driven public opinion & trend monitor with multi-platform aggregation, RSS, and smart alerts.🎯 告别信息过载,你的 AI 舆情监控助手与热点筛选工具!聚合多平台热点 + RSS 订阅,支持关键词精准筛选。AI 智能筛选新闻 + AI 翻译 + AI 分析简报直推手机,也支持接入 MCP 架构,赋能 AI 自然语言对话分析、情感洞察与趋势预测等。支持 Docker ,数据本地/云端自持。集成微信/飞书/钉钉/Telegram/邮件/ntfy/bark/slack 等渠道智能推送。
How trendradar is put together
TrendRadar is a Python 3.12+ hot-news aggregation and analysis tool that periodically crawls trending lists from multiple Chinese platforms (via the newsnow API) plus RSS feeds, matches titles against configured keyword groups, and pushes formatted reports to many notification channels (WeCom, WeChat, Telegram, DingTalk, Feishu, Email, ntfy, Bark, Slack, generic webhook). It ships two entry points: a CLI pipeline (`trendradar.__main__:main`) designed for GitHub Actions / Docker / local scheduled runs, and an MCP server (`mcp_server.server:run_server`) built on FastMCP 2.0 exposing news query, search, analytics, config, storage-sync, article-reader, and notification tools over stdio or HTTP. Data is persisted per-day in SQLite databases under output/news/ with pluggable local/remote storage backends, and AI features (analysis, filtering, translation) are layered on via litellm. The MCP server adds an in-process TTL cache and service layer (parser/data/cache services) on top of the same on-disk data.
Languages
Frameworks
Datastores
Infrastructure
Major components
trendradar core pipeline (__main__.py NewsAnalyzer)
Orchestrates config loading, crawling, keyword frequency analysis across incremental/current/daily report modes, and dispatch of notifications.
trendradar.crawler
Fetches platform hot-list data from the configured API (with proxy support) and RSS feeds (crawler/rss/fetcher.py, parser.py).
trendradar.ai
AI-powered analysis, smart filtering pipeline, translation, prompt loading, and result formatting via litellm-backed client.
trendradar.notification
Formats reports and dispatches them to all supported channels (senders.py, dispatcher.py, batch.py, splitter.py, renderer.py).
trendradar.storage
Pluggable local/remote storage backends with SQLite schemas (schema.sql, rss_schema.sql, ai_filter_schema.sql), retention management, and a sqlite_mixin.
trendradar.report
Generates text/HTML/RSS-HTML report output including HTML page generation.
mcp_server (FastMCP server)
Exposes MCP tools/resources (news queries, search, analytics, config management, storage sync, article reading, notifications, system mgmt) over stdio/HTTP.
mcp_server.services + trendradar.commands/utils
Service layer with TTL cache, parser, and data access for MCP; plus CLI subcommands (doctor, status, test-notification, version checks) and time/URL utilities.
No digest this week
1 weeksWeek of
Dependencies and code review
Dependency advisories
Security Watch
10 vulnerable packages (41 advisories, 1 actively exploited) across 101 scanned dependencies.
litellm 1.82.6
13 advisories, actively exploited. Fixed in 1.84.0.
How it can be abusedThese flaws mostly affect the LiteLLM proxy server component, letting attackers bypass login or run commands on exposed servers. TrendRadar uses litellm only as a client library for AI features like filtering and translation, so an attacker would need a separately deployed and internet-facing LiteLLM proxy to exploit this.
- criticalGHSA-4xpc-pv4p-pm3wLiteLLM: Authentication Bypass via Host Header Injection
- highGHSA-53mr-6c8q-9789LiteLLM: Privilege escalation via unrestricted proxy configuration endpoint
- highGHSA-69x8-hrgq-fjj8LiteLLM: Password hash exposure and pass-the-hash authentication bypass
- highGHSA-7488-6r32-c95qLiteLLM: MCP Authentication Bypass via OAuth2 Passthrough Fallback
- criticalGHSA-jjhc-v7c2-5hh6LiteLLM: Authentication bypass via OIDC userinfo cache key collision
- highGHSA-qrc4-49gv-mv9mLiteLLM allows an authenticated internal_user to create API keys with access to routes that their role does not permit
- criticalGHSA-r75f-5x8p-qvmcexploitedLiteLLM has SQL Injection in Proxy API key verification
- highGHSA-v4p8-mg3p-g94gexploitedLiteLLM: Authenticated command execution via MCP stdio test endpoints
- highGHSA-wpfp-gwwc-vwq6LiteLLM allows a user to modify their own user_role via the /user/update endpoint
- highGHSA-wxxx-gvqv-xp7pLiteLLM has a sandbox escape in custom-code guardrail
- highGHSA-xqmj-j6mv-4862LiteLLM: Server-Side Template Injection in /prompts/test endpoint
- unknownPYSEC-2026-2599exploitedLiteLLM: Authenticated command execution via MCP stdio test endpoints
- unknownPYSEC-2026-391exploitedLiteLLM has SQL Injection in Proxy API key verification
authlib 1.6.5
4 advisories. Fixed in 1.6.9.
How it can be abusedAn attacker could forge login tokens that the app accepts as genuine, letting them impersonate any user of services that verify tokens with this library. In TrendRadar this only matters if you expose an authenticated HTTP endpoint built on it, which the project's core crawl and push pipeline does not do.
- highGHSA-7432-952r-cw78Authlib Vulnerable to JWE RSA1_5 Bleichenbacher Padding Oracle
- highGHSA-7wc2-qxgw-g8ggAuthlib: Setting `alg: none` and a blank signature appears to bypass signature verification
- highGHSA-m344-f55w-2m6jAuthlib: Fail-Open Cryptographic Verification in OIDC Hash Binding
- criticalGHSA-wvwj-cvrp-7pv5Authlib JWS JWK Header Injection: Signature Verification Bypass
fastmcp 2.12.5
5 advisories. Fixed in 2.14.2.
How it can be abusedIf the MCP server were deployed over HTTP with FastMCP's OAuth login or OpenAPI wrapping features, an attacker could steal login tokens meant for another service or trick the server into fetching internal URLs and reading local files, affecting anyone exposing this server publicly. TrendRadar only runs a simple stdio/HTTP tool server with no OAuth proxy or OpenAPI provider, so these attack paths do not apply to it.
- highGHSA-5h2m-4q8j-pqpjFastMCP OAuth Proxy token reuse across MCP servers
- highGHSA-c2jp-c369-7pvxFastMCP Auth Integration Allows for Confused Deputy Account Takeover
- highGHSA-rcfx-77hg-w2wvFastMCP updated to MCP 1.23+ due to CVE-2025-66416
- highGHSA-rww4-4w9c-7733FastMCP: Missing Consent Verification in OAuth Proxy Callback Facilitates Confused Deputy Vulnerabilities
- criticalGHSA-vv7q-7jx5-f767FastMCP OpenAPI Provider has an SSRF & Path Traversal Vulnerability
aiohttp 3.13.3
1 advisory. Fixed in 3.14.3.
How it can be abusedTrendRadar regularly fetches trending lists and RSS articles from external sites, so a malicious or compromised source could send a crafted broken chunked response that triggers an out-of-bounds read inside aiohttp's parser, potentially crashing the crawl run or leaking memory contents. Anyone running the CLI pipeline or exposing the MCP server's fetching tools is affected.
- highGHSA-cq5v-8q36-5273AIOHTTP: Out-of-bounds heap read in C HTTP response parser error path (malformed chunked response)
cryptography 46.0.3
4 advisories. Fixed in 48.0.1.
How it can be abusedThis project mostly just fetches web pages and sends notifications over HTTPS, so attackers can't really exploit these flaws here: nothing in TrendRadar decrypts encrypted messages, verifies unusual certificate chains, or uses the exotic curve types these bugs target. Anyone running the tool is essentially unaffected unless some library it pulls in performs those specific crypto operations.
- highGHSA-537c-gmf6-5ccfVulnerable OpenSSL included in cryptography wheels
- highGHSA-g6cj-pr64-35w5cryptography: PKCS#7 EnvelopedData decryption exposes a Bleichenbacher oracle through distinguishable errors and timing
- highGHSA-jwv3-5hgf-82wwpython-cryptography: Duplicate self-signed intermediates can cause exponential path-building
- highGHSA-r6ph-v2qm-q3c2cryptography Vulnerable to a Subgroup Attack Due to Missing Subgroup Validation for SECT Curves
json-repair 0.58.6
1 advisory. Fixed in 0.60.1.
How it can be abusedAn attacker would need to get specially crafted JSON text into whatever this tool hands to the json-repair parser, and the crafted structure makes the repair loop burn CPU forever, freezing the process. Here the parser mainly cleans up AI model output during analysis or filtering, so at worst a scheduled run or MCP request hangs; since the dangerous circular structures must come from the model or config rather than ordinary news titles, exposure is limited.
- highGHSA-xf7x-x43h-rpqhjson_repair: Circular JSON Schema `$ref` causes unbounded CPU DoS
mcp 1.16.0
3 advisories. Fixed in 1.23.0.
How it can be abusedIf you run TrendRadar's MCP server over HTTP on your machine, any web page you visit could secretly talk to that local server through your browser and use its tools, such as reading stored news data or sending messages through your configured channels like WeChat or Telegram. This affects anyone who runs the MCP server with the network-facing transport enabled.
- highGHSA-9h52-p55h-vw2fModel Context Protocol (MCP) Python SDK does not enable DNS rebinding protection by default
- highGHSA-jpw9-pfvf-9f58MCP Python SDK: HTTP transports serve session requests without verifying the authenticated principal
- highGHSA-vj7q-gjh5-988wMCP Python SDK: WebSocket server transport does not support Host/Origin validation
python-multipart 0.0.20
3 advisories. Fixed in 0.0.30.
How it can be abusedIf TrendRadar's MCP server runs over HTTP and any endpoint accepts form or file uploads, an attacker could send crafted requests with huge headers or semicolon-filled query strings to make parsing extremely slow and hang the server, or abuse misconfigured write paths to place files on disk. In practice this project mainly parses trending news feeds and pushes notifications rather than handling uploads, so only deployments exposing an HTTP-facing MCP endpoint with form parsing would be affected.
- highGHSA-5rvq-cxj2-64vfpython-multipart: Quadratic-time querystring parsing with semicolon separators causes CPU denial of service
- highGHSA-pp6c-gr5w-3c5gpython-multipart has Denial of Service via unbounded multipart part headers
- highGHSA-wp53-j4wj-2cfgPython-Multipart has Arbitrary File Write via Non-Default Configuration
starlette 0.48.0
3 advisories. Fixed in 0.49.1.
How it can be abusedAnyone running TrendRadar's MCP server over HTTP rather than the default local stdio mode could be targeted: an attacker who can reach that endpoint can send specially crafted requests to Starlette that burn CPU or memory until the service stops responding, or on Windows trick file-serving code into fetching attacker-chosen network paths. Users running the CLI pipeline or the stdio-only MCP server are not affected.
- highGHSA-7f5h-v6xp-fcq8Starlette vulnerable to O(n^2) DoS via Range header merging in ``starlette.responses.FileResponse``
- highGHSA-82w8-qh3p-5jfqStarlette: request.form() limits silently ignored for application/x-www-form-urlencoded enable DoS
- highGHSA-wqp7-x3pw-xc5rStarlette: SSRF and NTLM credential theft via UNC paths in StaticFiles on Windows
urllib3 2.5.0
4 advisories. Fixed in 2.6.0.
How it can be abusedAnyone running TrendRadar's crawler or its article-reader feature pulls content over HTTP from configured news APIs and RSS feeds. A hostile or hijacked feed could answer with an extreme amount of compressed data or endless redirects, so the process downloading it swells in memory or hangs, and in some redirect cases headers like auth tokens could be leaked to another server.
- highGHSA-2xpw-w6gg-jr37urllib3 streaming API improperly handles highly compressed data
- highGHSA-38jv-5279-wg99Decompression-bomb safeguards bypassed when following HTTP redirects (streaming API)
- highGHSA-gm62-xv2j-4w53urllib3 allows an unbounded number of links in the decompression chain
- highGHSA-qccp-gfcp-xxvcurllib3: Sensitive headers forwarded across origins in proxied low-level redirects
Code review
No concrete code-level issues confirmed.
Get this report every week for your repos.
GitZoid learns each repo, reports what changed, and flags what needs attention. One flat price for the whole team.
$19 a month, flat · First 10 outputs free · No card required