Skip to main content
Glama
jj-cheng25

weixin-articles-mcp

by jj-cheng25

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.

License: MIT Python 3.10+ GitHub stars

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

WebFetch (integrado)

✅ (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 — httpx GET en Python puro, no requiere binarios de Rust ni navegadores sin interfaz gráfica

  • 🖼️ Contenido de imagen nativo — PNG/JPG devueltos como bloques Image de 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 ffmpeg

    • Vídeo de Tencent (iframes v.qq.com): yt-dlp + fotogramas clave de ffmpeg

    • Canales de WeChat (视频号, <mp-common-videosnap>): metadatos completos a través de la API pública batch_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 ct que otros analizadores pasan por alto

  • 🪶 Instalación mínima — pip install + ffmpeg opcional 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 Linux

Configuració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:

Read https://mp.weixin.qq.com/s/cexkyzQBRDG3uIF6g5cEbQ

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 extraction

Contribució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

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 ver

  • Llama 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 tool
read_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

    1. returned as native image content so the LLM can see them directly.

  • Per-video groups: a text marker video kind=... vid=... keyframes=N followed by N evenly-spaced keyframe images (capped at 3 videos).

On failure the response is a single text block starting with "Error:".

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesA WeChat article URL, format: https://mp.weixin.qq.com/s/xxx

TDQS

A4.2/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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. 1 tool updatev0.1.0
    • First observedread_article

TDQS

A4.2/5.0

Scored across 1 tool

Disambiguation5/5

With only one tool, there is no ambiguity between tools. The single tool 'read_article' has a clear, distinct purpose.

Naming Consistency5/5

The single tool name 'read_article' follows a clear verb_noun pattern. Consistency is not an issue with one tool.

Tool Count4/5

One tool is appropriate for the narrow purpose of reading WeChat articles given a URL. While minimal, it matches the server's focused scope.

Completeness3/5

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

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers