wechat-article-reader

Read and summarize WeChat Official Account articles (微信公众号文章) by URL. Bypasses WeChat's anti-bot detection to extract full article text, title, author, date, and optionally capture a full-page screenshot with lazy-loaded images. Use when a user shares a mp.weixin.qq.com link and asks to read, summarize, analyze, or screenshot it.

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "wechat-article-reader" with this command: npx skills add reedchan7/wxmp-reader

WeChat Article Reader

Read and summarize WeChat Official Account articles that web_fetch and standard headless browsers cannot access.

Recommended Workflow

When a user shares a WeChat article link:

  1. Fetch textnode scripts/fetch_wechat.js <url> --json (required)
  2. Take screenshotnode scripts/screenshot_wechat.js <url> --out=/tmp/wechat_article.png (best-effort, run in parallel with step 1)
  3. Send screenshotmessage(action=send, media=/tmp/wechat_article.png) if step 2 succeeded; skip silently if it failed
  4. Send summary — text summary following the output format below
  5. Clean up — delete the temporary screenshot file

Steps 1 and 2 can run in parallel. The screenshot is recommended but not mandatory — if it fails (timeout, rendering issue, etc.), proceed with the text summary only. Do not block the response waiting for a screenshot that may never succeed.

Why Standard Methods Fail

WeChat blocks bots by checking four signals. This skill defeats all four:

SignalStandard browserThis skill
Chrome binaryChromium (bot fingerprint)Real Chrome
User-AgentDesktop/headlessiPhone Safari
navigator.webdrivertrue (exposed)undefined (hidden)
Blink automation flagPresentDisabled

Prerequisites

Two dependencies are required. The scripts auto-detect their paths but do NOT auto-install them.

1. Google Chrome (stable)

# Check
which google-chrome-stable

# Install (Debian/Ubuntu)
wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | apt-key add -
echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google-chrome.list
apt-get update && apt-get install -y google-chrome-stable

# macOS
brew install --cask google-chrome

2. playwright-core

# Check (auto-discovered from nvm paths)
node -e "require('playwright-core')"

# Install if missing
npm install -g playwright-core

If either dependency is missing, the scripts will exit with a clear error message and the install command above.

Standard Workflow (Always Follow This Order)

When a user shares a mp.weixin.qq.com link and asks to read/summarize/explain it, execute these steps every time — no skipping:

  1. Fetch text — run fetch_wechat.js --json to get title, author, date, content
  2. Take screenshot — run screenshot_wechat.js --out=/tmp/wechat_screenshot.png
  3. Send screenshot — use message(action=send, media=/tmp/wechat_screenshot.png) to push the image to the channel
  4. Send text summary — reply with the two-part format (📌 Overview + 🔎 Deep Dive)
  5. Delete temp filerm /tmp/wechat_screenshot.png

Steps 1 and 2 can run in parallel. Step 3 must complete before step 4 (image first, text second).

Never skip the screenshot. Even if the user only asks to "explain" or "summarize" — always send the screenshot alongside the text. It gives visual context and confirms the article was actually read.


Fetching Article Text

# Basic text output
node scripts/fetch_wechat.js "https://mp.weixin.qq.com/s/XXXXX"

# JSON output (title + author + date + content)
node scripts/fetch_wechat.js "https://mp.weixin.qq.com/s/XXXXX" --json

# Limit output length
node scripts/fetch_wechat.js "https://mp.weixin.qq.com/s/XXXXX" --max-chars=5000

# Custom Chrome path
node scripts/fetch_wechat.js "https://mp.weixin.qq.com/s/XXXXX" --chrome-path=/usr/bin/chromium

Taking a Screenshot

Captures the full article area (title + author + body), with CSS injection to hide WeChat promotional footers, action bars, and contact sections. All fixed/sticky DOM elements are hidden before capture to prevent overlay artifacts.

Selector priority: #js_article.rich_media_wrp#js_content (fallback, no title).

The script auto-scrolls to bottom before capture to trigger lazy-loaded images.

# Default output: /tmp/wechat_screenshot.png
node scripts/screenshot_wechat.js "https://mp.weixin.qq.com/s/XXXXX"

# Custom path
node scripts/screenshot_wechat.js "https://mp.weixin.qq.com/s/XXXXX" --out=/tmp/article.png

Important: Uses waitUntil: 'load' (not networkidle) — WeChat pages have background requests that never settle, causing networkidle to time out.

After sending the screenshot, delete the temporary file.

Summarizing Articles — Output Format

Two-part structure. Match the user's language — respond in Chinese if the user writes in Chinese, English if English.

Both parts cover the same content at different depths. Same voice throughout. Keep it objective: report only what the article says — no personal session context, no action items, no subjective opinions.

Part 1 — Summary (📌 Overview)

  • Open with 1–2 sentences: what happened and why it matters
  • Follow with 3–5 bullet points (▸) — the most important points
  • Each bullet: one sentence, specific enough to be informative, short enough to scan

Part 2 — Details (🔎 Deep Dive)

  • Must cover every item from Part 1, in the same order — no cherry-picking, no reordering
  • Open with a transition sentence that connects back to Part 1
  • Each item: grouped under a ▸ topic header + 2–3 sentences covering mechanism, data/quotes, and the author's angle
  • Close with 1–2 sentences capturing the article's core thesis
  • Aim for 200–400 words depending on article length. Do NOT reproduce the full article.

Example Output (English article)

📌 Overview

OpenClaw 2026.3.7 upgrades memory management from a closed architecture to a
plugin-based system. With the lossless-claw plugin, long-context performance
now surpasses Claude Code for the first time on the OOLONG benchmark.

▸ New ContextEngine plugin slot lets third parties replace built-in lossy compression
▸ ACP channel bindings now persist across server restarts
▸ Toolchain improvements: search accuracy, local model inference, Docker deployment
▸ Security layer adds prompt-injection protection and credential safeguards
▸ Breaking change: gateway.auth.mode must be explicitly set when both auth methods are configured


🔎 Deep Dive

The following expands on each point from the overview above.

▸ Pluggable Memory
lossless-claw uses a DAG structure for lossless compression, scoring 74.8 on
OOLONG vs. Claude Code's 70.3 — a gap that widens with longer context. One
engineer who tested it for a week called the improvement "conservative to call
it 'working well'."

▸ Persistent ACP Bindings
Discord and Telegram topics can now bind to a dedicated agent, with the
binding surviving restarts and context carrying over. Each topic can route
to a different agent independently.

▸ Toolchain Upgrades
Perplexity replaced with Search API, adding language/region/time filters.
Ollama streaming no longer interleaves reasoning traces. Docker now ships
with pre-packaged extension dependencies.

▸ Security Hardening
New prependSystemContext / appendSystemContext hooks added alongside prompt
injection protection and credential-scraping prevention.

▸ Breaking Change
If both gateway.auth.token and gateway.auth.password are set, you must now
explicitly specify gateway.auth.mode — otherwise the gateway may fail to start.

Overall, this release marks a shift from a monolithic architecture toward a
plugin ecosystem where the community can replace and extend core components.

Limitations

Cannot read:

  • Deleted articles
  • Paid/subscriber-only content
  • Followers-only articles (require WeChat login)

Transient CAPTCHA may appear rarely — retrying usually works.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

Video Call Agent

Start a video call with a real-time AI avatar using the Runway Characters API. The agent sends the user a call invite link — for standups, urgent alerts, che...

Registry SourceRecently Updated
Automation

Clawshake

B2B deal discovery for AI agents. Register your company, post seeks, respond to opportunities, negotiate in deal rooms, follow agent feeds, and search the di...

Registry SourceRecently Updated
Automation

Weixin Task Workbench

在单个微信 / OpenClaw 对话窗口中提供“单入口、多任务”的任务工作台体验:用户始终只需和一个助手聊天,就能并行推进多个事项,并把不同任务稳定路由到各自独立会话,减少串话、上下文污染与多线程协作混乱。适用于微信中的长期协作、任务切换、任务总结、任务归档与任务生命周期管理;当用户发送“任务列表 / 新建任务...

Registry SourceRecently Updated
Automation

自动记忆进化

Automatically summarize daily discussions and update memory files. This skill should be used when users want to automatically organize conversation notes int...

Registry SourceRecently Updated