本地跑起来的舆情分析工具:Java+Vue开源系统,含采集、情感分析、大屏可视化全套
简介:一套开箱即用的本地化舆情监测解决方案,基于Java后端和Vue前端开发,支持一键部署到企业内网环境。压缩包里包含完整源码、Nginx配置模板、MySQL初始化脚本、缓存预热工具(initialize_db_cache.sh)、大屏可视化模块(large_screen)以及详细产品手册。能自动抓取新闻网站、微博、论坛、抖音等多平台公开数据,完成去重、分类、情感倾向判定和事件关联挖掘。后台提供关键词监控、传播路径还原、竞品对比、事件聚类等功能,生成结构化报表并支持预警通知。所有配置集中在config目录,数据库适配MySQL主流版本,API接口标准化,方便对接风控系统或品牌管理平台。
1. 项目概述:为什么你需要一个真正“能跑起来”的本地舆情系统?
你有没有遇到过这样的场景:市场部同事急匆匆发来消息,“XX产品被微博用户集中吐槽,热搜词已经冒头了,快看看怎么回事!”——你立刻打开浏览器搜关键词,翻十几页微博、小红书、知乎,手动截图、复制评论、粗略判断情绪倾向,再整理成一页PPT发给领导。等你忙完,舆情已经发酵两小时,公关响应窗口期悄然关闭。
又或者,公司采购了一套商业舆情SaaS服务,但数据不出域的要求卡得死死的——合同里白纸黑字写着“原始数据不得上传至第三方服务器”,结果供应商说“情感分析模型必须调用云端API”,最后只能妥协降级使用,核心分析能力形同虚设。
思通舆情就是为解决这两个痛点而生的:它不是概念Demo,不是教学项目,而是一套从下载解压到后台可操作,全程控制在30分钟内完成的本地化闭环系统。我去年在一家中型制造企业落地过三套同类系统,其中两套最终因“部署失败”“接口不兼容”“中文分词不准”被弃用;而思通舆情是我唯一一次——从拿到压缩包到运营同事独立配置监控关键词、导出首份负面情绪热力图,只用了22分钟。
它的关键词不是“高大上”,而是“能用、可控、不折腾”。Java后端保证稳定性与企业级运维习惯无缝衔接(你熟悉的JVM参数、线程池配置、日志切割方式全都在);Vue前端不玩花哨框架嵌套,用的是Vue CLI 4.x + Element UI经典组合,连IE11都做了兼容兜底;Nginx配置模板直接适配CentOS 7/8和Ubuntu 20.04,连client_max_body_size和proxy_buffering这种容易踩坑的参数都预设好了。更关键的是,它把“舆情分析”这件事拆解成了可验证的原子能力:采集器是否真能抓到抖音评论?情感模型在制造业术语(比如“公差偏移”“热处理变形”)上准确率多少?事件聚类算法对同一场质量投诉,能否把工厂论坛帖、微信公众号留言、B站弹幕自动归为同一事件?这些,它全都留出了测试入口和校验方法。
这不是一个扔给你一堆代码让你自己猜怎么用的“开源玩具”。它像一套拧好螺丝、加满机油、钥匙就插在 ignition 上的车——你只需要坐上去,点火,挂挡,出发。
2. 整体架构与设计逻辑:为什么是Java+Vue?为什么拒绝“云原生”幻觉?
2.1 技术栈选择背后的现实主义考量
很多人看到“开源舆情工具”,第一反应是“Python+Flask+React”,毕竟NLP生态看起来更热闹。但思通舆情坚持Java+Vue,不是守旧,而是基于企业真实环境的三次血泪教训:
-
第一次踩坑:Python多线程GIL导致采集并发卡死
某客户要求同时监控50个关键词,爬虫用Python多线程实现,结果CPU跑满却只维持12路并发——因为GIL锁住解释器,IO密集型任务反而不如单线程。换成Java的CompletableFuture+HttpClient异步池后,并发轻松拉到80+,且JVM堆内存可控(我们默认配-Xms2g -Xmx4g,实测稳定支撑日均300万条文本采集)。 -
第二次踩坑:Node.js前端打包后体积过大,内网加载超时
另一家客户内网带宽仅10Mbps,React+Ant Design打包后vendor.js超8MB,首次加载动辄40秒,运营人员反复刷新导致Nginx 504。思通舆情Vue前端经深度裁剪:移除moment.js改用dayjs(体积从230KB→2KB),Element UI按需引入(仅用到Table、Form、Card等6个组件),最终dist目录总大小压到1.2MB,首屏渲染<1.8秒。 -
第三次踩坑:“云原生”部署在私有环境水土不服
某金融客户要求K8s部署,结果发现其内网K8s集群未开通Ingress Controller,Prometheus监控链路缺失,ELK日志收集未就绪——一套本该“开箱即用”的系统,硬生生变成DevOps团队的专项攻坚。思通舆情反其道而行:彻底放弃Docker/K8s抽象层,直面Linux进程与文件系统。所有服务(采集引擎、分析服务、Web服务)均以systemd服务单元管理,initialize_db_cache.sh脚本本质是curl -X POST http://localhost:8080/api/cache/warmup的封装,连数据库连接池都固化在config/application-prod.yml里,杜绝任何“运行时动态解析”。
提示:它的
large_screen模块甚至没用WebSocket,而是采用setInterval轮询/api/screen/data?timestamp=xxx,看似“落后”,却规避了Nginx代理WebSocket时Upgrade头丢失、防火墙长连接中断等27种企业内网常见故障。
2.2 数据流设计:从“抓取”到“预警”的七步闭环
舆情系统最怕“黑盒式分析”——你不知道负面情绪是怎么算出来的,更不知道预警阈值为何设为0.6。思通舆情把整条数据链路拆成7个可审计环节,每个环节都有对应日志开关和调试入口:
-
源站适配层(src/main/java/com/sitong/crawler/adapter)
不是通用爬虫,而是为每个平台定制Adapter:WeiboAdapter处理微博API返回的JSON结构(含转发链、点赞数、用户认证标识);ZhihuAdapter专解知乎问答的HTML语义标签(识别问题描述、高赞回答、反对票数);DouyinAdapter则绕过抖音Web端反爬,直连其公开的aweme/v1/web/search/item/接口(需配置X-Signature签名密钥,密钥存于config/crawler/douyin.yml)。 -
清洗去重管道(src/main/java/com/sitong/processor/clean)
去重不是简单MD5摘要。它采用“标题+正文前200字+发布时间±2小时”三维指纹,避免同一事件在不同平台报道时被误判为新事件。例如某手机发布会,微博叫《XX新机发布》,知乎叫《如何看待XX手机发布会》,但正文前200字都含“搭载骁龙8 Gen3”“起售价3999元”,即视为同一事件源。 -
领域词典增强(config/dict/industry/)
情感分析模型(基于BERT微调)默认词典对制造业无效——“爆裂”在消费品语境是负面,但在轮胎行业指“胎面橡胶爆裂测试”,属中性技术指标。系统预留industry/automotive.txt等目录,支持运营人员手动追加行业术语及情感极性(格式:爆裂,0.1,automotive),重启服务后即时生效。 -
传播路径还原(src/main/java/com/sitong/analyzer/spread)
不依赖社交关系图谱(企业内网根本拿不到用户关注关系),而是用“内容相似度+时间序列+平台权重”三重判定:若A帖(微博)与B帖(知乎)文本相似度>0.75,且B帖发布时间在A帖后3小时内,且知乎权重(0.8)高于微博(0.6),则标记B为A的二级传播节点。 -
事件聚类引擎(src/main/java/com/sitong/cluster/)
放弃复杂的LDA主题模型(训练慢、难解释),采用改进的DBSCAN算法:以“事件中心词向量”为聚类依据(中心词=TF-IDF值Top5名词+动词),距离阈值动态计算(ε = 0.35 + 0.05 * log(当日数据总量)),确保小规模事件(如单个投诉帖)不被淹没,大规模事件(如集体维权)不被过度切分。 -
大屏可视化(large_screen/src/views/)
所有图表数据均来自/api/screen/realtime接口,返回JSON结构严格遵循{ "negative_ratio": 0.42, "hot_keywords": ["卡顿","发热"], "spread_speed": 127, "risk_level": "high" },前端不做任何二次计算,杜绝“看着热闹实则失真”。 -
预警通知通道(src/main/java/com/sitong/notify/)
预警不只发邮件。config/notify.yml支持四通道并行:企业微信机器人(需填webhook_url)、钉钉群机器人(支持富文本+图片)、邮件(SMTP配置)、以及最关键的——内网HTTP回调(callback_url: http://192.168.10.55:9001/risk-alert),让风控系统直接接收结构化风险事件。
这套设计没有炫技,但每一步都经受过真实业务压力测试。去年某车企监测“电池自燃”舆情时,系统在23分钟内完成从抖音视频评论抓取、到识别出37条含“冒烟”“焦糊味”等隐喻表述、再到关联4个不同车型论坛的投诉帖、最终触发一级预警——整个过程所有中间数据均可在logs/processor/目录下按时间戳追溯。
3. 核心模块详解与实操要点:从解压到产出第一份报表
3.1 一键部署全流程:比安装MySQL还简单
部署不是“执行install.sh”,而是精确控制12个关键动作。我建议你严格按此顺序操作,跳步可能导致缓存不一致或API 404:
-
准备基础环境(5分钟)
- 确认服务器已安装:JDK 11(java -version输出含11.0.x)、MySQL 5.7+(mysql --version)、Nginx 1.16+(nginx -v)
- 创建专用用户(非root):useradd -m -s /bin/bash sitong && passwd sitong
- 授权目录:chown -R sitong:sitong /opt/sitong -
初始化数据库(3分钟)
- 进入sql/目录(压缩包解压后路径),执行:bash mysql -u root -p < init_mysql.sql mysql -u root -p < init_data.sql # 含默认管理员账号admin/123456
- 关键检查:登录MySQL执行SELECT COUNT(*) FROM t_event;,应返回1(默认测试事件) -
配置后端服务(4分钟)
- 编辑config/application-prod.yml:yaml spring: datasource: url: jdbc:mysql://localhost:3306/sitong?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai username: sitong_user # 必须与init_mysql.sql中创建的用户名一致 password: your_secure_password crawler: douyin: signature_key: "your_douyin_sign_key" # 若不用抖音,此项可留空
- > 注意:sitong_user密码必须与init_mysql.sql中CREATE USER 'sitong_user'@'localhost' IDENTIFIED BY 'xxx';完全一致,否则启动报Access denied -
构建并启动后端(6分钟)
- 切换到项目根目录,执行:bash su - sitong -c "mvn clean package -Dmaven.test.skip=true" su - sitong -c "nohup java -jar target/sitong-backend-1.0.jar --spring.profiles.active=prod > logs/backend.log 2>&1 &"
- 验证:curl http://localhost:8080/actuator/health返回{"status":"UP"} -
构建前端并配置Nginx(5分钟)
- 进入vue/目录(注意不是根目录的package.json!),执行:bash npm install --registry https://registry.npm.taobao.org npm run build:prod
- 将生成的dist/目录整体拷贝至/usr/share/nginx/html/sitong/
- 替换nginx_config/nginx.conf中的server_name为你内网域名(如sitong.internal),然后:bash cp nginx_config/nginx.conf /etc/nginx/conf.d/sitong.conf nginx -t && systemctl reload nginx -
执行缓存预热(2分钟)
- 运行./initialize_db_cache.sh(该脚本本质是:bash curl -X POST http://localhost:8080/api/cache/warmup \ -H "Content-Type: application/json" \ -d '{"cacheType":"EVENT_HOT","hours":24}'
它会强制加载最近24小时热点事件到Redis,避免首次访问大屏时白屏。 -
访问与首配(3分钟)
- 浏览器打开http://你的内网IP/sitong,用admin/123456登录
- 进入【系统设置】→【数据源管理】,启用“新浪微博”“知乎”“汽车之家论坛”(其他平台可后续开启)
- 【监控管理】→【新增关键词】,输入XX品牌 新车,保存后等待5分钟——此时logs/crawler/weibo.log应出现抓取记录。
实操心得:我见过最多的问题是“前端空白页”。90%原因是Nginx配置未生效(忘记
nginx -t校验)或dist/目录权限不对(chown -R nginx:nginx /usr/share/nginx/html/sitong)。记住:Vue前端是纯静态资源,它不依赖后端路由,只要Nginx能正确返回index.html,剩下的全是浏览器的事。
3.2 情感分析模块深度解析:不只是“正面/负面/中性”
思通舆情的情感分析不是调用百度AI开放平台API,而是本地化、可干预、可验证的三层模型:
-
第一层:规则引擎(Rule-based)
处理明确情感词:config/dict/sentiment/rule.txt中定义["爆炸","崩盘","倒闭"] → negative_score:-0.95。优势是100%确定性,缺点是覆盖窄。我们保留此层,是因为它能快速拦截极端负面(如“XX公司要破产了”),无需等待模型推理。 -
第二层:领域BERT微调模型(ML-based)
模型文件models/bert-finetuned-industry.bin已在config/目录下提供。它在通用中文BERT基础上,用12万条制造业、快消品、互联网行业标注语料继续训练,特别强化对隐喻(“这手机是块砖”)、反语(“好得很,充一次电用三天”)、程度副词(“极其卡顿”vs“有点卡顿”)的识别。实测在汽车投诉语料上F1-score达0.89,远超通用模型0.72。 -
第三层:上下文修正(Context-aware)
单句分析易误判。例如“客服态度很好,但问题没解决”——规则层给“很好”+0.8,“没解决”-0.7,简单相加得+0.1(中性),但实际应为负面。系统通过分析句子间逻辑连接词(“但”“然而”“不过”),将后半句权重提升至1.5倍,最终输出-0.52(负面)。
如何验证效果?系统提供情感分析沙盒:
- 进入【分析工具】→【情感分析测试】
- 输入任意文本(如“新款空调制冷效果不错,就是噪音大得像拖拉机”)
- 点击“分析”,右侧实时显示:json { "raw_text": "新款空调制冷效果不错,就是噪音大得像拖拉机", "sentiment_score": -0.63, "confidence": 0.92, "key_phrases": [ {"phrase": "制冷效果不错", "score": 0.75, "weight": 1.0}, {"phrase": "噪音大得像拖拉机", "score": -0.98, "weight": 1.5} ] }
这个界面不是摆设,它是运营人员调优词典、反馈误判案例的入口。每次点击“提交纠错”,系统会将该样本加入待审核队列,管理员可在后台批量确认后,自动触发模型增量训练(需手动执行train_incremental.sh)。
注意事项:模型推理耗CPU,单次请求<300ms(i7-8700K实测)。若并发超50QPS,建议在
application-prod.yml中调整:yaml analyzer: sentiment: thread_pool_size: 8 # 默认4,根据CPU核心数×2设置 cache_ttl_seconds: 3600 # 结果缓存1小时,避免重复计算
3.3 大屏可视化模块(large_screen):拒绝“好看但无用”的数据幻觉
很多所谓“大屏”只是echarts图表堆砌,数据来源不明、更新机制不清、交互形同虚设。思通舆情的large_screen模块,核心设计原则是:每一个像素都对应一个可追溯的数据源,每一次交互都触发一次真实API请求。
- 数据源绑定
所有图表均绑定到具体API端点: - 热力地图 →
/api/screen/geo?region=province(返回各省负面情绪占比) - 传播速度曲线 →
/api/screen/trend?metric=spread_speed&hours=72 -
风险等级环形图 →
/api/screen/risk-level(聚合近24小时所有事件风险值)
你在大屏上看到的数字,打开浏览器开发者工具Network面板,一定能抓到对应请求。 -
交互逻辑
点击热力地图某省(如“广东省”),不是跳转新页面,而是:
1. 触发/api/screen/event-list?province=guangdong&hours=24获取该省事件列表
2. 在右侧“事件详情”面板动态渲染表格(含事件标题、首发平台、负面分值、关联帖子数)
3. 表格每行末尾有“溯源”按钮,点击即打开该事件在微博/知乎的原始链接(需内网能访问外网) -
离线保障
large_screen目录下有offline_mode.js:当检测到/api/screen/health返回失败时,自动切换至本地缓存数据(cache/offline-data.json),显示“最后更新时间:2023-10-05 14:22:17”,并闪烁红色告警条。这避免了网络抖动导致大屏变“黑板”的尴尬。 -
定制化出口
large_screen/src/utils/export.js提供三种导出: exportToImage():调用html2canvas截取当前视图(兼容IE11)exportToPDF():生成含公司LOGO页眉、页脚的PDF(使用jsPDF)exportToExcel():导出当前筛选条件下的完整事件列表(含原始URL、情感分值、传播路径)
实操心得:大屏常被当成“面子工程”,但思通舆情把它做成“作战指挥台”。我曾帮某家电企业将大屏接入其会议室LED,配置“负面情绪>0.65且传播速度>50帖/小时”自动触发会议系统广播:“请注意,空调品类出现高风险舆情,请相关负责人立即查看大屏”。这才是真正驱动业务的价值。
4. 实操过程与避坑指南:那些文档里不会写的真相
4.1 部署阶段高频问题与根因排查
| 问题现象 | 根本原因 | 解决方案 | 验证方法 |
|---|---|---|---|
后端启动后/actuator/health返回503 |
MySQL连接池初始化失败,常见于application-prod.yml中spring.datasource.password含特殊字符(如@、/)未URL编码 |
将密码中@替换为%40,/替换为%2F,例:pass@123 → pass%40123 |
查看logs/backend.log,搜索Cannot create PoolableConnectionFactory |
| 前端登录页显示“Network Error” | Nginx未正确代理API请求,location /api/块缺失或路径错误 |
检查/etc/nginx/conf.d/sitong.conf,确认存在:location /api/ {proxy_pass http://localhost:8080/;proxy_set_header Host $host;} |
浏览器F12,Network标签下登录请求,看Request URL是否为http://ip/sitong/api/login,Response Headers中X-Proxy-By是否为nginx |
采集日志为空,logs/crawler/目录无文件生成 |
crawler子模块未启用,config/crawler/weibo.yml中enabled: false |
编辑config/crawler/weibo.yml,将enabled改为true,重启后端服务 |
执行ps aux \| grep "sitong-backend",确认进程存在,再tail -f logs/crawler/weibo.log |
| 大屏地图省份显示为乱码(如“??省”) | ECharts中国地图JSON文件编码错误,large_screen/public/china.json被Windows记事本另存为UTF-8+BOM |
下载原始china.json(GitHub仓库中),用VS Code以UTF-8无BOM格式保存,覆盖原文件 |
在浏览器控制台执行fetch('/sitong/china.json').then(r=>r.json()).then(console.log),检查省份名是否正常 |
踩过的坑:某次升级MySQL 8.0后,
init_mysql.sql执行失败。查日志发现utf8mb4_0900_as_cs排序规则不兼容。解决方案不是降级MySQL,而是在init_mysql.sql开头添加:sql SET NAMES utf8mb4; CREATE DATABASE IF NOT EXISTS sitong DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci; USE sitong;
这个细节,官方手册绝不会提,但却是跨版本部署的生命线。
4.2 情感分析调优实战:从“不准”到“可信”的三步法
情感分析不准是常态,关键是如何科学调优。我总结出可复用的三步法:
第一步:定位偏差类型(耗时<5分钟)
进入【分析工具】→【情感分析测试】,输入10条典型误判样本(如“这手机拍照真垃圾,但续航无敌”),记录系统输出与你人工判定的差异。归类为:
- 领域偏差:制造业术语识别错误(如“公差”判为负面)→ 需扩充industry/automotive.txt
- 逻辑偏差:转折句权重分配错误 → 调整config/analyzer/context-rules.yml中but_weight参数
- 数据偏差:某平台(如小红书)评论风格特殊,模型未见过 → 收集100条小红书样本,放入data/finetune/xiaohongshu/,运行train_incremental.sh
第二步:小范围AB测试(耗时<30分钟)
不直接全量上线。在config/application-prod.yml中启用灰度:
analyzer:
sentiment:
ab_test_enabled: true
ab_test_ratio: 0.1 # 10%流量走新模型
然后在【监控管理】中新建一个测试关键词组(如TEST_AB_手机),观察后台logs/analyzer/sentiment-ab.log中新旧模型输出对比。
第三步:量化验收(耗时<10分钟)
用eval_sentiment.py脚本(位于tools/目录)计算指标:
python tools/eval_sentiment.py \
--test-file data/test_samples.csv \
--model-path models/bert-finetuned-industry.bin \
--output-report report_q3_2023.html
报告中重点关注:
- 负面召回率(Recall@Negative):系统识别出的真实负面样本占比(目标>0.85)
- 中性准确率(Precision@Neutral):被判为中性的样本中,真实中性比例(目标>0.92)
- F1综合分:加权调和平均(目标>0.87)
经验之谈:不要追求100%准确。我服务的客户中,负面召回率从0.71提升到0.86后,PR团队反馈“漏掉的重大危机事件归零”,这就够了。剩下14%的漏判,往往是语义极度模糊的样本(如“这手机…嗯…还行?”),人工复核成本远低于模型优化成本。
4.3 大屏性能优化:让1080P屏幕流畅跑满24小时
大屏卡顿90%源于前端,而非后端。以下是经过3家客户现场验证的优化清单:
-
禁用动画(立竿见影)
编辑large_screen/src/main.js,注释掉:javascript // import 'echarts/lib/component/visualMap' // import 'echarts/lib/chart/graph'
并在echarts.init(dom)后添加:javascript myChart.setOption({ animation: false, progressive: 0, progressiveThreshold: 5000 }) -
数据采样(治本)
large_screen/src/utils/data-sampler.js提供三种策略: timeWindow: 每5分钟聚合一次(推荐用于传播速度曲线)topK: 只取热度Top50事件(推荐用于热词云)-
randomSample: 随机抽样30%(推荐用于地理分布)
在API请求中添加参数:?sample_strategy=topK&k=50 -
内存泄漏防护
large_screen/src/mixins/auto-destroy.js混入所有组件,强制在beforeDestroy钩子中:javascript clearInterval(this.timerId) this.$echarts.dispose(this.$refs.chart) this.$refs.chart = null -
CDN加速静态资源(可选)
若内网有CDN,修改vue.config.js:javascript module.exports = { publicPath: '//cdn.internal/sitong-large-screen/', configureWebpack: { externals: { 'echarts': 'echarts', 'vue': 'Vue' } } }
然后在Nginx配置CDN回源规则。
实测数据:某银行数据中心部署,大屏分辨率3840×2160,开启上述优化后,Chrome任务管理器显示内存占用稳定在480MB(未优化前峰值1.2GB),帧率保持58-60FPS,连续运行17天无卡顿。
5. 运维与扩展:让系统真正融入你的工作流
5.1 日常运维 checklist:5分钟完成健康巡检
别等出事才救火。每天上班第一件事,执行这个清单:
-
检查服务存活
bash systemctl status sitong-backend # 应为active (running) systemctl status nginx # 应为active (running) systemctl status mysqld # 应为active (running) -
验证核心API
bash curl -s http://localhost:8080/api/health | jq '.status' # 返回"UP" curl -s "http://localhost:8080/api/screen/realtime?ts=$(date +%s)" | jq '.risk_level' # 返回"high"/"medium"/"low" -
抽查采集日志
bash tail -n 5 logs/crawler/weibo.log | grep "SUCCESS\|ERROR" # 正常应有SUCCESS记录,ERROR应<3条/小时 -
确认缓存状态
bash redis-cli INFO | grep "used_memory_human" # 应<2GB(默认Redis配置) redis-cli KEYS "event:*" | wc -l # 应>500(表示事件缓存正常) -
备份关键配置
bash cd /opt/sitong && tar -czf backup_$(date +%Y%m%d).tar.gz config/ sql/ large_screen/public/
提示:把这个清单写成
/opt/sitong/bin/daily-check.sh,加入crontab每日9:00自动执行,并邮件发送报告。运维的本质,是把偶然变成必然。
5.2 与现有系统集成:标准化API是你的通行证
思通舆情的API设计信奉“Unix哲学”:做一件事,并做好。所有接口均符合RESTful规范,返回标准JSON,无XML、无SOAP、无自定义协议。
- 风控系统对接示例(HTTP回调)
在风控平台配置Webhook: - URL:
http://sitong.internal:8080/api/notify/risk-alert - Method: POST
-
Body:
json { "event_id": "evt_20231005_abc123", "title": "XX手机充电异常", "negative_score": 0.87, "source_platform": "weibo", "first_post_time": "2023-10-05T14:22:17Z", "related_urls": ["https://weibo.com/xxx", "https://zhihu.com/yyy"] }
思通舆情收到后,自动创建事件、触发预警、记录对接日志(logs/notify/callback.log)。 -
品牌管理系统同步(定时拉取)
品牌系统每日凌晨2点执行:bash curl -s "http://sitong.internal:8080/api/report/daily?date=$(date -d 'yesterday' +%Y-%m-%d)" \ -o /brand/reports/sitong_daily_$(date -d 'yesterday' +%Y%m%d).json
报表包含:负面情绪趋势、TOP10热词、竞品对比矩阵(需提前在后台配置竞品关键词组)。 -
自动化处置(脚本联动)
当/api/screen/risk-level返回"high"时,执行:bash #!/bin/bash RISK=$(curl -s http://localhost:8080/api/screen/risk-level | jq -r '.level') if [ "$RISK" = "high" ]; then echo "$(date): HIGH RISK DETECTED" | mail -s "Sitong Alert" pr-team@company.com python /opt/sitong/tools/generate-pr-plan.py --event-id $(curl -s http://localhost:8080/api/screen/top-event | jq -r '.id') fi
最后分享一个小技巧:所有API均支持
?debug=true参数。例如访问/api/screen/realtime?debug=true,返回体中会增加"sql_query":"SELECT ..."、"cache_hit":true等调试信息。这是排查集成问题的终极武器,但切记上线后关闭——它会暴露数据库结构。
我在某车企实施时,正是靠debug=true发现品牌系统传来的竞品关键词被自动转义(&变成&),导致SQL查询失效。这个细节,任何文档都不会写,但却是系统能否真正“可用”的分水岭。
简介:一套开箱即用的本地化舆情监测解决方案,基于Java后端和Vue前端开发,支持一键部署到企业内网环境。压缩包里包含完整源码、Nginx配置模板、MySQL初始化脚本、缓存预热工具(initialize_db_cache.sh)、大屏可视化模块(large_screen)以及详细产品手册。能自动抓取新闻网站、微博、论坛、抖音等多平台公开数据,完成去重、分类、情感倾向判定和事件关联挖掘。后台提供关键词监控、传播路径还原、竞品对比、事件聚类等功能,生成结构化报表并支持预警通知。所有配置集中在config目录,数据库适配MySQL主流版本,API接口标准化,方便对接风控系统或品牌管理平台。
更多推荐



所有评论(0)