从0到1:用OpenClaw搭建自动化舆情监控系统

0 阅读1分钟

从0到1:用OpenClaw搭建自动化舆情监控系统

本文详细记录了如何利用OpenClaw AI Agent框架,从零搭建一套完整的舆情监控系统,实现对小红书、抖音等多平台的自动化监控、分析和报告生成。

背景

在数字化时代,舆情监控对于商业街区、品牌企业、政府机构都至关重要。传统的舆情监控需要专人每天浏览各大平台、筛选信息、整理报告,不仅耗时耗力,还容易遗漏重要信息。

OpenClaw作为一款开源的AI Agent框架,为我们提供了一个全新的解决方案:让AI Agent自动完成这些重复性工作。本文将分享我使用OpenClaw搭建舆情监控系统的完整实践过程。

系统架构

整体架构分为三个核心模块:

┌─────────────────────────────────────────────────────────────┐
│                    OpenClaw Main Agent                       │
│                     (任务调度中心)                            │
└─────────────────────┬───────────────────────────────────────┘
                      │
        ┌─────────────┼─────────────┐
        ▼             ▼             ▼
┌───────────────┐ ┌───────────────┐ ┌───────────────┐
│  数据采集模块  │ │  分析处理模块  │ │  报告发送模块  │
│  (Playwright) │ │   (AI分析)    │ │  (飞书/邮件)  │
└───────────────┘ └───────────────┘ └───────────────┘
        │             │             │
        ▼             ▼             ▼
   小红书/抖音      内容分类      HTML报告
   数据抓取        敏感度评估     自动推送

技术选型

  • AI Agent框架:OpenClaw(开源、本地优先、支持多渠道)
  • 爬虫引擎:Playwright(支持动态页面、反检测能力强)
  • 分析模型:GLM-4(中文理解能力强、成本可控)
  • 消息推送:飞书群 + SMTP邮件
  • 定时调度:OpenClaw Cron

核心实现

1. 数据采集模块

数据采集是整个系统的基础。我们使用Playwright进行浏览器自动化,实现对小红书、抖音等平台的搜索和数据抓取。

关键技术点

浏览器连接模式

由于抖音、小红书等平台风控严格,我们需要复用已登录的浏览器会话,而不是每次都启动新浏览器:

// 使用CDP协议连接已有浏览器
const browser = await chromium.connectOverCDP('http://localhost:9222');
const contexts = browser.contexts();
const page = contexts[0].pages()[0];

这种方式有几个优势:

  1. 复用已登录状态,无需反复扫码
  2. 减少被检测为自动化脚本的风险
  3. 保持用户行为特征,更难被封禁

时间筛选策略

平台的时间筛选功能往往不稳定,我们实现了双重策略:

// 主策略:URL参数直接筛选
await page.goto(`https://www.douyin.com/search/${keyword}?type=video&publish_time=1`);

// 备用策略:选择器点击
if (!url.includes('publish_time=1')) {
  await page.click('[data-e2e="search-filter"]');
  await page.click('[data-e2e="filter-time-1day"]');
}

窗口前置问题

跨平台操作时,窗口焦点问题经常被忽略但至关重要:

// 切换平台时必须前置窗口
await page.bringToFront();

不执行这行代码,点击操作可能发送到错误的窗口,导致采集失败。

到底检测

判断是否已加载所有数据,避免无限滚动:

// 抖音:检测底部提示文字
const noMoreText = await page.evaluate(() => {
  return document.body.innerText.includes('暂时没有更多了');
});

// 小红书:连续无新数据检测
let noNewCount = 0;
while (scrollCount < maxScrolls && noNewCount < 2) {
  // 滚动...
  if (currentCount === prevCount) {
    noNewCount++;
  }
}

2. 分析处理模块

采集到的数据需要经过智能分析,提取有价值的信息。

舆情分级体系

我们设计了一套四级舆情分类体系:

级别标识说明示例
HIGH🔴敏感舆情投诉、事故、纠纷
MEDIUM🟡热点内容热门视频、讨论
LOW🟢商业活动优惠、开业、活动
NORMAL普通内容日常分享、打卡
内容相关性过滤

小红书搜索结果常包含大量推荐内容,需要过滤:

const RELATED_WORDS = [
  '熙街', '大学城', '川美', '沙坪坝',
  '避雷', '投诉', '纠纷', '事故'
];

function isRelevant(title) {
  return RELATED_WORDS.some(word => title.includes(word));
}
数据合并与去重

每日多次运行时,需要合并数据但避免重复:

// 只合并当天数据
if (isToday(existingReport.date)) {
  mergedVideos = [...existingVideos, ...newVideos];
  // 按videoId去重
  mergedVideos = uniqueBy(mergedVideos, 'videoId');
}

3. 报告发送模块

分析结果需要及时推送给相关人员。

飞书群推送

使用飞书开放API实现消息推送:

async function sendToFeishu(report) {
  const message = {
    msg_type: 'interactive',
    card: {
      header: {
        title: { tag: 'plain_text', content: `熙街舆情日报 ${report.date}` }
      },
      elements: [
        {
          tag: 'div',
          fields: [
            { is_short: true, text: { tag: 'lark_md', content: `**抖音**\n${report.douyin.total}条` } },
            { is_short: true, text: { tag: 'lark_md', content: `**小红书**\n${report.xiaohongshu.total}条` } }
          ]
        }
      ]
    }
  };
  
  await fetch(FEISHU_WEBHOOK, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify(message)
  });
}
HTML邮件报告

详细报告通过邮件发送,使用HTML模板:

const emailTemplate = `
<!DOCTYPE html>
<html>
<head>
  <style>
    .card { background: #f5f5f5; padding: 15px; border-radius: 8px; margin: 10px 0; }
    .high { border-left: 4px solid #ff4444; }
    .medium { border-left: 4px solid #ffaa00; }
  </style>
</head>
<body>
  <h1>熙街舆情日报</h1>
  <div class="card">
    <h3>📊 数据统计</h3>
    <p>抖音:${report.douyin.total}条 | 小红书:${report.xiaohongshu.total}条</p>
  </div>
  <!-- 敏感内容列表 -->
</body>
</html>
`;

部署与运维

定时任务配置

使用OpenClaw的Cron功能设置每日定时任务:

openclaw cron create xijie-morning-monitor \
  --expr "30 8 * * *" \
  --timezone "Asia/Shanghai"

浏览器启动

由于需要复用浏览器会话,Chrome需要以调试模式启动:

google-chrome --remote-debugging-port=9222 \
  --user-data-dir=~/.chrome-debug &

监控与告警

系统会自动检测浏览器状态,未启动时发送告警:

async function checkBrowser() {
  try {
    await fetch('http://localhost:9222/json');
    return true;
  } catch {
    await sendAlert('Chrome未启动,请远程启动浏览器');
    return false;
  }
}

实战效果

经过两个月的实际运行,系统表现稳定:

指标数值
日均采集100-200条
敏感舆情识别率95%+
误报率<5%
人工干预次数0次

典型案例

  1. 商户投诉预警:系统及时发现某餐饮店的食品安全投诉,管理方在舆情发酵前介入处理。

  2. 价格战监测:发现多家商户的价格竞争信息,为运营决策提供数据支持。

  3. 热点事件追踪:某网红打卡点爆火,系统第一时间捕捉到相关内容。

踩坑经验

1. 搜索框内容污染

问题:连续搜索多关键词时,搜索框内容没有正确更新,导致结果错误。

解决:搜索后验证搜索框内容,不匹配则自动修正:

const searchBoxValue = await page.$eval('input[type="text"]', el => el.value);
if (searchBoxValue !== keyword) {
  await page.evaluate((kw) => {
    const input = document.querySelector('input[type="text"]');
    input.value = '';
    input.focus();
    input.value = kw;
    input.dispatchEvent(new Event('input', { bubbles: true }));
  }, keyword);
  await page.keyboard.press('Enter');
}

2. 断点续传

问题:长时间任务中断后,需要重新开始,浪费时间。

解决:实现状态保存和恢复:

// 保存进度
function saveProgress(douyinIndex, xhsIndex) {
  fs.writeFileSync('state.json', JSON.stringify({
    douyinIndex,
    xhsIndex,
    timestamp: Date.now()
  }));
}

// 恢复进度
function loadProgress() {
  if (fs.existsSync('state.json')) {
    return JSON.parse(fs.readFileSync('state.json'));
  }
  return { douyinIndex: 0, xhsIndex: 0 };
}

3. AV1编码视频处理

问题:部分视频使用AV1编码,ffmpeg -c:v copy 不支持。

解决:使用GPU编码重新编码:

ffmpeg -i input.webm -c:v h264_nvenc -preset default -c:a copy output.mp4

扩展思考

这套系统的核心思路可以迁移到多个场景:

  1. 品牌口碑监控:将关键词改为品牌名称,即可监控品牌舆情
  2. 竞品分析:监控竞争对手的营销活动和用户反馈
  3. 行业趋势:追踪特定行业的热门话题和创新点
  4. 政务舆情:政府部门用于民意收集和舆情预警

总结

通过OpenClaw搭建舆情监控系统,我们实现了:

  1. 自动化:从手动浏览到自动采集,效率提升10倍以上
  2. 智能化:AI分析替代人工筛选,准确率更高
  3. 实时性:每日定时运行,信息获取更及时
  4. 低成本:无需购买昂贵的舆情服务,只需API调用费用

OpenClaw作为AI Agent框架,其价值不仅在于技术能力,更在于让AI能够"真正干活",完成端到端的工作流程。这种"Agentic AI"的范式,正在改变我们与AI交互的方式——从"问答式"到"委托式",从"建议"到"执行"。


作者简介:专注于AI Agent应用开发,正在探索OpenClaw在更多场景的落地实践。

相关链接


本文首发于InfoQ,转载请注明出处。