当前位置: 首页 > news >正文

影刀RPA 自动化舆情监控:关键词预警与报告生成

影刀RPA 自动化舆情监控:关键词预警与报告生成

作者:林焱


写在前面

品牌负面舆情一旦爆发,几个小时内可能蔓延全网。靠人工每天刷微博、知乎、新闻,根本来不及。影刀可以帮你搭一套7×24小时的舆情监控系统:定时采集多个平台的内容→关键词匹配→情感初步判断→有风险立即推送告警。

本文从零到一搭建这套系统。


一、系统架构

拼多多店群自动化报活动上架!

数据来源: ├── 微博(关键词搜索) ├── 知乎(话题搜索) ├── 新闻网站(RSS订阅) └── 百度指数(品牌声量) 处理流程: 采集数据 → 关键词过滤 → 情感判断 → 风险评分 → 告警/汇总报告

二、RSS新闻监控(最简单稳定的方案)

很多新闻网站提供RSS订阅,不需要爬虫就能获取内容,是舆情监控的首选数据源。

importfeedparserimportrequestsimportjsonimporttimeimportdatetimeimportrefromcollectionsimportdefaultdictdefmonitor_rss_feeds(feed_urls,keywords,lookback_hours=24):""" 监控RSS新闻中的关键词 feed_urls: RSS地址列表 keywords: 监控关键词列表 lookback_hours: 只看最近N小时的内容 """cutoff_time=datetime.datetime.now()-datetime.timedelta(hours=lookback_hours)matched_articles=[]forfeed_urlinfeed_urls:try:feed=feedparser.parse(feed_url)forentryinfeed.entries:# 解析发布时间ifhasattr(entry,'published_parsed'):importcalendar pub_time=datetime.datetime.fromtimestamp(calendar.timegm(entry.published_parsed))else:pub_time=datetime.datetime.now()# 只处理时间窗口内的文章ifpub_time<cutoff_time:continue# 标题+摘要全文搜索full_text=f"{entry.get('title','')}{entry.get('summary','')}"matched_keywords=[kwforkwinkeywordsifkwinfull_text]ifmatched_keywords:matched_articles.append({"来源":feed.feed.get('title',feed_url),"标题":entry.get('title',''),"摘要":entry.get('summary','')[:200],"链接":entry.get('link',''),"发布时间":pub_time.strftime('%Y-%m-%d %H:%M'),"命中关键词":", ".join(matched_keywords),})exceptExceptionase:print(f"RSS采集失败:{feed_url}-{e}")returnmatched_articles# 配置RSS源RSS_FEEDS=["https://36kr.com/feed",# 36氪"https://www.huxiu.com/rss/",# 虎嗅"https://www.ifanr.com/feed",# 爱范儿"https://news.qq.com/rss/tech.xml",# 腾讯科技# 还可以添加各平台的搜索RSS:如百度新闻、Google News的搜索结果RSS]# 监控关键词KEYWORDS=["品牌A","品牌A食品","品牌A安全","公司名称","产品名"]articles=monitor_rss_feeds(RSS_FEEDS,KEYWORDS)print(f"发现{len(articles)}篇相关文章")

三、情感分析(判断正面/负面)

fromsnownlpimportSnowNLP# pip install snownlp# 负面词汇词典(可自定义扩展)NEGATIVE_WORDS=["投诉","举报","欺诈","虚假","问题","缺陷","召回","致癌","危险","事故","处罚","罚款","违规","索赔","退款","维权","曝光","负面","差评","中毒","过期"]POSITIVE_WORDS=["好评","推荐","优质","创新","突破","荣获","获奖","上市","合作","融资","获批","认证"]defanalyze_sentiment(text):""" 情感分析,返回风险级别 returns: (sentiment_score, risk_level) """# SnowNLP情感得分:0-1,越接近1越正面try:sentiment_score=SnowNLP(text).sentimentsexcept:sentiment_score=0.5# 无法判断时返回中性# 负面词计数negative_count=sum(1forwordinNEGATIVE_WORDSifwordintext)positive_count=sum(1forwordinPOSITIVE_WORDSifwordintext)# 综合判断风险级别ifnegative_count>=3orsentiment_score<0.2:risk_level="高风险"elifnegative_count>=1orsentiment_score<0.4:risk_level="中风险"elifpositive_count>=2orsentiment_score>0.7:risk_level="正面"else:risk_level="中性"returnsentiment_score,risk_level,negative_count# 对采集到的文章进行情感分析forarticleinarticles:score,risk,neg_count=analyze_sentiment(article['标题']+' '+article['摘要'])article['情感得分']=round(score,3)article['风险级别']=risk article['负面词数量']=neg_count# 按风险排序articles.sort(key=lambdax:['高风险','中风险','中性','正面'].index(x.get('风险级别','中性')))

四、实时告警推送


defsend_alert(articles,webhook_url):""" 推送高风险内容告警 """high_risk=[aforainarticlesifa.get('风险级别')=='高风险']ifnothigh_risk:returnalert_content=f"## ⚠️ 舆情风险告警\n\n"alert_content+=f"发现 **{len(high_risk)}** 条高风险内容,请立即关注:\n\n"fori,articleinenumerate(high_risk[:5],1):# 最多显示5条alert_content+=f"**{i}. [{article['标题']}]({article['链接']})**\n"alert_content+=f"> 来源:{article['来源']}| 时间:{article['发布时间']}\n"alert_content+=f"> 命中关键词:`{article['命中关键词']}`\n"alert_content+=f">{article['摘要'][:100]}...\n\n"iflen(high_risk)>5:alert_content+=f"\n> 还有{len(high_risk)-5}条未展示,请查看完整报告\n"# 发送到企业微信群importrequests payload={"msgtype":"markdown","markdown":{"content":alert_content}}resp=requests.post(webhook_url,json=payload)print(f"告警已推送:{resp.json()}")ALERT_WEBHOOK="https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=你的key"send_alert(articles,ALERT_WEBHOOK)

五、每日舆情汇总报告

importopenpyxlfromopenpyxl.stylesimportPatternFill,Font,Alignmentdefgenerate_daily_report(articles,output_file=None):"""生成每日舆情汇总Excel报告"""ifoutput_fileisNone:date_str=datetime.datetime.now().strftime('%Y%m%d')output_file=f"舆情监控报告_{date_str}.xlsx"wb=openpyxl.Workbook()# Sheet1:概览ws_summary=wb.active ws_summary.title="每日概览"total=len(articles)risk_counts=defaultdict(int)forainarticles:risk_counts[a.get('风险级别','未知')]+=1ws_summary.append(["舆情监控日报",datetime.datetime.now().strftime('%Y-%m-%d')])ws_summary.append([])ws_summary.append(["风险级别","数量","占比"])forrisk_levelin['高风险','中风险','中性','正面']:count=risk_counts.get(risk_level,0)ws_summary.append([risk_level,count,f"{count/total*100:.1f}%"iftotalelse"0%"])ws_summary.append(["合计",total,"100%"])# Sheet2:明细ws_detail=wb.create_sheet("明细数据")headers=["来源","标题","风险级别","情感得分","命中关键词","发布时间","摘要","链接"]ws_detail.append(headers)# 设置标题样式forcellinws_detail[1]:cell.font=Font(bold=True)cell.fill=PatternFill(start_color="1565C0",fill_type="solid")cell.font=Font(bold=True,color="FFFFFF")# 风险级别对应颜色risk_colors={"高风险":"FF6B6B","中风险":"FFB347","中性":"E0E0E0","正面":"90EE90"}forarticleinarticles:row=[article.get('来源',''),article.get('标题',''),article.get('风险级别',''),article.get('情感得分',''),article.get('命中关键词',''),article.get('发布时间',''),article.get('摘要',''),article.get('链接',''),]ws_detail.append(row)# 按风险级别着色risk=article.get('风险级别','中性')color=risk_colors.get(risk,'E0E0E0')fill=PatternFill(start_color=color,fill_type="solid")forcellinws_detail[ws_detail.max_row]:cell.fill=fill# 调整列宽ws_detail.column_dimensions['B'].width=40ws_detail.column_dimensions['G'].width=50ws_detail.column_dimensions['H'].width=50wb.save(output_file)print(f"舆情报告已生成:{output_file}")returnoutput_file

TEMU店群矩阵自动化运营核价报活动

六、完整定时执行流程

defrun_sentiment_monitoring():"""完整的舆情监控流程"""print(f"[{datetime.datetime.now().strftime('%Y-%m-%d %H:%M')}] 开始舆情监控...")# 1. 采集articles=monitor_rss_feeds(RSS_FEEDS,KEYWORDS,lookback_hours=2)# 2. 情感分析forarticleinarticles:text=article['标题']+' '+article['摘要']score,risk,neg_count=analyze_sentiment(text)article.update({'情感得分':score,'风险级别':risk,'负面词数量':neg_count})# 3. 告警send_alert(articles,ALERT_WEBHOOK)# 4. 每天早上8点生成日报ifdatetime.datetime.now().hour==8:report_file=generate_daily_report(articles)print(f"日报已生成:{report_file}")print(f"监控完成,共分析{len(articles)}条内容")# 在影刀中设置每2小时执行一次run_sentiment_monitoring()

七、踩坑记录

坑1:SnowNLP对网络语言识别不准
SnowNLP是基于微博语料训练的,对中规中矩的新闻文章识别准确率约70%。提高准确率的方法:结合自定义负面词典,负面词数量比情感得分更可靠。

坑2:RSS源有些不稳定
部分媒体的RSS地址会变化或停更。建议定期检查RSS是否还有更新,超过7天没新内容的RSS源标记为失效。

坑3:中文分词影响关键词匹配
直接字符串匹配"品牌A" in text可以用,但对"品/牌/A"这类被分词打散的情况无效。建议同时用jieba分词后匹配:"品牌A" in " ".join(jieba.cut(text))

坑4:同一条内容被多个源重复收录
同一篇文章可能出现在多个RSS源里,需要URL去重。用文章链接的MD5作为唯一标识,已处理的链接存到文件或SQLite里,避免重复告警。


总结

舆情监控系统的三个核心:数据采集(RSS是最稳的免费方案)、情感判断(规则词典+SnowNLP双保险)、及时告警(企业微信群机器人实时推送)。搭好后,高风险内容第一时间到手机,不再靠人工刷屏。

署名:林焱

http://www.jsqmd.com/news/1250941/

相关文章:

  • 手机拍2寸证件照全攻略:尺寸参数、拍摄技巧和免费生成工具 - 软件小管家
  • iptables 规则写完不生效,3 个常见排查点
  • 学术AI搜索工具深度测评(2024真实数据对比):Scite、Elicit、Consensus、Perplexity、Semantic Scholar谁才是论文加速器?
  • 亨得利服务项目及价格查询|服务电话及全部维修地址权威信息通告(2026年7月更新) - 亨得利官方博客
  • 权威发布:百达翡丽深圳2026年7月最新客户服务网点地址及售后电话! - 百达翡丽官方售后中心
  • 巴中CMA甲醛检测公司怎么选:只测不除的专业实验室——国康CMA检测及公共卫生检测 - 信誉隆金银铂奢回收
  • 流程引擎BPM设计之:流程二开的三种模式
  • 电瓶车托运找什么物流?慧寄侠整车直发,260元起无忧寄车 - 快递物流资讯
  • 隐私小号中间号技术架构实战:隐私通话、号码保护、AXB中继模式与企业落地避坑
  • 2026年数据分析平台选型参考 - 科技焦点
  • 2026年想采购干辣椒自动去蒂剪把机加工厂怎么联系 - 热点品牌推荐
  • 交通运输数据安全新规落地,灾备成硬性合规要求
  • 基于深度强化学习的电池储能系统优化控制实践
  • 手机证件照自己拍全教程:拍摄技巧、换底色与免费工具盘点 - AI测评专家
  • 2026年7月最新|浪琴香港售后服务中心地址汇总+客户服务电话全解析 - 浪琴官方售后服务中心
  • 2026年热门的世界魔鬼城旅游公司出行选择全攻略 - 热点品牌推荐
  • 东莞卫浴螺丝工厂选购指南 卫浴行业紧固件采购实用参考 - 热点品牌推荐
  • AI病害识别怎么分级?千寻驰观技术解读
  • 从交易到社群:车主服务生态的构建与用户价值延伸
  • 2026年贵阳工伤维权选对=省心 王兴波律师护航赔偿 - 本地品牌推荐
  • 福州CMA甲醛检测公司怎么选:只测不除的专业实验室——安鑫CMA甲醛检测及公共卫生检测 - 信誉隆金银铂奢回收
  • 2026年BI大数据分析平台横向测评 - 科技焦点
  • 《你别回头找我》为何能成为可传播的试听入口
  • 企业短信平台技术架构与合规落地实战:验证码、通知、营销短信底层原理与避坑方案
  • 北京四合院的味道,怎么“搬”进墓园?
  • 低价订阅plus
  • 武汉正规大牌钻石首饰回收实体店 鉴定靠谱,无 GIA 证书钻饰回收好去处 - 大牌深度测评
  • MCP+A2A融合协议落地:Agent协议层标准化,信任层才是最大硬仗
  • 2026去水印小程序隐私安全隐患:免费去水印工具测评与风险提醒 - 免费软件工具方法教程
  • 6本期刊被剔除,WOS更新7月期刊目录