问答
怎么找某个领域的微博博主(KOL)?
简短回答
用微博搜索搜几个领域关键词,把结果按作者归组,按发帖次数和互动量给作者排序,再用微博账号信息接口查排名靠前的账号。20 页搜索加 50 个账号资料,共 $0.14。
一个户外装备品牌想在微博上找 30 个真正写露营、徒步的博主,而不是偶尔晒过一张帐篷照的明星。最有用的信号是行为:谁一直在这个话题下发内容,谁的微博有人转。搜索结果恰好能给出这些,因为每条微博都带着作者。
三步走
- 搜领域词。 用微博搜索搜四五个关键词,比如露营装备、徒步路线、户外测评。
sort=hot找出已经有影响力的账号,sort=latest能捞到规模小但很活跃的博主。 - 给作者排序。 按
author.id归组,数每个作者出现了几条,再把转发和点赞加起来。搜索结果里本来就带着作者的粉丝数和认证状态。 - 核实候选。 对排名前 50 的账号调用微博账号信息,加
view=full,看简介、微博总数、认证说明(比如职业或者持证户外领队)和 IP 属地。
费用
| 步骤 | 调用次数 | 费用 |
|---|---|---|
| 5 个关键词 × 2 种排序 × 2 页 | 20 | $0.04 |
| 前 50 名的账号资料 | 50 | $0.10 |
| 整轮合计 | 70 | {{cost:weibo.posts.search20+weibo.users.get50}} |
代码
import os, requests
from collections import defaultdict
API = "https://api.okdata.online"
H = {"Authorization": f"Bearer {os.environ['OKDATA_API_KEY']}"}
def call(path, **p):
r = requests.get(API + path, headers=H, params=p, timeout=30).json()
if r["code"] != "ok":
raise RuntimeError(f"{r['code']}: {r['message']}")
return r["data"]
authors = defaultdict(lambda: {"posts": 0, "engagement": 0, "name": None, "followers": None})
for kw in ["露营装备", "徒步路线", "户外测评", "轻量化徒步", "露营地推荐"]:
for sort in ("hot", "latest"):
for p in call("/v1/weibo/posts/search", query=kw, sort=sort)["items"]:
a = authors[p["author"]["id"]]
a["posts"] += 1
a["engagement"] += (p["metrics"]["reposts"] or 0) + (p["metrics"]["likes"] or 0)
a["name"], a["followers"] = p["author"]["name"], p["author"]["followers"]
top = sorted(authors.items(), key=lambda kv: (kv[1]["posts"], kv[1]["engagement"]), reverse=True)[:50]
for uid, a in top:
prof = call("/v1/weibo/users/get", id=uid, view="full")["item"]
print(a["name"], a["posts"], a["engagement"], prof["followers"], prof["ext"].get("verified_reason"))
示例里每个关键词、每种排序只取一页;想挖得更深,加一个 cursor 翻页循环即可。
这套方法看不到的
- 粉丝画像、报价、过往合作品牌都不是公开数据,这里没有。
- 接口目录里没有微博账号的微博列表。你看到的是博主命中关键词的那些微博,不是他的全部动态。
- 粉丝很多、互动很少,往往意味着僵尸粉或买来的粉。按单条互动来筛更靠谱。
其他途径
微博官方的博主商单平台能看到粉丝画像,也负责签约和结算,适合已经准备好花钱投放的品牌。代理商手里有整理好的名单,收服务费。只要十来个人的话,在微博话题页里手动翻一翻也行。跨平台的版本见达人发现方案。
更新于