PHP怎样对接微博AI舆情_设关键词监控调情感计算接口【参考】

微博AI舆情接口已下线,需改用search/statuses API抓取数据并结合第三方NLP模型做情感分析,同时须处理权限、编码、风控、去重及持久化等关键问题。

微博AI舆情接口已下线,无法直接调用 AI舆情_设关键词监控

微博官方在2025年中旬起逐步关停了旧版「AI舆情」开放接口(包括 /2/ai/monitor/create.json 等路径),目前开放平台文档中已无对应API入口。所有尝试请求 https://api.weibo.com/2/ai/... 均会返回 {"error":"invalid endpoint"

,"error_code":404} 或 401 错误。这不是鉴权或签名问题,而是服务端彻底移除。

替代方案:用微博搜索API + 第三方情感分析模型

实际可行的路径是分两步走:先用微博开放平台的 search/statuses 接口抓取含关键词的公开微博,再用本地或云上NLP模型做情感打分。需注意:

  • 微博搜索接口需申请「高级接口权限」,普通应用默认限流 100 次/天,且仅返回最近7天数据
  • 关键词必须 URL 编码,例如 关键词=人工智能 要传 %E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD
  • 返回字段不含原生情感标签,text 字段含HTML实体(如 zuojiankuohaophpcn),需先用 html_entity_decode() 清洗
  • 高频调用易触发风控,建议加随机延迟(sleep(rand(1,3)))并缓存结果
GET https://api.weibo.com/2/search/statuses.json?access_token=YOUR_TOKEN&q=%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD&sort=time&page=1&count=20

PHP里调用轻量级情感分析(不用微博AI)

不依赖微博后端模型,可用 PHP 调用开源中文情感分析服务,比如基于 SnowNLP 的 Python 封装或腾讯云 NLP API。若坚持纯 PHP,推荐用 snownlp 的 HTTP 封装(Python 启一个轻量 Flask 服务):

  • 本地跑 Python 服务:python -m pip install snownlp flask,写一个 /sentiment 接口
  • PHP 用 file_get_contents()cURL POST 微博正文过去,接收 JSON 返回的 score(-1 ~ 1)
  • 避免在 PHP 中直接加载大模型(如BERT),会严重拖慢响应,且内存溢出风险高
POST /sentiment HTTP/1.1
Content-Type: application/json

{"text": "这个产品太棒了!"}

关键词监控要持久化,不能只靠定时脚本

单纯写个 curl 定时任务去拉数据,漏采率高、无状态追踪、难查重。必须引入最小可行存储:

  • 用 MySQL 记录每条微博的 idstr(唯一)、created_attextsentiment_score
  • 每次拉取后用 INSERT IGNORE INTO ... (idstr) VALUES (...) 防重复
  • 关键词配置单独建表,支持动态增删,不要硬编码在 PHP 文件里
  • 微博ID是字符串(非数字),PHP里存字段类型必须是 VARCHAR(32),否则截断导致去重失效

真正卡住多数人的不是调不通接口,而是没意识到微博不提供「实时推送」机制——所有监控都得自己轮询+去重+归档,这部分逻辑比调API本身重得多。