MCPcopy
hub / github.com/sansan0/TrendRadar / analyze_sentiment

Method analyze_sentiment

mcp_server/tools/analytics.py:657–843  ·  view source on GitHub ↗

情感倾向分析 - 生成用于 AI 情感分析的结构化提示词 本工具收集新闻数据并生成优化的 AI 提示词,你可以将其发送给 AI 进行深度情感分析。 Args: topic: 话题关键词(可选),只分析包含该关键词的新闻 platforms: 平台过滤列表(可选),如 ['zhihu', 'weibo'] date_range: 日期范围(可选),格式: {"start": "YYYY-MM-DD", "end": "YYYY-MM-DD"}

(
        self,
        topic: Optional[str] = None,
        platforms: Optional[List[str]] = None,
        date_range: Optional[Union[Dict[str, str], str]] = None,
        limit: int = 50,
        sort_by_weight: bool = True,
        include_url: bool = False
    )

Source from the content-addressed store, hash-verified

655 }
656
657 def analyze_sentiment(
658 self,
659 topic: Optional[str] = None,
660 platforms: Optional[List[str]] = None,
661 date_range: Optional[Union[Dict[str, str], str]] = None,
662 limit: int = 50,
663 sort_by_weight: bool = True,
664 include_url: bool = False
665 ) -> Dict:
666 """
667 情感倾向分析 - 生成用于 AI 情感分析的结构化提示词
668
669 本工具收集新闻数据并生成优化的 AI 提示词,你可以将其发送给 AI 进行深度情感分析。
670
671 Args:
672 topic: 话题关键词(可选),只分析包含该关键词的新闻
673 platforms: 平台过滤列表(可选),如 ['zhihu', 'weibo']
674 date_range: 日期范围(可选),格式: {"start": "YYYY-MM-DD", "end": "YYYY-MM-DD"}
675 不指定则默认查询今天的数据
676 limit: 返回新闻数量限制,默认50,最大100
677 sort_by_weight: 是否按权重排序,默认True(推荐)
678 include_url: 是否包含URL链接,默认False(节省token)
679
680 Returns:
681 包含 AI 提示词和新闻数据的结构化结果
682
683 Examples:
684 用户询问示例:
685 - "分析一下今天新闻的情感倾向"
686 - "看看'特斯拉'相关新闻是正面还是负面的"
687 - "分析各平台对'人工智能'的情感态度"
688 - "看看'特斯拉'相关新闻是正面还是负面的,请选择一周内的前10条新闻来分析"
689
690 代码调用示例:
691 >>> tools = AnalyticsTools()
692 >>> # 分析今天的特斯拉新闻,返回前10条
693 >>> result = tools.analyze_sentiment(
694 ... topic="特斯拉",
695 ... limit=10
696 ... )
697 >>> # 分析一周内的特斯拉新闻(假设今天是 2025-11-17)
698 >>> result = tools.analyze_sentiment(
699 ... topic="特斯拉",
700 ... date_range={"start": "2025-11-11", "end": "2025-11-17"},
701 ... limit=10
702 ... )
703 >>> print(result['ai_prompt']) # 获取生成的提示词
704 """
705 try:
706 # 参数验证
707 if topic:
708 topic = validate_keyword(topic)
709 platforms = validate_platforms(platforms)
710 limit = validate_limit(limit, default=50)
711
712 # 处理日期范围
713 if date_range:
714 date_range_tuple = validate_date_range(date_range)

Callers

nothing calls this directly

Calls 10

validate_keywordFunction · 0.85
validate_platformsFunction · 0.85
validate_limitFunction · 0.85
validate_date_rangeFunction · 0.85
DataNotFoundErrorClass · 0.85
getMethod · 0.80
calculate_news_weightFunction · 0.70
to_dictMethod · 0.45

Tested by

no test coverage detected