在用户可访问微信文章页面的基础上,抓取公众号文章内容并转换为干净的 Markdown,同时保存 HTML 快照。
所有脚本位于本 skill 的 scripts/ 子目录中。
执行说明:
{baseDir}{baseDir}/scripts/<script-name>.py*-captured.html)data-src,并兼容 data-original、 data-actualsrc、 data-croporisrc、 data-cover--download-images):下载到 images/ 目录,Markdown 中自动替换为相对路径;下载时复用浏览器会话的 Referer/Cookie,单张失败不影响整体bash
# 自动模式 - 无头浏览器,页面加载完成后自动抓取(默认)
python3 {baseDir}/scripts/main.py <wechat-article-url>
# 使用可视浏览器(带 UI)
python3 {baseDir}/scripts/main.py <wechat-article-url> --headed
# 等待模式 - 可视浏览器,等待用户确认页面准备好后再抓取(推荐用于需要登录的情况)
python3 {baseDir}/scripts/main.py <wechat-article-url> --headed --wait
# 保存到指定文件
python3 {baseDir}/scripts/main.py <wechat-article-url> -o output.md
# 保存到自定义输出目录(自动生成文件名)
python3 {baseDir}/scripts/main.py <wechat-article-url> --output-dir ./wechat-articles/
# 下载图片到本地
python3 {baseDir}/scripts/main.py <wechat-article-url> --download-images
选项描述<url>微信公众号文章链接-o <path>输出文件路径(必须是文件路径,不是目录)--output-dir <dir>基础输出目录,自动生成 {dir}/{date}/{slug}.md``--headed使用可视浏览器(默认无头模式)--wait等待用户信号后再抓取(仅在 --headed 模式有效,适用于需要登录或复杂页面)--timeout <ms>页面加载超时时间(默认:30000)--download-images下载图片到本地 images/ 目录并重写为相对路径;复用浏览器会话 Referer/Cookie,单张失败仅警告,保留原 URL
模式行为适用场景自动(默认)网络空闲时抓取公开可访问的文章、静态内容等待( --wait)用户确认后抓取需要登录、懒加载、可能有访问限制的页面
等待模式工作流:
--wait 运行脚本 → 脚本输出"请在浏览器中确认页面加载完成,然后按 Enter 继续"每次运行会保存两个文件:
url、 title、 author、 published_at、 captured_at),以及转换后的 Markdown 内容*-captured.html,包含从 Chrome 捕获的渲染后页面 HTMLHTML 快照在任何 Markdown 处理之前保存,因此它始终是用于转换的页面 DOM 的忠实捕获。
默认: wechat-articles/YYYY-MM-DD/{slug}.md
使用 --output-dir ./posts/: ./posts/YYYY-MM-DD/{slug}.md
HTML 快照使用相同的 basename:
wechat-articles/YYYY-MM-DD/{slug}-captured.html
./posts/YYYY-MM-DD/{slug}-captured.html
{slug}:从文章标题生成(kebab-case,2-6 个词)
冲突处理:追加时间戳 {slug}-YYYYMMDD-HHMMSS.md
当启用 --download-images 时:
images/ 目录Referer 和 Cookie 图片语法变量描述WECHAT_CHROME_PATH自定义 Chrome 可执行文件路径WECHAT_DATA_DIR自定义数据目录WECHAT_CHROME_PROFILE_DIR自定义 Chrome 用户配置目录(推荐用于保存登录态)
问题建议解决方案Chrome 未找到设置 WECHAT_CHROME_PATH 环境变量页面超时增加 --timeout 值需要登录使用 --wait 模式,配合 WECHAT_CHROME_PROFILE_DIR 使用已登录的 Chrome 配置抓取不完整检查保存的 -captured.html,尝试 --wait 模式让用户手动滚动页面Markdown 质量差检查 HTML 快照,微信可能已更新页面结构,欢迎提交 Issue
bash
# 测试一篇公开的微信文章
python3 {baseDir}/scripts/main.py https://mp.weixin.qq.com/s/xxx -o test-output.md
# 测试等待模式
python3 {baseDir}/scripts/main.py https://mp.weixin.qq.com/s/xxx --wait