问答

怎么监控竞品公众号每天发了什么?

简短回答

每个竞品公众号每天用历史文章接口查一次(每次 $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。
  • 转发数、留言数和在看数拿不到。
  • 账号是公开的,文章版权归作者。简报里写摘要、附链接,别整篇转载。

其他做法

自己在微信里关注这几个号也行,不花钱,三四个竞品、有人每天看的话完全够。要看行业榜单、长期的阅读曲线,新榜这类公众号数据平台更合适。如果还想把竞品的抖音、小红书、微博动态放进同一份简报,可以看竞品监测。

更新于