loading…
Search for a command to run...
loading…
Read WeChat (微信) Official Account articles with native multimodal output — body, images, and video keyframes as MCP content blocks. Handles all three embed type
Read WeChat (微信) Official Account articles with native multimodal output — body, images, and video keyframes as MCP content blocks. Handles all three embed types: Tencent Video (yt-dlp keyframes), WeChat-native (mp4 keyframes), Channels/视频号 (metadata + cover via public API).
MCP server for reading WeChat (微信) Official Account articles, with native multimodal output — images and video keyframes returned as content blocks, not URLs.
For personal/research use. This tool reads only publicly accessible article URLs and does not bypass any authentication or anti-bot measures. See Disclaimer before using.
License: MIT Python 3.10+ GitHub stars
Other tools that read WeChat articles for LLMs return a list of image URLs — your LLM has to click through to actually see them, costing extra round-trips and context.
This server returns the images themselves. And the video keyframes. Your LLM sees what you see, in one shot.
| Tool | Article text | Images | Videos |
|---|---|---|---|
WebFetch (built-in) |
✅ (often blocked by anti-bot) | ❌ URLs only | ❌ |
| Existing WeChat MCPs / Skills | ✅ | ❌ URLs only | ❌ |
| weixin-articles-mcp | ✅ | ✅ Native image blocks | ✅ Keyframes as image blocks |
httpx GET, no Rust binary or headless browser requiredImage blocks, GIFs filtered, capped at 10 per article<iframe data-mpvid="wxv_*">): mp4 extracted from inline JS, 8 evenly-spaced keyframes via ffmpegv.qq.com iframes): yt-dlp + ffmpeg keyframes<mp-common-videosnap>): full metadata via the public batch_get_video_snap API (duration, dimensions, hi-res cover, full description, like count, publisher verification) + cover image. mp4 stream is locked behind WeChat's finder protocol — see Why no Channels mp4? belowvar ct Unix timestamp that other parsers misspip install + optional ffmpeg for video; no Chromium, no Rust# Core (article + images)
pip install weixin-articles-mcp
# With video keyframe support
pip install "weixin-articles-mcp[video]"
brew install ffmpeg # or apt install ffmpeg on Linux
{
"mcpServers": {
"weixin-articles": {
"command": "weixin-articles-mcp"
}
}
}
Same JSON, drop into the MCP server config of your client.
Once configured, just paste a WeChat article URL into your conversation:
Your LLM will receive:
read_article(url: str) -> list[content_block]Returns a list of MCP content blocks:
[0] — text block: metadata + article body markdown[1..N] — image blocks: article images (max 10, GIFs filtered)On failure, returns a single text block starting with Error:.
Short answer: WeChat Channels (视频号) videos in articles intentionally don't expose a downloadable mp4 stream to public web access. The mp4 lives inside WeChat's finder protocol, which requires (a) a logged-in WeChat client session, (b) finder-specific encryption (the first 128KB of the mp4 is XOR-encrypted with a fixed key), and (c) intercepting the stream from the WeChat PC client at network level.
Every open-source WeChat Channels downloader in the wild — ltaoo/wx_channels_download, qiye45/wechatVideoDownload, putyy/res-downloader, KingsleyYau/WeChatChannelsDownloader and others — solves this with a MITM HTTPS proxy + WeChat PC client + root CA installation. That model is fundamentally incompatible with how an MCP server runs (no client, no user interaction, no admin install).
What we do instead: call WeChat's public batch_get_video_snap API (no cookie or session required) to give your LLM the next-best thing — high-resolution cover image, full description, duration, dimensions, like count, and publisher verification. For most use cases (reading and summarizing articles), this is enough to convey the video's substance.
If your workflow really needs the mp4 file (archiving, transcoding, frame-perfect inspection), pair this MCP with wx_channels_download, the most active open-source Channels downloader:
| Tool | Role |
|---|---|
| weixin-articles-mcp (this) | LLM reads article body + images + native/Tencent video keyframes + Channels metadata (cover, duration, description) |
| wx_channels_download | You download the actual Channels mp4 by playing it in WeChat PC client (MITM proxy intercepts the stream) |
Suggested flow:
wx_channels_download running, hit play, click its injected download button.This division keeps the MCP itself zero-side-effects (only reads public URLs, no MITM, no client) while still giving you a path to the full mp4 when you actually need it.
src/weixin_articles_mcp/
├── server.py # FastMCP entrypoint, tool registration
├── fetcher.py # httpx GET with browser UA
├── parser.py # WeChat DOM extraction (BeautifulSoup + lxml)
├── markdown.py # HTML → Markdown (markdownify subclass)
└── media.py # Image download + video download/keyframe extraction
PRs welcome. Particularly looking for help on:
Open an issue: https://github.com/jj-cheng25/weixin-articles-mcp/issues
This tool is provided for personal, educational, and research use only.
What this tool does:
mp.weixin.qq.com/s/...) using a standard browser User-Agent — the same content any user with a web browser can viewWhat this tool does not do:
User responsibilities:
WEIXIN_FETCH_INTERVAL_S=2.0 (or higher) in your environment.The authors and contributors of this project disclaim all liability arising from misuse. By using this software you accept full responsibility for ensuring your usage complies with applicable laws and the terms of service of the services it connects to.
MIT — see LICENSE.
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"jj-cheng25-weixin-articles-mcp": {
"command": "npx",
"args": []
}
}
}pro-tip
Поставил jj-cheng25/weixin-articles-mcp? Скажи Claude: «запомни почему я установил jj-cheng25/weixin-articles-mcp и что хочу попробовать» — попадёт в твой Vault.
как это работает →