ByteNoteByteNote

字节笔记本

2026年6月12日

opencli-weixin-album:一键下载微信公众号合集全部文章

API中转
¥120

opencli-weixin-album 是一个 opencli 插件,专门用来批量下载微信公众号合集(Album)里的所有文章,连图片一起下载到本地,并生成带本地路径的 Markdown 索引,省去逐篇手动保存的麻烦。

项目简介

opencli-weixin-album 由开发者 xzx-rk 开源维护,使用 TypeScript 编写(占比 54.1%),配合 JavaScript(45.9%),目前在 GitHub 上有 196 stars、19 forks,采用 MIT 协议。

它的核心场景很明确:在微信里打开一个公众号合集页面,复制链接交给这个插件,它会先调用微信公开的合集 API 拿到全部文章链接,然后逐篇通过 opencli 的浏览器能力下载正文和图片,最后生成一份 Markdown 索引文件,把每篇文章的标题、原文链接、本地路径和发布时间整理在一张表里。

核心特性

  • 自动获取合集全部文章链接:直接调用微信公开 API,不需要登录或 Cookie
  • 批量下载正文与图片:复用 opencli weixin download 的能力,逐篇渲染页面并保存图片到本地 images/ 目录
  • 增量下载:自动检测已有索引文件,跳过已下载的文章,只补全缺失的部分,下载中断后可以直接续传
  • 自动生成 Markdown 索引:下载完成后回写每篇文章的本地路径,索引文件本身既是导航也是下载进度记录
  • 限流保护:每次翻页或下载之间随机暂停 1-3 秒,避免触发微信的访问限制

技术栈

  • TypeScript:插件主体逻辑
  • JavaScript:预编译产物,安装时直接可用,免去本地编译步骤
  • opencli:插件运行的宿主 CLI 框架,提供浏览器调用、插件管理等基础能力
  • opencli Browser Bridge:Chrome 扩展,让 opencli 能够通过浏览器访问微信页面并提取内容

安装指南

前置要求

  • Node.js >= 18
  • opencli >= 1.3.3
  • Chrome 浏览器

先全局安装 opencli:

bash
npm install -g @jackwener/opencli

安装插件

bash
opencli plugin install github:SlowGrowth1314/opencli-weixin-album

安装后插件位于 ~/.opencli/plugins/opencli-weixin-album/,过程中会自动完成依赖安装和 TypeScript 编译,仓库里也直接附带了预编译的 JS,安装速度更快。

配置 Browser Bridge 扩展

下载文章正文需要 opencli 通过浏览器访问微信页面,必须装好这个扩展:

  1. 打开 Chrome,访问 chrome://extensions/
  2. 打开右上角 Developer mode
  3. 点击 Load unpacked,选择 {node_modules}/@jackwener/opencli/extension/ 目录
  4. 确认扩展显示为 OpenCLI v1.2.6 且已启用

装好后运行:

bash
opencli doctor

正常情况下会看到:

text
[OK] Daemon: running on port 19825
[OK] Extension: connected
[OK] Connectivity: connected in 0.3s

如果提示 [MISSING] Extension: not connected,检查扩展是否启用,或刷新扩展页面、重启 Chrome 后再试。

快速开始

  1. 在微信里打开目标公众号的合集页面,复制链接,例如:
https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzI0NTU3NTc5Ng==&action=getalbum&album_id=4482506796406177793&scene=21#wechat_redirect
  1. 执行下载命令(URL 必须用引号包裹,否则 & 会被 shell 解析掉):
bash
opencli weixin download-album \
  --url "https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzI0NTU3NTc5Ng==&action=getalbum&album_id=4482506796406177793&scene=21#wechat_redirect"
  1. 下载完成后,进入默认输出目录 ./weixin-albums/<合集名称>/ 查看索引文件和各篇文章。

运行过程大致是这样:

text
📦 获取合集: 4482506796406177793
📖 合集名称: 智能体设计模式
📥 4 篇 (cursor=2247484319)
✅ 共收集 4 篇文章链接
📄 已生成索引: ./weixin-albums/智能体设计模式/智能体设计模式.md

[1/4] 📥 下载: 智能体设计模式 - 第一章: 让 AI 不再「一口吃成胖子」
✅ [1/4] 下载成功,已更新本地路径: ...
...

✅ 合集下载完成: 4/4 篇

使用示例

场景 1:指定输出目录

不想用默认的 ./weixin-albums,可以自己指定:

bash
opencli weixin download-album \
  --url "合集URL" \
  --output ./my-articles

场景 2:调整每页获取数量

微信 API 单页最多返回 20 篇,可以按需调小:

bash
opencli weixin download-album \
  --url "合集URL" \
  --batch-size 10

场景 3:断点续传

下载中途网络中断或被限流,重新执行同一条命令,或者直接把索引文件路径传给 --url,插件会读取索引、统计已下载和待下载数量,只补全剩下的部分:

bash
opencli weixin download-album --url "./weixin-albums/智能体设计模式/智能体设计模式.md"

输出会显示类似:

text
📋 增量下载模式: ./weixin-albums/智能体设计模式/智能体设计模式.md
📖 合集名称: 智能体设计模式
📊 已下载: 15 篇,待下载: 7 篇
...
✅ 合集下载完成: 22/22 篇

两种触发增量下载的方式是等价的:传入索引文件路径,或者传入合集 URL(此时插件会检测输出目录下是否已有索引文件并自动跳过已下载内容)。

API 参考

opencli weixin download-album 命令的参数说明:

参数必填默认值说明
--url-微信合集页面 URL 或已有索引文件路径,URL 必须用引号包裹
--output./weixin-albums下载输出目录
--batch-size20每次请求获取的文章数,上限为 20(微信 API 限制)

输出目录结构

text
weixin-albums/
└── 合集名称/
    ├── 合集名称.md          # 索引文件,含标题/URL/本地路径/发布时间
    ├── 文章1标题.../
    │   ├── 文章1标题....md
    │   └── images/
    │       ├── img_001.png
    │       └── ...
    └── 文章2标题.../
        ├── 文章2标题....md
        └── images/

技术细节

  • 翻页机制:微信合集 API 用 cursor-based 分页,下一页请求依赖上一页最后一篇文章的 msgiditemidx
  • 文章列表无需认证:合集的文章列表是公开数据,不需要 Cookie 或登录
  • 文章下载依赖浏览器:正文和图片需要通过 opencli weixin download 调用浏览器渲染页面获取

注意事项

  • 安装后如果遇到 permission denied: opencli,是 main.js 缺少执行权限,给 opencli(或其 symlink 指向的文件)加上 chmod +x
  • 命令里的合集 URL 一定要用引号包裹,否则 & 会被 zsh 当作命令分隔符解析,报 parse error near '&'
  • 如果提示 Browser Extension is not connected,先确认 Chrome 扩展已加载并启用,再跑一次 opencli doctor 验证

项目链接

分享: