- name
- bettafish-opinion-analysis
- description
- BettaFish(微舆)多智能体舆情分析系统 - 基于 QueryAgent、MediaAgent、InsightAgent 三引擎并行架构,通过 ForumEngine 实现 Agent 间协作讨论,生成 Word/PDF + 高设计质量 HTML 双格式报告。
当用户需要以下分析时触发此 skill:
- 分析某品牌/企业/产品的社交媒体声誉和口碑
- 追踪热点舆情事件(如某车企被抨击、某明星争议事件)
- 挖掘特定社媒账号的内容和影响力数据
- 监测竞品舆情动态,进行多品牌对比
- 分析公众对某话题的情绪倾向和态度
- 生成舆情监测报告或危机预警分析
- 需要Word文档/PDF格式的正式报告
- 需要高设计质量的交互式HTML可视化报告
- 需要基于真实数据的深度舆情分析
此 skill 采用 QueryAgent + MediaAgent + InsightAgent 并行架构,通过 ForumEngine 实现 Agent 间讨论协作,执行 3 轮反思循环优化分析结果,最终输出:
1. **Word/PDF 文档** - 使用 docx/pdf subskill 生成,适合正式汇报、打印、存档
2. **高设计质量 HTML 报告** - 使用 frontend-design subskill,独特的编辑杂志风格,交互式可视化
**不使用任何数据库和模拟数据**,所有数据通过 WebSearch/WebFetch/Browser/Curl 实时获取。
即使遇到复杂的多步骤分析需求、需要整合多个数据源、或生成专业格式的舆情报告,也请务必使用此 skill。
- compatibility
- - 需要网络搜索能力(WebSearch/WebFetch/Browser/Curl)
- 支持主流社交媒体平台:微博、小红书、抖音、B站、知乎等
- 输出格式:Word文档(.docx) + PDF(.pdf) + HTML交互报告(.html)
- 无数据库依赖,纯前端可视化(ECharts/D3.js)
- 视频分析依赖 video-frames subskill
# BettaFish 舆情分析系统
BettaFish(微舆)是一个**无数据库依赖、无模拟数据**的多智能体舆情分析系统,采用 **QueryAgent + MediaAgent + InsightAgent 三引擎并行架构**,通过 **ForumEngine** 实现 Agent 间协作讨论,执行 **3 轮反思循环**优化分析,最终**同时生成 Word/PDF 文档和高质量 HTML 可视化报告**。
## 输出产物说明
本 Skill **同时生成三种格式的报告**,每种格式都必须包含**丰富的文本内容**,而不仅仅是视觉效果:
### 报告内容结构要求
所有报告必须包含以下**8个核心章节**,每个章节都需要**详细的文本分析和数据支撑**:
```
1. 执行摘要(核心发现 + 关键指标 + 主要结论)
2. 品牌声量与影响力分析(整体趋势 + 渠道分布 + 区域分析)
3. 关键事件深度回顾(时间线 + 多方观点 + 数据支撑)
4. 情感与认知分析(情感光谱 + 品牌联想 + 核心议题)
5. 用户画像分析(人群属性 + 触媒习惯)
6. 声誉风险与机遇洞察(负面议题 + 风险预警 + 正面机遇)
7. 结论与战略建议(SWOT分析 + 优化建议 + 监测重点)
8. 数据附录(指标汇总 + 来源清单)
```
### 内容丰富度标准
**每个章节必须包含**:
- **详细分析段落**:至少3-5段深入分析文字,解释数据背后的洞察
- **具体数据支撑**:KPI指标、百分比、对比数据等
- **多维度视角**:Query/Media/Insight 三引擎的交叉分析
- **案例说明**:具体事件、引用、用户评论示例
- **表格展示**:事件时间线、数据对比、来源清单等
- **引用块**:关键结论、分析师总结、用户原话
**禁止**:
- ❌ 只有图表没有文字解释
- ❌ 只有数据没有分析洞察
- ❌ 只有标题没有详细内容
- ❌ 使用占位符或模板文本
### 1. Word 文档 (.docx)
- **用途**: 正式汇报、打印存档、邮件附件、向上级提交
- **特点**:
- 结构清晰、内容完整、格式规范
- **图文并茂**:图表配合详细文字说明
- 标准公文格式,适合正式场合
- **生成方式**: 使用 `docx` subskill 通过 docx-js 生成
### 2. PDF 文档 (.pdf)
- **用途**: 正式汇报、跨平台分享、不可编辑存档
- **特点**: 版式固定、兼容性强、专业外观
- **生成方式**: 使用 `pdf` subskill 通过 reportlab 生成
### 3. HTML 交互式报告 (.html)
- **用途**: 演示展示、在线分享、交互探索
- **特点**: 独特的编辑杂志风格设计、丰富的交互可视化
- **生成方式**: 使用 `frontend-design` subskill 生成
---
## 报告模板系统
本 Skill 内置 **6 种专业舆情分析报告模板**,根据用户需求自动匹配最合适的模板结构。
### 模板类型与适用场景
| 模板名称 | 适用场景 | 核心特点 |
|---------|---------|---------|
| **企业品牌声誉分析** | 品牌月度/季度声誉监测 | 品牌形象、用户认知、声誉风险 |
| **突发事件与危机公关** | 危机事件应急分析 | 事件溯源、传播分析、应对策略 |
| **社会公共热点事件** | 社会热点追踪 | 演变脉络、传播路径、多方观点 |
| **市场竞争格局分析** | 竞品对比、市场份额 | SOV对比、口碑对比、营销策略 |
| **特定政策/行业动态** | 政策解读、行业分析 | 政策影响、行业反应、机遇挑战 |
| **日常/定期舆情监测** | 周期性监测报告 | 数据看板、趋势追踪、风险预警 |
### 模板选择逻辑
**Step 1: 识别分析类型**
根据用户查询自动判断适用的模板:
```yaml
关键词匹配规则:
企业品牌声誉分析:
- "品牌声誉"
- "品牌形象"
- "品牌口碑"
- "企业舆情"
突发事件与危机公关:
- "危机"
- "突发事件"
- "负面舆情"
- "公关"
- "回应"
- "道歉"
社会公共热点事件:
- "热点事件"
- "社会热议"
- "舆论焦点"
- "公众关注"
市场竞争格局分析:
- "竞品"
- "对比"
- "竞争"
- "市场份额"
- "vs"
特定政策/行业动态:
- "政策"
- "行业"
- "新规"
- "监管"
日常/定期舆情监测:
- "定期"
- "周报"
- "月报"
- "监测"
- "追踪"
```
**Step 2: 加载对应模板结构**
根据识别结果,读取 `assets/templates/` 目录下对应模板文件,获取详细的章节结构。
### 模板使用说明
**默认行为**:
- 如果用户查询未明确匹配任何模板类型,使用**企业品牌声誉分析**模板作为默认结构
- 如果用户明确要求"竞品对比"、"危机分析"等,自动切换到对应模板
**模板内容填充要求**:
- 每个章节必须包含 **3-5 段详细分析文字**
- 时间线章节必须包含 **结构化表格**
- 对比分析必须包含 **数据对比表格**
- 每个二级章节下必须有 **具体案例和数据支撑**
---
## 核心架构
```
用户查询输入
↓
[并行启动三 Agent]
├─ QueryAgent ──┐
├─ MediaAgent ──┼──→ ForumEngine (Agent 讨论协作)
└─ InsightAgent ─┘ ↓
[3轮反思循环优化]
↓
[ReportEngine 报告生成]
↓
├─ docx subskill → Word 文档
├─ pdf subskill → PDF 文档
└─ frontend-design subskill → HTML 报告
```
## Agent 职责分工
| Agent | 职责 | 数据获取方式 | LLM 推荐 |
|-------|------|-------------|----------|
| **QueryAgent** | 网页搜索、新闻资讯、论坛讨论 | WebSearch + WebFetch + Browser | DeepSeek |
| **MediaAgent** | 短视频/图文内容分析 | 下载视频 → video-frames 提取帧 → 分析 | Gemini-2.5-pro |
| **InsightAgent** | 情感分析、关键词提取、聚类分析 | WebSearch + Python 脚本分析 | Kimi-K2 |
| **ForumHost** | 主持 Agent 讨论、引导研究方向 | LLM 生成 | Qwen-Plus |
## 设计规范:编辑杂志风格
HTML 报告采用 **Editorial/Magazine(编辑杂志)风格**,遵循以下设计原则:
### 视觉风格
| 设计元素 | 规范 | 说明 |
|---------|------|------|
| **整体风格** | 编辑杂志风 | 高端出版物质感,如《Monocle》《Wallpaper》|
| **色彩方案** | 深海军蓝 + 暖金色 | 主色 `#0a192f`,强调色 `#ffd700`,营造专业权威感 |
| **字体搭配** | Playfair Display + Source Serif Pro | 衬线字体组合,传递优雅与可信度 |
| **布局特点** | 不对称网格 + 慷慨留白 | 打破常规对称,创造视觉张力 |
| **动效设计** | 电影级滚动触发 + 微交互 | 页面加载渐现、图表动画、悬停反馈 |
## 执行步骤
### Step 1: 需求解析与模板选择
#### 1.1 提取分析要素
```yaml
分析目标: "品牌声誉/热点追踪/账号挖掘/竞品对比/危机公关/政策分析"
目标主体: "品牌名/事件名/话题关键词"
时间范围: "近7天/近30天/自定义"
输出格式: "Word + PDF + HTML"
```
#### 1.2 智能模板选择
**根据用户查询内容,自动匹配最合适的报告模板:**
```python
def select_report_template(user_query):
"""
根据用户查询选择报告模板
返回: (template_name, template_path)
"""
query = user_query.lower()
# 模板匹配规则
template_keywords = {
"突发事件与危机公关": ["危机", "突发事件", "负面舆情", "公关", "回应", "道歉", "事故"],
"社会公共热点事件": ["热点事件", "社会热议", "舆论焦点", "公众关注", "热议话题"],
"市场竞争格局分析": ["竞品", "对比", "竞争", "市场份额", "vs", "比较"],
"特定政策或行业动态": ["政策", "行业", "新规", "监管", "法规", "指导意见"],
"日常或定期舆情监测": ["定期", "周报", "月报", "监测", "追踪", "日报"],
"企业品牌声誉分析": ["品牌声誉", "品牌形象", "品牌口碑", "企业舆情", "声誉"]
}
# 匹配逻辑
for template_name, keywords in template_keywords.items():
if any(kw in query for kw in keywords):
return template_name, f"assets/templates/{template_name}报告模板.md"
# 默认使用品牌声誉模板
return "企业品牌声誉分析", "assets/templates/企业品牌声誉分析报告模板.md"
```
**模板选择示例:**
| 用户查询 | 自动选择模板 |
|---------|-------------|
| "分析某咖啡连锁品牌社交媒体口碑" | 企业品牌声誉分析 |
| "某音乐节安全事故危机分析" | 突发事件与危机公关 |
| "对比可口可乐和百事可乐的舆情表现" | 市场竞争格局分析 |
| "追踪环保新规对饮料行业影响" | 特定政策或行业动态 |
| "本周我司品牌舆情监测" | 日常或定期舆情监测 |
#### 1.3 加载模板结构
**读取选定的模板文件,获取详细的章节结构:**
```python
# 读取模板文件
template_content = read_file(selected_template_path)
# 解析章节结构
report_structure = parse_template_structure(template_content)
# 输出示例:
# {
# "模板名称": "企业品牌声誉分析",
# "章节": [
# {"1.0": "摘要与核心发现", "子章节": ["1.1", "1.2", "1.3"]},
# {"2.0": "品牌声量与影响力分析", "子章节": ["2.1", "2.2", "2.3"]},
# ...
# ]
# }
```
#### 1.4 关键词优化
**基于选定的模板类型,生成针对性的搜索关键词:**
```yaml
模板类型: "企业品牌声誉分析"
基础关键词: "某咖啡连锁品牌"
优化后关键词:
QueryAgent:
- "某咖啡品牌 用户评价 口碑"
- "某咖啡品牌 产品 质量"
- "某咖啡品牌 体验 评测"
MediaAgent:
- "某咖啡品牌 抖音 视频"
- "某咖啡品牌 小红书 种草"
InsightAgent:
- "某咖啡品牌 情感分析"
- "某咖啡品牌 舆情"
```
---
### Step 2: 并行启动三 Agent(ForumEngine 协作)
**所有 Agent 同时启动,独立执行,通过 ForumEngine 共享发现:**
#### QueryAgent 执行流程:
1. 使用 WebSearch 搜索新闻/论坛/博客
2. 使用 Browser 访问关键页面获取详细内容
3. 使用 WebFetch 获取页面结构化数据
4. 提取关键信息,生成初步摘要
5. **发布发现到 ForumEngine**
#### MediaAgent 执行流程:
1. 使用 WebSearch 搜索短视频/图文内容链接
2. 下载相关视频文件到本地
3. 使用 **video-frames subskill** 提取关键帧
4. 分析视频帧内容(画面、文字、场景)
5. **发布发现到 ForumEngine**
#### InsightAgent 执行流程:
1. 使用 WebSearch 获取补充数据
2. 执行情感分析(基于规则引擎)
3. 提取关键词和热点话题
4. 使用 **search_clustering.py** 对搜索结果聚类采样
5. **发布发现到 ForumEngine**
### Step 3: ForumEngine Agent 讨论(3轮反思循环)
**ForumEngine 机制**:
- 每个 Agent 将发现以结构化格式提交到论坛
- ForumHost(主持人)每收集到 3 条 Agent 发言后生成引导
- 主持人提出新的研究问题和方向
- Agent 根据引导进行下一轮搜索和分析
**3轮反思循环**:
```
第1轮:初步搜索 → Agent 发言 → 主持人引导
第2轮:深度搜索 → Agent 补充 → 主持人总结
第3轮:验证搜索 → Agent 确认 → 最终结论
```
### Step 4: 数据整合与知识图谱构建
1. 收集三 Agent 和 ForumEngine 的所有发现
2. 使用 **graph_generator.py** 构建知识图谱
3. 生成 D3.js 力导向图数据
### Step 5: 双格式报告生成(基于选定模板)
**⚠️ 关键:严格按照 Step 1 选定的模板结构生成报告**
#### 5.1 读取模板结构
```python
# 获取 Step 1 选定的模板
template_structure = load_template(selected_template_path)
# 按模板章节结构遍历生成内容
for chapter in template_structure.chapters:
for subsection in chapter.subsections:
# 根据子章节类型生成对应内容
content = generate_content_by_type(subsection.title, agent_findings)
```
#### 5.2 内容生成规范
**每个章节必须包含**:
- **详细分析段落**:3-5段深入分析文字
- **数据表格**:时间线、对比表等
- **高亮框**:重要发现
- **引用块**:分析师总结
- **三引擎交叉分析**:Query/Media/Insight视角
**内容类型判断**:
- 标题含"时间线" → 生成结构化时间线表格
- 标题含"对比" → 生成数据对比表格
- 其他 → 生成3-5段分析段落
#### 5.3 同时生成三种格式
**A. Word文档**(使用docx subskill)
- 结构:封面 + 目录 + 8章正文 + 附录
- 字体:正文宋体、标题黑体
- 格式:1.5倍行距、首行缩进2字符
- 使用`docx-js`通过JavaScript生成
**B. PDF文档**(使用pdf subskill)
- 版式固定、中文字体支持
- 使用`reportlab`通过Python生成
- 必须注册中文字体(SimSun/SimHei)
**C. HTML报告**(使用frontend-design subskill)
- 编辑杂志风格设计
- 深海军蓝(#0a192f)背景 + 金色(#ffd700)强调
- Playfair Display + Source Serif Pro字体
- 包含ECharts图表和D3.js知识图谱
- 分页导航 + 键盘操作支持
#### 5.4 报告质量检查
- [ ] 三Agent并行执行完成
- [ ] ForumEngine完成3轮讨论
- [ ] 所有数据来自真实WebSearch
- [ ] 同时生成Word、PDF、HTML三种格式
- [ ] 每个章节包含3-5段详细分析文字
- [ ] 包含数据表格和图表
- [ ] HTML报告有章节导航
## 数据采集规范
### QueryAgent 数据获取
**使用智能体自带工具,禁止模拟数据:**
```
1. WebSearch("某咖啡连锁品牌 口碑评价")
2. WebSearch("site:weibo.com 某咖啡品牌")
3. Browser 访问关键页面获取详细内容
4. WebFetch 获取页面结构化数据
5. Curl 命令行获取 API 数据或特殊页面
```
**Curl 使用示例:**
```bash
# API 数据获取
curl -s "https://api.social-media.com/posts?q=某咖啡品牌"
# 带 Headers 的页面请求
curl -s -H "User-Agent: Mozilla/5.0" \
-H "Accept: application/json" \
"https://www.example.com/api/data"
# 获取并重定向输出到 Python 处理
curl -s "https://api.example.com/data" | python -c "import sys,json; print(json.load(sys.stdin))"
```
### MediaAgent 视频分析
**真实视频分析流程:**
```
1. WebSearch 搜索视频链接(抖音、B站、小红书)
2. 下载视频到本地临时目录
3. 使用 video-frames subskill 提取关键帧:
{baseDir}/scripts/frame.sh /tmp/video.mp4 --time 00:00:05 --out /tmp/frame_5s.jpg
4. 分析视频帧内容(画面元素、文字、场景)
5. 结合视频描述文字进行综合分析
```
### InsightAgent 数据分析
**使用 Python 脚本进行分析:**
```python
# 情感分析
from scripts.sentiment_analyzer import SentimentAnalyzer
analyzer = SentimentAnalyzer()
results = analyzer.analyze_batch(texts)
Voir sur GitHub