公众号文章采集(wechat-article-ingest · 适配版)
将微信公众号文章转为带来源信息的 Markdown,可选生成 A 层观点提取与 B 层问题链。适配 当前运行环境:依赖已自动注入,产物落盘 workspace,可继续入笔记/知识库。
快速使用
# 链接模式(推荐,公开文章无需登录)
python3 "${SKILL_DIR:-$PWD/.workbuddy/skills/wechat-article-ingest}/scripts/fetch_article.py" "https://mp.weixin.qq.com/s/xxxxx"
# 指定输出目录
python3 .../fetch_article.py "链接" --output ./某目录
# PDF 模式("笔记同步助手"等工具导出的 PDF)
python3 "${SKILL_DIR:-$PWD/.workbuddy/skills/wechat-article-ingest}/scripts/extract.py" "文章.pdf"
python3 .../extract.py "PDF目录" --batch # 批量
- 默认输出目录:
./wechat_articles/ - 支持短链接(
/s/xxxxx)与完整链接(__biz&mid&idx&sn参数式)两种格式 - 保留:标题层级、图片(外链形式)、正文超链接、作者与来源(frontmatter)
运行环境
- 脚本:
scripts/extract.py、scripts/fetch_article.py(相对技能根目录) - Python:3.9+
- 第三方库:
PyMuPDF(pip install PyMuPDF)、beautifulsoup4(pip install beautifulsoup4)、markitdown(pip install markitdown)
开工前先跑一次自检,缺什么当场补,别等跑到一半报错:
python3 -c "import bs4" 2>/dev/null || echo "缺 beautifulsoup4,请执行 pip install beautifulsoup4"
python3 -c "import markitdown" 2>/dev/null || echo "缺 markitdown,请执行 pip install markitdown"
python3 -c "import pymupdf" 2>/dev/null || echo "缺 PyMuPDF,请执行 pip install PyMuPDF"
> 缺依赖时用中文告诉用户缺什么、装完就能用,不要把 Python 的英文 traceback 原样贴给用户。
产出后动作(按用户需求)
- 只存档:交付 md 文件即可
- 存入笔记:走 平台笔记流程(import_doc,落用户指定笔记本)
- A+B 深度加工(用户说"提取观点/分析"时执行,由 Agent 完成,无需额外 API):
A 层:观点提取 → 观点提取-{作者}-{主题}.md
- 🔴 支柱观点(P1-P6):文章最核心的论点
- 🟡 支撑观点(S1-S8):支撑支柱的论据
- 🟢 延伸观点(E1-E4):可延伸思考的方向
- Takeaway:每条含核心观点 + 行动指向
B 层:问题链 → 问题链-{作者}-{主题}.md
- 3-5 条问题链,每条对应一个核心主题
- 每条链 L1(安全区)→ L2(边缘区)→ L3(核心区),每链 6 道问题
- 终局种子:一个带回家的问题
已知限制
- 部分文章有防盗链或"环境异常"验证,会抓取失败(脚本会明确报错,重试无效时如实告知用户)
- 纯图片文章(无文字层)无法提取正文
- PDF 提取质量取决于原文排版;链接模式比 PDF 模式更能保留图片和链接
- 图片以外链形式保留(mmbiz.qpic.cn),不下载到本地
来源与许可
- 本技能改编自开源项目 chubbyskills 的 wechat-article-ingest 模块,原作者 chubbyguan(公众号:关关不过),遵循 MIT License
- 适配内容:依赖路径注入、默认输出目录、SKILL.md 场景化改写;采集核心逻辑未改动
- 详见同目录
NOTICE.md
⚖️ 合规声明
仅供个人学习与研究使用。请遵守目标平台服务条款,控制请求频率,不要用于批量抓取、商用爬取或侵犯他人权益的场景。文章版权归原作者所有,引用与转载按需取得授权并注明来源。
示例
# 一条公众号链接 → Markdown(正文 + 图片本地化)
python3 "${SKILL_DIR:-$PWD/.workbuddy/skills/wechat-article-ingest}/scripts/fetch_article.py" \
"https://mp.weixin.qq.com/s/xxxxxxxxxxxxx" -o ./articles
# 已有导出的 PDF → Markdown(批量)
python3 "${SKILL_DIR:-$PWD/.workbuddy/skills/wechat-article-ingest}/scripts/extract.py" \
./pdfs --batch -o ./articles
输出:./articles/<标题>.md + ./articles/images/(图片按文件名归拢)。
失败时:链接失效或被风控会拿不到正文,换一条链接或改用 PDF 入口;不要把空文件当成品交付。