WeChat article → local Markdown
Use this skill for single article WeChat Official Account links.
Default path: use the bundled script first
For normal use, do not manually shuttle the full article HTML through the browser tool.
微信公众号正文经常很长,#js_content.innerHTML 可能超过工具返回长度,导致提取结果被截断。
优先直接运行这个脚本:
SKILL_DIR="$(cd "$(dirname "$0")" && pwd)"
bash "${SKILL_DIR}/scripts/download_wechat_article.sh" '<MP_URL>' '<OUTPUT_DIR>'
这个脚本会自动:
- 用 Playwright 打开文章页
- 提取元数据和完整
#js_contentHTML - 调用
save_wechat_article.py - 下载图片到本地
- 生成 Markdown 和 HTML fallback
What to do
- Validate the URL is a single article link on
mp.weixin.qq.com. - Run the bundled shell script above.
- Parse the JSON result printed by the script.
- Return the saved file paths.
Expected output from the script
脚本成功时会输出 JSON,包含至少这些字段:
titlearticle_dirmarkdown_pathhtml_pathimages_dirimage_countmarkdown_ok
Fallback path
Only if the bundled script fails, fall back to the manual two-step flow:
- Use the browser tool to open the article page.
- Extract article metadata and the full
#js_contentHTML from the rendered page. - Save the extracted payload to a temporary JSON file.
- Run
scripts/save_wechat_article.pymanually.
Manual browser extraction
Use browser evaluate on the opened article page and extract at least:
() => {
const q = s => document.querySelector(s);
const text = s => q(s)?.textContent?.trim() || '';
const html = q('#js_content')?.innerHTML || '';
return {
url: location.href,
title: text('#activity-name') || text('#js_name') || document.title,
account: text('#js_name'),
author: text('#js_author_name') || text('#js_author'),
publish_time: text('#publish_time'),
description: document.querySelector('meta[name="description"]')?.content || '',
cover: document.querySelector('meta[property="og:image"]')?.content || '',
html
};
}
If html is empty, stop and report the page could not be extracted.
Manual converter script
Run:
SKILL_DIR="$(cd "$(dirname "$0")" && pwd)"
source "${SKILL_DIR}/scripts/../.venv-wechat-skill/bin/activate" 2>/dev/null || true
python "${SKILL_DIR}/scripts/save_wechat_article.py" \
--input /tmp/wechat_article_input.json \
--output-dir '<OUTPUT_DIR>'
Success response
Report:
- article title
- markdown path
- images directory
- fallback HTML path
- image count if available
Notes
- This skill is intentionally for single article links only.
- Images should always be localized.
- Prefer the bundled shell script over manual browser extraction.
- If Markdown conversion has issues, still keep the cleaned HTML fallback.
- Gotcha: do not rely on a single browser-tool response to carry very large HTML blobs when a local script can write them directly to disk.