news-volume-mcp
news-volume-mcp
作为MCP工具的新闻提及量。可接入Claude、Cursor或任何兼容MCP的AI宿主。每周数据系列、增长百分比以及实时Google新闻信息流。
由 trendsmcp.ai 提供支持——一个API密钥,一个客户端,30+数据源:Google搜索、YouTube、TikTok、Reddit、亚马逊、维基百科、App Store、Steam、npm、新闻提及量、新闻情感分析、实时趋势信息流等。无需为每个平台单独配置凭据。
获取免费API密钥 → trendsmcp.ai — 每月100次免费请求,无需信用卡。
已更新至2026年。兼容Python 3.8至3.13。
作为MCP工具使用
添加到你的 mcp.json 文件(Claude Desktop、Cursor、Windsurf、VS Code或任何MCP宿主):
{
"mcpServers": {
"trends-mcp": {
"url": "https://api.trendsmcp.ai/mcp",
"transport": "http",
"headers": { "Authorization": "Bearer YOUR_API_KEY" }
}
}
}在 trendsmcp.ai 获取免费密钥。在 trendsmcp.ai/docs 查看Claude、Cursor、Windsurf和VS Code的完整配置指南。
Related MCP server: news-volume-mcp
无需爬取。无429错误。无需代理。
如果你之前使用过pytrends或类似的爬虫工具,你应该知道这些问题:随机的 429 Too Many Requests 屏蔽、凌晨2点管道崩溃、time.sleep() 闪避、代理轮换成本,以及一个现已归档的库——因为谷歌在协议层面明确标记爬虫。
trendsmcp是托管替代方案。我们运行数据基础设施。你只需调用REST接口。
新闻提及量数据的pytrends替代方案
爬虫/pytrends | trendsmcp | |
429限流错误 | 持续出现 | 从未出现 |
是否需要代理 | 经常需要 | 从不需要 |
平台变更时是否中断 | 是的,频繁 | 不会 |
覆盖的数据源数量 | 1(仅谷歌) | 30+ |
绝对量级估算 | 否 | 是 |
跨平台增长 | 否 | 是 |
异步支持 | 否 | 是 |
积极维护 | 否(已归档) | 是 |
免费套餐 | 否 | 是,每月100次请求 |
安装
pip install news-volume-mcp零系统依赖。需要Python 3.8或更高版本。底层使用 httpx。
快速开始
from news_volume_mcp import TrendsMcpClient, SOURCE
client = TrendsMcpClient(api_key="YOUR_API_KEY")
# 5-year weekly time series — no sleep(), no proxies, no 429s
series = client.get_trends(source=SOURCE, keyword="climate change")
print(series[0])
# TrendsDataPoint(date='2026-03-28', value=72, keyword='climate change', source='news volume')
# Period-over-period growth
growth = client.get_growth(
source=SOURCE,
keyword="climate change",
percent_growth=["3M", "1Y"],
)
print(growth.results[0])
# GrowthResult(period='3M', growth=14.5, direction='increase', ...)
# What's trending right now (across all live platforms)
trending = client.get_top_trends(limit=10)
print(trending.data)
# [[1, 'topic one'], [2, 'topic two'], ...]异步支持
import asyncio
from news_volume_mcp import AsyncTrendsMcpClient, SOURCE
async def main():
client = AsyncTrendsMcpClient(api_key="YOUR_API_KEY")
series = await client.get_trends(source=SOURCE, keyword="climate change")
print(series[0])
asyncio.run(main())使用一个密钥并发查询多个平台:
google, youtube, reddit, amazon, tiktok = await asyncio.gather(
client.get_trends(source="google search", keyword="climate change"),
client.get_trends(source="youtube", keyword="climate change"),
client.get_trends(source="reddit", keyword="climate change"),
client.get_trends(source="amazon", keyword="climate change"),
client.get_trends(source="tiktok", keyword="climate change"),
)使用场景
SEO研究:在发布内容前,追踪Google搜索、Google新闻和Google图片中的关键词搜索量趋势
市场研究:在进入产品类别前,衡量亚马逊和Google购物上的消费者需求信号
投资研究:监控Reddit讨论量、新闻情感分析和维基百科页面浏览峰值作为领先指标
内容策略:在话题达到顶峰且竞争饱和之前,发现YouTube和TikTok上正在增长的内容
竞品追踪:在自定义日期范围内比较品牌搜索量在跨平台上的增长
应用分析:追踪App Store兴趣和应用下载估算,同时结合Reddit和新闻热度
兼容平台
Claude(通过MCP — trendsmcp.ai/docs)
Cursor(通过MCP — trendsmcp.ai/docs)
ChatGPT(通过MCP — trendsmcp.ai/docs)
Windsurf(通过MCP — trendsmcp.ai/docs)
VS Code Copilot(通过MCP — trendsmcp.ai/docs)
LangChain:将
TrendsMcpClient输出直接作为工具结果或上下文传递CrewAI:将任意方法封装为
Tool并加入你的团队AutoGen:注册为任意代理的可调用工具
LlamaIndex:将趋势系列作为结构化数据节点用于检索
Pandas:每个
get_trends()响应可用一行代码转换为DataFrame
方法
get_trends(source, keyword, data_mode=None)
返回某个关键词的历史时间序列。默认5年周数据。传入 data_mode="daily" 获取最近30天的日粒度数据。
get_growth(source, keyword, percent_growth, data_mode=None)
计算两个时间点之间的百分比增长。可传入预设字符串或 CustomGrowthPeriod 对象。
增长预设: 7D 14D 30D 1M 2M 3M 6M 9M 12M 1Y 18M 24M 2Y 36M 3Y 48M 60M 5Y MTD QTD YTD
get_top_trends(type=None, limit=None)
返回今日实时趋势项目。省略 type 可一次性获取所有信息流。
可用的实时信息流: Google Trends Google News Top News YouTube Trending TikTok Trending Hashtags X (Twitter) Trending Reddit Hot Posts Reddit World News Wikipedia Trending Amazon Best Sellers Top Rated Amazon Best Sellers by Category App Store Top Free App Store Top Paid Google Play Spotify Top Podcasts Top Websites
全部30+数据源
一个API密钥。一个客户端。每个平台。无需为每个平台单独配置凭据。
source | 测量内容 |
| Google搜索量 |
| Google图片搜索量 |
| Google新闻搜索量 |
| Google购物购买意图 |
| YouTube搜索量 |
| TikTok话题标签量 |
| Reddit子版块订阅者随时间变化 |
| 亚马逊产品搜索量 |
| 维基百科页面浏览量 |
| 新闻文章提及次数 |
| 新闻情感得分(正面/负面) |
| 移动应用下载/安装估算(Android) |
| npm包每周下载量 |
| Steam同时在线玩家数 |
所有数值归一化为0–100,便于跨平台直接比较。
错误处理
from news_volume_mcp import TrendsMcpClient, TrendsMcpError, SOURCE
client = TrendsMcpClient(api_key="YOUR_API_KEY")
try:
series = client.get_trends(source=SOURCE, keyword="climate change")
except TrendsMcpError as e:
print(e.status) # e.g. 429 if you exceed your plan quota
print(e.code) # e.g. "rate_limited"
print(e.message)常见问题解答
这个工具会爬取新闻提及量吗? 不会。trendsmcp运行托管数据基础设施。你的Python代码只需进行一次经过身份验证的REST调用。无需爬取、无需Selenium、无需cookie、无需代理。
我需要一个新闻提及量的开发者账户、OAuth令牌或平台API密钥吗? 不需要。一个trendsmcp API密钥即可访问所有30多个数据源。
当新闻提及量更改其后端时,它会中断吗? 不会。API稳定性是我们的责任。如果上游有变化,我们会更新后端。你的代码照常运行。
我可以使用同一个密钥查询多个平台吗?
可以。一个密钥覆盖所有数据源。将 source 切换为上述30多个值中的任何一个。
有免费套餐吗? 有,每月100次请求,无需信用卡。在 trendsmcp.ai 获取你的密钥。
我可以在生产数据管道中使用它吗? 可以。客户端是无状态的、线程安全的,并支持异步并发查询多个平台。
相关包
trendsmcp — 核心包,所有30+数据源
youtube-trends-api / youtube-trends-mcp / youtube-trends-agent
google-search-trends-api / google-search-trends-mcp / google-search-trends-agent
wikipedia-trends-api / wikipedia-trends-mcp / wikipedia-trends-agent
app-store-trends-api / app-store-trends-mcp / app-store-trends-agent
news-sentiment-api / news-sentiment-mcp / news-sentiment-agent
链接
许可证
MIT
Available Tools
3 toolsget_growthARead-onlyIdempotentInspect
Point-to-point growth for a keyword on one or more sources. Each window is a preset string (12M, 3M, YTD, and the other listed periods). Values are on a 0-100 scale, plus absolute volume when available. Prefer this over get_time_series for growth questions. app downloads and app rankings are keyword sources (Android bundle ID). They are not the App Store / Google Play live boards on get_top_trends. If the request is rate limited or the monthly quota is used up, tell the user their plan limit is reached.
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | One source, or comma-separated sources (e.g. 'amazon, tiktok, youtube'). Valid: 'google search', 'google images', 'google news', 'google shopping', 'youtube', 'wikipedia', 'tiktok', 'reddit', 'amazon', 'news sentiment', 'news volume', 'npm', 'python', 'steam', 'app downloads', 'app rankings'. | |
| keyword | Yes | What to look up. The string format is required by source. Standard sources (google search, google images, google news, google shopping, youtube, wikipedia, tiktok, reddit, amazon, news sentiment, news volume): any name or phrase, e.g. 'nike'. npm: exact npmjs.com package name, case-sensitive. Right: 'react', '@babel/core'. Wrong: 'React', 'React.js'. python: exact PyPI project name. Right: 'pandas', 'requests'. Wrong: 'Pandas'. steam: game display name in plain English, not a Steam App ID. Right: 'Elden Ring', 'CS2'. First Steam store search result wins, so use an unambiguous name. app downloads and app rankings: Android bundle ID only (the id= value on Google Play). Right: 'com.openai.chatgpt', 'com.whatsapp'. Wrong: 'ChatGPT', 'WhatsApp', an iOS App Store ID, or a bundle ID that is not Android. Find it at play.google.com/store/apps/details?id=THIS_PART. If the request includes app downloads or app rankings with other sources, keyword must still be the Android bundle ID. | |
| percent_growth | No | Growth windows. Default if omitted: ['12M']. Each item must be a preset string: '7D', '1W', '14D', '2W', '30D', '1M', '2M', '3M', '6M', '9M', '12M', '1Y', '18M', '24M', '2Y', '36M', '3Y', '48M', '4Y', '60M', '5Y', 'MTD', 'QTD', 'YTD'. Every preset is a two-date comparison. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint, openWorldHint, and idempotentHint annotations, the description adds useful behavioral context: values are on a 0-100 scale with absolute volume when available, and the agent should tell the user their plan limit is reached on rate limiting or quota exhaustion. These details are not present in the structured fields and do not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and every sentence earns its place: core operation, output scale, sibling preference, app-source caveat, and rate-limit handling. It front-loads the primary purpose and avoids redundant phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a detailed input schema, an output schema, and safety annotations, the description fills the remaining gaps: tool selection, output scale, source disambiguation, and error behavior. It is complete enough for an agent to invoke the tool correctly without further inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents all parameters thoroughly, including valid sources, keyword formatting rules per source, and every preset growth window. The description references preset windows and Android bundle IDs but does not add meaning beyond the schema, so a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action and resource: 'Point-to-point growth for a keyword on one or more sources.' It also names sibling tools to disambiguate itself, stating it is preferred over get_time_series for growth questions and clarifying that app sources are not the live boards on get_top_trends.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit selection rule: 'Prefer this over get_time_series for growth questions.' It also warns against confusing app downloads/app rankings with get_top_trends live boards, and specifies how to handle rate limits or quota exhaustion. This gives the agent clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_time_seriesARead-onlyIdempotentInspect
Full historical series for one keyword and one source (0-100 values, plus volume when available). Use for charting or custom math. Not for live 'what's trending now' boards (use get_top_trends). For most growth questions, use get_growth. If the request is rate limited or the monthly quota is used up, tell the user their plan limit is reached.
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | Exactly one source per request. Valid: 'google search', 'google images', 'google news', 'google shopping', 'youtube', 'wikipedia', 'tiktok', 'reddit', 'amazon', 'news sentiment', 'news volume', 'npm', 'python', 'steam', 'app downloads', 'app rankings'. | |
| keyword | Yes | What to look up. The string format is required by source. Standard sources (google search, google images, google news, google shopping, youtube, wikipedia, tiktok, reddit, amazon, news sentiment, news volume): any name or phrase, e.g. 'tesla'. npm: exact npmjs.com package name, case-sensitive. Right: 'react', '@babel/core'. Wrong: 'React', 'React.js'. python: exact PyPI project name. Right: 'pandas', 'requests'. Wrong: 'Pandas'. steam: game display name in plain English, not a Steam App ID. Right: 'Elden Ring', 'CS2'. First Steam store search result wins, so use an unambiguous name. app downloads and app rankings: Android bundle ID only (the id= value on Google Play). Right: 'com.openai.chatgpt', 'com.whatsapp'. Wrong: 'ChatGPT', 'WhatsApp', an iOS App Store ID, or a bundle ID that is not Android. Find it at play.google.com/store/apps/details?id=THIS_PART. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnlyHint and idempotentHint. The description adds behavioral context beyond those hints: the 0-100 value range, volume availability, and rate-limit/quota handling instructions. This provides useful operational detail that annotations do not convey, though the core safety profile is already covered by hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: purpose and scope, usage routing, and error handling. Front-loaded with the core purpose; no repetition or fluff. The alternative tool routing is included efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a two-parameter tool with a full output schema, the description covers purpose, usage scenarios, alternatives, and error handling. An agent has all necessary information to decide when to call it and what to expect, with no critical gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters have detailed, source-specific descriptions (e.g., keyword format per source, valid source list). The tool description adds no additional parameter meaning beyond restating 'one keyword and one source', so the baseline for full schema coverage applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states it returns 'Full historical series for one keyword and one source' with a value range and volume detail. It distinguishes itself from siblings get_top_trends and get_growth by stating what it is not for (live trending, growth questions), making the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Directly states when to use it: 'Use for charting or custom math' and when not to: 'Not for live trending (use get_top_trends)' and 'For most growth questions, use get_growth'. Also provides explicit handling for rate-limited or quota-exhausted requests, which is actionable guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_top_trendsARead-onlyIdempotentInspect
Live top-trending board for exactly one feed type. No keyword. For 'Amazon Best Sellers by Category', 'Google Trends by Category', 'Top Websites', and 'Substack by Category', always pass category. Default sort is current rank. Use sort='rank_change' for climbers vs a prior snapshot (window 1d, 3d, 7d, 14d, or 30d). App Store Top Free, App Store Top Paid, and Google Play are live store boards, not keyword lookups. For an app's history use get_growth or get_time_series with source app downloads or app rankings and an Android bundle ID. Do not use get_time_series for live boards. If the request is rate limited or the monthly quota is used up, tell the user their plan limit is reached.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | How to rank the board. 'rank' (default): current leaders. 'rank_change': biggest climbers vs a prior snapshot. Mover rows include rank, keyword, prev_rank, and rank_change. | rank |
| type | Yes | Exactly one live feed. Valid: 'Amazon Best Sellers Top Rated', 'Amazon Best Sellers by Category', 'App Store Top Free', 'App Store Top Paid', 'GitHub', 'Google News Top News', 'Google Play', 'Google Trends', 'Google Trends by Category', 'IMDb MOVIEmeter', 'Open Library Trending Books', 'Reddit Hot Posts', 'Reddit World News', 'Top Websites', 'Spotify Top Podcasts', 'Steam Most Played', 'Substack', 'Substack by Category', 'TikTok Trending Hashtags', 'TikTok Trending Searches', 'Wikipedia Trending', 'X (Twitter) Trending', 'YouTube Trending'. | |
| limit | No | Max rows to return. Default 25, min 1, max 200. | |
| offset | No | Rows to skip for pagination. Default 0. | |
| window | No | Lookback used only when sort is 'rank_change'. One of '1d', '3d', '7d', '14d', '30d'. Default '30d'. Short windows only work on daily feeds; weekly and monthly feeds return a note pointing to a longer window. | 30d |
| category | No | Pass this whenever type is 'Amazon Best Sellers by Category', 'Google Trends by Category', 'Top Websites', or 'Substack by Category'. Use the official name. Without it those feeds mix every board. Only omit on a first pull to learn the official names. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond readOnlyHint/idempotentHint, the description adds important behavioral context: rate limits and monthly quota handling, default sort behavior, rank-change snapshot windows, category omission behavior, and feed-type quirks. It discloses how the tool behaves in edge cases, which is exactly the kind of transparency that helps an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence earns its place: purpose, category rule, sort semantics, alternative tool routing, and rate-limit behavior are all covered in a compact, front-loaded format. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given six parameters, sibling tools, and an output schema, the description covers everything an agent needs: valid feed types, category requirements, sort/window semantics, pagination defaults handled in schema, alternatives, and rate-limit response. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds valuable non-obvious semantics: category is mandatory for four specific feed types and mixing occurs otherwise, and sort='rank_change' compares against a prior snapshot. This goes beyond the schema's own parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states a specific verb and resource: it returns a live top-trending board for exactly one feed type, and explicitly says 'No keyword.' This clearly distinguishes it from sibling tools like get_growth and get_time_series without needing to open the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance: pass category for certain feeds, use sort='rank_change' for climbers, and use get_growth or get_time_series for app history. It even warns 'Do not use get_time_series for live boards,' giving clear exclusions and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v0.1.0- First observed
get_growth - First observed
get_time_series - First observed
get_top_trends
TDQS
Scored across 3 tools
Each tool has a distinct purpose: get_growth for point-to-point changes, get_time_series for full historical series, and get_top_trends for live boards. The descriptions actively cross-reference each other to prevent confusion.
All three tools follow the same get_ prefix followed by a clear noun: get_growth, get_time_series, get_top_trends. The naming pattern is uniform and predictable.
Three tools is a well-scoped size for this server's purpose. Each tool covers a distinct core query type with no redundancy.
The tool set covers growth, historical data, and live trends well. Minor gaps exist around multi-keyword time-series comparison and source/feed discovery, but agents can work around them.
Maintenance
Related MCP Connectors
The only News based AI MCP your agents will ever need — custom categories, global regions, and time-scoped results in one tool. We use multi-vector & sparse-hybrid search to search through thousands of articles across the world to find the exact news you're looking for.
News article mention volume trends for any topic. Free key at trendsapi.ai
Google Trends, Google News, Hacker News, Substack posts and podcasts for research and monitoring.
Financial data MCP server for Claude, ChatGPT, Cursor and Codex. Real-time stock quotes, financial statements, options flow, SEC filings, insider trades, 13F holdings, macro data and market news from gloom.sh, the open-source Bloomberg Terminal alternative.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceReal-time trend data from Google Trends (Search, Images, News, Shopping), YouTube, TikTok, Reddit, Amazon, Wikipedia, npm, Steam, Spotify, X (Twitter), App Store, Google Play, web traffic, and news sentiment via one MCP connection. Works with Claude, Cursor, VS Code, Windsurf, ChatGPT, and any MCP-compatible AI.28MIT
- AlicenseNot gradedqualityCmaintenanceMCP server providing news article mention volume data, weekly series, growth percentages, and a live Google News feed as an AI tool.MIT
- AlicenseNot gradedqualityCmaintenanceProvides news sentiment scores, media volume trends, and historical coverage data for any topic, enabling AI to analyze positive or negative coverage over time.1MIT
- AlicenseAqualityAmaintenanceMCP server that integrates Google News and Google Trends, enabling AI models to fetch news, analyze search interest, calculate growth rates, and summarize articles.816209 PyPI5MIT