
Wechat Article To Markdown
Archive 微信公众号 articles as local Markdown with images for summaries, notes, or RAG ingestion.
Overview
WeChat Article to Markdown is an agent skill for the Grow phase that fetches a public 微信公众号 article and writes clean Markdown plus local images.
Install
npx skills add https://github.com/jackwener/wechat-article-to-markdown --skill wechat-article-to-markdownWhat is this skill?
- CLI fetch from public mp.weixin.qq.com/s URLs
- Camoufox anti-detection fetch plus markdownify HTML→Markdown
- Metadata extraction: title, account, publish time, source URL
- Concurrent image download into output/<title>/images/
- WeChat code-snippet extraction into fenced code blocks where possible
- Python 3.8+ prerequisite
- Outputs .md plus images/* under output/<article-title>/
Adoption & trust: 582 installs on skills.sh; 687 GitHub stars; 1/3 security scanners passed (skills.sh audits).
What problem does it solve?
You have a WeChat article URL but no portable text file your agent can summarize, translate, or load into a knowledge base.
Who is it for?
Solo builders saving individual public WeChat posts for offline reading, summarization, or doc/RAG workflows.
Skip if: Bulk scraping private accounts, non-mp.weixin.qq.com URLs, or recovering image-only code blocks as source text.
When should I use this skill?
User needs to save WeChat articles as Markdown for personal archive, AI summarization input, or knowledge base ingestion.
What do I get? / Deliverables
After a single CLI run you get output/<title>/<title>.md and downloaded images ready for archiving, LLM input, or ingestion pipelines.
- Markdown file at output/<article-title>/<article-title>.md
- Localized images in output/<article-title>/images/
Recommended Skills
Journey fit
Canonical shelf in Grow because the skill’s stated outcomes are personal archives and knowledge-base feeding—not fetching during raw idea research. Content subphase fits markdown exports meant for reuse in blogs, docs, and AI pipelines after publication.
How it compares
Use a focused article-to-markdown CLI instead of manual copy-paste that drops images and metadata.
Common Questions / FAQ
Who is wechat-article-to-markdown for?
Indie builders and agents who regularly reference 微信公众号 content and want reproducible Markdown exports on disk.
When should I use wechat-article-to-markdown?
In Grow content work when you need an archive or AI input file; also when validating research by saving a competitor’s public WeChat post before writing your own summary.
Is wechat-article-to-markdown safe to install?
It runs a local Python tool that fetches public web pages; review the Security Audits panel on this page and treat fetched content like any third-party HTML before executing embedded assets.
SKILL.md
READMESKILL.md - Wechat Article To Markdown
# WeChat Article to Markdown Fetch a WeChat Official Account article and convert it to a clean Markdown file. ## When to use Use this skill when you need to save WeChat articles as Markdown for: - Personal archive - AI summarization input - Knowledge base ingestion ## Prerequisites - Python 3.8+ ```bash # Install uv tool install wechat-article-to-markdown # Or: pipx install wechat-article-to-markdown ``` ## Usage ```bash wechat-article-to-markdown "<WECHAT_ARTICLE_URL>" ``` Input URL format: - `https://mp.weixin.qq.com/s/...` Output files: - `<cwd>/output/<article-title>/<article-title>.md` - `<cwd>/output/<article-title>/images/*` ## Features 1. Anti-detection fetch with Camoufox 2. Metadata extraction (title, account name, publish time, source URL) 3. Image localization to local files 4. WeChat code-snippet extraction and fenced code block output 5. HTML to Markdown conversion via markdownify 6. Concurrent image downloading ## Limitations - Some code snippets are image/SVG rendered and cannot be extracted as source code - Public `mp.weixin.qq.com` URL is required name: CI on: workflow_call: pull_request: push: branches: - main jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.12" - name: Install uv uses: astral-sh/setup-uv@v4 - name: Build package run: uv build - name: Run tests run: uv run --with pytest pytest -q -m "not e2e" name: E2E on: workflow_dispatch: inputs: urls: description: "Comma-separated WeChat article URLs" required: true default: "https://mp.weixin.qq.com/s/Y7dyRC7CJ09miHWU6LBzBA" timeout: description: "Per-article timeout seconds" required: false default: "240" jobs: e2e: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.12" - name: Install uv uses: astral-sh/setup-uv@v4 - name: Run live e2e tests env: WECHAT_E2E_URLS: ${{ github.event.inputs.urls }} WECHAT_E2E_TIMEOUT: ${{ github.event.inputs.timeout }} run: uv run --with pytest pytest -q -m e2e -s name: Release on: push: tags: - "v*" jobs: verify: uses: ./.github/workflows/ci.yml e2e: needs: verify runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.12" - name: Install uv uses: astral-sh/setup-uv@v4 - name: Run release e2e tests env: WECHAT_E2E_URLS: ${{ vars.RELEASE_E2E_URLS != '' && vars.RELEASE_E2E_URLS || 'https://mp.weixin.qq.com/s/Y7dyRC7CJ09miHWU6LBzBA' }} WECHAT_E2E_TIMEOUT: "300" run: uv run --with pytest pytest -q -m e2e -s publish: needs: [verify, e2e] runs-on: ubuntu-latest environment: pypi permissions: id-token: write steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.12" - name: Install uv uses: astral-sh/setup-uv@v4 - name: Build run: uv build - name: Publish to PyPI uses: pypa/gh-action-pypi-publish@release/v1 # wechat-article-to-markdown Fetch WeChat Official Account articles and convert them to clean Markdown. [English](#features) | [中文](#功能特性) ## Features - Anti-detection fetching with Camoufox - Extract article metadata (title, account name, publish time, source URL) - Conv