← ClaudeAtlas

download-wechat-articleslisted

把用户自己名下微信公众号的全部「已发表」历史文章批量下载成干净 Markdown(�� frontmatter,图片保留外链),供备份或给 AI 当写作风格采样。用户只需在已登录的公众号后台网页里粘一段控制台脚本导出文章清单,其余由本地脚本完成,全程无需手动查找 token/cookie。触发词:下载我的公众号文章、备份公众号、导出公众号文章、把我的公众号存到本地、抓取我名下公众号、archive my wechat articles。
YijiaDuan/download-wechat-articles · ★ 0 · AI & Automation · score 72
Install: claude install-skill YijiaDuan/download-wechat-articles
# 下载自己公众号的历史文章 帮用户把自己管理的微信公众号「已发表」文章全量存成本地 Markdown。用户是公众号管理员,能登录 mp.weixin.qq.com。 ## 核心设计(为什么是这个流程) 一次踩坑得来的两条关键事实,决定了整个流程: 1. **文章永久链接 `mp.weixin.qq.com/s/xxx` 是公开的**,不带任何 cookie 直连就能拿到完整正文。所以「下正文」这步完全不需要登录态。 2. **只有「文章列表」接口 `appmsgpublish` 需要登录态**,而真正的会话 cookie 是 httpOnly 的,JS 读不出来,浏览器自动化工具也进不了 mp.weixin.qq.com 域。 所以不要试图去提取 token/cookie(又难又不安全)。正确做法是**让用户在已登录的后台页面的��览器控制台里直接 fetch**——浏览器会自动带上登录态(含 httpOnly cookie),一键导出文章清单。凭证从头到尾不离开用户的浏览器。 流程两步: - **第 1 步(需登录态,在浏览器里)**:控制台脚本调 `appmsgpublish` 分页拉全部文章,导出 `wechat_articles.json` 清单。 - **第 2 步(无需登录态,在本地)**:Python 脚本读清单,逐篇下公开链接、转干净 Markdown。 ## 操作流程 ### 0. 装依赖(第一次用时) ```bash pip3 install requests beautifulsoup4 html2text lxml --break-system-packages ``` 报错就去掉 `--break-system-packages` 重试。也确认 `python3 --version` 能跑(没有就 `xcode-select --install`)。 ### 1. 引导用户导出文章清单 把 `assets/get_article_list.js` 的**整段内容**发给用户(用 Read 读出来贴给他),并给这段话: > 1. 浏览器登录 mp.weixin.qq.com,进到后台首页(地址栏 URL 里能看到 `token=一串数字`)。 > 2. 按 F12(或右键→检查)打开开发者工具,切到 **Console / 控制台** 标签。 > 3. 把我发你的这段脚本整段粘贴进去,回车。 > 4. 它会自动分页抓取,完成后弹窗提示,并把 `wechat_articles.json` 下到你的「下载」文件夹。回来告诉我。 脚本原理已内置注释:读 URL 里的 token,`fetch` 调接口(`credentials:'include'` 自动带 cookie),分页去重后触发下载。用户全程不用找 cookie。 ### 2. 本地转 Markdown 用户导出清单后,跑: ```bash python3 ~/.claude/skills/download-wechat-articles/scripts/build_markdown.py [清单路径] [输出目录] ``` - 清单路径默认 `~/Downloads/wechat_articles.json`;输出目录默认 `./公众号文章`。 - 先 `--limit 3` 试跑三篇确认没问题,再去掉跑全量。 - 每篇间隔默认 3 秒(`--delay`)。已存在的文件自动跳过,支持断点续跑。 放后台跑(篇数多时超过 1 分钟),定期查进