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

微博AI舆情接口已下线,无法直接调用 AI舆情_设关键词监控
微博官方在2023年中旬起逐步关停了旧版「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()或cURLPOST 微博正文过去,接收 JSON 返回的score(-1 ~ 1) - 避免在 PHP 中直接加载大模型(如BERT),会严重拖慢响应,且内存溢出风险高
POST /sentiment HTTP/1.1
Content-Type: application/json
{"text": "这个产品太棒了!"}
关键词监控要持久化,不能只靠定时脚本
单纯写个 curl 定时任务去拉数据,漏采率高、无状态追踪、难查重。必须引入最小可行存储:
立即学习“PHP免费学习笔记(深入)”;
- 用 MySQL 记录每条微博的
idstr(唯一)、created_at、text、sentiment_score - 每次拉取后用
INSERT IGNORE INTO ... (idstr) VALUES (...)防重复 - 关键词配置单独建表,支持动态增删,不要硬编码在 PHP 文件里
- 微博ID是字符串(非数字),PHP里存字段类型必须是
VARCHAR(32),否则截断导致去重失效
真正卡住多数人的不是调不通接口,而是没意识到微博不提供「实时推送」机制——所有监控都得自己轮询+去重+归档,这部分逻辑比调API本身重得多。











