Skip to main content
Glama
jj-cheng25

weixin-articles-mcp

by jj-cheng25

weixin-articles-mcp

MCP-Server zum Lesen von WeChat (微信) Official Account-Artikeln mit nativer multimodaler Ausgabe — Bilder und Video-Keyframes werden als Inhaltsblöcke zurückgegeben, nicht als URLs.

Für den persönlichen/wissenschaftlichen Gebrauch. Dieses Tool liest nur öffentlich zugängliche Artikel-URLs und umgeht keinerlei Authentifizierungs- oder Anti-Bot-Maßnahmen. Siehe Haftungsausschluss vor der Verwendung.

License: MIT Python 3.10+ GitHub stars

Warum existiert dieses Tool?

Andere Tools, die WeChat-Artikel für LLMs lesen, geben eine Liste von Bild-URLs zurück — Ihr LLM muss darauf klicken, um sie tatsächlich zu sehen, was zusätzliche Roundtrips und Kontext kostet.

Dieser Server gibt die Bilder selbst zurück. Und die Video-Keyframes. Ihr LLM sieht, was Sie sehen, auf einen Schlag.

Tool

Artikeltext

Bilder

Videos

WebFetch (integriert)

✅ (oft durch Anti-Bot blockiert)

❌ Nur URLs

❌

Bestehende WeChat MCPs / Skills

✅

❌ Nur URLs

❌

weixin-articles-mcp

✅

✅ Native Bildblöcke

✅ Keyframes als Bildblöcke

Related MCP server: WeChat Article Parser

Funktionen

  • 📰 Zuverlässiges WeChat-Scraping — reines Python httpx GET, kein Rust-Binary oder Headless-Browser erforderlich

  • 🖼️ Native Bildinhalte — PNG/JPG werden als MCP Image-Blöcke zurückgegeben, GIFs gefiltert, auf 10 pro Artikel begrenzt

  • 🎬 Videoverarbeitung für alle drei Einbettungstypen:

    • WeChat Official Account native Videos (<iframe data-mpvid="wxv_*">): mp4 aus Inline-JS extrahiert, 8 gleichmäßig verteilte Keyframes via ffmpeg

    • Tencent Video (v.qq.com iframes): yt-dlp + ffmpeg Keyframes

    • WeChat Channels (视频号, <mp-common-videosnap>): vollständige Metadaten über die öffentliche batch_get_video_snap API (Dauer, Abmessungen, hochauflösendes Cover, vollständige Beschreibung, Like-Anzahl, Verifizierung des Herausgebers) + Cover-Bild. Der mp4-Stream ist hinter dem WeChat-Finder-Protokoll gesperrt — siehe Warum kein Channels mp4? unten

  • 🕒 Wiederherstellung der Veröffentlichungszeit — extrahiert den Unix-Zeitstempel var ct, den andere Parser übersehen

  • 🪶 Minimale Installation — pip install + optional ffmpeg für Videos; kein Chromium, kein Rust

Installation

# 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

Konfiguration

Claude Desktop / Claude Code

{
  "mcpServers": {
    "weixin-articles": {
      "command": "weixin-articles-mcp"
    }
  }
}

Cursor / Cline

Verwenden Sie dasselbe JSON und fügen Sie es in die MCP-Server-Konfiguration Ihres Clients ein.

Verwendung

Sobald es konfiguriert ist, fügen Sie einfach eine WeChat-Artikel-URL in Ihre Konversation ein:

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

Ihr LLM erhält:

  • Artikel-Metadaten (Titel, Account, Veröffentlichungszeit, Cover-URL)

  • Vollständigen Artikeltext in Markdown

  • Alle Inline-PNG/JPG-Bilder als native Bildinhaltsblöcke

  • Für jedes Video 8 Keyframe-Bilder

Tool-Referenz

read_article(url: str) -> list[content_block]

Gibt eine Liste von MCP-Inhaltsblöcken zurück:

  • [0] — Textblock: Metadaten + Artikeltext-Markdown

  • [1..N] — Bildblöcke: Artikelbilder (max. 10, GIFs gefiltert)

  • Für jedes Video (max. 3):

    • WeChat-nativ oder Tencent: ein Textmarker + 8 Keyframe-Bildblöcke

    • WeChat Channels: ein Textmarker (mit Dauer, Abmessungen, Like-Anzahl, Herausgeber, Beschreibung) + 1 hochauflösender Cover-Bildblock

Bei einem Fehler wird ein einzelner Textblock zurückgegeben, der mit Error: beginnt.

Roadmap

  • [x] WeChat-Artikelabruf mit Anti-Bot-Behandlung

  • [x] Native Bildinhaltsblöcke

  • [x] Extraktion von Keyframes für native WeChat Official Account-Videos

  • [x] Extraktion von Keyframes für Tencent Video

  • [x] Anreicherung von WeChat Channels (视频号)-Metadaten über öffentliche API

  • [ ] ASR-Untertitel via faster-whisper (für native + Tencent-Videos)

  • [ ] Volltextsuche über gelesene Artikel

  • [ ] Account-Abonnement / Benachrichtigungen für neue Artikel

Warum kein Channels mp4?

Kurze Antwort: WeChat Channels (视频号)-Videos in Artikeln legen absichtlich keinen herunterladbaren mp4-Stream für den öffentlichen Webzugriff offen. Das mp4 befindet sich innerhalb des WeChat-Finder-Protokolls, was (a) eine eingeloggte WeChat-Clientsitzung, (b) Finder-spezifische Verschlüsselung (die ersten 128 KB des mp4 sind mit einem festen Schlüssel XOR-verschlüsselt) und (c) das Abfangen des Streams vom WeChat PC-Client auf Netzwerkebene erfordert.

Jeder Open-Source WeChat Channels-Downloader, der existiert — ltaoo/wx_channels_download, qiye45/wechatVideoDownload, putyy/res-downloader, KingsleyYau/WeChatChannelsDownloader und andere — löst dies mit einem MITM HTTPS-Proxy + WeChat PC-Client + Root-CA-Installation. Dieses Modell ist grundlegend inkompatibel mit der Funktionsweise eines MCP-Servers (kein Client, keine Benutzerinteraktion, keine Admin-Installation).

Was wir stattdessen tun: Wir rufen die öffentliche batch_get_video_snap API von WeChat auf (kein Cookie oder Sitzung erforderlich), um Ihrem LLM das nächstbeste zu bieten — hochauflösendes Cover-Bild, vollständige Beschreibung, Dauer, Abmessungen, Like-Anzahl und Verifizierung des Herausgebers. Für die meisten Anwendungsfälle (Lesen und Zusammenfassen von Artikeln) reicht dies aus, um den Inhalt des Videos zu vermitteln.

Wenn Sie speziell die mp4-Datei benötigen, installieren Sie eines der oben genannten dedizierten Tools zusätzlich zu diesem MCP — sie ergänzen sich gegenseitig.

Architektur

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

Mitwirken

Pull Requests sind willkommen. Wir suchen insbesondere Hilfe bei:

  • Behandlung von WeChat Channels (视频号)-URLs

  • Widerstandsfähigkeit gegenüber Vorlagenvarianten von weniger verbreiteten Herausgebern

  • Mehr Test-Fixtures (verschiedene Artikelstile)

Öffnen Sie ein Issue: https://github.com/jj-cheng25/weixin-articles-mcp/issues

Haftungsausschluss

Dieses Tool wird nur für persönliche, pädagogische und wissenschaftliche Zwecke bereitgestellt.

Was dieses Tool tut:

  • Liest öffentlich zugängliche WeChat-Artikel-URLs (mp.weixin.qq.com/s/...) unter Verwendung eines Standard-Browser-User-Agents — denselben Inhalt, den jeder Benutzer mit einem Webbrowser sehen kann

  • Ruft nur öffentliche WeChat-API-Endpunkte auf, die leere Authentifizierungsfelder akzeptieren (d. h. von WeChat so konzipiert, dass sie ohne Login erreichbar sind)

  • Erzwingt ein standardmäßiges Mindestintervall von 1 Sekunde zwischen Anfragen, um zu verhindern, dass das Tool als hochvolumiger Crawler zweckentfremdet wird

Was dieses Tool nicht tut:

  • Cookies, Login-Sitzungen oder irgendeine Form von Benutzeranmeldeinformationen verwenden

  • Technische Schutzmaßnahmen, Anti-Bot-Maßnahmen oder verschlüsselte Streams umgehen (z. B. wird WeChat Channels mp4 absichtlich nicht unterstützt — siehe Warum kein Channels mp4?)

  • WeChats protokollbasierte Schutzmaßnahmen entschlüsseln, zurückentwickeln oder umgehen

  • Abgerufene Inhalte über die unmittelbare Antwort hinaus speichern, zwischenspeichern oder weiterverbreiten

Verantwortlichkeiten des Benutzers:

  • Respektieren Sie die Nutzungsbedingungen von WeChat, wenn Sie dieses Tool verwenden. Die persönliche/wissenschaftliche Nutzung öffentlich zugänglicher Artikel entspricht im Allgemeinen der Art und Weise, wie der Inhalt konsumiert werden soll; hochvolumiges Scraping oder kommerzielle Weiterverbreitung wahrscheinlich nicht.

  • Respektieren Sie das Urheberrecht der abgerufenen Inhalte. Der Artikelinhalt bleibt Eigentum seiner ursprünglichen Autoren und Herausgeber; dieses Tool ruft ihn lediglich ab und leitet ihn zur Inline-Verarbeitung an Ihr LLM weiter.

  • Überfluten Sie mp.weixin.qq.com nicht — halten Sie die Nutzung auf menschlichem Lesetempo. Das Standard-Ratenlimit ist konservativ eingestellt, aber Sie können es weiter verschärfen, indem Sie WEIXIN_FETCH_INTERVAL_S=2.0 (oder höher) in Ihrer Umgebung festlegen.

Die Autoren und Mitwirkenden dieses Projekts lehnen jegliche Haftung ab, die sich aus Missbrauch ergibt. Durch die Nutzung dieser Software akzeptieren Sie die volle Verantwortung dafür, sicherzustellen, dass Ihre Nutzung den geltenden Gesetzen und den Nutzungsbedingungen der Dienste, mit denen sie verbunden ist, entspricht.

Lizenz

MIT — siehe 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