Install
openclaw skills install @xiongweixp/wxpublic-fetch从微信公众号抓取文章并保存为本地 Markdown 文件。当用户提到"抓取公众号"、"获取公众号文章"、"下载微信文章"、"爬公众号"、"保存公众号内容",或指定公众号名称和日期范围想要获取文章时,使用此 skill。抓取完成后记录所有保存的 md 文件路径,方便用户后续问答。
openclaw skills install @xiongweixp/wxpublic-fetch用户调用方式示例:
/wxpublic-fetch 拆神
/wxpublic-fetch 拆神 2026-04-15 2026-04-21
/wxpublic-fetch 拆神 2026-04-01 2026-04-21 --output ~/articles
/wxpublic-fetch 拆神 --app-id ak_xxx --secret abc123
用户传入的参数:$ARGUMENTS
告知用户:
[1/5] 正在解析参数...
从 $ARGUMENTS 中提取:
name(必填):公众号名称,第一个非日期、非 --output、非 --app-id、非 --secret 的参数startDate(可选):格式 yyyy-MM-dd,默认为今天往前 7 天endDate(可选):格式 yyyy-MM-dd,默认为今天--output <dir>(可选):文章保存目录,默认为 ~/wxpublic_articles/<name>--app-id <AppID>(可选):平台 AppID,若未提供则读取环境变量 WXPUBLIC_APP_ID--secret <SecureKey>(可选):平台 SecureKey,若未提供则读取环境变量 WXPUBLIC_SECURE_KEY如果参数不足(缺少公众号名称),告知用户正确用法并停止。
如果 app_id 和 secure_key 均为空(参数和环境变量都未设置),向用户说明:
--app-id 和 --secret 参数传入,或设置环境变量 WXPUBLIC_APP_ID / WXPUBLIC_SECURE_KEY;今天的日期可从系统获取:
date +%Y-%m-%d
计算 startDate 与 endDate 之间的天数差:
python3 -c "from datetime import date; print((date.fromisoformat('<endDate>') - date.fromisoformat('<startDate>')).days)"
如果天数差 大于 60 天(约 2 个月),必须先向用户发出提示并等待确认,不得自动继续:
⚠️ 您查询的时间跨度为 X 天(
<startDate>~<endDate>),超过 2 个月,可能涉及大量分页请求,产生较高费用。是否继续?
等待用户明确回复。
告知用户:
[2/5] 正在查询「<name>」的文章列表(<startDate> ~ <endDate>)...
脚本位于本 SKILL.md 所在目录下的 scripts/wxpublic_list.py,执行前先解析出绝对路径(与第四步相同方式)。
python3 "<scripts_dir>/wxpublic_list.py" "<app_id>" "<secure_key>" "<name>" "<startDate>" "<endDate>"
脚本将结果以 JSON 格式输出到 stdout:
{
"urls": ["https://mp.weixin.qq.com/s/...", ...],
"date": ["2026-08-04", ...],
"count": 3
}
date 中每一项是对应文章的发布时间(yyyy-MM-dd),与 urls 按相同下标一一对应。例如 urls[0] 的发布日期为 date[0]。
解析 stdout 中的 JSON:
"error" 字段:
error 值为 "Insufficient balance",提示用户:「账户余额不足,请前往公众号技能网页 https://wxpub.aibana.art/ 充值后重试。」然后停止。count 为 0,告知用户该时间范围内没有找到文章并停止。告知用户:
[3/5] 正在准备保存目录 <output_dir>...
mkdir -p "<output_dir>/images"
告知用户:
[4/5] 正在并行抓取 <count> 篇文章并下载图片,请稍候...
调用 scripts/wxpublic_fetch.py,将 output_dir 作为第一个参数,所有 URL 依次作为后续参数传入。
脚本位于本 SKILL.md 所在目录下的 scripts/wxpublic_fetch.py。执行前先解析出绝对路径。
python3 "<scripts_dir>/wxpublic_fetch.py" "<output_dir>" "<url1>" "<url2>" ...
SAVED:<path> 收集成功路径,FAILED:<url> | <reason> 收集失败信息。告知用户:
[5/5] 正在生成汇总报告...
所有文章处理完毕后,输出汇总:
✓ 已保存 N 篇文章到 <output_dir>
保存的文件:
1. /path/to/article1.md
2. /path/to/article2.md
...
(如有跳过)以下文章处理失败:
- https://mp.weixin.qq.com/s/... (原因)
重要:将所有保存的 .md 文件路径列表存入对话上下文,方便用户后续直接问"帮我总结这些文章"或"这些文章讲了什么"时,能直接读取对应文件内容作答。
mmbiz.qpic.cn)有防盗链,下载时加上 -L 跟随重定向,如果失败则保留原始 URL。/ \ : * ? " < > | 等字符。images/ 统一放在文章保存目录下,所有文章共享该目录(避免重复下载相同图片)。