微信公众号工具包
微信公众号一站式工具包 — 集成文章搜索、文章下载、AI洗稿改写、公众号发布四大功能。当用户需要搜索/下载/改写/发布微信公众号文章时使用。
微信公众号一站式工具包 — 集成文章搜索、文章下载、AI洗稿改写、公众号发布四大功能。当用户需要搜索/下载/改写/发布微信公众号文章时使用。
Real data. Real impact.
Growing
Developers
Per week
Open source
Skills give you superpowers. Install in 30 seconds.
集成四大功能模块:搜索 → 下载 → 洗稿 → 发布,覆盖公众号内容创作全流程。
| 模块 | 功能 | 触发词示例 |
|---|---|---|
| 🔍 搜索 | 按关键词搜索公众号文章 | "搜XX的公众号文章" |
| 📰 下载 | 下载文章内容/图片/视频 | "下载这篇公众号文章" |
| ✍️ 洗稿 | AI去痕迹+原创改写 | "帮我洗稿/改写这篇文章" |
| 📱 发布 | 发布Markdown到草稿箱 | "发布到公众号" |
通过搜狗微信搜索获取公众号文章列表,支持抓取正文。
npm install -g cheerio
# 基础搜索 node {baseDir}/scripts/search/search_wechat.js "关键词"指定数量
node {baseDir}/scripts/search/search_wechat.js "关键词" -n 15
保存到文件
node {baseDir}/scripts/search/search_wechat.js "关键词" -n 20 -o result.json
解析真实链接
node {baseDir}/scripts/search/search_wechat.js "关键词" -n 5 -r
抓取文章正文(自动启用 -r)
node {baseDir}/scripts/search/search_wechat.js "关键词" -n 5 -c
query:搜索关键词(必填)-n, --num:返回数量(默认 10,最大 50)-o, --output:输出 JSON 文件路径-r, --resolve-url:解析微信文章真实链接-c, --fetch-content:抓取文章正文内容(自动启用 -r)content:正文内容(使用 -c 时)word_count:字数统计(使用 -c 时)输入公众号文章链接,自动下载内容(Markdown+HTML)、配图和视频。
cd {baseDir}/scripts/downloader && npm install
# 查看当前配置 node {baseDir}/scripts/downloader/download.js --show-config设置默认下载路径(仅需一次)
node {baseDir}/scripts/downloader/download.js --set-output ~/Downloads/wechat-articles
"isDefault": true → 尚未配置,需询问用户"isDefault": false → 已配置,告知用户当前路径# 使用默认路径 node {baseDir}/scripts/downloader/download.js "<文章URL>"临时指定路径
node {baseDir}/scripts/downloader/download.js "<文章URL>" --output <临时目录>
跳过图片/视频
node {baseDir}/scripts/downloader/download.js "<文章URL>" --no-image node {baseDir}/scripts/downloader/download.js "<文章URL>" --no-video
<下载目录>/<文章标题>/ ├── content/article.html # 完整 HTML ├── metadata.json # 标题、作者、时间等 ├── images/ # 所有配图 └── videos/ # 所有视频/音频
npm install(首次)将文章改写为自然、原创的风格,去除 AI 写作痕迹,提升原创度。
为每篇文章生成 3-5 个备选标题,涵盖:
将原文开头转换为以下风格之一:
改写完成后,逐项检查:
| # | 检查项 | 处理方式 |
|---|---|---|
| 1 | 意义膨胀句 | 替换为具体事实 |
| 2 | 虚假权威引用 | 写明来源或删除 |
| 3 | 伪深度动词 | 改为具体动作 |
| 4 | 广告语气 | 客观描述 |
| 5 | 模板段落(挑战→机遇→展望) | 删除模板,保留结论 |
| 6 | AI 高频词密集出现 | 替换为日常用语 |
| 7 | 负向并列滥用(不仅…而且…) | 直接表达 |
| 8 | 三段式强拆 | 保留重点,删填充项 |
| 9 | 同义词机械轮换 | 同一概念固定用词 |
| 10 | 破折号滥用 | 改为句号或逗号 |
| 11 | 加粗强调滥用 | 去掉不必要强调 |
| 12 | 列表模板(X:…) | 合并为自然段 |
| 13 | 概念堆砌标题 | 改为口语化标题 |
| 14 | Emoji 泛滥 | 除非指定风格,默认删除 |
| 15 | 聊天语残留 | 删除 |
| 16 | 知识截止声明 | 删除 |
| 17 | 过度讨好语气 | 客观回应 |
| 18 | 填充短语 | 删除 |
| 19 | 过度模糊(可能会、或许) | 改为条件判断 |
| 20 | 空洞结尾 | 改为实际结论 |
| 21 | 假区间表达(从…到…) | 列举具体事实 |
改写成功的标志:
一键发布 Markdown 到微信公众号草稿箱,基于 wenyan-cli。
node {baseDir}/scripts/bootstrap/install_wenyan.js
说明:
wenyan-cli 源码,位置是 vendor/wenyan-cli-mainpnpm,可先执行 corepack enable确保环境变量已设置(或在 TOOLS.md 中配置):
export WECHAT_APP_ID=your_wechat_app_id export WECHAT_APP_SECRET=your_wechat_app_secret
重要: IP 必须在微信公众号后台白名单中!
文件顶部必须包含完整 frontmatter:
--- title: 文章标题(必填!) cover: https://example.com/cover.jpg # 封面图(必填!) ---正文...
⚠️
title 和 cover 缺一不可,否则报错。
⚠️ 图片路径必须使用绝对路径,避免 wenyan 路径解析问题。包括 cover 和正文中的所有图片引用:
cover: /Users/minruiqing/photos/cover.jpg # ✅ 绝对路径 cover: ./assets/cover.jpg # ❌ 相对路径可能出错# ✅ 绝对路径
# ❌ 相对路径可能出错
⚠️ 图片路径里不要出现空格。
cover 和正文图片一旦带空格,wenyan 上传公众号时很容易失败。建议文章目录、media/ 目录和所有文件名都使用无空格命名。
发布前,主动询问用户是否需要生成配图:
📸 文章准备就绪!需要我帮你生成配图吗?
- 封面图(cover,建议 1080×864)
- 正文插图(根据段落主题生成)
- 不需要,直接发布
如果用户需要配图:
cover 字段prompt 建议:
# 方式 1: 使用 publish.js node {baseDir}/scripts/publisher/publish.js /path/to/article.md方式 2: 直接用 wenyan-cli
wenyan publish -f article.md -t lapis -h solarized-light
方式 3: stdin(推荐,解决路径问题)
macOS/Linux:
cat "/path/to/article.md" | WECHAT_APP_ID=xxx WECHAT_APP_SECRET=xxx wenyan publish -t lapis -h solarized-light
方式 4: 含视频文章(必须用这个)
node {baseDir}/scripts/publisher/publish_with_video.js /path/to/article.md
方式 5: 草稿 / 已发布文章管理
node {baseDir}/scripts/publisher/manage_draft.js get MEDIA_ID node {baseDir}/scripts/publisher/manage_draft.js list --count 10 node {baseDir}/scripts/publisher/manage_draft.js count node {baseDir}/scripts/publisher/manage_draft.js delete MEDIA_ID node {baseDir}/scripts/publisher/manage_draft.js publish MEDIA_ID --wait node {baseDir}/scripts/publisher/manage_draft.js status PUBLISH_ID node {baseDir}/scripts/publisher/manage_draft.js published-list --count 10 node {baseDir}/scripts/publisher/manage_draft.js published-get ARTICLE_ID node {baseDir}/scripts/publisher/manage_draft.js published-delete ARTICLE_ID --index 0
wenyan 扩展后,现在除了“上传到草稿箱”之外,还支持:
# 直接用 wenyan wenyan draft get MEDIA_ID wenyan draft list --count 10 wenyan draft count wenyan draft delete MEDIA_ID wenyan draft publish MEDIA_ID --wait wenyan publish-status PUBLISH_ID wenyan published list --count 10 wenyan published get ARTICLE_ID wenyan published delete ARTICLE_ID --index 0或使用 toolkit 包装脚本(自动读取 TOOLS.md 中的凭证)
node {baseDir}/scripts/publisher/manage_draft.js get MEDIA_ID node {baseDir}/scripts/publisher/manage_draft.js list --count 10 node {baseDir}/scripts/publisher/manage_draft.js count node {baseDir}/scripts/publisher/manage_draft.js delete MEDIA_ID node {baseDir}/scripts/publisher/manage_draft.js publish MEDIA_ID --wait node {baseDir}/scripts/publisher/manage_draft.js status PUBLISH_ID node {baseDir}/scripts/publisher/manage_draft.js published-list --count 10 node {baseDir}/scripts/publisher/manage_draft.js published-get ARTICLE_ID node {baseDir}/scripts/publisher/manage_draft.js published-delete ARTICLE_ID --index 0
说明:
draft list / published list 支持 --offset、--count、--no-contentdraft publish 返回的是异步发布任务,推荐带 --waitpublish-status 用来查询正式发布结果published delete --index 0 会删除整篇已发布图文;传具体序号可删单篇先查看 wechat-toolkit 已整理好的主题目录:
node {baseDir}/scripts/publisher/publish.js --list-themes
Bundled 主题(12 个)
default、orangeheart、rainbow、lapis、pie、maize、purple、phycataurora、newsroom、sage、ember代码高亮:
atom-one-dark、atom-one-light、dracula、github、github-dark、monokai、solarized-dark、solarized-light、xcode
主题预览(ClawHub 版本说明)
node {baseDir}/scripts/publisher/publish.js --generate-theme-previews
{baseDir}/scripts/publisher/theme_previews/# 使用 bundled 主题发布 node {baseDir}/scripts/publisher/publish.js article.md lapis node {baseDir}/scripts/publisher/publish.js article.md aurora指定高亮主题
node {baseDir}/scripts/publisher/publish.js article.md newsroom github
重新生成全部参考图
node {baseDir}/scripts/publisher/publish.js --generate-theme-previews
微信视频必须用 iframe + data-mpvid 格式,
publish_with_video.js 已内置此逻辑。
Markdown 中引用:
 # 自动上传并嵌入
| 问题 | 解决方法 |
|---|---|
| IP 不在白名单 | → 添加到公众号后台 |
| 内置 wenyan 未就绪 | |
| 环境变量未设置 | |
| 缺少 frontmatter | 添加 title + cover |
| 40001 token 失效 | 用 (已内置 token 管理) |
| 图片路径带空格 | 重命名目录/文件,确保 cover 和正文图片路径都不含空格 |
1. 搜索文章:node {baseDir}/scripts/search/search_wechat.js "AI教程" -n 5 -c 2. 选择目标文章,执行洗稿改写 3. 保存为 Markdown(含 frontmatter) 4. 发布:node {baseDir}/scripts/publisher/publish.js article.md
1. 下载文章:node {baseDir}/scripts/downloader/download.js "https://mp.weixin.qq.com/s/xxx" 2. 读取下载的 HTML/Markdown,执行洗稿改写 3. 保存为 Markdown(含 frontmatter) 4. 发布:node {baseDir}/scripts/publisher/publish.js article.md
{baseDir}/scripts/downloader/config.jsonNo automatic installation available. Please visit the source repository for installation instructions.
View Installation Instructions1,500+ AI skills, agents & workflows. Install in 30 seconds. Part of the Torly.ai family.
© 2026 Torly.ai. All rights reserved.