公众号多图转PDF
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_cce12b87/wechat-to-pdf。
技能介绍
问题:微信长图内容难以归档
微信公众号文章的正文常是一整张长图或书页扫描图。想把它们存成 PDF 会撞上两个坑:一是微信反爬——用普通浏览器 UA 请求会被 verify.js 拦截,返回 17KB 验证页而非正文;二是提取文字不难,但保留图片排版、按章节目录批量处理很难做好。本技能只做一件事:把正文图片按序抓下来拼成 PDF,不提取文字。
工作原理
核心抓取策略:UA 必须用微信内置浏览器(MicroMessenger)。图片取 js_content 容器内 <img> 的 data-src(不是 src),域名严格匹配 mmbiz.qpic.cn 全域名,否则会混入 res.wx.qq.com 的 JS 引用导致下载失败。
两种使用模式:
- 单篇:给一个
mp.weixin.qq.com/s/链接,抓图合成 PDF。文件名优先用--name,其次文章标题(自动清洗“(章节目录索引)”这类后缀),最后用链接标识兜底。 - 批量:给一个目录索引页,解析全部章节链接并按
(mid, idx, sn)去重;--scope可按“第一章”等关键词过滤;自动推导两级文件夹,文件按目录条目标题命名,完成后生成_report.txt核对报告。
针对实测踩坑的兜底逻辑:
- 正文由 JS 动态渲染、无静态
js_content容器时,回退从脚本数据里的cdn_url字段提取图片,并排除封面与头像 - 广告、小程序卡片、音视频组件(class 含
mp-common、qqmusic等特征)整块切除 webp图片先经 Pillow 转png再交给img2pdf- 限速:图片间
sleep 0.4、文章间sleep 1.5,避免频控封 IP
自检机制:抓取失败按 5 套 UA/请求头策略池自动换组合重试并诊断原因(反爬、链接失效、网络错误、内容异常);每篇合成后用 pypdf 校验可打开且页数 > 0;批量跑完对失败项自动重试一轮;--skip-existing 支持断点续传。
适用边界
- 只转图片,不提取文字:图文混排文章的纯文字段落不会进 PDF,适合书页扫描、长图类内容
- 只处理微信公众号文章链接,触发基于“公众号图片内容 → PDF”的能力意图
- 小于 5KB 或宽度小于 200px 的无关小图会被过滤,正常书页不会误杀
- 链接须含
__biz/mid/idx/sn参数才能定位文章
使用场景
- 自媒体运营要把公众号上的书页长图文章保存为PDF存档
- 内容团队要从目录页批量抓取全部章节图片合成PDF
- 移动开发者需要绕过微信内置浏览器UA验证抓取正文图片
- 数据标注人员要把公众号纯图片内容转成PDF方便标注查阅
适合人员
- 内容归档运营:定期保存公众号图文成PDF入库
- 微信工具开发者:需要解决反爬UA和图片域名白名单问题
- 自媒体作者:想把长图类文章统一转PDF便于分发
- 数据标注工程师:处理图片型内容需要PDF格式的标注材料