一个可被 OpenClaw 或其他 AI coding agent 触发的市场情报 pipeline,通过 新闻抓取 → 标准化 → 分诊 → 风险检查 → 简报生成 的方式,将 RSS 原始资讯转化为结构化市场情报。
这不是一个手动运行的脚本集合,而是一个设计用于自动化触发的 market intelligence agent。
核心功能:
- 从 RSS 源抓取市场新闻
- 标准化新闻字段(清洗 HTML、统一时间格式)
- 使用 LLM 进行新闻分诊(识别事件类型、相关标的、重要性)
- 执行风险检查(来源可信度、信息冲突、旧闻过滤)
- 根据 watchlist 生成市场情报简报
- 导出 Markdown 和 JSON 格式报告
适用场景:
- 作为 OpenClaw 的外部 pipeline / agent 使用
- 定期触发生成市场情报
- 支持分阶段运行(外网抓取 + 内网 LLM 分析)
适合同一网络环境可同时访问外网 RSS 和 LLM API 的场景:
python scripts/run_pipeline.py执行完整流程:fetch → normalize → triage → risk_check → digest → export
适合抓取和 LLM 分析需要分离网络环境的场景:
python scripts/run_ingest.py执行:fetch + normalize,输出 data/raw/ 和 data/normalized/
python scripts/run_analysis.py执行:triage + risk_check + digest + export,输出最终报告
配置文件:configs/rss_sources.yaml
当前配置源:
- 36氪(有效,中文)
- Reuters Business(已配置,需验证可用性)
- Bloomberg Technology(已配置,需验证可用性)
- WSJ Markets(已配置但默认禁用)
配置文件:configs/watchlist.yaml
当前跟踪:
- Xiaomi (1810.HK)
- NVIDIA (NVDA)
- Apple (AAPL)
- 以及其他 31 家科技公司(详见配置文件)
data/digest/daily_digest.md- Markdown 格式市场情报简报(OpenClaw 推荐读取此文件)data/digest/digest_<timestamp>.json- 结构化 JSON 简报(包含元数据和完整事件列表)
data/raw/- 原始 RSS 抓取结果data/normalized/- 标准化后的新闻data/triaged/- LLM 分诊后的事件data/risk_checked/- 风险检查后的事件
Pipeline 的 triage 阶段需要 LLM API Key(推荐使用 OpenRouter)。
方式 1:使用 .env 文件
cp .env.example .env
# 编辑 .env,填入 OPENROUTER_API_KEY方式 2:导出环境变量
export OPENROUTER_API_KEY=your_api_key_here如果未设置 API key,triage 会自动回退到 mock 规则模式(准确性较低)。
在 configs/settings.yaml 中修改 llm.active 字段:
llm:
active: openrouter-sonnet # 当前唯一可用选项OpenClaw 可以将本 repo 作为外部 agent/pipeline 触发,推荐使用以下方式:
方案 1:完整运行(一键生成)
cd /path/to/market-intelligence-agent
source .venv/bin/activate
python scripts/run_pipeline.py方案 2:分阶段运行(网络环境分离)
如果 OpenClaw 在内网环境运行,可分为两阶段:
- 外网环境:
python scripts/run_ingest.py(抓取 RSS) - 内网环境:
python scripts/run_analysis.py(LLM 分析 + 生成报告)
OpenClaw 推荐读取以下文件作为最终输出:
- 主要输出:
data/digest/daily_digest.md(人类可读的市场简报) - 结构化输出:
data/digest/digest_<timestamp>.json(包含完整事件列表和元数据)
- Python 3.9+
- 已安装依赖(
pip install -r requirements.txt) - 已设置
OPENROUTER_API_KEY环境变量 - 网络要求:
run_ingest.py需要访问外网 RSS 源(可能需要代理)run_analysis.py需要访问 LLM API(OpenRouter / 自建 LLM)
RSS 抓取 标准化 新闻分诊 风险检查 简报生成 导出报告
fetch → normalize → run_triage → run_risk_check → build_digest → export_report
(raw) (normalized) (triaged) (risk_checked) (digest) (markdown)
| 阶段 | 脚本 | 功能 | LLM | 输出 |
|---|---|---|---|---|
| fetch | fetch_news.py |
从 RSS 抓取原始新闻 | ✗ | data/raw/ |
| normalize | normalize_news.py |
清洗 HTML、统一格式、截断文本 | ✗ | data/normalized/ |
| triage | run_triage.py |
识别事件类型、相关标的、重要性 | ✓ | data/triaged/ |
| risk_check | run_risk_check.py |
检测来源风险、重复新闻、信息冲突 | ✗ | data/risk_checked/ |
| digest | build_digest.py |
根据 watchlist 生成市场情报摘要 | ✗ | data/digest/ |
| export | export_report.py |
输出 Markdown 格式报告 | ✗ | data/digest/daily_digest.md |
| 组件 | 状态 | 说明 |
|---|---|---|
market-news-triage |
LLM + fallback mock | 优先调用 LLM,失败时回退到规则 |
risk-red-flag |
Mock rule engine | 基于规则的风险检测 |
watchlist-digest |
Mock rule engine | 基于规则的简报生成 |
运行 pipeline 并检查输出:
# 1. 运行完整 pipeline
python scripts/run_pipeline.py
# 2. 查看各阶段数据统计
python scripts/debug_pipeline.py
# 3. 查看最新简报 JSON
cat data/digest/digest_*.json | python -m json.tool | head -50
# 4. 查看生成的 Markdown 报告
cat data/digest/daily_digest.mdpython3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtcp .env.example .env
# 编辑 .env,填入 OPENROUTER_API_KEY- 编辑
configs/watchlist.yaml添加/删除跟踪标的 - 编辑
configs/rss_sources.yaml添加/删除新闻源
├── configs/ # 配置文件
│ ├── watchlist.yaml # Watchlist 标的定义
│ ├── rss_sources.yaml # RSS 新闻源
│ └── settings.yaml # 全局设置(LLM provider)
├── scripts/ # Pipeline 脚本
│ ├── run_pipeline.py # 完整运行(推荐)
│ ├── run_ingest.py # 阶段 1: 采集(fetch + normalize)
│ ├── run_analysis.py # 阶段 2: 分析(triage → export)
│ ├── fetch_news.py # RSS 抓取
│ ├── normalize_news.py # 新闻标准化
│ ├── run_triage.py # 新闻分诊(LLM)
│ ├── run_risk_check.py # 风险检查
│ ├── build_digest.py # 简报生成
│ ├── export_report.py # Markdown 导出
│ ├── skill_runner.py # Skill 调用引擎
│ └── utils.py # 工具函数
├── skills/ # Skill 定义
│ ├── market-news-triage/
│ ├── risk-red-flag/
│ └── watchlist-digest/
├── data/ # 数据目录(git 忽略)
│ ├── raw/ # 原始 RSS 数据
│ ├── normalized/ # 标准化新闻
│ ├── triaged/ # 分诊后事件
│ ├── risk_checked/ # 风险检查后事件
│ └── digest/ # 最终简报(Markdown + JSON)
├── docs/ # 文档
└── tests/ # 测试
| 事件类型 | 说明 |
|---|---|
earnings |
财报和业绩公告 |
acquisition |
并购、收购或投资 |
partnership |
战略合作或伙伴关系 |
regulation |
政策或监管变化 |
product_launch |
产品或服务发布 |
management_change |
高管变动、人事调整 |
lawsuit |
诉讼、法律纠纷 |
supply_chain |
供应链变化 |
industry_trend |
行业趋势或分析 |
other |
其他新闻事件 |
- 新闻源较少:主要依赖 36氪,其他国际源需验证可用性
- 风险检查和简报生成未接 LLM:使用简单规则引擎
- 无事件去重/聚类:相同事件的多篇报道可能重复出现
- 无持久化存储:每次运行覆盖上一次数据
- 无自动调度:需手动或外部 agent 触发
这是 MVP 版本,不包含:
- 自动交易逻辑
- 数据库存储
- 推送机器人(Telegram / 飞书)
- Web UI
- 接入 risk-red-flag / watchlist-digest 的 LLM
- 增加更多新闻源,排查国际 RSS feed 可用性
- 引入事件去重与聚类
- 引入事件数据库(PostgreSQL)
- 自动推送市场简报
- Web UI 查看历史 digest