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 zjp1997720/zhijian-skills --skill wxmp-article-harvestergit clone --depth 1 https://github.com/zjp1997720/zhijian-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/zjp1997720/zhijian-skills/wxmp-article-harvester)<a href="https://agentmods.dev/skills/zjp1997720/zhijian-skills/wxmp-article-harvester"><img src="https://agentmods.dev/badge/skills/zjp1997720/zhijian-skills/wxmp-article-harvester/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/zjp1997720/zhijian-skills/wxmp-article-harvester"><img src="https://agentmods.dev/badge/skills/zjp1997720/zhijian-skills/wxmp-article-harvester.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
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.00111 | $0.01487 |
| Opus 5 | $0.00056 | $0.00744 |
| Sonnet 5 | $0.00022 | $0.00297 |
| Haiku 4.5 | $0.00011 | $0.00149 |
Grade A, and why
wxmp-article-harvester scanned grade A with 0 findings 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 12d 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.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 88 lines — stays where its author put it; the contents beside it link to each section on GitHub.
wxmp-article-harvester
目标:把公开公众号文章稳定加工成可检索、可审计、可恢复的本地资料包。
运行架构
preflight.py只检查依赖,不自动安装或升级任何软件。wcx_run.py搜索公众号、刷新登录态、抓元数据并导出索引。harvest_wxmp.py过滤日期和标题,复用一个 Playwright 上下文提取正文并保留图片顺序。- 首次命中微信验证码或风控页后打开浏览器熔断,停止本轮后续页面请求;刷新失败时保留已通过质量门的旧正文。
- 没有可信正文时标记
partial。只有用户明确授权付费和第三方 URL 传输后,才加--allow-metaso。
开始前
运行预检:
python3 <skill-root>/scripts/preflight.py --json
缺少依赖时明确报告并停止。安装命令见 README.md。登录过期由 wcx_run.py 打开浏览器刷新一次;token 不打印,cookie 不进入进程参数。
意图路由
| 用户意图 | 执行 |
|---|---|
| 搜索公众号 | python3 scripts/wcx_run.py -- search "账号名" |
| 最近文章索引 | python3 scripts/harvest_wxmp.py --account "账号名" --limit 50 --no-fulltext |
| 日期范围全文 | python3 scripts/harvest_wxmp.py --account "账号名" --from-date YYYY-MM-DD --to-date YYYY-MM-DD --fulltext |
| 教程类文章 | 在日期范围命令后加 `--title-regex '(教程 |
| 年度/深历史 | 首轮加 --batch,冷却后只用 --resume;状态会恢复账号、范围和全文策略 |
| 保存单篇链接 | python3 scripts/browser_reader.py --url "https://mp.weixin.qq.com/s/..." --output-dir "目录" |
没有指定数量时默认最近 50 篇。最近 N 天默认最多取 min(N × 8, 80) 篇元数据。
硬规则
- 只接受
https://mp.weixin.qq.com/s...公开文章链接;拒绝其他域名、协议和带用户信息的 URL。 - 所有
wcx search/fetch/list/export/status都走wcx_run.py。运行时禁止自动pip install或强制升级。 --limit、--batch-size的代码硬上限都是 80。深历史任务使用 offset 游标分批,每轮最多 80 篇,并校验远端总数、头部文章 ID 和上一批边界 ID。- 只补正文或重新筛选时加
--skip-fetch,避免重复触发微信频控。 - 默认不调用 Metaso。用户明确接受付费和把文章 URL 发给第三方后,才使用
--allow-metaso。 wcx摘要占位、正文尚未抓取、微信页面壳、通用Video页面和低信息量结果都不能标记成功。- 正文成功后同步更新标题、页面发布时间、作者、来源 URL 和提取通道。索引保存相对路径,迁移目录后仍可用。
- 默认输出到系统用户数据目录下的
wxmp-article-harvester/exports/<公众号>/;可用WXMP_HARVEST_HOME覆盖。 - 文章仅用于用户授权的研究、学习和归档。保留原文 URL、作者和发布时间;不把抓取结果包装成可再分发版权。
分批与恢复
# 第一轮:按真实 offset 抓一批
python3 scripts/harvest_wxmp.py --account "账号名" --year 2025 --fulltext --batch --batch-size 60
# 到达 .harvest-state.json 的 resume_after 后继续
python3 scripts/harvest_wxmp.py --resume
存在多个待恢复账号时,--resume 会停止并要求补 --account 或 --output-dir。监控 JSON 中的 status、task_id 和 batch.completion_reason;complete 才代表本次契约完成,cursor_drift 必须停止并重新建任务。
What ships with it
12 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.
- agents/openai.yaml 288 B
- evals/evals.json 3.5 KB
- references/troubleshooting.md 6.8 KB
- scripts/browser_reader.py 10 KB runs code
- scripts/harvest_wxmp.py 60 KB runs code
- scripts/metaso_reader.py 6.2 KB runs code
- scripts/preflight.py 3.5 KB runs code
- scripts/refresh_token_playwright.py 4.0 KB runs code
- scripts/runtime_paths.py 5.1 KB runs code
- scripts/wcx_batch_fetch.py 6.1 KB runs code
- scripts/wcx_run.py 5.0 KB runs code
- tests/test_harvester.py 15 KB runs code
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.
- 12d ago First seen · 88 lines · 111 tokens per session scan A 49136af18352
wxmp-article-harvester is a skill published in the GitHub repository zjp1997720/zhijian-skills (680 stars, last pushed 7d ago), licensed MIT. It adds 111 tokens to every session and 1,487 once invoked, about $0.0006 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
systematic-debugging
Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes.
local-ai-agents
Build local-first AI agents that run entirely on a developer workstation with Microsoft Foundry Local and Qwen function-calling models. Covers Small Language Models (SLMs), the OpenAI-compatible local endpoint, sandboxed local tools, local RAG with Chroma, local MCP servers, hybrid cloud/local routing, and the…
next-cache-components-adoption
Turn on Cache Components in a Next.js app and resolve the blocking routes it surfaces. Use when the user wants to enable, adopt, or migrate to Cache Components, flip the cacheComponents flag, work through a flood of blocking-prerender / instant validation errors, run the cache-components-instant-false codemod, or…
chat-pet-sprite-creation
Use when creating or changing VS Code chat pet sprite art, sprite sheets, state animations, eye treatments, Stable/Insiders variants, or pet transitions under src/vs/workbench/contrib/chat/browser/widget/media/chatPet.
cpu-profile-analysis
Analyze V8/Chrome CPU profiles (.cpuprofile) and DevTools trace files (Trace-.json). Use when: profiling performance, investigating slow functions, comparing code paths, finding bottlenecks, analyzing timeToRequest, understanding call trees from sampling profiler data, analyzing layout/paint/rendering, investigating…
insight-error-page
Write or audit an insight-kind error page for the Next.js dev overlay. Use when creating a new errors/ .mdx page, auditing an existing one, or checking that a page matches the framework fix cards. Covers page structure, title alignment, FixCard cards with Copy prompt button, code snippets, terminology verification…