wechat-mp-publisher
Installation
SKILL.md
微信公众号智能发布
⚠️ 重要:发布前确认流程
在点击保存草稿/群发之前,必须执行以下步骤:
- 截图确认:所有内容(标题、摘要、正文、封面)填写完毕后,必须使用
browser(action="screenshot")截图当前编辑页面 - 发送到群:将截图发到群里(telegram 群: -1003890797239)供 Daniel 确认
- 等待确认:不要自动发布,必须等待用户在群里确认「可以发布」或类似明确指令
- 执行发布:收到确认后,才点击「保存草稿」或「群发」按钮
🚫 警告:未收到确认前禁止点击发布按钮!
排版规则
| 项 | 规则 |
|---|---|
| 标题 | ≤64字,建议13-22字,少用emoji |
| 摘要 | ≤120字,不填取正文前54字 |
| 正文 | ≤20,000字,建议1500-3000字 |
| 字号 | 正文15px,标题18-22px |
| 颜色 | 正文#3f3f3f(非纯黑),引用#8c8c8c |
| 行距 | 1.75倍,段间距15px |
| 页边距 | 15-20px |
| 首图 | 900×500px(头条),核心内容居中 |
| 次图 | 200×200px |
| 配图 | 宽640px适配手机,每300-500字配一图 |
| emoji | ⚠️ 少用,部分客户端异常 |
内容适配模板
将任意内容转化为公众号格式时:
-
标题:13-22字最优,套路选择:
- 数字冲击:
7个AI工具让你效率翻倍 - 悬念钩子:
最后一个太强了! - 对比反差:
10小时→10分钟
- 数字冲击:
-
排版HTML样式:
<section style="font-size:15px;color:#3f3f3f;line-height:1.75;letter-spacing:1px;padding:0 15px;"> <h2 style="font-size:20px;font-weight:bold;color:#1a1a1a;margin:30px 0 15px;">标题</h2> <p style="margin-bottom:15px;">正文段落</p> <blockquote style="border-left:3px solid #07c160;background:#f7f7f7;padding:10px 15px;color:#666;font-size:14px;"> 引用块 </blockquote> <p style="color:#888;font-size:12px;text-align:center;">图片说明</p> </section> -
Markdown→微信:使用 mdnice.com 转换或脚本内置转换器
-
文末标准模板:
--- 👆 点击关注,每周更新 💬 评论区聊聊你的看法 👇 觉得有用?转发给朋友
发布流程
完整工作流(含截图确认)
1. 接收任务 → 2. 填写内容 → 3. 截图确认 → 4. 等待Daniel确认 → 5. 发布
步骤1:填写内容
使用 Browser 自动化或 API 方式填写所有内容(见下方两种方式)
步骤2:截图确认 ⚠️
- 必须执行
browser(action="screenshot")截取当前编辑页面 - 将截图发送到 Telegram 群(-1003890797239)
- 截图应包含:标题、摘要、正文预览、封面图
步骤3:等待确认
- 不要自动发布
- 在群里明确等待用户确认(如「确认发布请回复『可以』」)
- 只有收到 Daniel 的明确确认后才能继续
步骤4:执行发布
收到确认后:
- 草稿模式:点击「保存草稿」
- 发布模式:点击「群发」
方式A: Browser 自动化(默认)
2026-04-06 更新:对于微信公众号这类强依赖真实登录态的平台,长期推荐方向也应切到
browser()+profile="user",优先附着已经打开的宿主机真实 Chrome,而不是默认相信 Playwright 临时 profile。实战结论:复制本机 Chrome 用户目录到临时目录,虽然能绕过“缺 Playwright 浏览器二进制”问题,但仍可能停在扫码登录页。因此它只是脚本兜底,不是主架构。
python scripts/publish.py \
--title "文章标题" \
--content /path/to/article.md \
--cover /path/to/cover.jpg \
--digest "文章摘要120字以内" \
--screenshots /tmp/wechat_screenshots
Browser 模式特点:
- 需要微信扫码登录(首次)
- cookies 自动保存到
~/.openclaw/skills/wechat-mp-smart-publish/cookies.json - 截图目录可选,用于调试
- 推荐登录链路:手动启动真实 Chrome
--remote-debugging-port=9222→browser(..., profile="user")附着 → 如未登录则截图二维码给 Daniel 扫 → 登录成功后再继续填写
方式B: API 发布(需服务号access_token)
python scripts/api_publish.py \
--title "文章标题" \
--content /path/to/article.html \
--cover /path/to/cover.jpg \
--digest "摘要"
API 模式特点:
- 需要 AppID + AppSecret
- 封面图需提前上传为永久素材
- 支持草稿模式和发布模式
API 端点:
- 获取Token:
GET /cgi-bin/token - 上传素材:
POST /cgi-bin/material/add_material - 新建草稿:
POST /cgi-bin/draft/add - 发布:
POST /cgi-bin/freepublish/submit
草稿模式(默认安全)
所有发布默认 --mode draft,在公众号后台草稿箱确认后再群发。
群发模式
--mode publish 直接群发。警告:订阅号每天仅1次群发机会,服务号每月4次。
⚠️ 确认发布示例消息
发送到群里确认时,建议使用以下格式:
📝 文章预览
标题:xxx
摘要:xxx
封面:[截图]
请确认是否发布?回复「可以」或「再改改」
错误处理
| 错误 | 处理 |
|---|---|
| 登录过期 | 提示重新扫码,保存新cookie |
| 浏览器能起但一直停在扫码页 | 不要误判为脚本坏了;优先检查是否缺少真实登录态,必要时改用 browser() + profile="user" 附着真实 Chrome 后扫码 |
| Playwright Chromium 不存在 | 优先改用系统 Chrome / 真实 Chrome,不要先卡死在缺省 Playwright 二进制上 |
| 标题超64字 | 截断并警告 |
| 封面尺寸错误 | 自动调整为900×500 |
| 图片不显示 | 检查是否上传到微信素材库(外链不可用) |
| 排版错乱 | 使用行内style,不依赖class |
| API频率限制 | 等待60秒重试,最多3次 |
| 敏感词拦截 | 返回具体敏感词位置,提示修改 |
| 未收到确认就发布 | 🚫 严重错误!必须重新执行完整确认流程 |
发布前检查清单
- 标题 ≤64字
- 摘要 ≤120字
- 首图 900×500px
- 排版:15px字号、#3f3f3f色、1.75倍行距
- 图片已全部上传(外链不可用)
- 无敏感词/违禁词
- 手机端预览正常
- 已截图发送到群里等待确认
- 已收到 Daniel 明确确认后才能发布
文件结构
wechat-mp-publisher/
├── SKILL.md # 本文件
├── scripts/
│ ├── publish.py # Playwright 浏览器发布(默认)
│ └── api_publish.py # API 发布(需access_token)
├── references/
│ └── platform-rules.md # 完整平台规则
└── templates/
├── tech-article.html # 技术文排版模板
└── general-article.html # 通用文排版模板
Weekly Installs
2
Repository
aaaaqwq/claude-…e-skillsGitHub Stars
52
First Seen
Apr 9, 2026
Security Audits