← Browse

@bzd6661/wechat-to-md

B

Convert WeChat Official Account (微信公众号) articles to clean Markdown files with locally downloaded images.

skillclaude

Install

agr install @bzd6661/wechat-to-md --target claude

Writes 6 files into .claude/skills/, pinned to git-b652b6ac.

  • .claude/skills/wechat-to-md/.gitignore
  • .claude/skills/wechat-to-md/README.md
  • .claude/skills/wechat-to-md/SKILL.md
  • .claude/skills/wechat-to-md/main.py
  • .claude/skills/wechat-to-md/mcp_server.py
  • .claude/skills/wechat-to-md/requirements.txt

Document


name: wechat-to-md description: Convert WeChat Official Account (微信公众号) articles to clean Markdown files with locally downloaded images.

WeChat Article to Markdown Converter

What this tool does

Converts WeChat public account articles into clean Markdown files with:

  • YAML frontmatter (title, author, date, source URL)
  • Locally downloaded images
  • Preserved code blocks with language detection
  • Audio/video reference extraction
  • Clean formatting (no WeChat UI noise)

Prerequisites

  • Python 3.10+
  • Install dependencies: pip install -r requirements.txt
  • Camoufox browser will be auto-downloaded on first run

Usage

CLI (single article)

python main.py "https://mp.weixin.qq.com/s/ARTICLE_ID"

CLI (batch from file)

python main.py -f urls.txt -o ./output -v

CLI Options

FlagDescription
-f FILEText file with URLs (one per line)
-o DIROutput directory (default: ./output)
-c NImage download concurrency (default: 5)
--no-imagesSkip image download, keep remote URLs
--no-headlessShow browser (for solving CAPTCHAs)
--forceOverwrite existing output
--no-frontmatterUse blockquote metadata instead of YAML
-vVerbose/debug logging

MCP Server

Run as an MCP server for AI tool integration:

python mcp_server.py

Exposes two tools:

  • convert_article(url, output_dir, download_images, concurrency, use_frontmatter) — Convert a single article
  • batch_convert(urls, output_dir, download_images, concurrency) — Convert multiple articles

MCP Configuration (for claude_desktop_config.json or similar)

{
  "mcpServers": {
    "wechat-to-md": {
      "command": "python",
      "args": ["mcp_server.py"],
      "cwd": "<path-to-this-project>"
    }
  }
}

Output Structure

output/
  <article-title>/
    <article-title>.md    # Markdown file with YAML frontmatter
    images/
      img_001.png
      img_002.jpg
      ...

Common Issues

  • CAPTCHA/verification page: Run with --no-headless to manually solve the CAPTCHA in the browser window, then retry.
  • Empty content: WeChat may rate-limit requests. Wait a few minutes and try again.
  • Image download failures: Failed images keep their remote URLs in the markdown. Re-run with --force to retry.

Limitations

  • Only supports articles from mp.weixin.qq.com
  • Requires a working internet connection and the ability to run a headless browser
  • WeChat may block automated access; Camoufox helps evade detection but is not guaranteed

Trustgrade B

  • passBody integrity

    Whether the stored document is plausibly the kind of file the artifact declares, rather than something fetched by mistake.

  • passType matchnot applicable to this artifact type

    Whether the artifact is really the kind of thing its metadata claims it is.

  • passFreshness

    How long since the source repository was last pushed to.

  • passPrompt injection

    Scans the artifact's own text for instructions aimed at your agent rather than at you.

  • warnLicenseno SPDX license detected

    Whether the source repository declares an SPDX license permissive enough to redistribute.

How the grade is calculated

Each check contributes 0 points when it passes, 1 when it warns, and 2 when it fails. The total maps to a letter:

  • Aevery check passed
  • Bone warning
  • Ctwo warnings
  • Dprompt injection or body integrity failed, or three warnings
  • Fone of those failed, and something else is wrong

These are automated hygiene checks, not a security audit, and not a dependency or vulnerability scan. A grade of A means nothing was flagged — not that the artifact is safe.

Versions

  • git-b652b6acfbe12026-07-29