Install
openclaw skills install wemp-ops微信公众号全流程运营:选题→采集→写作→排版→发布→数据分析→评论管理。 Use when: (1) 用户要写公众号文章或提供了选题方向, (2) 用户说"写一篇关于XXX的文章"/"帮我写篇推文"/"出一篇稿子", (3) 用户要求采集热点/素材/竞品分析, (4) 用户提到公众号日报/周报/数据分析/阅读量/...
openclaw skills install wemp-ops首次使用前执行:
node scripts/setup.mjs
检查 Node.js 版本、Python3、微信公众号 API 配置。
根据用户意图选择对应流程:
| 意图 | 流程 |
|---|---|
| "写一篇关于 X 的文章" | → 全流程(下方详述) |
| "采集 X 热点" | → 仅采集 |
| "公众号日报/周报" | → 数据分析 |
| "检查/回复评论" | → 互动管理 |
| "发布文章" | → 仅发布 |
| "选题/有什么可以写的" | → 选题管理(检查 topic-pool.md) |
当用户给出选题方向时,执行以下完整流程。先读 persona.md 确定写作人设。
如果老板没有指定具体选题,先检查选题池:
<WORKSPACE>/collections/topics/topic-pool.md如果老板已有明确选题,直接进入 Step 1。
读 references/article-templates.md 判断内容类型:
选题模糊时给 2-3 个具体方向让用户选(最多 1 轮澄清)。
2pre. 交接文件检查
先检查 <WORKSPACE>/temp/handoffs/collector-to-writing.md 是否存在:
2a. 收藏库检索(优先) 先从个人收藏库中检索相关素材——这是让文章有"人味"的关键(详见 writing-techniques.md §五):
grep -i "关键词" <WORKSPACE>/collections/tags.mdgrep -ril "关键词" <WORKSPACE>/collections/2b. 外部采集(补充) 收藏库素材不足时,从外部补充:
web_search 搜索 2-3 轮(官方信息→深度分析→对比评测)web_fetch 抓取 2-4 篇高质量参考文章node scripts/smart_collect.mjs 从 20+ 数据源采集相关热点⚠️ 中间存盘规则:每 2-3 轮 web_search/web_fetch 后,立刻把已获得的关键发现写到 <WORKSPACE>/temp/wemp-findings-{slug}.md(选题 slug),防止连续采集时前面的信息在 context 中被挤掉。采集完成后此文件可删除。
2c. 素材整理 合并收藏库 + 外部素材,按相关度排序,标注来源
2d. 对标账号分析(可选,首次写某领域时推荐)
找 2-3 个同领域做得好的公众号,填写对标颗粒度检查表:
| 维度 | 对标账号 | 我们 | 差异说明 |
|---|---|---|---|
| 文章长度 | |||
| 标题风格 | |||
| 开头结构(故事/数据/问题/金句) | |||
| 配图风格和数量 | |||
| 排版密度(段落长度/留白) | |||
| 结尾 CTA(关注/转发/留言) | |||
| 发布频率 |
每个不一致都要有理由,否则改成一致。 0 到 1 阶段模仿是正确答案。
2e. 素材丰富度门禁(写作前必检)
写作前过一遍素材储备,5 维中至少 3 个有料才开始写。不够就回 Step 2 补采集,不要硬写。
| 维度 | 有没有 | 具体内容 |
|---|---|---|
| 冲击力数据(大数字/百分比/对比) | ✅/❌ | |
| 转变故事(之前 vs 之后,反差越大越好) | ✅/❌ | |
| 金句(能独立传播的一句话观点) | ✅/❌ | |
| 权威背书(人物/机构/论文/官方数据) | ✅/❌ | |
| 痛点共鸣(目标读者的焦虑/常见错误) | ✅/❌ |
读 references/writing-sop.md、references/style-guide.md 和 references/writing-techniques.md,按以下流程写作:
3a. 创意排水(正式动笔前必做) 花 2-3 分钟快速列出这个选题的"废水"——套路想法、陈词滥调、第一反应。标记为禁用列表,正式写作中刻意避开。(详见 writing-techniques.md §一)
3b. 正式写作
persona.md 人设(AI 产品经理第一人称)references/article-templates.md 对应类型的结构模板draft-v1.md,放在当前文章的工作目录下,如 wemp-article-NN/draft-v1.md)写作中运用五大技巧(详见 writing-techniques.md §二):
3c. 标题生成(双轨制) 按 writing-techniques.md §四 生成标题候选:
悬念制造铁律:标题和开头制造悬念,不给答案。用「为什么」不用「证明」。
3d. 三遍审校 按 writing-techniques.md §三 结构化审校:
设计指南见 references/cover-image-guide.md(六维度体系:Type/Palette/Rendering/Text/Mood/Font + 12 个预设 + 兼容矩阵 + 构图核心原则)。三种方案按优先级:
方案 A(优先):idealab Chat API
<WORKSPACE>/scripts/generate-image.sh --prompt "prompt" --filename output.jpggemini-3.1-flash-image-preview,团队 AK 免费,走 /chat/completions 接口sips -c 1090 2560 output.jpg方案 B(降级):Seedream 5.0 Lite
<WORKSPACE>/scripts/seedream-generate.sh "prompt" output.jpg "2560x1440" 1sips -c 1090 2560 output.jpg方案 C(兜底):HTML 渲染 + 浏览器截图
python3 -m http.server 本地启动完整指南见 references/illustration-prompts.md(Type×Style 矩阵、Prompt 规范、风格锚点)。
4.5a 配图规划(先规划再生图)
扫描文章结构,按以下规则标注潜在配图位置:
## 标题后的第一段 → 潜在配图点内容信号自动匹配,根据段落关键词推荐 Type:
framework | 步骤/流程 → flowchart | vs/对比 → comparisoninfographic | 叙事/经历 → scene | 代码/界面 → screenshot锁定全文 Style(一篇文章只用一种 AI 生图风格,从 cover-image-guide.md 预设中选):
ai-product(默认)| 数据/架构文 → dashboard | 故事/教育文 → pm-growth | 观点文 → bold-opinion输出配图计划表(保存到 illustration-plan.md),让老板确认后再生图。
密度参考:2000 字 3 张、3000 字 4-5 张,正文配图硬上限 5 张。
4.5b 生图执行
配图有两条渲染路径,在配图计划表中按每张图标注:
路径 A:AI 生图(视觉美感优先,适合大部分场景)
<WORKSPACE>/scripts/generate-image.sh --prompt "prompt" --filename output.jpg --size 2560x1440
gemini-3.1-flash-image-preview,团队AK免费;超时/报错自动降级到 Gemini<WORKSPACE>/scripts/seedream-generate.sh "prompt" output.jpg "2560x1440"2560x1440prompts/style-anchor.md,后续图片引用保持一致prompts/NN-{type}-{slug}.md,便于回溯修改路径 B:Mermaid 渲染截图(信息精确性优先,技术文章的流程/架构/对比图)
mermaid-render 的插图references/illustration-prompts.md 中的 Mermaid 规范)<WORKSPACE>/scripts/mermaid-render.html(临时 HTML 模板)images/prompts/NN-{type}-{slug}.md,记录 Mermaid 源码通用规则:
<WORKSPACE>/scripts/beautify-screenshot.sh <input> [output] --shadow --bg "#f5f5f5"<WORKSPACE>/scripts/remove-watermark.sh <input> [output](Gemini 生图 需去水印)文章涉及线上产品(AI 工具、SaaS 产品等)时,截取真实产品界面作为配图。
公开页面(无需登录):
# 1. 打开产品页面
browser action:open url:"https://example.com/product"
# 2. 等待加载完成后截图
browser action:screenshot fullPage:false type:png
# 3. 裁剪/缩放(macOS sips 工具)
sips -z <高度> <宽度> screenshot.png # 缩放
sips -c <高度> <宽度> screenshot.png # 裁剪居中
sips --resampleWidth 800 screenshot.png # 按宽度等比缩放
# 4. 上传到微信素材库
node scripts/publisher.mjs # 通过 --markdown 自动上传
# 或手动:在 utils.mjs 中调用 uploadArticleImage()
需登录页面(付费产品/内部系统):
browser action:screenshot profile:chrome 截图截图规范:
# 基础排版
python3 scripts/markdown_to_html.py --input article.md --theme tech --output article.html
# 带图片自动上传(本地图片自动上传到微信素材库并替换 URL)
python3 scripts/markdown_to_html.py --input article.md --theme tech --output article.html --upload
主题选择:tech(科技风,默认)、minimal(简约风)、business(商务风)。
排版约束详见 references/weixin-constraints.md。
微信公众号不支持外链点击跳转,文章中的外链对读者没有交互价值。排版时自动处理:
处理规则:
[text](https://example.com) → 文中显示为 text¹(上标序号),链接收集到文末「引用链接」章节https://mp.weixin.qq.com/... 链接保留为直接链接(微信内部链接可点击)文末引用格式:
---
## 引用链接
1. example.com: https://example.com/article
2. GitHub: https://github.com/user/repo
执行时机:Markdown 转 HTML 之前处理(在 Markdown 层面替换,不是 HTML 层面)。可在 markdown_to_html.py 中集成,或作为单独的预处理步骤。
如果有额外配图需要手动插入(非 Markdown 内嵌图片),先上传再手动插入 HTML。
# 一键从 Markdown 到草稿(推荐,自动转 HTML + 上传图片 + 清理旧同名草稿)
node scripts/publisher.mjs --markdown article.md --title "文章标题" --cover cover.png
# 或手动分步:先转 HTML 再推送
python3 scripts/markdown_to_html.py --input article.md --theme tech --output article.html --upload
node scripts/publisher.mjs --title "文章标题" --content article.html --cover cover.png
# 跳过自动清理旧草稿
node scripts/publisher.mjs --markdown article.md --title "标题" --cover cover.png --no-cleanup
# 列出草稿
node scripts/publisher.mjs --list
# 删除草稿
node scripts/publisher.mjs --delete --media-id <id>
# 发布草稿(用户确认后)
node scripts/publisher.mjs --publish --media-id <草稿media_id>
默认停在草稿箱,不自动发布。 告知用户草稿已创建,确认后再发布。
推送新版本时自动清理同标题旧草稿(--no-cleanup 跳过)。
推送草稿箱成功后,顺便采集历史文章数据,用于选题评分校准。
1. browser(action=tabs, profile="user") 检查是否有 mp.weixin.qq.com tab
2. 有 → browser(action=snapshot, targetId=<tab_id>) 读取发表记录页
3. 从 snapshot 提取每篇文章的:标题、阅读量、点赞、分享、留言
4. 自动更新 collections/topics/publish-feedback.md
5. 没有 tab 或 snapshot 失败 → 跳过,不影响主流程
注意:此步不影响主流程,失败就跳过。数据用于选题评分校准(见 eval-criteria.md + publish-feedback.md)。
排版完成后、交付前,逐维度自检。任何一项 ❌ 必须修改后再进入下一步。
| 维度 | 检查问题 | 合格标准 | 判断 |
|---|---|---|---|
| 文字洁癖 | 有没有 AI 味?(空洞排比句、Emoji 堆叠、"让我们来看看") | 每句话都有信息量,没有填充语 | ✅/❌ |
| 标题/封面 | 平铺直叙能不能吸引人?不看封面只看标题想不想点? | 有立场/反差/数据之一,不靠震惊体 | ✅/❌ |
| 表达效率 | 能不能一句话说清核心观点?有没有 99% 时间包装 1% 内容? | 删掉任何一段,整篇不完整 = 没有冗余 | ✅/❌ |
| 认知落差 | 读完后读者会不会觉得「这个我知道」?和同行比有增量吗? | 至少有 1 个「我之前没想到」的点 | ✅/❌ |
| 数据支撑 | 核心判断有没有数据/事实/一手经验支撑? | 每个核心判断都有来源(数据/案例/亲身经历) | ✅/❌ |
借鉴 dbs-content 五维诊断框架。第五维从「AI 辅助」改为「数据支撑」,更适合公众号写作场景。
交付前,用一个无上下文的子 Agent 阅读文章全文,检查:
写作完成时自动执行,不需要老板操作。
在 Step 3 写作完成(draft-v1.md 定稿)后,自动记录 AI 原稿:
python3 <WORKSPACE>/scripts/style-observe.py record-original <工作目录>/draft-v1.md --skill wemp-ops --topic "选题关键词"
当老板确认最终版(可能经过多轮修改)后,记录最终版:
python3 <WORKSPACE>/scripts/style-observe.py record-final <最终版文件> --skill wemp-ops
触发 record-final 的信号:
如果老板没有修改直接发布,也要 record-final(no_change = 正反馈,说明这次写得好)。
积累 5+ 对 diff 后,可执行风格规则提取:
python3 <WORKSPACE>/scripts/style-observe.py pairs --skill wemp-ops --days 30
向用户汇报:文章标题、字数、草稿状态、封面预览、建议发布时间。
node scripts/smart_collect.mjs --query "用户需求" --keywords "AI扩展的关键词" --sources "hackernews,v2ex,36kr" [--deep]
数据源分类:
tech: hackernews, github, v2ex, sspai, juejin, ithome, producthuntchina: weibo, zhihu, baidu, douyin, bilibili, toutiao, tencent, thepaper, hupufinance: 36kr, wallstreetcn, cls采集后整理为选题候选清单,每条含:标题、来源、热度、链接、与用户需求的相关度。
# 日报(默认昨天)
node scripts/daily_report.mjs [--date YYYY-MM-DD]
# 周报
node scripts/weekly_report.mjs
输出包含:用户增长、阅读数据、热门文章、互动数据、AI 洞察。
# 检查新评论
node scripts/check_comments.mjs
# 回复评论
node scripts/reply_comment.mjs --comment-id <id> --content "回复内容"
AI 生成回复建议时遵循 persona.md 的语气规范,用户确认后再执行回复。
公众号凭证配置在 skill 自己的 config/default.json:
{
"weixin": {
"appId": "你的AppID",
"appSecret": "你的AppSecret"
}
}
⚠️ 不要写到 openclaw.json 的 channels 里! channels 只接受 OpenClaw 内置渠道类型(dingtalk/telegram/discord 等),写入未知类型会导致 gateway 校验失败并不断重启。
其他配置(数据源偏好、报告时间等)同样在 config/default.json 中调整。
公众号文章完成后,可一键生成其他平台版本。
从公众号草稿箱/已发布文章中提取:标题、正文、核心观点、配图
自动调用 xiaohongshu-ops 技能:
在公众号文章对应的 memory 记录中标注已分发平台和链接
文章完成后,根据结果判断是否推荐下一步。
| 触发条件 | 推荐 |
|---|---|
| 文章已发布成功 | 「文章已发布。要分发到小红书/X 吗?或者用 content-collector 存档素材方便下次复用。」 |
| 写作过程中发现素材不足 | 「素材不够,建议先用 content-collector 搜索已有收藏,或 web_search 补充。」 |
| 文章涉及会议纪要/内部沟通 | 「这篇更像内部文档,建议用 internal-comms 的格式。」 |
| 需要配图但 Seedream/Gemini 生图效果不佳 | 「配图可以试试 drawio 画流程图/架构图替代。」 |
写作和内容产出中,以下行为直接拉低质量,必须避免:
案例 1:公众号 #6「Claude 能操控微信了」V3 定稿
去掉所有比喻,直接用数据说话。1900 字,聚焦 Computer Use vs API 一个视角。新增"Anthropic 自己优先走 MCP 接口"的关键发现。
案例 2:公众号 #5「Skills 不是低代码,但也不是 App Store」
从第一人称 AI PM 视角,讲自己用 Skills 的真实踩坑经历,有具体场景、有数据、有得失。
案例 3:封面图 Seedream 生成
2560x1440 生成,裁剪 2.35:1 宽屏比例,简洁主体 + 深色背景 + 大字标题。
反面 1:公众号 #6 V1 初稿(3100 字,被全面打回)
塞了 Computer Use + Agentic Engineering + 冷思考 + 一手实践 + 8 个名人引用,试图一篇文章讲完所有。
反面 2:公众号 #6 V2(1800 字,比喻牵强)
砍掉了多余内容,但用"开车 vs 高铁"比喻贯穿全文。