wechat-article-exporter 实用指南:如何三步批量下载微信公众号文章
wechat-article-exporter 实用指南:如何三步批量下载微信公众号文章
【免费下载链接】wechat-article-exporter一款在线的 微信公众号文章批量下载 工具,支持导出阅读量与评论数据,无需搭建任何环境,可通过 在线网站 使用,支持 docker 私有化部署和 Cloudflare 部署。 支持下载各种文件格式,其中 HTML 格式可100%还原文章排版与样式。项目地址: https://gitcode.com/gh_mirrors/we/wechat-article-exporter
wechat-article-exporter 是一款开源的微信公众号文章批量下载工具:在浏览器扫码登录公众号后台后,即可按公众号拉取全部历史文章,导出 HTML/Markdown/Excel/JSON/TXT/DOCX 六种格式,其中 HTML 导出可 100% 还原文章排版与样式,还能附带导出阅读量与评论数据。它无需搭建复杂环境,既可以直接跑在本地,也支持 Docker 私有化部署。
它解决什么问题:不用再手动截图存文章
手动收藏一篇篇公众号文章太慢,而这个工具把"整号搬运"变成了批量操作:
- 按关键字搜索公众号,或直接用文章链接反查公众号
- 拉取指定公众号的全部历史文章,支持普通图文、图片分享、视频分享、文本分享等多种类型
- 按作者、标题、发布时间、原创标识、所属合集过滤,也支持合集整体下载
- 导出 html/json/excel/txt/md/docx 格式;HTML 会打包图片与样式文件,打开即还原原样
- 阅读量、转发量、评论与评论回复可一并导出(需要额外配置抓包凭证)
- 开放 API 接口,方便二次集成
它的工作原理写在 README.md 里:借用公众号后台"搜索其他公众号文章"的能力来实现抓取。登录走的是你自己的公众号扫码,README.md 中也声明了不会把你的账号用于公共爬取。
目录速览:看懂结构再动手
这是一个 Nuxt 3(关闭 SSR 的纯客户端)+ Nitro 服务端的项目,前后端都在仓库里:
- pages/ 与 components/:界面层,
pages/dashboard/下是文章、公众号、设置、API 等页面 - apis/:客户端 API 函数,负责调用 Nitro 代理端点
- server/:Nitro 服务端。server/api/web/mp/ 代理微信公众平台请求,核心转发逻辑在 server/utils/proxy-request.ts;server/api/public/v1/ 是对外开放的 API
- store/v2/:基于 Dexie 的 IndexedDB 缓存,存文章、评论、HTML 等内容,减少重复请求
- utils/download/:下载与导出核心,
Downloader.ts管理并发,Exporter.ts负责格式转换 - config/:应用常量、公共代理与开放 API 定义
- samples/:各种真实文章类型的样例 HTML,包括"作者已删除""内容违规"等边界情况的存档,排查渲染问题时很有用
三步跑起来:安装、启动、打开浏览器
先确认本机Node >= 22(package.json 中的engines要求),然后:
- 克隆仓库:
git clone https://gitcode.com/gh_mirrors/we/wechat-article-exporter- 用 corepack 激活 yarn 1.22 并安装依赖:
corepack enable corepack prepare yarn@1.22.22 --activate yarn- 启动开发服务器:
yarn dev默认监听http://localhost:3000,打开后扫码登录即可开始搜索公众号、拉取文章列表。
💡 首次安装依赖需要几分钟,属正常现象;如果报错port 3000 is already in use,改用yarn dev --port 8080换端口启动即可。
不想装 Node?用 Docker 一条命令
仓库自带多阶段构建的 Dockerfile:node:22 编译层 + 运行层,预装了 Chromium 和中文字体(用于 PDF 生成),暴露 3000 端口。本地构建镜像:
yarn docker:build构建完成后把容器 3000 端口映射到本机即可,KV 数据会落在容器内的.data/kv目录,挂载数据卷可持久化 cookie 等状态。
跑起来之后调什么:常用配置项
设置页里的三块内容
打开"设置"页(pages/dashboard/settings.vue)能看到三张卡片,对应日常最常用的调整:
- 代理节点:留空则使用内置公共代理;私有部署时在此填自己的代理,一行一个,必须是
http/https开头的绝对地址(使用时会自动拼接?url=参数)。私有代理可绕开"抢公共代理额度"的问题 - 导出选项:目录名支持
${account}、${title}、${YYYY}等变量模板(如${account}_${title}),还能控制 Excel/JSON/HTML 导出时是否包含正文与留言数据 - 其他:隐藏已删除文章、强制重新下载正文、公众号同步频率(建议不小于 3 秒,过小容易触发风控)与同步时间范围
环境变量
把.env.example复制为.env,常用变量如下:
cp .env.example .envNITRO_KV_DRIVER/NITRO_KV_BASE:本地与 Docker 用fs+.data/kv;部署 Cloudflare Workers 时改为cloudflare-kv-bindingNUXT_DEBUG_MP_REQUEST:仅开发环境生效,打印微信代理请求便于排查DEBUG_KEY:调试接口的认证密钥NUXT_AGGRID_LICENSE:AG Grid 企业版授权
源码里的可调参数
config/index.ts 集中了几个行为参数:文章列表每页大小(最大 20)、抓包凭证服务地址CREDENTIAL_API_HOST(默认http://127.0.0.1:8088)、请求用的USER_AGENT等。公共代理节点清单在 config/proxy.txt 与 config/public-proxy.ts,开放 API 的参数与返回示例定义在 config/public-apis.ts。
出问题了怎么办:四种常见情况
情况一:文章显示"已删除"
作者删文后,抓取时会得到类似下图的占位结果,这类文章在 samples/作者已删除/ 里有完整存档样例:
这不是工具故障。如果列表里这类条目太多,可在设置页勾选"隐藏已删除文章"直接过滤。
情况二:想要阅读量、评论数据但抓不到
这部分数据依赖本地抓包程序提供的 credentials(抓包插件脚本在 public/plugins/credential.py),程序会默认向http://127.0.0.1:8088请求凭证,凭证有效期约 25 分钟(见CREDENTIAL_LIVE_MINUTES)。如果没配置抓包程序,导出文件里就不会有阅读量与留言——这是配置问题,不是 Bug。
情况三:下载慢、频繁失败
优先检查代理。公共代理节点每天额度有限,私有部署建议在设置页填入自己的代理;同时把公众号同步频率调大一点(不低于 3 秒),降低触发风控的概率。
Q:导出的 HTML 打开后样式丢了?
A:HTML 导出会把图片和样式一并打包,单文件直接打开可能引用不到资源,用"解压后打开"或整包使用的方式查看即可;格式转换逻辑在 utils/download/Exporter.ts,可定位具体问题。
Q:能部署到 Cloudflare 吗?
A:可以。仓库根目录的 wrangler.toml 已配好 Workers + KV + 限流绑定,执行yarn deploy构建并发布,yarn preview可在本地用 miniflare 预览。私有部署默认无限速,无需配置会员相关开关。
以上流程走通后,从"扫码登录"到"整号文章落盘"通常只需几分钟。后续想深入某块(比如自建代理节点、扩展导出格式),可以顺着文中给出的目录链接从源码读起,CLAUDE.md 里也有一份项目架构速查。
【免费下载链接】wechat-article-exporter一款在线的 微信公众号文章批量下载 工具,支持导出阅读量与评论数据,无需搭建任何环境,可通过 在线网站 使用,支持 docker 私有化部署和 Cloudflare 部署。 支持下载各种文件格式,其中 HTML 格式可100%还原文章排版与样式。项目地址: https://gitcode.com/gh_mirrors/we/wechat-article-exporter
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考