数据分析师如何把微信公众号数据接入 Google Sheets 搭建自动化监测看板
不少团队做行业监测时,最终交付物不是一份周报,而是一张随时能打开查看的表格看板——里面记录着每个监测账号最近发了什么、发文频率有没有异常、哪些账号已经好几天没更新。这类看板的价值在于"随时可查",而不是"按周汇报",业务同事想看的时候直接打开表格就行,不需要等分析师整理完发出来。
问题是这张表格的数据大多还是人工登记的。分析师需要每天或每隔几天打开监测清单里的公众号,一个个查看有没有新文章,把标题、发布时间抄进 Google Sheets 对应的行里,再手动计算这个账号最近多久没更新了。账号数量在十几个以内还能勉强维持,一旦扩展到几十个,人工登记的频率就会不知不觉往后拖——今天忙就明天补,明天忙就周末补,看板上"最新更新"那一列的准确性也随之下降,业务同事逐渐不再信任这张表格,看板慢慢变成摆设。
更麻烦的是这类看板通常不是一次性任务。监测清单会随时间调整,新增账号、移除不再相关的账号,人工维护的表格结构也要跟着变,列错位、公式引用错误的情况并不少见。分析师投入的时间本应用在判断"哪个账号的更新值得关注",结果大量精力耗在了最基础的"抄数据、对格式"上。
问题的核心:看板缺一个可编程的数据源
Google Sheets 本身有很成熟的自动化能力——Apps Script 可以定时跑脚本、写公式、发通知,这些都不是问题。真正卡住自动化链路的是最前面一环:微信公众号没有官方的订阅或抓取接口,公众号文章无法被脚本直接拉取。看板工具再强大,只要"这个账号今天有没有发新文章"这一步仍然依赖人工打开公众号查看,后面的自动化写入、指标计算、可视化都无从谈起,看板只能停留在人工登记的半自动状态。
解决路径:把公众号更新转成可以定时拉取的结构化数据
Mp2RSS 把微信公众号文章转成结构化数据:贴入目标公众号任意一篇文章的链接(形如 https://mp.weixin.qq.com/s?...),即可订阅整个账号,此后该账号发布的每一篇新文章都会被持续收录,从发文到数据可见平均 2–3 小时。注册不需要微信账号,用 GitHub 或 Google 账号登录即可完成。
一旦更新变成结构化数据,看板要做的事就拆成了三个独立环节:定时拉取各账号的增量文章,基于拉取到的数据计算发文频率、最新更新时间等指标,再把计算结果写进 Google Sheets 对应的单元格。三步都可以用脚本完成,不再需要人工登记任何一行。
落地步骤
第一步:批量订阅要纳入看板的公众号
先梳理监测清单,把要接入看板的公众号逐个订阅。订阅方式是贴入该账号任意一篇历史文章链接,具体操作参考订阅管理指引。账号数量多时,用 CLI 循环批量订阅比逐个在网页操作效率高得多:
mp2rss auth login # 首次使用先登录
mp2rss mp subscribe https://mp.weixin.qq.com/s/xxxxxxxxxx
mp2rss mp subscribe https://mp.weixin.qq.com/s/yyyyyyyyyy需要注意,首次订阅不会回溯该账号此前发布的历史文章,只从订阅时刻起持续收录新内容。这意味着看板里"发文频率"一类指标需要一段积累期才会准确,账号越早接入,看板数据越完整。完整的鉴权和调用方式见快速开始。
订阅完成后,用 CLI 确认清单是否齐全,同时拿到后续拉取要用的账号 ID:
mp2rss mp list -o json | jq -r '.items[] | "\(.mpId)\t\(.mpName)"'第二步:定时拉取各账号的增量文章数据
看板要"实时",核心是拉取任务按固定周期跑,而不是等分析师想起来才手动执行一次。用 cron 或任意调度平台,按小时或按天触发一次拉取,通过 Open API 按订阅账号逐个查询文章列表:
curl "https://mp2rss.bugcode.dev/open-api/subscriptions/{mpId}/articles?pageSize=20" \
-H "Authorization: Bearer {feed_key}"返回数据按 publishedAt 倒序排列,每篇文章带 title、publishedAt、originalUrl 等字段。也可以先用一次订阅列表接口拿到全部账号及各自最新收录时间,避免逐个账号单独判断是否有更新:
curl "https://mp2rss.bugcode.dev/open-api/subscriptions?sourceType=mp&pageSize=50" \
-H "Authorization: Bearer {feed_key}"响应中 mpLastArticleAt 字段直接给出每个账号最新一篇文章的收录时间,看板里"最近更新"这一指标不需要额外遍历文章列表,直接用这个字段就能算出距今多少小时。
第三步:计算看板指标并写入 Google Sheets
拿到结构化数据后,用脚本计算看板需要的指标,再通过 Google Sheets API(如 Python 的 gspread 库)写入对应单元格。一个基础示例:
import gspread
import requests
from datetime import datetime, timezone
FEED_KEY = "your_feed_key"
HEADERS = {"Authorization": f"Bearer {FEED_KEY}"}
resp = requests.get(
"https://mp2rss.bugcode.dev/open-api/subscriptions",
params={"sourceType": "mp", "pageSize": 50},
headers=HEADERS,
)
items = resp.json()["items"]
gc = gspread.service_account(filename="service_account.json")
sheet = gc.open("公众号监测看板").sheet1
rows = []
for mp in items:
last_ms = mp.get("mpLastArticleAt")
if last_ms:
hours_since = (datetime.now(timezone.utc).timestamp() * 1000 - last_ms) / 3_600_000
last_str = f"{hours_since:.1f} 小时前"
else:
last_str = "暂无数据"
rows.append([mp["mpName"], last_str, mp["mpId"]])
sheet.update("A2", rows)脚本按固定周期跑一次(比如每小时一次),Google Sheets 里的"最近更新"列就会持续刷新,业务同事打开表格看到的永远是最新状态,不需要等分析师登记。如果需要更细的指标,比如"过去 7 天发文数",可以在这一步额外拉取每个账号的文章列表按 publishedAt 过滤计数,再写入对应的列。
看板搭好之后,新增或移除监测账号只需要调整订阅清单,脚本本身的逻辑不用改,指标计算和写入环节会自动覆盖新的账号集合。
效果对比
| 维度 | 人工登记看板 | 结构化数据 + 自动写入 |
|---|---|---|
| 更新频率 | 依赖分析师记得登记,容易滞后 | 定时任务固定周期刷新 |
| 覆盖账号数 | 受精力限制,扩展成本高 | 可批量订阅,扩展只需加一行订阅 |
| 指标准确性 | 手动计算容易出错或遗漏 | 脚本统一计算,逻辑一致 |
| 分析师精力分配 | 大量时间用于抄数据、核对 | 集中在解读异常、调整监测清单 |
常见问题
看板数据多久刷新一次? 取决于定时任务设置的拉取周期,可以设为每小时或每天。数据本身从公众号发文到 Mp2RSS 可查询平均需要 2–3 小时,定时任务的拉取周期建议不短于这个时效窗口。
新增一个监测账号后,看板会自动补上历史数据吗? 不会。首次订阅只从订阅时刻起持续收录新发布的文章,不回溯历史内容,因此新账号刚接入时"发文频率"一类指标需要一段时间积累才会准确,建议尽早把要长期监测的账号完成订阅。
除了 Google Sheets,这套数据能接入其他 BI 工具吗? 可以。Open API 返回的是标准 JSON 结构化数据,写入 Google Sheets 只是其中一种落地方式,同样的拉取逻辑可以改写成写入其他支持 API 或脚本导入的看板工具。
看板里能同时监测微信公众号和其他平台的账号吗? 支持同时订阅 X(Twitter)账号,同样以结构化数据交付,可以和公众号数据合并进同一套指标计算与看板写入流程。
一个账号最多能同时监测多少个公众号? 按套餐档位区分:49 元/月支持 50 个订阅、99 元/月支持 100 个、399 元/月支持 400 个,各档位功能一致,仅订阅数量上限不同,详见会员与计费。
想了解更完整的接口与命令行能力,可以从快速开始与命令参考继续查看;也可以直接访问 Mp2RSS 产品主站,贴入一篇文章链接试订一个公众号。
