问答
怎么监控竞品公众号每天发了什么?
简短回答
每个竞品公众号每天用历史文章接口查一次(每次 $0.04,返回最新 10 篇,能拿到时带阅读数和点赞数),只给头条文章取全文(每篇 $0.02)。盯 8 个竞品,两样加起来一个月 $14.40。
一个护肤品牌盯着 8 个竞品的公众号,团队每天早上只想看一条消息:昨天谁发了文,头条推的是什么,哪几篇是原创,到现在各有多少阅读。这份简报每个竞品只需要调一次公众号历史文章,想细读的头条再调一次公众号文章详情。
每篇文章带什么
- 标题、链接、摘要和发布时间。
- 抓取那一刻的阅读数和点赞数(能拿到时)。
- 加
view=full还有ext.position(1 是头条,2 以后是同一次推送里的次条)和ext.original(是否标了原创)。
头条位置能看出对方当天押宝在什么内容上;原创还是转载,能看出对方是在自己做内容还是在做精选。
费用
| 用法 | 每月调用 | 每月费用 |
|---|---|---|
| 8 个竞品,每天查一次列表 | 240 | $9.60 |
| 再加每天头条的全文 | +240 | {{cost:wechat_mp.accounts.articles.list240+wechat_mp.articles.get240}} |
| 25 个竞品,只查列表 | 750 | $30.00 |
每个竞品的原始 ID(gh_ 开头)只需要查一次,用公众号搜索按名称找,每返回一个号 $0.058。
早报脚本
import os, datetime, requests
API = "https://api.okdata.online"
H = {"Authorization": f"Bearer {os.environ['OKDATA_API_KEY']}"}
RIVALS = {"品牌A": "gh_aaaaaaaaaaaa", "品牌B": "gh_bbbbbbbbbbbb"}
since = (datetime.datetime.now(datetime.timezone.utc) - datetime.timedelta(days=1)).isoformat()
lines = []
for name, gh in RIVALS.items():
body = requests.get(API + "/v1/wechat_mp/accounts/articles/list", headers=H, timeout=60,
params={"id": gh, "view": "full"}).json()
if body["code"] != "ok":
lines.append(f"{name}:没查到({body['code']})")
continue
for a in body["data"]["items"]:
if a["published_at"] < since:
continue
slot = "头条" if a.get("ext", {}).get("position") == 1 else "次条"
reads = a["metrics"]["views"]
lines.append(f"{name}【{slot}】{a['title']},阅读 {reads if reads is not None else '暂无'}\n{a['url']}")
print("\n".join(lines) or "昨天没有新文章。")
看数字时别比歪了
- 阅读数会连涨好几天。发出 6 小时就抓到的文章,和上周发、过了 7 天才抓的文章放在一起比,前者肯定吃亏。要横向比较,就隔一周再拉一次列表,同样的时间跨度对同样的时间跨度。
- 阅读或点赞拿不到时返回 null,
meta.unavailable会写明是哪个字段。把它当成未知,别当成 0。 - 转发数、留言数和在看数拿不到。
- 账号是公开的,文章版权归作者。简报里写摘要、附链接,别整篇转载。
其他做法
自己在微信里关注这几个号也行,不花钱,三四个竞品、有人每天看的话完全够。要看行业榜单、长期的阅读曲线,新榜这类公众号数据平台更合适。如果还想把竞品的抖音、小红书、微博动态放进同一份简报,可以看竞品监测。
更新于