weixin-articles-mcp
weixin-articles-mcp
Servidor MCP para leer artículos de cuentas oficiales de WeChat (微信), con salida multimodal nativa: las imágenes y los fotogramas clave de vídeo se devuelven como bloques de contenido, no como URLs.
Para uso personal/investigación. Esta herramienta solo lee URLs de artículos accesibles públicamente y no elude ninguna medida de autenticación o anti-bot. Consulta el Aviso legal antes de usarla.
Por qué existe esto
Otras herramientas que leen artículos de WeChat para LLMs devuelven una lista de URLs de imágenes: tu LLM tiene que hacer clic para verlas realmente, lo que cuesta viajes de ida y vuelta adicionales y contexto.
Este servidor devuelve las imágenes en sí. Y los fotogramas clave de vídeo. Tu LLM ve lo que tú ves, de una sola vez.
Herramienta | Texto del artículo | Imágenes | Vídeos |
| ✅ (a menudo bloqueado por anti-bot) | ❌ Solo URLs | ❌ |
MCPs / Skills de WeChat existentes | ✅ | ❌ Solo URLs | ❌ |
weixin-articles-mcp | ✅ | ✅ Bloques de imagen nativos | ✅ Fotogramas clave como bloques de imagen |
Related MCP server: WeChat Article Parser
Características
📰 Raspado fiable de WeChat —
httpxGET en Python puro, no requiere binarios de Rust ni navegadores sin interfaz gráfica🖼️ Contenido de imagen nativo — PNG/JPG devueltos como bloques
Imagede MCP, GIFs filtrados, limitados a 10 por artículo🎬 Gestión de vídeo para los tres tipos de incrustación:
Vídeos nativos de cuentas oficiales de WeChat (
<iframe data-mpvid="wxv_*">): mp4 extraído de JS en línea, 8 fotogramas clave espaciados uniformemente mediante ffmpegVídeo de Tencent (iframes
v.qq.com): yt-dlp + fotogramas clave de ffmpegCanales de WeChat (视频号,
<mp-common-videosnap>): metadatos completos a través de la API públicabatch_get_video_snap(duración, dimensiones, portada de alta resolución, descripción completa, recuento de 'me gusta', verificación del editor) + imagen de portada. El flujo mp4 está bloqueado detrás del protocolo finder de WeChat — ver ¿Por qué no hay mp4 de Canales? a continuación
🕒 Recuperación de la hora de publicación — extrae la marca de tiempo Unix
var ctque otros analizadores pasan por alto🪶 Instalación mínima —
pip install+ffmpegopcional para vídeo; sin Chromium, sin Rust
Instalación
# 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 LinuxConfiguración
Claude Desktop / Claude Code
{
"mcpServers": {
"weixin-articles": {
"command": "weixin-articles-mcp"
}
}
}Cursor / Cline
El mismo JSON, colócalo en la configuración del servidor MCP de tu cliente.
Uso
Una vez configurado, simplemente pega una URL de un artículo de WeChat en tu conversación:
Tu LLM recibirá:
Metadatos del artículo (título, cuenta, hora de publicación, URL de portada)
Cuerpo completo del artículo en Markdown
Todas las imágenes PNG/JPG en línea como bloques de contenido de imagen nativos
Para cada vídeo, 8 imágenes de fotogramas clave
Referencia de herramientas
read_article(url: str) -> list[content_block]
Devuelve una lista de bloques de contenido MCP:
[0]— bloque de texto: metadatos + markdown del cuerpo del artículo[1..N]— bloques de imagen: imágenes del artículo (máximo 10, GIFs filtrados)Para cada vídeo (máximo 3):
Nativo de WeChat o Tencent: un marcador de texto + 8 bloques de imagen de fotogramas clave
Canales de WeChat: un marcador de texto (con duración, dimensiones, recuento de 'me gusta', editor, descripción) + 1 bloque de imagen de portada de alta resolución
En caso de error, devuelve un único bloque de texto que comienza con Error:.
Hoja de ruta
[x] Obtención de artículos de WeChat con gestión anti-bot
[x] Bloques de contenido de imagen nativos
[x] Extracción de fotogramas clave de vídeo nativo de cuentas oficiales de WeChat
[x] Extracción de fotogramas clave de vídeo de Tencent
[x] Enriquecimiento de metadatos de Canales de WeChat (视频号) a través de la API pública
[ ] Subtítulos ASR mediante faster-whisper (para vídeos nativos + Tencent)
[ ] Búsqueda de texto completo en artículos leídos
[ ] Suscripción a cuentas / notificaciones de nuevos artículos
¿Por qué no hay mp4 de Canales?
Respuesta corta: los vídeos de los Canales de WeChat (视频号) en los artículos no exponen intencionadamente un flujo mp4 descargable para el acceso web público. El mp4 reside dentro del protocolo finder de WeChat, que requiere (a) una sesión de cliente de WeChat iniciada, (b) cifrado específico del finder (los primeros 128 KB del mp4 están cifrados con XOR con una clave fija), y (c) interceptar el flujo desde el cliente de PC de WeChat a nivel de red.
Cada descargador de Canales de WeChat de código abierto que existe — ltaoo/wx_channels_download, qiye45/wechatVideoDownload, putyy/res-downloader, KingsleyYau/WeChatChannelsDownloader y otros — resuelve esto con un proxy HTTPS MITM + cliente de PC de WeChat + instalación de CA raíz. Ese modelo es fundamentalmente incompatible con cómo funciona un servidor MCP (sin cliente, sin interacción del usuario, sin instalación de administrador).
Lo que hacemos en su lugar: llamar a la API pública batch_get_video_snap de WeChat (no requiere cookie ni sesión) para darle a tu LLM lo siguiente mejor: imagen de portada de alta resolución, descripción completa, duración, dimensiones, recuento de 'me gusta' y verificación del editor. Para la mayoría de los casos de uso (leer y resumir artículos), esto es suficiente para transmitir la esencia del vídeo.
Si necesitas específicamente el archivo mp4, instala una de las herramientas dedicadas anteriores junto con este MCP; se complementan entre sí.
Arquitectura
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 extractionContribución
Las PR son bienvenidas. Buscamos ayuda especialmente en:
Gestión de URLs de Canales de WeChat (视频号)
Resiliencia a variantes de plantillas de editores menos comunes
Más pruebas (diferentes estilos de artículos)
Abre un issue: https://github.com/jj-cheng25/weixin-articles-mcp/issues
Aviso legal
Esta herramienta se proporciona solo para uso personal, educativo y de investigación.
Lo que hace esta herramienta:
Lee URLs de artículos de WeChat accesibles públicamente (
mp.weixin.qq.com/s/...) utilizando un User-Agent de navegador estándar: el mismo contenido que cualquier usuario con un navegador web puede verLlama solo a puntos finales de la API pública de WeChat que aceptan campos de autenticación vacíos (es decir, diseñados por WeChat para ser accesibles sin inicio de sesión)
Aplica un intervalo mínimo predeterminado de 1 segundo entre solicitudes para evitar que la herramienta se reutilice como un rastreador de alto volumen
Lo que esta herramienta no hace:
Usar cookies, sesiones de inicio de sesión o cualquier forma de credencial de usuario
Eludir ninguna protección técnica, medida anti-bot o flujo cifrado (por ejemplo, el mp4 de los Canales de WeChat está intencionadamente no soportado — ver ¿Por qué no hay mp4 de Canales?)
Descifrar, realizar ingeniería inversa o eludir las protecciones a nivel de protocolo de WeChat
Almacenar, guardar en caché o redistribuir contenido obtenido más allá de la respuesta inmediata
Responsabilidades del usuario:
Respeta los Términos de Servicio de WeChat al usar esta herramienta. El uso personal/de investigación de artículos accesibles públicamente generalmente está alineado con la forma en que se pretende consumir el contenido; el raspado de alto volumen o la redistribución comercial probablemente no lo estén.
Respeta los derechos de autor del contenido obtenido. El contenido del artículo sigue siendo propiedad de sus autores y editores originales; esta herramienta solo lo obtiene y lo reenvía a tu LLM para su procesamiento en línea.
No satures mp.weixin.qq.com — mantén el uso a velocidades de lectura humana. El límite de velocidad predeterminado se establece de forma conservadora, pero puedes ajustarlo aún más configurando
WEIXIN_FETCH_INTERVAL_S=2.0(o superior) en tu entorno.
Los autores y colaboradores de este proyecto renuncian a toda responsabilidad derivada del mal uso. Al utilizar este software, aceptas la plena responsabilidad de garantizar que tu uso cumpla con las leyes aplicables y los términos de servicio de los servicios a los que se conecta.
Licencia
MIT — ver LICENSE.
Available Tools
1 toolread_articleA
Read a WeChat Official Account article (mp.weixin.qq.com/s/...) and return its content as a multimodal block list:
First text block: title, account, publish time, cover URL, video count, and the full article body in Markdown.
Image blocks: the article's PNG/JPG images (GIFs filtered out, capped at
returned as native image content so the LLM can see them directly.
Per-video groups: a text marker
video kind=... vid=... keyframes=Nfollowed by N evenly-spaced keyframe images (capped at 3 videos).
On failure the response is a single text block starting with "Error:".
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | A WeChat article URL, format: https://mp.weixin.qq.com/s/xxx |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, the description fully discloses behavior: return format (title, account, time, cover, video count, Markdown body), image handling (GIFs filtered, cap at 10), video keyframes (cap at 3), and error format (single text block starting with 'Error:'). This is comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is detailed but efficiently structured: a concise overview followed by a well-organized list of return components. Every sentence adds value, though slightly verbose due to thoroughness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has one parameter, no output schema, and no annotations, the description provides complete guidance: input format, full output structure with all edge cases (errors, caps, filtering). An agent can invoke it correctly without additional info.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage and a single parameter 'url' already described in schema, the description adds only marginal value by repeating the URL format and specifying it's for WeChat account articles. Baseline meets expectation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads a WeChat Official Account article and returns its content as a multimodal block list. It specifies the URL format and details the output structure, leaving no ambiguity about the tool's function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly provide when or when not to use this tool, nor does it mention alternatives (though none exist in context). Usage is implied but not formally guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v0.1.0- First observed
read_article
TDQS
Scored across 1 tool
With only one tool, there is no ambiguity between tools. The single tool 'read_article' has a clear, distinct purpose.
The single tool name 'read_article' follows a clear verb_noun pattern. Consistency is not an issue with one tool.
One tool is appropriate for the narrow purpose of reading WeChat articles given a URL. While minimal, it matches the server's focused scope.
The tool reads articles thoroughly, but lacks any discovery or listing capabilities. For a server named 'weixin-articles-mcp', the absence of search or listing is a notable gap.
Maintenance
Related MCP Connectors
Read WeChat public account articles via MCP. 99.89% anti-scraping success, 50-87% token compression.
WeChat video and image posts, comments, users, transcripts, Official Account articles and stats.
Read any public web page as clean Markdown for LLMs, with its metadata. Paid per call, x402.
Multimodal video analysis MCP — transcription, vision, and OCR for any video URL.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables parsing and extracting content from WeChat public account articles using browser simulation, supporting multiple output formats (JSON, Markdown, HTML) and media resource extraction.-
- FlicenseNot gradedqualityDmaintenanceParses WeChat public account articles to extract metadata, content, and generate AI-powered summaries with semantic analysis, viewpoint extraction, and structure analysis capabilities.-
- AlicenseNot gradedqualityFmaintenanceEnables reading and extracting content from WeChat public account articles using browser automation, allowing AI models to analyze and summarize WeChat articles through natural language requests.457MIT
- FlicenseNot gradedqualityDmaintenanceExtracts title, author, and content (in Markdown format) from WeChat official account articles via URL, supporting both MCP stdio and HTTP server modes.1-