微信公众号文章转 Markdown
抓取微信公众号文章并将其转换为 Markdown 文档,支持表格、大标题层级、图片下载与格式归一化、Obsidian 模式。
依赖
脚本只需 requests + beautifulsoup4,纯 Python、零框架依赖,跨平台通用(WorkBuddy / Claude Code / Codex)。
WorkBuddy 本机:依赖已装在隔离 venv,直接用:
PY="C:/Users/Jiazi/.workbuddy/binaries/python/envs/default/Scripts/python.exe"
其他平台(Claude Code / Codex / 原生 Python):在当前环境装依赖即可:
pip install -r requirements.txt
不要用本机系统 python3(没装 bs4,会报 ModuleNotFoundError: bs4)——非 WorkBuddy 平台先 pip install -r requirements.txt 再跑。
快速使用
普通模式(推荐)
PY="C:/Users/Jiazi/.workbuddy/binaries/python/envs/default/Scripts/python.exe"
"$PY" scripts/wechat_article_to_md.py <文章URL> [输出目录]
Obsidian 模式
"$PY" scripts/wechat_article_to_md.py <文章URL> [输出目录] -obsidian
输出内容
脚本自动提取:
- 标题:文章主标题
- 作者:公众号作者名称
- 来源:原文链接
- 正文:
- 标题层级(h1-h6)
- 大标题提升:识别「一、背景」「二、xxx」「结语」等样式伪装的彩色标题条,提升为
##二级标题 - 表格 → GFM 管道表格(含单元格内加粗/斜体/图片引用)
- 粗体、斜体
- 列表(有序/无序)
- 链接
- 图片(下载到本地
images/,按 magic bytes 修正真实扩展名,SVG/GIF 伪装不再存错) - 代码块、引用块
文件命名
输出文件名自动使用文章标题,非法字符替换为下划线。
已知问题
- ~~作者「未知作者」~~(已修复):作者提取改为多级 fallback(
<meta name="author">→og:article:author→#js_author_name→a.rich_media_meta_link),新版文章也能正确提取。 - ~~不支持合并单元格~~(已支持):含
colspan/rowspan的表格自动展开成规则 GFM 表格(跨行列单元格重复填充),对 AI/RAG 友好。 - 图片目录会被清空:脚本运行时会清空目标
images/目录里的旧图片(重新下载前清旧图的既定逻辑)。别把输出目录指向自己存图的地方。
环境坑(Git Bash)
- 用
$HOME/...(=/c/Users)当输出目录时,Python 会把/c/Users解析成C:\c\Users(畸形路径)。请用 Windows 绝对路径(C:/Users/...)。
脚本位置
scripts/wechat_article_to_md.py