返回 Skill 列表
extension
分类: 数据与分析需要 API Key

新闻聚合智能体

中文财经新闻聚合与情感分析智能体:从财联社/东方财富/新浪财经/36氪抓取快讯,LLM结构化摘要+情感评分,生成Markdown/HTML日报。当用户需要财经新闻聚合、市场情绪监控、每日新闻摘要生成时调用。

person作者: user_053d27d0hubcommunity

财经新闻摘要智能体 (News Digest Agent)

从多个中文财经来源自动采集快讯,通过 LLM 进行结构化提取与情感分析,生成每日新闻日报(Markdown + 独立 HTML)。

能力边界

支持的能力

  • 从 4 个中文财经源抓取快讯:财联社(cls.cn)、东方财富(eastmoney.com)、新浪财经、36氪
  • 每个源独立解析器:优先 API 接口,失败自动降级到 HTML 解析,再不行用通用回退解析器
  • LLM 驱动的结构化摘要:提取实体(entity)、关键数字、事件类型、影响方向、中文摘要(50-100字)、关键词、重要性评分(1-5)
  • 情感分析:每篇文章输出情感标签(positive/negative/neutral)、置信度、数值评分
  • 生成 Markdown 日报:按"重要头条/市场动态/政策动态/公司动态"分版块,含情绪概览和热门关键词
  • 生成独立 HTML 日报:内嵌 CSS,含情绪饼图(conic-gradient)、情绪评分、关键词云、实体排行
  • 输出 JSON 结构化数据,供下游消费
  • 30 分钟缓存(TTL),避免重复请求
  • CLI 命令:today(今日日报)、date YYYY-MM-DD(指定日期)、fetch(仅抓取)、summarize(对已缓存新闻做摘要)

不支持的能力

  • 不支持实时流式推送,需要手动运行或自行配置 cron
  • 不支持自定义新闻源(需修改 sources.yaml 和添加解析器代码)
  • 不支持英文新闻源,所有解析器和 LLM prompt 均为中文财经场景设计
  • 不生成可视化图表文件(PNG/SVG),仅在 HTML 中用 CSS 绘制饼图和关键词云
  • 情感分析依赖 LLM 语义判断,非基于金融时间序列模型,波动率/技术指标不在此范围内
  • 不支持 GPT 以外的模型直接切换非 OpenAI 兼容 API(但任何兼容 /v1/chat/completions 的端点均可使用)
  • 无 Web UI,纯 CLI

触发条件

当用户提出以下意图时调用此 Skill:

  • "帮我生成今天的财经新闻摘要"
  • "抓取财联社/东方财富的最新快讯"
  • "分析当前市场情绪"
  • "每日财经日报"
  • "金融新闻聚合" / "财经新闻监控"
  • "汇总一下最近的财经热点"

使用示例

# 生成今日日报(完整流程:抓取→摘要→情感→生成)
python run.py today

# 生成指定日期的日报
python run.py date 2026-07-05

# 仅抓取新闻(不生成日报)
python run.py fetch

# 对缓存新闻进行摘要和生成日报
python run.py summarize

默认 LLM:Ollama qwen2.5:7b (localhost:11434)。可通过 config/sources.yaml 切换到 OpenAI 兼容 API。

配置要点 (config/sources.yaml)

llm:
  provider: "ollama"       # 或 "openai"
  model: "qwen2.5:7b"
  base_url: "http://localhost:11434/v1"

cache:
  ttl_minutes: 30

digest:
  max_articles: 100
  formats: [markdown, html]

输出示例(HTML 日报结构)

┌─────────────────────────────────────┐
│  每日财经新闻摘要                    │
│  2026-07-06 | 187篇文章              │
├─────────────────────────────────────┤
│  情绪评分: 0.23 (偏乐观)    [饼图]   │
│  利好:82  利空:45  中性:60           │
├─────────────────────────────────────┤
│  热门关键词: AI芯片, 降准, 新能源... │
│  热门实体: 华为(15), 宁德时代(12)... │
├─────────────────────────────────────┤
│  [重要头条] x10 篇                   │
│  [+/-/*] 标题 | 摘要 | 来源          │
├─────────────────────────────────────┤
│  [市场动态] x15 篇 / [政策动态]      │
│  [公司动态] x15 篇                   │
└─────────────────────────────────────┘

FAQ

Q1: 如何更换 LLM 模型?

修改 config/sources.yamlllm 节的 modelbase_urlapi_key。只要 API 兼容 OpenAI /v1/chat/completions 格式即可。

Q2: 为什么某来源抓不到数据?

该源可能触发反爬机制。每个解析器都有 API→HTML→回退三级降级路径,查看日志可定位失败层级。可尝试增加 update_interval_min 降低请求频率。

Q3: 摘要质量不好怎么办?

调整 config/sources.yamlllm.temperature(当前 0.1,偏保守),或更换更强的基础模型。系统 prompt 在 news_digest/summarizer.pySUMMARIZATION_SYSTEM_PROMPT 中,可按需修改。

Q4: 如何添加新数据源?

config/sources.yaml 添加源配置,然后在 news_digest/fetcher.py 实现对应的 xxx_parser 方法。会自动通过 getattr 路由到新解析器。

Q5: 日报输出在哪里?

默认 output/ 目录:digest_YYYY-MM-DD.mddigest_YYYY-MM-DD.htmldigest_YYYY-MM-DD.json

Q6: 缓存过期时间能调整吗?

修改 config/sources.yamlcache.ttl_minutes,或在 fetcher.py 中改 CACHE_TTL 常量(当前 30 分钟)。

Q7: 能只做情感分析不生成日报吗?

run.py fetch 仅抓取,run.py summarize 仅摘要+生成。如需仅情感分析,需直接调用 sentiment 模块(代码中有情感分析逻辑集成在 pipeline 中)。

技术栈

| 组件 | 技术 | |------|------| | 抓取 | Python requests + BeautifulSoup4 (lxml) | | 配置 | YAML | | LLM 调用 | openai SDK(Ollama/OpenAI 兼容端点) | | 缓存 | 本地 JSON 文件 (MD5 键) | | 日报生成 | 纯 Python 字符串模板,Markdown + 自包含 HTML | | CLI | argparse + rich (进度条) | | 中文处理 | 简体中文全文 pipeline |