Install
openclaw skills install bozo-wechat-publisher一键发布 Markdown 文章到微信公众号草稿箱。当用户提到发布到微信、公众号、推文、草稿箱、上传文章时触发。支持 wenyan-cli 完整排版和 curl 备用方案,兼容所有 Node.js 版本。
openclaw skills install bozo-wechat-publisher一键发布 Markdown 文章到微信公众号草稿箱
基于 wenyan-cli 封装,提供 curl 备用方案兼容所有环境。
npm install -g @wenyan-md/cli
重要: wenyan-cli 2.x 存在 ESM 模块加载问题,需要创建包装脚本:
# 创建包装脚本
mkdir -p ~/.local/bin
cat > ~/.local/bin/wenyan << 'EOF'
#!/bin/bash
node /usr/local/lib/node_modules/@wenyan-md/cli/dist/cli.js "$@"
EOF
chmod +x ~/.local/bin/wenyan
# 确保 ~/.local/bin 在 PATH 中
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
# 验证
wenyan --version
export WECHAT_APP_ID=your_app_id
export WECHAT_APP_SECRET=your_app_secret
永久配置(添加到 ~/.zshrc):
echo 'export WECHAT_APP_ID=your_app_id' >> ~/.zshrc
echo 'export WECHAT_APP_SECRET=your_app_secret' >> ~/.zshrc
source ~/.zshrc
curl ifconfig.me
登录 https://mp.weixin.qq.com/ → 开发 → 基本配置 → IP 白名单 → 添加此 IP
文件顶部必须包含 frontmatter:
---
title: 文章标题(必填)
cover: ./assets/cover.jpg # 封面图(必填)
description: 公众号摘要。 # 可选
author: 作者名称
source_url: https://example.com # 可选
---
# 正文开始
你的内容...
⚠️ 必填字段:
title - 文章标题cover - 封面图路径或 URL封面图推荐:
适用环境: Node.js 18 及以下
# 使用默认主题
wenyan publish -f article.md
# 指定主题和代码高亮
wenyan publish -f article.md -t lapis -h solarized-light
# 关闭 Mac 风格代码块
wenyan publish -f article.md -t lapis --no-mac-style
# 列出所有主题
wenyan theme -l
内置主题:
default - 默认主题lapis - 青金石(推荐)phycat - 物理猫orangeheart - 橙心rainbow - 彩虹pie - 派派风格maize - 玉米色purple - 紫色适用环境: 任何 Node.js 版本
使用自定义卡片主题发布,支持深色/浅色风格:
# 使用 card-tech-dark 深色科技主题(默认)
./scripts/publish-card-theme-v2.sh article.md
# 使用 card-neon-light 霓虹浅色主题
./scripts/publish-card-theme-v2.sh article.md card-neon-light
自定义主题:
card-tech-dark - 卡片科技暗色 🎴(适合技术文章、AI 内容)
card-neon-light - 卡片霓虹浅色 🎴(适合教程、指南、操作手册)
适用环境: 任何 Node.js 版本
当 wenyan-cli 不可用时,使用备用脚本:
# 从 skill 目录运行
./scripts/publish-curl.sh article.md
# 或指定环境变量
WECHAT_APP_ID=wx123 WECHAT_APP_SECRET=secret ./scripts/publish-curl.sh article.md
代码高亮:
solarized-light / solarized-darkgithub / github-darkatom-one-light / atom-one-darkmonokaidraculaxcode样式注入方式:
<style> 标签放在内容开头(body 内)<head> 标签,直接发送 body 内容到微信 API--bg-primary: #0a0e27)在内容中生效wenyan-cli 输出格式:
wenyan render 输出不包含 <html> 或 <body> 标签<section id="wenyan"> 开头封面图要求:
thumb_media_id(即使 show_cover_pic: 0)错误 45166 - invalid content hint:
某些内容可能触发微信的内容审核,导致发布失败:
| 可能原因 | 解决方案 |
|---|---|
| 敏感关键词 | 简化内容,避免争议性话题 |
| 过长的文章 | 分段发布或精简内容 |
| 特殊格式 | 使用标准 Markdown 格式 |
| 代码块过多 | 减少代码示例数量 |
建议: 先使用简单内容测试,确认发布流程正常后再添加完整内容。
适用环境: 任何 Node.js 版本
当 wenyan-cli 不可用时,使用备用脚本:
# 从 skill 目录运行
./scripts/publish-curl.sh article.md
# 或指定环境变量
WECHAT_APP_ID=wx123 WECHAT_APP_SECRET=secret ./scripts/publish-curl.sh article.md
# 1. 安装 wenyan-cli
npm install -g @wenyan-md/cli
# 2. 修复 wenyan 命令
mkdir -p ~/.local/bin
cat > ~/.local/bin/wenyan << 'EOF'
#!/bin/bash
node /usr/local/lib/node_modules/@wenyan-md/cli/dist/cli.js "$@"
EOF
chmod +x ~/.local/bin/wenyan
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
# 3. 配置环境变量
echo 'export WECHAT_APP_ID=your_app_id' >> ~/.zshrc
echo 'export WECHAT_APP_SECRET=your_app_secret' >> ~/.zshrc
# 4. 应用配置
source ~/.zshrc
# 1. 安装 Node.js 18
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs
# 2. 安装 wenyan-cli
npm install -g @wenyan-md/cli
# 3. 修复 wenyan 命令
mkdir -p ~/.local/bin
cat > ~/.local/bin/wenyan << 'EOF'
#!/bin/bash
node /usr/local/lib/node_modules/@wenyan-md/cli/dist/cli.js "$@"
EOF
chmod +x ~/.local/bin/wenyan
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
# 4. 配置环境变量
echo 'export WECHAT_APP_ID=your_app_id' >> ~/.bashrc
echo 'export WECHAT_APP_SECRET=your_app_secret' >> ~/.bashrc
# 5. 应用配置
source ~/.bashrc
# 1. 安装 Node.js 18
# 下载: https://nodejs.org/dist/v18.20.2/node-v18.20.2-x64.msi
# 2. 安装 wenyan-cli
npm install -g @wenyan-md/cli
# 3. 创建包装脚本 wenyan.bat
# 保存到 npm 全局目录(运行 npm config get prefix 查看)
@echo off
node "%APPDATA%\npm\node_modules\@wenyan-md\cli\dist\cli.js" %*
# 4. 配置环境变量
# 系统属性 → 环境变量 → 新建用户变量
# WECHAT_APP_ID = your_app_id
# WECHAT_APP_SECRET = your_app_secret
问题: 执行 wenyan --version 或 wenyan --help 时没有任何输出
原因: wenyan-cli 2.x 存在 ESM 模块加载问题
解决方案: 创建包装脚本(见上文"修复 wenyan 命令")
原因: Node.js 20/24 与 wenyan-cli 的 fetch 实现不兼容
解决方案:
# 方案 A: 使用 Node.js 18
nvm install 18 && nvm use 18
# 方案 B: 使用 curl 备用方案
./scripts/publish-curl.sh article.md
问题: 发布成功但草稿箱中内容为空白
原因: 主题 CSS 背景色与文字颜色冲突
解决方案:
问题: 发布时报 "invalid media_id" 错误
原因: 未提供 thumb_media_id 字段
解决方案:
问题: 内容触发微信审核
原因: 文章内容包含敏感词或格式问题
解决方案:
错误信息: ip not in whitelist
解决方法:
# 1. 获取当前 IP
curl ifconfig.me
# 2. 登录公众号后台添加 IP
# https://mp.weixin.qq.com/ → 开发 → 基本配置 → IP 白名单
错误信息: title is required in frontmatter
解决方法: 在 Markdown 文件顶部添加:
---
title: 你的文章标题
cover: 封面图路径
---
错误信息: 未能找到文章封面
解决方法:
cover 字段说明: 订阅号草稿箱 API 与服务号不同
限制:
解决方案:
在新的电脑上使用此 skill:
cp -r /Volumes/AI/AIGC/aigc/Skills/bozo-wechat-publisher ~/.claude/skills/
# 安装 wenyan-cli
npm install -g @wenyan-md/cli
# 修复 wenyan 命令
mkdir -p ~/.local/bin
cat > ~/.local/bin/wenyan << 'EOF'
#!/bin/bash
node /usr/local/lib/node_modules/@wenyan-md/cli/dist/cli.js "$@"
EOF
chmod +x ~/.local/bin/wenyan
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
export WECHAT_APP_ID=your_app_id
export WECHAT_APP_SECRET=your_app_secret
curl ifconfig.me
# 登录公众号后台添加此 IP
---
title: 使用 Claude Code 提升开发效率
cover: ./assets/cover.jpg
author: 张三
source_url: https://myblog.com/original-post
---
# 使用 Claude Code 提升开发效率
Claude Code 是一款强大的 AI 编程助手...
## 代码示例
```javascript
function hello() {
console.log("Hello, WeChat!");
}

### 发布命令
```bash
# 方案一:wenyan-cli
wenyan publish -f article.md -t lapis -h solarized-light
# 方案二:curl 备用
./scripts/publish-curl.sh article.md
准备 Markdown (含 frontmatter)
│
▼
选择发布方案
│
┌────┴────┐
│ │
▼ ▼
wenyan-cli curl 脚本
(完整功能) (备用方案)
│ │
└────┬────┘
▼
发布到草稿箱
│
▼
公众号后台审核发布
Apache License 2.0