成都工贸职业技术学院公众号文章监控
概述
自动化采集成都工贸职业技术学院及其下属二级学院、部门公众号在指定日期范围内的文章发布情况,生成可视化统计图表与逐篇明细表。支持阅读量追踪——通过 Fiddler 抓包获取微信认证 token,调用微信内部 API 获取真实阅读量、点赞数、转发数等数据。
数据源与账号映射
完整的公众号 → 网站/搜索源映射见 references/accounts.md。核心数据源分两类:
- 网站同步型(主号 + 二级学院):文章基本同步到对应网站,用 WebFetch 抓取新闻列表
- 搜狗补充型(团委、学生事务中心等):网站无同步或陈旧,用搜狗微信搜索 + 网站交叉推断
工作流程
第一步:解析日期范围
从用户输入中提取目标日期范围。常见表达:
- "5月" → 2026-05-01 至 2026-05-31
- "昨天" → 当前日期 - 1 天
- "上周" → 上周一至周日
- "5月1日到5月15日" → 直接解析
第二步:并行采集数据(Tier 1 — 网站同步型)
对以下数据源同时发起 WebFetch,抓取新闻列表:
主号:
https://www.cdgmxy.edu.cn/html/gmxy/xwzx_xyyw/(成都工贸职业技术学院主号)https://www.cdsjs.com/html/cdsjs/xwzx_xyyw/(成都市技师学院主号)
二级学院(有网站的 7 个):
3. https://jxx.cdgmxy.edu.cn/ (机械工程学院 — 机械学生之家)
4. https://dqx.cdgmxy.edu.cn/ (电气工程学院 — 五彩电气)
5. https://dzx.cdgmxy.edu.cn (信息工程学院 — 信芯之火)
6. https://qcx.cdgmxy.edu.cn/ (汽车工程学院 — 工贸汽车人)
7. https://jmx.cdgmxy.edu.cn/ (财贸管理学院 — 魅力财贸)
8. https://gdx.cdgmxy.edu.cn/ (轨道交通学院 — 成都工贸轨道交通)
9. https://tdxx.cdgmxy.edu.cn/ (铁道工程学院 — 成工贸马小匠)
部门网站:
10. https://xsc.cdgmxy.edu.cn/ (党委学工部 — 工贸学工在线数据源)
提示词策略: WebFetch 时使用类似 "列出这个页面上 YYYY年MM月的所有新闻标题和日期,全部列出来,不要遗漏" 的 prompt。
翻页策略: 多数网站新闻列表有分页(index_2.html, index_3.html ...),首页只能看到最新几条。如果用户要求的日期范围覆盖较早时间,需要继续翻页抓取。翻到新闻日期早于用户要求范围时停止。
Note: 技师学院(cdsjs.com)和工贸职院(cdgmxy.edu.cn)的新闻高度重叠(一套班子两块牌子),去重时注意:相同标题但日期可能略有偏差(通常差1-2天)。
第三步:补充采集(Tier 2 — 搜狗微信搜索)
对于以下无网站同步的公众号,使用搜狗微信文章搜索:
工贸学工在线:
WebFetch https://weixin.sogou.com/weixin?type=2&query=工贸学工在线&ie=utf8
成都工贸团委:
WebFetch https://weixin.sogou.com/weixin?type=2&query=成都工贸团委&ie=utf8
成都技师团委:
WebFetch https://weixin.sogou.com/weixin?type=2&query=成都技师团委&ie=utf8
成都工贸学生事务中心:
WebFetch https://weixin.sogou.com/weixin?type=2&query=成都工贸学生事务中心&ie=utf8
工贸国际:
WebFetch https://weixin.sogou.com/weixin?type=2&query=工贸国际&ie=utf8
搜狗限制说明:
- 搜狗不显示精确发布日期,需要通过标题中的日期线索(如"5月25日"、"五一"、"五四"等)推断
- 翻页:URL 末尾加
&page=2~&page=10 - 如果某个公众号搜狗完全无索引,如实标注"无数据"
补充搜索策略: 对于搜狗索引不足的账号,可以改用内容关键词搜索(如 "成都工贸 五四表彰 2026"、"成都工贸 心理情景剧")从侧面挖掘文章。同时搜狗搜索结果中可能包含微信文章直接链接(mp.weixin.qq.com/s?...),这些链接可用于后续阅读量抓取。
第四步:数据清洗与去重
- 提取字段: 从每条记录中提取 标题、日期、来源公众号、URL(如有)
- 日期解析: 将各种日期格式统一为 YYYY-MM-DD
- 主号去重: cdgmxy.edu.cn 和 cdsjs.com 的新闻中,标题相同或高度相似(同一事件不同标题)的记录只保留一条,标注为两个主号共用。保留较早日期。
- 账号归并: 将各学院网站抓到的文章归入对应公众号名称
- 跨来源去重: 同一篇文章可能同时出现在学院网站和学校主站,按以下优先级保留:学院网站 > 学校主站(更精确反映该学院的发布行为)
- 收集微信文章URL: 将搜狗搜索结果中获得的 mp.weixin.qq.com 链接收集起来,供阅读量抓取使用
第五步:阅读量抓取(可选,用户要求时执行)
当用户要求查看阅读量时,使用 Fiddler token + 微信内部 API 方式获取真实阅读量。
核心原理
微信阅读量数据只在微信客户端环境下返回,普通浏览器请求拿不到。需要通过以下流程:
- 用 Fiddler 抓包微信PC客户端的请求,提取认证 token(key/uin/pass_ticket/__biz)
- 携带 token 调用微信内部 API
https://mp.weixin.qq.com/mp/getappmsgext获取阅读量
前置步骤(获取 token)
必须由用户手动完成以下步骤:
- 在微信PC客户端打开目标公众号主页链接
- 主页链接获取方式:运行
python fetch_reads.py功能1,输入任意一篇文章链接即可生成 - 或直接将公众号主页链接发送到"文件传输助手"中打开
- 主页链接获取方式:运行
- 打开 Fiddler Classic v5.0,开启抓包
- 在微信PC客户端中打开公众号主页,Fiddler 会捕获请求
- 在 Fiddler 中找到主机为
mp.weixin.qq.com、URL 含/mp/profile_ext的请求 - 选中该请求,按 Ctrl+U 复制完整 URL
- 将该 URL 交给 AI 作为
--token-url参数
⚠️ token 有效期有限(通常几小时),过期需重新抓包。
脚本路径
scripts/fetch_reads.py
执行方式
API 模式(推荐,可获取真实阅读量):
# 将文章URL列表写入临时文件
# 然后用 token 模式批量抓取
C:\Users\aokec\.workbuddy\binaries\python\versions\3.13.12\python.exe \
C:\Users\aokec\.workbuddy\skills\cdgm-wechat-monitor\scripts\fetch_reads.py \
--token-url "https://mp.weixin.qq.com/mp/profile_ext?__biz=xxx&uin=xxx&key=xxx&pass_ticket=xxx" \
--article-urls /tmp/wx_urls.txt \
--output json \
--delay 5.0
浏览器模式(回退方案,可能拿不到真实阅读量):
C:\Users\aokec\.workbuddy\binaries\python\versions\3.13.12\python.exe \
C:\Users\aokec\.workbuddy\skills\cdgm-wechat-monitor\scripts\fetch_reads.py \
"https://mp.weixin.qq.com/s/xxx" \
--output json \
--timeout 20
URL 来源
- 搜狗微信搜索结果中的 mp.weixin.qq.com 链接(最直接)
- 学校官网新闻页面中可能嵌入的微信文章链接
- 用户手动提供的微信文章链接
阅读量注意事项
- API 模式是唯一可靠获取真实阅读量的方式,但需要用户通过 Fiddler 抓包提供 token
- 浏览器模式通常无法获取真实阅读量(微信保护机制),会返回 "N/A (浏览器环境无法获取)"
- 每篇文章间延迟 5-8 秒(含随机抖动),避免被微信封禁
- 大批量抓取(>20 篇)建议分批执行
- 返回错误码 200013 表示 token 过期,200003 表示频率限制
第六步:统计汇总
统计每个公众号在指定日期范围内的发文章数,生成汇总表。如包含阅读量数据,同时汇总阅读量统计(总阅读量、篇均阅读量、最高阅读量文章)。
第七步:生成可视化图表
使用 show_widget 工具生成图表,图表规范:
- 遵循 read_me 返回的 Visualizer 设计系统
- 颜色使用 flat 色板
图表1:发文章数柱状图
- X轴为公众号名称,Y轴为发文章数
- 条形图:每个公众号一个柱子,柱子上方标注篇数
- 高度 =
(公众号数量 × 40) + 80像素
图表2:阅读量柱状图(有阅读量数据时)
- X轴为公众号名称,Y轴为总阅读量
- 条形图:每个公众号一个柱子,柱子上方标注阅读量
- 高度 =
(公众号数量 × 40) + 80像素
第八步:生成明细表
用 Markdown 表格列出每个公众号的所有文章:
不含阅读量:
## 【公众号名称】— X篇
| 日期 | 标题 |
|:---:|---|
| MM-DD | 文章标题1 |
| MM-DD | 文章标题2 |
含阅读量:
## 【公众号名称】— X篇
| 日期 | 标题 | 阅读 | 点赞 | 在看 |
|:---:|---|:---:|:---:|:---:|
| MM-DD | 文章标题1 | 1234 | 56 | 12 |
| MM-DD | 文章标题2 | 567 | 23 | 5 |
第九步:输出总结
输出整体统计摘要:
- 总发文章数
- 发文章最多的账号及篇数
- 发文章最少的账号及篇数
- 完全无数据的账号列表
- 数据置信度说明(哪些是网站同步确认的高置信度,哪些是搜狗推断的中低置信度)
- 如有阅读量:阅读量TOP3文章、篇均阅读量最高的公众号
重要约束
- 不虚构数据。 如果某个账号确实查不到,如实标注"无数据"或"未找到",并说明原因
- 标注置信度。 网站同步的数据标注为"高",搜狗推断的标注为"中"或"低"
- 注明重叠。 两个主号的内容重叠严重,必须在报告中说明
- 分批并行。 数据采集阶段尽量并行发起 WebFetch/WebSearch,减少总耗时
- 搜狗局限性说明。 最终报告中必须注明:微信公众号文章因微信封闭生态限制,通过搜狗索引只能获取部分数据,完整数据需在微信客户端查看
- 阅读量获取需要用户配合。 真实阅读量需要 Fiddler 抓包 token,AI 无法自动获取 token。浏览器模式无法获取真实阅读量,如实标注
- 反爬节制。 阅读量抓取每篇文章间至少延迟5秒(含随机抖动),大批量分批执行
阅读量获取:用户操作指南
当用户要求查看阅读量时,AI 应:
- 先告知用户:获取真实阅读量需要你配合完成 Fiddler 抓包步骤
- 提供操作指引:
- Step 1: 安装 Fiddler Classic(如未安装)
- Step 2: 在微信PC客户端打开目标公众号主页
- Step 3: Fiddler 抓包找到
/mp/profile_ext请求,Ctrl+U 复制 URL - Step 4: 将复制的 URL 提供给 AI
- 收到 token URL 后,AI 收集所有文章链接,写入临时文件,执行
fetch_reads.py --token-url - 解析结果,生成含阅读量的明细表和可视化图表
如果用户不愿/无法完成 Fiddler 抓包:
- 如实告知浏览器模式无法获取真实阅读量
- 建议使用新榜(newrank.cn)或西瓜数据等第三方平台查询
- 仍可提供文章列表和发布统计,只是不包含阅读量
微信扫一扫