stock-theme-events
# Stock Theme Events - 股票题材与新闻事件关联分析
## 概述
本技能将市场炒作的题材概念与真实新闻事件对应起来,输出结构化的 Markdown 报告。核心流程:获取热门股票 → 提取题材 → 聚类合并 → 搜索新闻 → 生成报告。
## 核心功能
### 1. 获取个股题材
调用 `ths-stock-themes` skill 获取股票的题材/概念列表。
**输入**:股票代码列表
**输出**:`{股票代码:[题材 1, 题材 2, ...]}`
### 2. 题材聚类合并
使用语义相似度 + 同义词词典将相似题材合并。
**示例**:
- "人工智能" + "AI" + "大模型" → "人工智能/AI"
- "芯片" + "半导体" + "集成电路" → "半导体/芯片"
**输出**:`{题材方向:[相关股票列表]}`
### 3. 获取对应新闻事件
优先使用 akshare 财经新闻接口,缺失时用 browser 工具从金十数据搜索。
**搜索范围**:近 15 天
**每题材选取**:2-5 条高相关度新闻
**输出**:`{题材方向:[新闻列表]}`
### 4. 生成 Markdown 报告
结构化输出题材方向、涉及股票、对应新闻事件。
## 使用方法
### 被其他 skill 调用(推荐)
```python
# 在调用方 skill 中
from stock_theme_events import analyze_theme_events
result = analyze_theme_events(
stock_list=["600519", "000858", ...], # 可选,默认获取近 10 日涨幅前 30
output_path="~/Desktop/A 股每日复盘/", # 可选
date_range=15, # 新闻搜索天数,默认 15
top_themes=8 # 主流题材数量,默认 8
)
```
### 独立运行
```
生成题材事件分析报告
分析近 10 日涨幅前 30 股票的题材和对应新闻
获取市场炒作题材的真实事件驱动
```
## 执行流程
### 完整流程
1. **获取热门股票**(如未提供)
- 调用 `ths-stock-themes` 获取近 10 日涨幅前 30 股票
- 排除 ST 股票
2. **获取个股题材**
- 遍历股票列表
- 调用 `ths-stock-themes` 获取每只股票的题材
- 缓存结果避免重复请求
3. **题材聚类**
- 统计题材频次
- 使用语义相似度模型聚类
- 应用同义词词典合并
- 按频次排序取 TOP N
4. **搜索新闻**
- 对每个题材方向,先尝试 akshare 接口
- 如结果不足,用 browser 工具搜索金十数据
- 筛选近 15 天内的资讯
- 去重并按相关性排序
5. **生成报告**
- 使用模板生成 Markdown
- 保存到指定路径
- 返回报告文件路径
## 输出格式
```markdown
# A 股题材 - 事件关联分析报告
**数据日期**:2026-03-21
**统计周期**:近 10 个交易日
**新闻范围**:近 15 天
**样本股票**:涨幅前 30 只(排除 ST)
---
## 一、主流炒作题材方向
| 排名 | 题材方向 | 涉及股票数 | 代表股票 |
|------|----------|------------|----------|
| 1 | 人工智能/AI | 8 | 中科曙光、浪潮信息... |
| 2 | 半导体/芯片 | 6 | 中芯国际、北方华创... |
| ... | ... | ... | ... |
---
## 二、题材 - 事件对应分析
### 1. 人工智能/AI(8 只股票)
**涉及股票**:中科曙光、浪潮信息、科大讯飞...
**对应新闻事件**:
1. **[新闻标题 1]** (2026-03-20)
- 来源:金十数据
- 摘要:...
- 链接:[查看详情](url)
2. **[新闻标题 2]** (2026-03-19)
- 来源:财联社
- 摘要:...
- 链接:[查看详情](url)
---
## 三、总结
- 当前市场主要炒作方向:XXX、XXX、XXX
- 新闻事件驱动明显:XXX 政策/事件催化
- 风险提示:...
```
## 脚本说明
### cluster_themes.py
题材聚类脚本,使用语义相似度 + 同义词词典。
```bash
python3 scripts/cluster_themes.py --input themes.json --output clustered.json
```
参数:
- `--input`: 输入题材 JSON 文件
- `--output`: 输出聚类结果
- `--top`: 保留 TOP N 个题材方向(默认 8)
- `--similarity-threshold`: 相似度阈值(默认 0.7)
### search_news.py
新闻搜索脚本,akshare + browser 混合方案。
```bash
python3 scripts/search_news.py --theme "人工智能" --days 15 --limit 5
```
参数:
- `--theme`: 题材关键词
- `--days`: 搜索天数范围(默认 15)
- `--limit`: 返回新闻数量(默认 5)
- `--output`: 输出 JSON 文件路径
### generate_report.py
报告生成脚本。
```bash
python3 scripts/generate_report.py --themes clustered.json --news news.json --output report.md
```
参数:
- `--themes`: 聚类后的题材 JSON
- `--news`: 新闻数据 JSON
- `--output`: 输出 Markdown 路径
- `--template`: 模板文件路径(可选)
## 配置说明
### config/theme_synonyms.json
题材同义词配置,用于聚类合并。
```json
{
"人工智能/AI": ["人工智能", "AI", "大模型", "AIGC", "算力", "机器学习"],
"半导体/芯片": ["芯片", "半导体", "集成电路", "光刻机", "存储芯片"],
"新能源": ["光伏", "风电", "储能", "锂电池", "新能源汽车", "氢能"],
"医药生物": ["创新药", "医疗器械", "生物医药", "CXO", "疫苗"],
"金融": ["券商", "银行", "保险", "多元金融", "互联网金融"],
"大消费": ["白酒", "食品饮料", "家电", "零售", "旅游"],
"周期资源": ["钢铁", "煤炭", "有色", "化工", "石油"],
"军工": ["军工", "航天", "船舶", "国防", "航空发动机"],
"科技通信": ["5G", "通信", "物联网", "云计算", "数据中心"],
"房地产": ["房地产", "物业", "园区开发", "REITs"]
}
```
## 依赖安装
```bash
pip install akshare sentence-transformers scikit-learn
```
## 注意事项
1. **数据时效性**:新闻数据实时变化,建议在报告中注明数据获取时间
2. **浏览器自动化**:金十数据搜索需要 browser 工具,避免高频请求
3. **ST 股票**:自动排除名称包含"ST"的股票
4. **语义模型**:首次使用会下载 sentence-transformers 模型(约 500MB)
5. **API 限制**:akshare 有频率限制,建议添加请求间隔
## 错误处理
- **题材获取失败**:重试 3 次,跳过该股票并记录警告
- **新闻搜索失败**:降级到 browser 工具,仍失败则标记"暂无相关新闻"
- **聚类失败**:降级到简单频次统计
- **报告生成失败**:返回错误信息,提示检查模板文件
## 性能优化
1. **缓存机制**:个股题材结果缓存到 `cache/themes/` 目录
2. **并行搜索**:多个题材的新闻搜索可并行执行
3. **增量更新**:支持基于已有报告增量更新
## 示例调用
### 被 stock-daily-report 调用
```python
# 在 stock-daily-report skill 中
result = analyze_theme_events(
stock_list=top_gainers, # 近 10 日涨幅前 30
output_path=daily_report_dir,
date_range=15
)
# 将 result 整合到每日复盘报告中
```
### 独立运行
```
用户:分析当前市场炒作的题材和对应新闻
助手:正在获取近 10 日涨幅前 30 股票...
正在提取题材信息...
正在聚类合并...
正在搜索对应新闻...
报告已生成:~/Desktop/A 股每日复盘/theme-events-2026-03-21.md
```
标签
skill
ai