微信公众号文章下载器
概述
通过对话式交互,完成微信公众号文章的登录、检索、下载和管理。支持单号/批量下载、多格式导出、订阅合集管理,内置反爬保护机制。
核心能力
| 功能 | 说明 | |------|------| | 扫码登录 | Selenium 启动 headless 浏览器 → 获取二维码 → 用户扫码 → 自动缓存凭证 | | 文章下载 | 搜索公众号 → 获取文章列表 → 逐篇下载保存(Markdown/HTML/PDF/Word) | | 批量下载 | 支持多个公众号一次性下载,内置反爬保护(随机延时、强制休息) | | 订阅合集 | 创建/管理公众号订阅合集,一键下载整个合集 | | 文章预览 | 查看已下载文章列表 | | 最近一天 | 自动回溯找到最近有发布文章的日期,下载当日全部文章 |
使用场景
- "帮我登录微信公众号"——启动扫码登录流程
- "下载薪火传最近一周的文章,要 Markdown 格式"——单号下载
- "把搬砖小组和发财老博士最近三天的文章都下载了"——多号批量
- "创建科技观察合集,把虎嗅和36氪加进去,然后下载合集所有文章"——合集+下载
- "查看已下载的文章"——预览
前置条件
- Python 3.8+ 环境
- Google Chrome 或 Chromium 浏览器
- 已安装依赖:
pip install -r requirements.txt(位于 Skill 目录下) - 有一个微信公众号平台账号(个人订阅号即可)
文件结构
wechat-article-downloader-skill/
├── SKILL.md # 本文件
├── runner.py # 对话式入口(主要交互脚本)
├── wechat_scraper.py # 核心爬虫模块
├── auth_helper.py # 扫码登录模块
├── subscription_manager.py # 订阅合集管理模块
└── requirements.txt # Python 依赖
执行步骤
1. 扫码登录
用户说"登录"后:
python runner.py login
- 启动 headless Chrome,打开微信公众号登录页
- 捕获登录二维码,保存为
~/.wechat_downloader/qr_code.png - 将二维码图片展示给用户(用 read 工具读取 PNG 文件)
- 提示用户在手机上扫码确认
- 后台轮询检测登录状态(最长等待 120 秒)
- 登录成功后凭证自动缓存到
~/.wechat_downloader/auth_cache - 下次使用时自动加载缓存凭证,无需重复扫码
2. 文章下载
python {skill_dir}/runner.py download --accounts "公众号名1,公众号名2" --range <范围> --formats <格式列表> --collection <合集名>
参数说明:
--accounts:公众号名称,逗号分隔(必填)--range:时间范围,可选值:today、yesterday、week、month、3months、all(默认week)--formats:导出格式,逗号分隔,支持markdown、html、pdf、docx(默认markdown,html)--collection:保存到哪个合集文件夹下(默认default)
执行过程:
- 逐号搜索公众号 → 获取文章列表 → 逐篇下载
- 内置反爬保护:文章间隔 3-10 秒、账号切换暂停 20-60 秒、每 10 篇休息 60-120 秒
- 每完成一篇输出进度:
[1/5] ✅ 文章标题 - 完成后输出汇总:成功/失败数量、保存路径
文件保存路径:
~/WeChatArticles/<合集名>/<公众号名>/<格式>/
3. 订阅合集管理
# 列出所有合集
python runner.py collection list
# 创建合集
python runner.py collection create --name "合集名称"
# 添加公众号
python runner.py collection add --name "合集名称" --accounts "公众号1,公众号2"
# 移除公众号
python runner.py collection remove --name "合集名称" --account "公众号名"
# 删除合集
python runner.py collection delete --name "合集名称"
4. 文章预览
python runner.py preview
列出已下载文章的表格摘要(合集、公众号、日期、标题、格式)。
使用示例
用户说:
帮我登录微信公众号
执行:
python runner.py login
# 展示二维码 → 用户扫码 → 登录成功
用户说:
下载薪火传最近一周的文章,要 Markdown 格式
执行:
python runner.py download --accounts "薪火传" --range week --formats markdown
用户说:
把搬砖小组和发财老博士加到"财经精选"合集,然后一起下载
执行:
python runner.py collection create --name "财经精选"
python runner.py collection add --name "财经精选" --accounts "搬砖小组,发财老博士"
python runner.py download --accounts "搬砖小组,发财老博士" --range week --collection "财经精选"
注意事项
- 首次使用先登录:未登录时下载会提示"请先登录"。登录凭证缓存 24 小时有效。
- 反爬保护:下载速度较慢是正常的。多公众号下载时每个公众号间会暂停 20-60 秒,模拟手工操作。
- 频率限制:如果日志中出现"触发频率限制",程序会自动等待 60 秒重试。若仍未解除,建议更换微信号登录。
- 文件保存位置:文章保存在用户主目录下的
~/WeChatArticles/文件夹中。 - 凭证安全:登录凭证存储在
~/.wechat_downloader/auth_cache,仅本地使用,不会上传。 - Python 路径:执行前确保
python命令可用,或使用python3。所有脚本从 Skill 目录运行。
微信扫一扫