| name | my-wechat-publish |
| description | 个人微信公众号文章生成与发布。当需要生成并发布微信公众号到文章草稿箱时使用。 |
| metadata | {"openclaw":{"emoji":"📦","requires":{"bins":["node"]},"platforms":["macos","linux","windows"],"install":[{"id":"node-brew","kind":"brew","formula":"node","bins":["node"],"label":"Install Node.js (brew)"}]}} |
📦 个人微信公众号文章生成与发布工具 (my-wechat-publish)
公众号内容发布全流程。
需要提供文章生成后的本地保存路径,如果用户没有指定,则放在 当前agent的workspace下的agent/docs目录*,每个文章一个子目录,子目录里包含生成的markdown和相关图片等素材。
模块一览
| 模块 | 功能 | 触发词示例 |
|---|
| ✍️ 写稿 | 根据用户输入提示词生成原创内容+去AI痕迹+润色 | "帮我写一篇文章,内容是Claw养成日记-开篇" |
| 📱 发布 | 发布Markdown到草稿箱 | "发布到公众号" |
✍️ 模块一:写稿
根据提示词写出自然、原创的风格,去除 AI 写作痕迹,提升原创度。
触发词
写稿
标准写稿
- 生成原文 — 通过提示词生成原文
- 分析结构 — 识别文章类型、核心论点、段落层次
- 深度润色 — 按以下策略执行润色
- 添加 frontmatter — 补充 title + cover
- 发布 — 推送到公众号草稿箱
润色策略
A. 标题生成
根据用于提示词,为每篇文章生成 3-5 个备选标题,涵盖:
- 引人入胜型: 让读者看到标题就想读下去("xx竟然还有这种用法")
- 疑问型:用问题引发好奇("为什么XX还在用这种方法?")
- 数字型:用数字增强可信度("3个被忽略的XX技巧")
- 悬念型:制造信息差("XX的真相,90%的人不知道")
- 痛点型:戳中读者痛点("别再XX了,试试这个方法")
标题不能带表情符号,如果用户提供主标题,则生成标题变为 主标题-生成的副标题,例如 用户提供主标题 养虾日记1,则你生成 养虾日记1-虾竟然还能做到这样的效果?
B. 开头书写
开头使用以下风格之一:
- 故事引入:用一个小故事或场景切入
- 数据引入:用震撼数据开头
- 痛点引入:直击读者困扰
- 反问引入:抛出反直觉问题
C. 语言改写(去 AI 痕迹)
- 删除意义膨胀句:"标志性"、"里程碑"、"深远影响" → 替换为具体事实
- 去虚假权威:"专家认为"、"业内普遍认为" → 写明来源或删除
- 去伪深度动词:"提升能力"、"赋能"、"推动进程" → 改为具体动作
- 去广告语气:"卓越"、"极致体验"、"全方位" → 客观描述
- 去 AI 高频词:赋能、闭环、生态、抓手、底层逻辑、范式、沉淀、势能
- 去填充短语:事实上、值得注意的是、总体来说、不难发现
- 去空洞结尾:"未来可期"、"值得期待" → 实际结论或行动项
D. SEO 优化(可选)
- 在标题和首段自然植入核心关键词
- 在小标题中分布长尾关键词
- 控制关键词密度(2%-5%),保持自然可读
AI 痕迹识别清单
润色完成后,逐项检查:
| # | 检查项 | 处理方式 |
|---|
| 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 格式,含 frontmatter)
- 备选标题(3-5 个)
判断标准
任瑟成功的标志:
- ✅ 读起来像真人写的,能直接朗读不拗口
- ✅ 没有空洞句、模板段、"像 AI" 的气味
- ✅ 信息密度高,每句话都有具体内容
- ✅ 保持文章核心信息完整性
📱 模块二:文章发布
一键发布 Markdown 到微信公众号草稿箱,基于 wenyan-cli。
首次安装
npm install -g @wenyan-md/cli
配置 API 凭证
确保环境变量已设置,可以在openclaw的配置中设置,类似其他skill:
"my-wechat-publish": {
"env": {
"WECHAT_APP_ID": "your_wechat_app_id",
"WECHAT_APP_SECRET": "your_wechat_app_secret"
}
}
重要: IP 必须在微信公众号后台白名单中!
Markdown 格式要求
文件顶部必须包含完整 frontmatter:
---
title: 文章标题(必填!)
cover: /home/shine/xxx.jpg # 封面图(必填!)
---
# 正文...
⚠️ title 和 cover 缺一不可,否则报错。
⚠️ 图片路径必须使用绝对路径,避免 wenyan 路径解析问题。包括 cover 和正文中的所有图片引用:
cover: /Users/minruiqing/photos/cover.jpg # ✅ 绝对路径
cover: ./assets/cover.jpg # ❌ 相对路径可能出错
 # ✅ 绝对路径
 # ❌ 相对路径可能出错
配图生成
发布前,主动询问用户是否需要生成配图,如果用户提示词里包含生图相关意向,则跳过询问:
📸 文章准备就绪!需要我帮你生成配图吗?
- 封面图(cover,建议 1080×864)
- 正文插图(根据段落主题生成)
- 不需要,直接发布
如果用户需要配图:
- 根据文章标题和内容,生成合适的图片描述 prompt
- 调用用户提供的生图功能(如内置的image-generate或者 nano-banana-pro、openai-image-gen 等技能)生成图片
- 将生成的图片保存到文章目录,使用绝对路径引用
- 封面图设置到 frontmatter 的
cover 字段
- 正文插图在合适位置插入

prompt 建议:
- 封面图:与标题强相关,简洁有冲击力,适合小尺寸预览
- 正文插图:与对应段落内容一致,辅助理解
发布方式
node {baseDir}/scripts/publish.js /path/to/article.md
wenyan publish -f article.md -t lapis -h solarized-light
cat "/path/to/article.md" | WECHAT_APP_ID=xxx WECHAT_APP_SECRET=xxx wenyan publish -t lapis -h solarized-light
主题选项
内置主题:default、lapis(推荐)、phycat
代码高亮:atom-one-dark、dracula、github、monokai、solarized-light(推荐)、xcode
wenyan publish -f article.md -t lapis -h solarized-light
wenyan theme -l
故障排查
| 问题 | 解决方法 |
|---|
| IP 不在白名单 | curl ifconfig.me → 添加到公众号后台 |
| wenyan 未安装 | npm install -g @wenyan-md/cli |
| 环境变量未设置 | export WECHAT_APP_ID=xxx |
| 缺少 frontmatter | 添加 title + cover |
完整工作流示例
写稿 → 发布
1. 写稿为 Markdown(含 frontmatter)
2. 发布:node {baseDir}/scripts/publisher/publish.js article.md
注意事项