Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add Haochenhust/ch-skills --skill wechat-feedsgit clone --depth 1 https://github.com/Haochenhust/ch-skillsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/haochenhust/ch-skills/wechat-feeds)<a href="https://agentmods.dev/skills/haochenhust/ch-skills/wechat-feeds"><img src="https://agentmods.dev/badge/skills/haochenhust/ch-skills/wechat-feeds/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/haochenhust/ch-skills/wechat-feeds"><img src="https://agentmods.dev/badge/skills/haochenhust/ch-skills/wechat-feeds.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00105 | $0.02230 |
| Opus 5.5 | $0.00042 | $0.00892 |
| Sonnet 5.5 | $0.00021 | $0.00446 |
| Haiku 4.5 | $0.00011 | $0.00223 |
Grade A, and why
wechat-feeds scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
- CDP proxy healthy: `curl -s http://localhost:3456/health` → expect `"connected":true`. If no response, the proxy isn't running — start it (`node cdp-proxy.mjs`) and make sure Chrome is up with remote debugging. How it starts
The opening of the file, as written. The whole thing — 150 lines — stays where its author put it; the contents beside it link to each section on GitHub.
wechat-feeds
Build and maintain a local library of WeChat Official Account (微信公众号) articles. The bundled tool (tool/) logs into the 公众号 admin platform in your own Chrome, then pulls each subscribed account's article list and full text into data/<account>/<date>-<title>.md, with a SQLite index (feeds.db) for querying.
Two things this skill does:
- Set up / maintain the library — install, log in, subscribe to accounts.
- Incrementally update — pull new articles up to now (the
update-feedsworkflow below), including automatic session re-login handling.
How it works (architecture)
CLI (bun, tool/src) ──HTTP──▶ cdp-proxy.mjs ──WebSocket(CDP)──▶ your Chrome (logged into mp.weixin.qq.com)
- The scraper never talks to WeChat directly. It asks the CDP proxy to run
fetch()inside a logged-in mp.weixin.qq.com tab, so every request is same-origin and carries the real login cookie — no separate auth, no easy anti-crawl trip. - Login state is a
token(insession.json) plus the browser's cookie. The token expires often; the cookie lasts a few days.refreshre-derives the token from a still-valid cookie; when the cookie itself dies you re-login in the browser once.
Prerequisites
- Bun (runs the CLI; uses
bun:sqlite) — https://bun.sh - Node.js 22+ or Bun (runs the CDP proxy; needs a global
WebSocket) - Google Chrome you can start with remote debugging
- A WeChat Official Account you can log into
mp.weixin.qq.comwith (any account works — the 图文素材 search reads other public accounts' published articles)
One-time setup
All commands run from the tool/ directory.
cd tool
bun install
# 1. Start Chrome with remote debugging (keep it running).
# macOS:
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222
# Linux: google-chrome --remote-debugging-port=9222
# Windows: chrome.exe --remote-debugging-port=9222
# 2. Start the CDP proxy (separate terminal; keep it running).
node cdp-proxy.mjs # or: bun cdp-proxy.mjs
# 3. Log in — opens the 公众号 login page; scan with WeChat.
bun run src/cli.ts login
# 4. Subscribe to accounts (by name or by a share link to one of their articles).
bun run src/cli.ts add 公众号名称
bun run src/cli.ts add https://mp.weixin.qq.com/s/xxxxx
bun run src/cli.ts list
What ships with it
18 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- tool/.gitignore 492 B
- tool/cdp-proxy.mjs 18 KB runs code
- tool/config.example.json 131 B
- tool/package.json 321 B
- tool/src/api/mp.ts 7.0 KB runs code
- tool/src/api/request.ts 3.7 KB runs code
- tool/src/auth/login.ts 1.9 KB runs code
- tool/src/auth/refresh.ts 2.5 KB runs code
- tool/src/auth/relogin.ts 1.2 KB runs code
- tool/src/auth/session.ts 499 B runs code
- tool/src/cli.ts 6.2 KB runs code
- tool/src/config.ts 2.0 KB runs code
- tool/src/converter/html2md.ts 2.3 KB runs code
- tool/src/converter/images.ts 3.1 KB runs code
- tool/src/fetcher/pull.ts 8.4 KB runs code
- tool/src/notify/notify.ts 1.2 KB runs code
- tool/src/store/db.ts 2.3 KB runs code
- tool/tsconfig.json 327 B
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2mo ago First seen · 150 lines · 105 tokens per session scan A 4e0fa3d03ae0
wechat-feeds is a skill published in the GitHub repository Haochenhust/ch-skills (9 stars, last pushed 3mo ago), licensed MIT. It adds 105 tokens to every session and 2,230 once invoked, about $0.0004 per session on Opus 5.5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
wechat-feeds compared with skills from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| wechat-feedsHaochenhust/ch-skills | Skill | 9 | 3mo ago | MIT | A | 105 | Claude Code |
| storyboard-designerGenNiao-Photograph/storyboard-designer | Skill | 4 | 18d ago | none | A | 129 | Codex |
| baoyu-youtube-transcriptJimLiu/baoyu-skills | Skill | 27k | 4d ago | MIT | A | 107 | Claude Code |
| pydicomK-Dense-AI/scientific-agent-skills | Skill | 56k | 4d ago | MIT | A | 52 | Claude Code, Codex |
| venue-templatesK-Dense-AI/scientific-agent-skills | Skill | 56k | 4d ago | MIT | A | 57 | Claude Code, Codex |
| treatment-plansK-Dense-AI/scientific-agent-skills | Skill | 56k | 4d ago | MIT | A | 62 | Claude Code, Codex |
| prompt-masternidhinjs/prompt-master | Skill | 16k | 15d ago | MIT | B | 78 | Claude Code, Codex |