WeChat MP Batch Exporter
Download WeChat public account articles, metrics, and comments in bulk for archival or analysis.
Installation
- Make sure Claude is on your device and in your terminal.
Skills load from
~/.claude/skills/when Claude Code starts up — so you need it on your machine first. If you don't have it yet, install it once with the command below, then runclaudein any terminal to verify.One-time setupnpm i -g @anthropic-ai/claude-codeAlready have it? Skip ahead.
- Paste into Claude Code or into your terminal.
This copies the whole skill folder into
~/.claude/skills/wechat-mp-batch-exporter-mcncarl/— the SKILL.md plus any scripts, reference docs, or templates the skill ships with. Safe default: works for every skill.Faster alternative (instruction-only skills)
Skips the clone and grabs only the SKILL.md file. Don't use this if the skill ships Python scripts, reference markdowns, or asset templates — they won't be downloaded and the skill will fail when it tries to load them.
Quick install (SKILL.md only)Sign up to copy - Restart Claude Code.
Quit and reopen Claude Code (or any other agent that loads from
~/.claude/skills/). New skills are picked up on startup. - Just ask Claude.
Skills auto-activate when your request matches the skill's description — no slash command needed. Trigger phrases live in the skill's own frontmatter; you can read them in the “What this skill does” section above.
Prefer to read the source first? Open on GitHub.
When Claude uses it
批量下载微信公众号文章正文、历史文章列表、原创文章筛选、历史计数口径、阅读量、点赞/转发等指标、评论和评论回复。Use when the user asks to batch fetch mp.weixin.qq.com articles, export WeChat public-account history, distinguish publish groups vs expanded article URLs vs original articles, use wechat-article-exporter, use wxdown-service credentials, collect read/comment metrics, or create an archive for Obsidian/Feishu/local analysis. Do not use for ordinary one-off article summarization unless batch/enhanced data is requested.
What this skill does
WeChat MP Batch Exporter
Core Rule
Never operate the user's WeChat UI. Do not publish, delete, mass-send, follow, unfollow, send messages, or click inside WeChat. For any workflow requiring WeChat desktop, tell the user exactly what to do and wait for confirmation.
Never print raw cookies, auth-key, token, pass_ticket, key, uin, credentials JSON, or QR login secrets in chat or saved reports.
Downloaded article content belongs to the original authors or rights holders. Use exports only within the user's lawful/private-use scope unless the user confirms they have permission to republish or redistribute.
First Step
Run the local doctor before choosing a workflow:
python3 {baseDir}/scripts/doctor.py
Use --check-network only when the task needs the public exporter API or online download endpoint.
Decision Tree
- User provides known article URLs and only needs正文/Markdown: use
scripts/download_urls.py; no login or WeChat action is required. - User wants a public account's历史文章列表 or latest N articles: use exporter mode from
wechat-article-exporter; this requires a user-owned WeChat Official Account backend login/auth-key. - User needs阅读量、点赞、转发、评论、评论回复: use
wxdown-servicecredentials flow first, then export enhanced fields fromwechat-article-exporter. - User says“不登录”“代理模式” or exporter mode fails: use the proxy/history fallback only after explicit confirmation; read
references/manual-gates.mdfirst.
For simple single-URL extraction without batch/enhanced needs, prefer the existing $wechat-article skill.
Count Discipline
Never report a public account total as just “N 篇文章” until the count scope is clear.
After any history sync or imported history JSON, run:
python3 {baseDir}/scripts/analyze_history.py --history-json /path/to/history.dedup.json
python3 {baseDir}/scripts/analyze_history.py --chunk-dir /path/to/chunks --output-dir /path/to/output
Use these labels in user-facing answers:
publish_groups: uniquemsgidvalues; roughly one WeChat publish/message group.expanded_url_items: every unique article URL after expanding multi-article messages.original_articles: frontend-style original article count, usingcopyright_type=1,copyright_stat=1, andis_deleted=false.
If counts disagree with what the user sees in WeChat, explain the scope difference first and point to the generated history.summary.json / history.summary.md.
Known-URL Body Download
Use this path for pasted URLs, .txt, .csv, or .json URL lists:
python3 {baseDir}/scripts/download_urls.py --file /path/to/urls.txt --format markdown
python3 {baseDir}/scripts/download_urls.py "https://mp.weixin.qq.com/s/..."
Report only: success count, failure count, failed URLs, output directory, and index.csv.
Default output:
~/Downloads/wechat-mp-batch/<run-id>/
|-- index.csv
|-- errors.json
`-- articles/
`-- 001-<safe-title>.md
History And Enhanced Export
Read references/exporter-workflow.md before running exporter/history/enhanced-data tasks.
Start the local credential helper with:
python3 {baseDir}/scripts/start_wxdown_service.py
Use the mature upstream stack:
wechat-article/wechat-article-exporterfor account search, article history, body download, and multi-format export.wechat-article/wxdown-servicefor user-owned credential capture needed by read/comment metrics.
Local source paths are environment-specific. Prefer environment variables or explicit script flags:
export WECHAT_ARTICLE_EXPORTER_DIR=/path/to/wechat-article-exporter
export WXDOWN_SERVICE_DIR=/path/to/wxdown-service
python3 {baseDir}/scripts/doctor.py --exporter-path "$WECHAT_ARTICLE_EXPORTER_DIR" --wxdown-path "$WXDOWN_SERVICE_DIR"
python3 {baseDir}/scripts/start_wxdown_service.py --wxdown-dir "$WXDOWN_SERVICE_DIR"
If using the public exporter, default base URL is:
https://down.mptext.top
Manual Gates
Read references/manual-gates.md whenever the task involves login, credentials, comments, read counts, proxy, certificate trust, or WeChat desktop.
These actions always require explicit user confirmation:
- Scanning a QR code and selecting the user's Official Account or service account.
- Installing or trusting a mitmproxy certificate.
- Enabling or changing macOS system proxy settings.
- Asking the user to open an article/history page inside WeChat desktop and scroll.
- Using a pasted auth-key or credentials file.
Outputs
Read references/output-schema.md when building an archive or merging exporter results into another system.
Preferred enhanced archive fields:
account_name, fakeid, title, url, publish_time, author, digest, cover_url,
body_markdown_path, html_path, image_dir,
read_count, like_count, share_count, favorite_count, comment_count,
comments_path, comment_replies_path, fetch_mode, credential_status, exported_at
History analysis outputs should include:
history.summary.json, history.summary.md,
history.dedup.json, history.dedup.csv, urls.all.txt,
history.original.json, history.original.csv, urls.original.txt
What Cannot Be Done Automatically
- Do not bypass login, deleted content, paywalls, private articles, or platform permission checks.
- Do not guarantee read/comment metrics without fresh user-owned credentials.
- Do not operate WeChat UI or replace the user's required WeChat desktop actions.
- Do not promise comments when the article has comments disabled or hidden.
- Do not silently install system certificates, change proxies, or leave proxy settings enabled.
Related skills
Raffle Winner Picker
Prat011
Randomly select fair winners from lists or Google Sheets for giveaways and contests.
Content Reviewer
aaron-he-zhu
Review influencer content against brand guidelines and provide approval decisions.
ckm:banner-design
nextlevelbuilder
Generate social media banners, ads, and website headers in multiple styles.
Wonda CLI
degausai
Generate images, videos, music, and audio from the terminal with social media automation.