Public Opinion Scanner

品牌/个人舆情扫描器。根据公司名或人名,从百度、搜狗、微博、知乎、财经网站等来源搜索近1年的公开信息, 逐条标注正面/负面/中性,保留原始链接,生成结构化 MD 舆情分析报告。 触发词:舆情扫描、品牌声誉分析、公司舆情、个人舆情、公众形象分析、搜索XX舆情

Audits

Pass

Install

openclaw skills install opinion-scanner

Opinion Scanner — 品牌/个人舆情扫描器

输入公司名或人名,输出一份结构化 MD 舆情分析报告。


搜索来源与优先级

来源用途反爬等级获取方式
百度搜索综合新闻、资讯⚠️ 中等web_searchweb_fetch
百度新闻新闻报道⚠️ 中等tavily_search (topic=news)
新浪微博社交媒体讨论🔴 高tavily_search + 直接 fetch
知乎深度讨论、评价🔴 高tavily_search + 直接 fetch
搜狗搜索备选综合搜索⚠️ 中等tavily_search
东方财富/同花顺财经新闻、公告✅ 低web_fetch 直接获取
36氪/虎嗅科技商业报道✅ 低web_fetch 直接获取
天眼查/企查查工商信息、风险🔴 高tavily_search 间接获取

反反爬虫策略

1. 优先使用搜索引擎API(推荐)

直接爬取百度/微博/知乎极易触发封禁。首选策略是通过搜索引擎间接获取:

# 用 tavily_search + topic=news 获取新闻类信息
tavily_search(query="上海链家房地产经纪有限公司 2025 新闻", topic="news", max_results=10)

# 用 web_search 获取综合信息
web_search(query="上海链家房地产经纪有限公司 评价 2025", count=10)

# 用 tavily 搜索微博/知乎内容
tavily_search(query="site:weibo.com 上海链家 2025", max_results=10)
tavily_search(query="site:zhihu.com 上海链家 评价", max_results=10)

2. web_fetch 模拟浏览器请求

对允许直接访问的站点(东方财富、36氪等),使用 web_fetch 并利用其内置的 JS 渲染能力:

web_fetch(url="https://www.36kr.com/search/articles/{keyword}", maxChars=8000)

3. 如果搜索引擎覆盖不足

应对策略:
- 换用不同的 search query 变体(加年份、加"评价"、"投诉"、"新闻"等关键词)
- 使用 site: 限定符定向搜索特定平台
- 使用 extractMode=text 减少被检测的风险
- 添加合理的间隔(每次请求后等待 1-2 秒)
- 通过 tavily_extract 获取结构化内容而非原始 HTML

4. 绝对不要做的事情

❌ 不要直接 curl 百度/微博/知乎的页面(返回空或验证码)
❌ 不要短时间内发送大量请求(会触发 IP 封禁)
❌ 不要尝试绕过验证码
❌ 不要使用无头浏览器模拟登录
✅ 始终通过搜索引擎间接采集(道德且有效)

执行流程

Step 1:多源搜索

对目标执行至少 6 组搜索,覆盖不同维度:

搜索维度      示例查询
───────────  ─────────────────────────────────
1. 综合新闻    "{target} 2025 2026 新闻 动态"
2. 负面信息    "{target} 投诉 违约 纠纷 处罚"
3. 正面信息    "{target} 获奖 荣誉 创新 增长"
4. 社交媒体    "{target} site:weibo.com 评价"
5. 深度讨论    "{target} site:zhihu.com 怎么样"
6. 财经数据    "{target} 营收 规模 市场份额"
7. 行业动态    "{target} 房地产 中介 市场 2025"
8. 监管信息    "{target} 住建委 处罚 违规 通报"

每条搜索获取 5-10 条结果,合并去重后保留至少 10 条有效信息

去重规则: 相同 URL 只保留一条;内容相似度 >80% 的只保留来源最权威的一条。

Step 2:信息提取

对每条有效结果,用 web_fetchtavily_extract 获取详细内容:

{
  "序号": 1,
  "标题": "链家被住建委约谈...",
  "来源": "新浪财经",
  "URL": "https://finance.sina.com.cn/...",
  "发布日期": "2025-08-15",
  "摘要": "上海市住建委约谈链家...",
  "内容片段": "(前300字)"
}

如果 web_fetch 被目标站点拦截:

  • 记录该条信息但标记"内容不可直接获取"
  • 仍保留标题、来源、URL 和搜索引擎摘要
  • 不阻塞整体流程

Step 3:逐条正负面判定

对每条信息,基于内容进行情感分析:

标签判定标准示例关键词
正面利好、增长、创新、获奖、社会责任"增长" "获评" "创新" "突破"
负面投诉、纠纷、处罚、亏损、负面舆情"投诉" "处罚" "违约" "纠纷" "暴跌"
中性客观报道、数据通报、行业分析"数据显示" "据悉" "报告指出"

判定规则:

  1. 读取文章摘要和内容片段
  2. 统计正负面关键词出现频率
  3. 如果有明确的情感倾向词,按倾向归类
  4. 纯事实报道/行业数据 → 中性
  5. 无法判断 → 中性

Step 4:生成 MD 报告

报告格式如下:

# 舆情分析报告:{公司/人名}

> 分析时间:{YYYY-MM-DD HH:mm}
> 数据来源:百度、新浪微博、知乎、东方财富、36氪、搜狗等
> 覆盖时段:近 1 年

---

## 一、总体概览

| 指标 | 数值 |
|------|------|
| 收集信息总数 | {N} 条 |
| ✅ 正面 | {N} 条 ({百分比}) |
| ❌ 负面 | {N} 条 ({百分比}) |
| ⚪ 中性 | {N} 条 ({百分比}) |
| 覆盖来源数 | {N} 个 |

**综合判断:** {正面/负面/中性}舆情为主

---

## 二、详细信息(按时间倒序)

### {序号}. {标题}

- **来源:** {来源名称}
- **链接:** {原始 URL}
- **日期:** {YYYY-MM-DD}
- **判定:** ✅ 正面 / ❌ 负面 / ⚪ 中性
- **摘要:**
  > {文章摘要或内容片段}

---

(重复以上格式,至少 10 条)

## 三、来源分布

| 来源 | 数量 | 正面 | 负面 | 中性 |
|------|------|------|------|------|
| 百度新闻 | 3 | 1 | 1 | 1 |
| 新浪微博 | 2 | 0 | 1 | 1 |
| ... | ... | ... | ... | ... |

## 四、关键词云

- **正面高频词:** {词1}、{词2}、{词3}
- **负面高频词:** {词1}、{词2}、{词3}
- **中性高频词:** {词1}、{词2}、{词3}

## 五、综合评估

### 5.1 主要发现

{3-5 个关键结论}

### 5.2 风险提示

{如果发现明显负面信息,给出风险提示}

### 5.3 总体评价

{综合评述,100-200 字}

---

*报告由 Opinion Scanner 自动生成*
*免责声明:本报告基于公开信息自动分析,仅供参考,不构成任何建议。*

测试用例

目标:上海链家房地产经纪有限公司

搜索查询建议:

1. "上海链家房地产经纪有限公司 2025 新闻"
2. "上海链家 投诉 纠纷 2025"
3. "链家 房地产 中介 市场 2025"
4. "site:weibo.com 上海链家 2025"
5. "site:zhihu.com 链家 中介"
6. "链家 贝壳 财报 营收 2025"
7. "上海 房地产 中介 监管 2025"
8. "链家 住建委 处罚"

预期产出: 一份完整的 MD 舆情分析报告,至少 10 条有效信息,覆盖正面/负面/中性各至少 2 条。


输出文件

报告默认保存到:

/root/.openclaw/workspace/reports/opinion/{target-slug}/{YYYY-MM-DD_HHmm}.md

示例:

/root/.openclaw/workspace/reports/opinion/lianjia/2026-05-17_1610.md