微信公众号文章批量下载工具wechat-article-exporter

简介

什么是 WeChat Article Exporter?

wechat-article-exporter 是一个在线微信公众号文章批量下载工具。它支持批量下载微信公众号文章,并支持导出阅读量、评论等数据。导出的格式多样,包括 HTMLJSONExcelTXTMDDOCX 等,其中 HTML 格式能 100% 还原文章排版与样式。

主要特点

  • 批量下载:用户可以一次性下载多个微信公众号的文章,极大提高了下载的效率。
  • 多格式导出:支持导出为 HTMLJSONExcelTXTMDDOCX 等多种文件格式。
  • 样式还原HTML 格式可 100% 还原原始文章的排版与样式。
  • 数据全面:支持导出文章的阅读量、评论等扩展数据。
  • 功能丰富:提供公众号搜索、文章过滤、合集下载等实用功能。
  • 开放 API:提供 API 接口,方便开发者进行二次开发和集成。
  • 部署灵活:无需搭建环境,直接使用官方在线网站,同时也支持 Docker 进行私有化部署。

应用场景

  • 个人用户备份、归档自己喜欢的公众号文章,防止文章被删除。
  • 内容创作者或市场研究人员进行竞品分析,如分析文章阅读量和评论数据。
  • 将微信文章转换为其他格式,方便在不同的平台(如博客、知识库)进行二次编辑和分享。

wechat-article-exporter 是一款功能强大的工具,满足用户对微信公众账号文章批量下载的需求,并提供多种导出格式和数据统计功能,非常适合希望高效管理和分析微信公众号内容的用户。

准备

本项目的部署需要有一定的动手能力,不明白的地方多看看官方文档

注册一个微信公众号

前往微信公众平台:https://mp.weixin.qq.com/cgi-bin/registermidpage?action=index&lang=zh_CN 进行注册,公众号(原订阅号)和服务号皆可

反向代理

如果使用 http 协议,软件登录公众号的二维码会刷不出来

是否公网地址无所谓,只要 https 协议即可,所以老苏用的是 tailscale + npm

假设实际访问地址为: https://wae.laosu.tech

域名 局域网地址 备注
wae.laosu.tech http://192.168.0.197:3199 wechat-article-exporter 的访问地址

npm 中的设置

SSL 都勾选了

搭建私有代理节点

虽然官方提供了公共代理节点,但是用的人太多,很容易达到容量或者次数的限制,而导致抓取失败。所以虽然这一步不是必须的,但老苏还是建议你最好自己搭一个

官方文档提供了在 Cloudflare WorkersDeno DeployServerless 平台进行部署的方法,这里以 Cloudflare Workers 为例。

简要步骤如下:

  1. 登录到您的 Cloudflare 控制台。
  2. 在菜单中找到并进入 Workers & Pages
  3. 创建一个新的 Worker 服务。
  4. 进入新创建的 Worker,点击“编辑代码”。
  5. 从官方文档:https://docs.wxdown.online/get-started/private-proxy.html 页面复制 Cloudflare Workers 版本的节点代码。
  6. 将代码粘贴到 Cloudflare 的代码编辑器中。
  7. 点击“部署”或“保存并部署”。

部署成功后,您的 Worker URL 就是您的私有代理地址。之后您可以在 wechat-article-exporter 的设置中填入这个地址。

安装

在群晖上以 Docker 方式安装。

如果你熟悉命令行,可能用 docker cli 更快捷

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 新建文件夹 wechat-article 和 子目录
mkdir -p /volume1/docker/wechat-article/data

# 进入 wechat-article 目录
cd /volume1/docker/wechat-article

# 修改目录权限
chmod a+rw data

# 运行容器
docker run -d \
--restart unless-stopped \
--name wechat-article-exporter \
-p 3199:3000 \
-v $(pwd)/data:/app/.data \
ghcr.io/wechat-article/wechat-article-exporter:latest

运行

部署成功后,在浏览器中输入反代后的地址 https://wae.laosu.tech 即可访问并开始使用。

用微信扫码登录后,左下角有公众号的信息

公众号管理 –> 添加

输入公众号名称,选中后添加,然后同步

进入文章下载,抓取之后,就可以导出了

进阶

wechat-article-exporter 所有的数据都保存在浏览器的 indexedDB 中,当运行一段时间后,你会发现数据膨胀的比较大,主要是 html 表中保存了文章的全文

AI 写了一段脚本,可以帮我们清理 html 表,但会继续保留表结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// 清空 html 表,释放空间
(async function() {
try {
const dbName = 'exporter.wxdown.online';
const request = indexedDB.open(dbName);

request.onsuccess = async function(event) {
const db = event.target.result;

// 先统计数据
const tx = db.transaction(['html'], 'readonly');
const store = tx.objectStore('html');
const countRequest = store.count();

countRequest.onsuccess = function() {
const count = countRequest.result;
console.log(`📊 html 表当前有 ${count} 条记录`);

// 清空数据
const clearTx = db.transaction(['html'], 'readwrite');
const clearStore = clearTx.objectStore('html');
const clearRequest = clearStore.clear();

clearRequest.onsuccess = function() {
console.log('✅ html 表已清空!');
console.log('💾 已释放浏览器存储空间');

// 估算释放的空间(每条记录平均约 100KB)
const estimatedMB = (count * 100 / 1024).toFixed(2);
console.log(`📉 预估释放空间: ~${estimatedMB} MB`);
};

clearRequest.onerror = function() {
console.error('❌ 清空失败:', clearRequest.error);
};
};
};

request.onerror = function() {
console.error('❌ 打开数据库失败:', request.error);
};
} catch (error) {
console.error('❌ 执行出错:', error);
}
})();

⚠️ 注意事项,删除后:

  • 文章列表仍正常显示
  • 无法离线查看 HTML 内容
  • 需要重新下载才能导出 HTML 格式

参考文档

wechat-article/wechat-article-exporter: 一个在线的微信公众号文章下载工具,支持下载阅读量与评论数据,支持私有化部署
地址:https://github.com/wechat-article/wechat-article-exporter

公众号文章下载
地址:https://docs.wxdown.online/