Bowen Zhang83 downloadsArchive selected WeChat public-account history or album articles as Markdown with local images on Windows.
中文说明 · English · 社区插件页面 · 下载安装包
把微信公众号文章保存到 Windows / macOS 桌面版 Obsidian:可以粘贴链接直接保存单篇,也可以先取得公众号历史目录或合集目录,再勾选保存。文章生成 Markdown 笔记,图片可下载到本地。
当前版本:0.5.0。插件独立运行,不需要 AI、wechatDownload、微信读书、MCP 服务,也不需要额外安装 Python、Node.js 或 Docker。
“历史目录已遍历”表示接口返回了明确的末页,不代表能够取得公众号曾经发布的所有文章。已删除、受限、付费或未列入目录的内容可能无法获取。
| 项目 | 要求 |
|---|---|
| 系统 | Windows 和 macOS 桌面版;不支持 Linux 和移动端。 |
| Obsidian | 1.8.0 及以上;尚未逐一验证所有版本。 |
| 微信历史目录 | Windows 微信 4.1.6.14 已有实测;Mac 微信 4.x 缓存适配为实验功能,尚未完成真实历史目录验收。两者均需本人已登录并在微信内打开目标公众号主页。 |
| 网络 | 获取新目录、正文和图片需要联网。公开单篇及合集通常不需要登录微信或读取本机缓存。 |
Mac 安装与验证范围: 见 MACOS.md。单篇文章、图片和公开合集使用与 Windows 相同的保存流程;历史目录受 Mac 微信缓存权限与格式影响,不把“未连接”解释为“没有文章”。
也可以在“设置 → 第三方插件”的社区目录中搜索插件英文名称。每个新版本需要单独完成社区检查,目录中的可安装版本可能晚于 GitHub。
wechat-history-archive-版本号.zip。wechat-history-archive 文件夹放到笔记库的 .obsidian/plugins/ 下。main.js、manifest.json 和 styles.css。也可从 Release 单独下载上述三个文件。若笔记库自定义了配置目录,请使用该目录下的 plugins 文件夹。GitHub 自动生成的 “Source code” 压缩包是开发源码,不能直接安装。
升级时保留 data.json、笔记和附件。 0.3.4 将公开名称从 WeChat History Archive 改为 WeChat Official Account Archive,插件 ID、保存目录和设置格式不变,不需要迁移已有归档。
单篇保存不获取公众号或合集目录,也不扫描微信缓存。公开文章通常无需登录;遇到微信验证、作者限制或删除页面时会停止并提示。图片是否下载遵循插件的“下载图片”设置。
每个公众号的单篇记录保存在同一文件夹下的 单篇归档记录.json 和 单篇归档索引.md 中,与历史及合集索引独立。页面提供统一文章标识时,短链接与长链接会识别为同一篇;已有同来源笔记会保留,后续批量归档也会复用。
https://mp.weixin.qq.com/s/...。目录支持标题搜索、全选当前结果、勾选当前未保存 和 清空全部勾选。搜索不会取消之前的勾选,保存按钮显示全部勾选数量。
在同一输入框粘贴微信原生合集链接(路径为 /mp/appmsgalbum,包含 __biz 和 album_id),点击 获取文章目录,然后勾选保存。
公开合集通常无需先打开微信主页或扫描本机缓存。插件会自动翻页;中途失败、重复页或篇数不符不会被标记为完整目录。微信要求验证或拒绝访问时,插件会提示并停止。
每个合集有独立的索引和进度文件,不覆盖公众号历史索引;相同文章共用笔记和附件。当前不自动解析公众号自定义菜单、第三方专题页或后台分组。
默认保存到当前笔记库的 公众号归档 文件夹,可在插件设置中修改,也可关闭图片下载。
公众号归档/
└─ 公众号名称/
├─ 公众号归档索引.md
├─ 归档记录.json
├─ 日期 文章标题 [文章标识].md
└─ 附件/
合集的索引和进度也保存在对应公众号的文件夹内。已下载的图片支持离线阅读;下载失败而保留的远程图片仍需要网络。
| 提示或现象 | 说明或处理方式 |
|---|---|
| 未连接到可用的微信页面 | 在电脑微信内重新打开目标公众号主页,翻动几屏后再获取目录。 |
| 没有找到支持的网页缓存 | 确认使用 Windows 微信或 Mac 微信 4.x;微信版本变化可能导致缓存布局不兼容。 |
| 微信要求验证或访问频率受限 | 在微信中完成验证,或暂停一段时间再试;已保存的文章会保留。 |
| 作者隐私设置限制、文章删除或其他访问限制 | 记录不可访问状态,不把空白页面保存为成功笔记。插件不绕过这些限制。 |
| 图片下载失败 | 保留允许的远程图片链接,并在记录中写明原因;远程图片不能离线显示。 |
| 排版与原网页不同 | Markdown 以阅读为主,改善空白、强调、表格及图片布局,但不完全复刻微信模板的背景、字体和定位效果。 |
| 音频或视频没有下载 | 保留原文入口和可提取的文字介绍,不下载音视频本体,也不生成转写。 |
已验证实际目录及正文下载、图片引用、部分排版样例和模拟 Obsidian API 加载。尚未完成真实 Obsidian 界面的全面自动化验收,也未覆盖所有公众号样式。微信网页接口及缓存格式可能变化。
账号与费用。 获取整个公众号的历史目录需要本人已登录的电脑微信;公开单篇及合集通常不需要。插件不要求单独注册账号、API 密钥、订阅或付费服务。
网络请求。 只在使用者主动识别公众号、获取目录或保存文章时联网,使用 HTTPS:
mp.weixin.qq.com:文章、账号信息、公众号历史目录及合集目录。qpic.cn、qlogo.cn、res.wx.qq.com 及其子域名:文章图片。微信页面会话参数只发送至 mp.weixin.qq.com,重定向地址会经过校验。
笔记库外文件。 公众号历史目录功能会只读检查以下位置的微信网页缓存,匹配使用者已经打开的目标公众号页面。单篇文章和公开合集不扫描这些缓存。
%APPDATA%\Tencent\xwechat\radium\web
%APPDATA%\Tencent\xwechat\radium\cache
%APPDATA%\Tencent\WeChat\XPlugin\Plugins\Radium
%APPDATA%\Tencent\WeChat\XPlugin\Plugins\XWeb
%APPDATA%\Tencent\WeChat\Cache
Mac 微信 4.x 的实验适配仅检查:
~/Library/Containers/com.tencent.xinWeChat/Data/Documents/app_data/radium/web
~/Library/Containers/com.tencent.xinWeChat/Data/Documents/app_data/radium/cache
Mac 读取 Chromium Simple Cache v5 的 URL key,不扫描响应正文;不兼容的格式和权限不足会提示并停止。
插件不会修改上述目录;跳过聊天数据库、登录数据库、独立 Cookie 数据库和聊天附件目录。会话参数只在内存中使用,不写入设置、笔记或进度文件。粘贴链接在保存设置前会去除会话及追踪参数,旧配置在启动时也会清理。
本地保存与同步。 文章、图片、公共来源链接、索引和进度通过 Obsidian 接口写入所选的笔记库文件夹,插件设置通过 Obsidian 配置接口保存。若笔记库启用了同步,这些文件也会按原有设置同步。
剪贴板与其他服务。 只有点击复制按钮时,插件才把生成的公开链接写入剪贴板,不读取剪贴板。没有广告、遥测、分析服务、AI 调用、第三方上传或后台下载,也不会自行更新依赖库。
本项目独立开发,不是微信或 Obsidian 官方产品。仓库和发布包不包含使用者的微信缓存、会话参数、归档文章或笔记库配置。
仅开发者需要 Node.js 22 或以上版本:
npm ci
npm run check
构建产物位于 dist/wechat-history-archive/;运行所需第三方库已打包到 main.js,最终用户不需要开发环境。测试使用虚构会话和本地样例,不连接实际微信账号。构建会将 CSS 解析依赖中的动态错误类型查找替换为静态映射,保留依赖许可,并在上游代码变化时停止构建。
发布标签必须与 manifest.json 的版本完全一致,例如 0.5.0,不加 v 前缀。社区安装要求 Release 单独附上 main.js、manifest.json 和 styles.css。
采用 MIT 许可证。项目及第三方许可全文包含在 main.js 的注释中;手动安装包还附带 LICENSE 和 THIRD-PARTY-NOTICES.txt。更新记录见 CHANGELOG.md。
问题反馈请使用 GitHub Issues。请勿在公开反馈中附上会话参数、原始缓存、私人文章内容或笔记库配置。
Save individual or selected WeChat Official Account (微信公众号) articles as Markdown notes with local images in Obsidian on Windows or macOS. Save one article directly, or fetch an account's currently accessible history or a native WeChat album and choose which articles to save.
Version: 0.5.0. The plugin runs inside Obsidian. End users do not need Python, Node.js, Docker, AI, an MCP server, wechatDownload, or WeChat Read.
Open the community plugin page, click Add to Obsidian, then install and enable WeChat Official Account Archive. You can also search for that name under Settings → Community plugins. Each release is checked separately; the installable directory version may lag behind GitHub.
wechat-history-archive folder into your vault's plugin directory. The default location is .obsidian/plugins/.main.js, manifest.json, and styles.css.You can also download those three files separately from the release. GitHub's source-code archives need to be built before installation. Preserve data.json, notes, and attachments when upgrading. If your vault uses a custom configuration directory, use its plugins subdirectory.
Version 0.3.4 updates the display name from WeChat History Archive; the plugin ID, settings format, and storage paths remain unchanged.
The plugin interface is currently in Chinese. The steps below identify each button.
Paste the article URL and click 保存单篇文章 (save this article). After saving, click 打开刚保存文章 (open saved article). The image-download setting also applies to single articles.
This path does not enumerate history or scan WeChat caches. Public articles usually need no login. Verification, deleted pages, and author restrictions are reported without bypassing access controls.
Single saves have their own 单篇归档记录.json and 单篇归档索引.md inside the account folder; they do not replace history or album indexes. When the page exposes a stable article ID, short and long links reuse the same note, including during later batch saves. Existing notes and user edits are preserved.
https://mp.weixin.qq.com/s/... URL.Use title search, 全选当前结果 (select visible results), 勾选当前未保存 (select visible unsaved articles), or 清空全部勾选 (clear selections). Filtering does not clear earlier selections. Existing notes from the same source are preserved.
Click 停止 (stop) to retain completed work and stop after the current request. Unfinished selections can be resumed. Reopening the panel restores the local directory without a network request. Use 刷新文章目录 (refresh directory) to check for new articles.
Paste a native WeChat album URL containing /mp/appmsgalbum, __biz, and album_id, fetch its directory, and select articles to save. Public albums normally work without a WeChat login or cache scan. If WeChat requests verification or denies access, the plugin stops and reports the condition.
Pagination preserves album order and checks the reported count when available. Incomplete, repeated, or inconsistent pages are not marked complete. Each album has its own index and progress record. Custom menus, third-party topic pages, and unpublished backend groups are not supported.
The default vault-relative folder is 公众号归档. Each account has a subfolder containing its index, progress JSON, notes, and an 附件 image folder. Settings let you change the output folder or disable image downloads. Changing the source or folder requires fetching a new directory.
Full-account history requires the user's own logged-in desktop WeChat client. Public individual articles and albums usually do not. There is no separate plugin account, API key, subscription, or payment. Verification requested by WeChat must be completed in WeChat.
Requests occur only after the user asks to identify an account, fetch a directory, or save individual or selected articles. The plugin uses HTTPS to contact:
mp.weixin.qq.com for article pages, account information, history, and album directories.qpic.cn, qlogo.cn, res.wx.qq.com, and their subdomains for article images.WeChat session parameters are sent only to mp.weixin.qq.com. Redirect destinations are validated. Node HTTPS is used on desktop to enforce redirect boundaries, timeouts, and response-size limits without weakening TLS.
Full-account discovery uses Node filesystem APIs to read existing WeChat web caches outside the vault. Supported cache directories are under:
%APPDATA%\Tencent\xwechat\radium\web
%APPDATA%\Tencent\xwechat\radium\cache
%APPDATA%\Tencent\WeChat\XPlugin\Plugins\Radium
%APPDATA%\Tencent\WeChat\XPlugin\Plugins\XWeb
%APPDATA%\Tencent\WeChat\Cache
Experimental Mac WeChat 4.x discovery only checks:
~/Library/Containers/com.tencent.xinWeChat/Data/Documents/app_data/radium/web
~/Library/Containers/com.tencent.xinWeChat/Data/Documents/app_data/radium/cache
On Mac, only Chromium Simple Cache v5 URL keys are read, not response bodies. Unsupported formats and permission failures stop history discovery with an explanation. See MACOS.md for validation limits.
This reuses the session of an account page the user has already opened. The plugin does not modify these directories. It skips chat databases, login databases, standalone cookie databases, and chat attachment folders. Single-article saving and public-album discovery do not scan these caches.
Session values remain in memory and are not written to settings, notes, or progress records. Pasted URLs are stripped of session and tracking parameters before saving; old settings are cleaned on load. Articles, images, public links, and progress are written inside the selected vault folder through Obsidian APIs. Vault sync services synchronize those files according to the user's existing configuration.
Copy-homepage and copy-album buttons write the generated public URL to the clipboard only when clicked. The plugin does not read the clipboard. There are no ads, analytics, telemetry, AI calls, third-party uploads, background downloads, or self-updating dependencies.
The bundled CSS parser resolves error constructors through a static lookup. The build replaces its upstream dynamic-evaluation fallback and fails if that dependency code changes unexpectedly. Dependency copyright and license notices remain included.
Validation includes actual directory and article downloads, image-reference checks, formatting comparisons, and automated tests with a simulated Obsidian API. Full automation against the real Obsidian interface and all account styles has not been completed. This is an independent project, not an official WeChat or Obsidian product.
Use Node.js 22 or later:
npm ci
npm run check
Build output: dist/wechat-history-archive/. Runtime libraries are bundled into main.js; users need no development runtime. Tests use synthetic sessions and local fixtures, not real WeChat accounts.
Release tags must exactly match manifest.json, such as 0.5.0, without a v prefix. Attach main.js, manifest.json, and styles.css individually for community installation. The ZIP is also supplied for manual installation.
This project uses the MIT License. Project and third-party licenses are included as comments in main.js; manual packages also contain LICENSE and THIRD-PARTY-NOTICES.txt. See the changelog.
Report problems through GitHub Issues. Do not include session values, raw caches, private article content, or vault configuration in public reports.