ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

wechat-article-exporter 使用指南:批量导出公众号文章,离线打开也能保住排版

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 等多种格式。支持 Docker 私有化部署与 Cloudflare 部署,导出的 HTML 连图片和样式一起打包,断网打开排版也不变。适合需要长期备份公众号内容的个人、运营和自媒体。

先判断:这个工具适不适合你

  • 适合:需要把某个公众号的历史文章一次性搬回本地、做归档或二次整理的人。搜索公众号后按条件筛选文章,一次导出多篇,导出的文件全部落在你自己的设备上。
  • 适合:对数据去向有顾虑的团队。项目支持 Docker 私有化部署,界面、代理和缓存都在自己可控的环境里运行;仓库声明里也写明,扫码的公众号只用于自己的抓取,不存在拿你的账号给别人的"账号池"。
  • 不适合:想要 RSS 订阅、自动同步新文章、线上版本直接导出 PDF、多账号一键切换这类能力的用户。这些不在开源版的范围内(商业版"公号三刀"提供),选型前要先确认需求边界。
  • 不适合:完全不想配置任何环境、只愿意用公共托管且能接受抓取额度限制的人。默认走公共代理节点,额度有限时下载速度会被明显拖慢。

它能解决哪些实际问题

文章删除后还能不能找回

问题:公众号作者随时可能删文,链接很快失效,再想备份就来不及了。

处理方式:抓取阶段工具会识别已失效的文章,在列表里给这些条目打上明确的删除状态,而不是静默跳过或报错。文章正文、元数据和 HTML 会缓存到浏览器本地的 IndexedDB(缓存表见 store/v2/),已经下载过的内容不会因为后续抓取而丢失;设置页还提供"隐藏已删除文章"开关,方便整理视图。

结果:你能分清哪些文章还能导出、哪些已经找不回。未删除的文章可完整离线保存,已删除的至少保留了"这里曾经有这篇文章"的记录。

导出样式为什么会更稳定

问题:很多导出方案只拿到正文文本,标题层级、图片、引用块一换环境就散架。

处理方式:HTML 导出会把文章的图片、样式文件和正文一起打包。导出的 HTML 文件在本地浏览器直接打开,排版、配色和字体表现与线上一致;其他格式(Markdown、TXT、Excel、DOCX、JSON)走同一套导出管线(格式转换逻辑在 utils/download/Exporter.ts),批量导出时按队列并发处理,避免一篇卡住整个任务。

结果:文件拿给任何人、在任何设备上打开都不会"样式裸奔",也方便直接归档进知识库。

本地保存如何降低隐私风险

问题:把文章先上传到第三方云端再下载回来,等于把内容多暴露一次。

处理方式:数据链路尽量收敛在本地——浏览器里,文章与元数据存在 IndexedDB;私有化部署时,登录态与缓存数据落在你自己服务器的存储目录(KV 目录由NITRO_KV_BASE指定,默认.data/kv)。抓取所用的登录态只服务于你自己的导出任务。

结果:内容从线上到你磁盘的路径更短,中间环节更少,适合对来源和去向敏感的内容团队。

最短路径跑起来

面向第一次接触该项目的用户,本地跑通的完整流程如下。

1. 准备环境。仓库构建要求 Node.js 22 及以上版本(见 package.json),用node -v确认;再准备 yarn 1.22。

2. 拉取代码并安装依赖。以下命令依次执行,第二条激活与项目锁定的 yarn 版本,第三条安装依赖:

git clone https://gitcode.com/gh_mirrors/we/wechat-article-exporter cd wechat-article-exporter corepack enable && corepack prepare yarn@1.22.22 --activate yarn

3. 启动并验证。执行yarn dev启动开发服务器,按终端提示打开本地地址:

yarn dev

4. 第一次验证。打开页面后用微信扫码登录公众号后台,用关键字搜索一个目标公众号,等文章列表加载出来,下载任意一篇并选择 HTML 格式,用浏览器打开导出文件——排版和图片都正常,说明环境没问题。仓库 samples/ 目录里还收录了普通图文、图片分享、文本分享、文章分享等不同类型的样例 HTML,可以对照检查导出效果。

不想本地构建的话,也可以直接docker build(Dockerfile 见仓库根目录)或执行yarn deploy部署到 Cloudflare,流程更省但配置项更多。

关键配置与自检

以下配置都在界面里完成,不需要改代码。

代理节点。位置:设置页"代理节点"。留空时使用仓库内置的公共代理列表(config/ 下维护);需要更稳定的速度时,填入自建节点地址,一行一个,以 http/https 开头,保存后下次下载即生效。验证方法:发起一次小批量下载,观察进度是否持续前进、失败重试是否明显减少。

导出目录名。位置:设置页"导出选项"。默认按${title}(文章标题)命名,支持${account}、${aid}、${author}、${YYYY}、${MM}、${DD}等变量,输入框下方有实时预览,还能限制目录名最大长度(0 为不限制)。想按月份归档可以改成${YYYY}-${MM}_${title},导出一批后检查生成的文件夹是否符合预期。

同步频率。位置:设置页"其他"。数值表示每隔几秒抓取一次文章列表,默认 3 秒。数值越小同步越快,但账号被限制的风险越高;新账号建议保持 3 秒起步,观察几天再决定是否调小。

重试与超时。位置:utils/download/constants.ts。内置下载超时、失败重试次数、代理冷静期等默认值,按机器性能与网络情况调整即可,一般不用动。

进阶用法与常见问题

Docker 私有化部署。基于 node:22 构建,运行时额外安装了 Chromium(PDF 渲染相关),服务默认监听 3000 端口(PORT=3000)。团队共享使用时,按 Dockerfile 构建镜像并映射端口即可,部署后访问地址即服务地址。

二次开发入口。客户端请求集中在 apis/;下载调度与代理管理在 utils/download/;新增导出格式可参考 utils/download/Exporter.ts;对外还有server/api/下的开放接口可供脚本调用。想改行为时,先从这些目录切入比全局搜索更快。

常见问题

  • 场景:启动时提示端口被占用。原因:3000 或开发端口已有服务监听。处理:检查本机端口占用,改用其他可用端口启动。
  • 场景:扫码后一直无法登录。原因:多数是网络或代理链路不通。处理:先确认能正常访问外部网页,再检查代理节点是否可用,必要时更换节点重试。
  • 场景:列表里出现"已删除"标记,担心内容丢失。原因:作者已删文,源头无法恢复。处理:已被缓存过的文章仍可导出;没来得及下载的只能保留失效标记,设置里可勾选"隐藏已删除文章"减少干扰。
  • 场景:下载速度时快时慢、偶尔失败后自动恢复。原因:公共代理额度有限,节点连续失败会进入短暂冷静期。处理:在设置页添加自建代理节点,失败和超时参数按上文在 utils/download/constants.ts 中按需调整。

小结

wechat-article-exporter 的核心价值是把"批量抓取 + 样式保真 + 本地留存"做成一条可自助完成的流程:个人用户扫码即用,HTML 导出能离线完整还原排版;对数据敏感的团队可以 Docker 私有化部署,把链路收在自己手里。建议的路径是:先按"最短路径"在本地跑通一次完整导出,再按需配置代理节点;有长期、高频的抓取需求,再考虑自建节点或私有化部署。

【免费下载链接】wechat-article-exporter一款在线的 微信公众号文章批量下载 工具,支持导出阅读量与评论数据,无需搭建任何环境,可通过 在线网站 使用,支持 docker 私有化部署和 Cloudflare 部署。 支持下载各种文件格式,其中 HTML 格式可100%还原文章排版与样式。项目地址: https://gitcode.com/gh_mirrors/we/wechat-article-exporter

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进