mcpField
B
baoyu-post-to-wechat

baoyu-post-to-wechat

github.com/ideacco营销与增长1469 次安装34 周前更新
代码仓库

关于 baoyu-post-to-wechat

baoyu-post-to-wechat 是用于制作并发布微信公众号图文和文章的 Agent 技能,支持 API 与浏览器流程,并可配置主题、元数据和评论设置。

主要功能

  1. 01发布最多含 9 张图片的图文
  2. 02通过 API 或浏览器发布文章
  3. 03将 Markdown 转为适配微信的 HTML
  4. 04配置主题、颜色和作者默认值
  5. 05设置文章评论选项

适用场景

  1. 01制作多图微信公众号图文
  2. 02发布 Markdown 或 HTML 文章
  3. 03选择 API 或浏览器发布方式
  4. 04应用作者和评论默认设置

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/ideacco/baoyu-skills-openclaw --skill baoyu-post-to-wechat

安装后在 Claude Code 中输入/baoyu-post-to-wechat确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
article-posting.md
image-text-posting.md
references/config/
first-time-setup.md
scripts/
cdp.ts
check-permissions.ts
copy-to-clipboard.ts
md-to-wechat.ts
scripts/md/
cli.ts
scripts/md/code-themes/
1c-light.min.css
a11y-dark.min.css
a11y-light.min.css
agate.min.css
an-old-hope.min.css
androidstudio.min.css
arduino-light.min.css
arta.min.css
ascetic.min.css
atom-one-dark-reasonable.min.css
atom-one-dark.min.css
atom-one-light.min.css
brown-paper.min.css
codepen-embed.min.css
color-brewer.min.css
dark.min.css
default.min.css
devibeans.min.css
docco.min.css
far.min.css
felipec.min.css
foundation.min.css

详细介绍

发布到微信公众号

语言

匹配用户的语言:使用与用户相同的语言进行回复。用户使用中文时,请用中文回复;用户使用英文时,请用英文回复。

脚本目录

Agent 执行:将此 SKILL.md 所在目录确定为 SKILL_DIR,然后使用 ${SKILL_DIR}/scripts/<name>.ts。

脚本用途
scripts/wechat-browser.ts图文消息
scripts/wechat-article.ts通过浏览器发布文章
scripts/wechat-api.ts通过 API 发布文章
scripts/md-to-wechat.ts将 Markdown 转换为适合微信的 HTML,并添加图片占位符
scripts/check-permissions.ts检查环境和权限

偏好设置(EXTEND.md)

使用 Bash 按优先顺序检查 EXTEND.md 是否存在:

# Check project-level first
test -f .baoyu-skills/baoyu-post-to-wechat/EXTEND.md && echo "project"

# Then user-level (cross-platform: $HOME works on macOS/Linux/WSL)
test -f "$HOME/.baoyu-skills/baoyu-post-to-wechat/EXTEND.md" && echo "user"

┌────────────────────────────────────────────────────────┬───────────────────┐ │ 路径 │ 位置 │ ├────────────────────────────────────────────────────────┼───────────────────┤ │ .baoyu-skills/baoyu-post-to-wechat/EXTEND.md │ 项目目录 │ ├────────────────────────────────────────────────────────┼───────────────────┤ │ $HOME/.baoyu-skills/baoyu-post-to-wechat/EXTEND.md │ 用户主目录 │ └────────────────────────────────────────────────────────┴───────────────────┘

┌───────────┬───────────────────────────────────────────────────────────────────────────┐ │ 结果 │ 操作 │ ├───────────┼───────────────────────────────────────────────────────────────────────────┤ │ 找到 │ 读取、解析并应用设置 │ ├───────────┼───────────────────────────────────────────────────────────────────────────┤ │ 未找到 │ 运行首次设置(references/config/first-time-setup.md)→ 保存 → 继续 │ └───────────┴───────────────────────────────────────────────────────────────────────────┘

EXTEND.md 支持:默认主题 | 默认颜色 | 默认发布方式(api/browser)| 默认作者 | 默认开启评论开关 | 默认仅粉丝评论开关 | Chrome 配置文件路径

首次设置:references/config/first-time-setup.md

最低支持的键(不区分大小写,接受 1/0 或 true/false):

键默认值映射
default_author空CLI/frontmatter 未提供时,作为 author 的后备值
need_open_comment1draft/add 请求中的 articles[].need_open_comment
only_fans_can_comment0draft/add 请求中的 articles[].only_fans_can_comment

推荐的 EXTEND.md 示例:

default_theme: default
default_color: blue
default_publish_method: api
default_author: 宝玉
need_open_comment: 1
only_fans_can_comment: 0
chrome_profile_path: /path/to/chrome/profile

主题选项:default、grace、simple、modern

颜色预设:blue、green、vermilion、yellow、purple、sky、rose、olive、black、gray、pink、red、orange(或十六进制值)

值的优先级:

  1. CLI 参数
  2. Frontmatter
  3. EXTEND.md
  4. 技能默认值

预检(可选)

首次使用前,建议运行环境检查。用户可按需跳过。

npx -y bun ${SKILL_DIR}/scripts/check-permissions.ts

检查项:Chrome、配置文件隔离、Bun、辅助功能、剪贴板、粘贴按键、API 凭据、Chrome 冲突。

如果任何检查失败,请针对相应项目提供修复指导:

检查项修复方法
Chrome安装 Chrome,或设置 WECHAT_BROWSER_CHROME_PATH 环境变量
配置文件目录确保 ~/.local/share/wechat-browser-profile 可写
Bun 运行时curl -fsSL https://bun.sh/install | bash
辅助功能(macOS)系统设置 → 隐私与安全性 → 辅助功能 → 启用终端应用
复制到剪贴板确保 Swift/AppKit 可用(macOS Xcode 命令行工具:xcode-select --install)
粘贴按键(macOS)同上方辅助功能修复方法
粘贴按键(Linux)安装 xdotool(X11)或 ydotool(Wayland)
API 凭据按照步骤 2 中的引导完成设置,或手动在 .baoyu-skills/.env 中设置

图文发布(图文)

用于发布含多张图片(最多 9 张)的短文:

npx -y bun ${SKILL_DIR}/scripts/wechat-browser.ts --markdown article.md --images ./images/
npx -y bun ${SKILL_DIR}/scripts/wechat-browser.ts --title "标题" --content "内容" --image img.png --submit

详情请参见 references/image-text-posting.md。

文章发布工作流(文章)

复制此清单,并在完成各项后勾选:

Publishing Progress:
- [ ] Step 0: Load preferences (EXTEND.md)
- [ ] Step 1: Determine input type
- [ ] Step 2: Select method and configure credentials
- [ ] Step 3: Resolve theme/color and validate metadata
- [ ] Step 4: Publish to WeChat
- [ ] Step 5: Report completion
步骤 0:加载偏好设置

检查并加载 EXTEND.md 设置(参见上方的偏好设置部分)。

重要:如果未找到,必须先完成首次设置,再执行其他步骤或提问。

解析并存储以下默认值,供后续步骤使用:

  • default_theme(默认值为 default)
  • default_color(未设置时省略——使用主题默认值)
  • default_author
  • need_open_comment(默认值为 1)
  • only_fans_can_comment(默认值为 0)
步骤 1:确定输入类型
输入类型检测方式操作
HTML 文件路径以 .html 结尾,且文件存在跳至步骤 3
Markdown 文件路径以 .md 结尾,且文件存在继续步骤 2
纯文本不是文件路径,或文件不存在保存为 Markdown,然后继续步骤 2

纯文本处理:

  1. 根据内容生成 slug(取前 2-4 个有意义的词,使用 kebab-case)
  2. 创建目录并保存文件:
mkdir -p "$(pwd)/post-to-wechat/$(date +%Y-%m-%d)"
# Save content to: post-to-wechat/yyyy-MM-dd/[slug].md
  1. 继续将其作为 Markdown 文件处理

Slug 示例:

  • “Understanding AI Models” → understanding-ai-models
  • “人工智能的未来” → ai-future(将其翻译成英文作为 slug)
步骤 2:选择发布方式并进行配置

询问发布方式(除非已在 EXTEND.md 或 CLI 中指定):

方式速度要求
api(推荐)快API 凭据
browser慢Chrome、登录会话

如果选择 API——检查凭据:

# Check project-level
test -f .baoyu-skills/.env && grep -q "WECHAT_APP_ID" .baoyu-skills/.env && echo "project"

# Check user-level
test -f "$HOME/.baoyu-skills/.env" && grep -q "WECHAT_APP_ID" "$HOME/.baoyu-skills/.env" && echo "user"

如果缺少凭据——引导完成设置:

WeChat API credentials not found.

To obtain credentials:
1. Visit https://mp.weixin.qq.com
2. Go to: 开发 → 基本配置
3. Copy AppID and AppSecret

Where to save?
A) Project-level: .baoyu-skills/.env (this project only)
B) User-level: ~/.baoyu-skills/.env (all projects)

选择位置后,提示用户填写值并写入 .env:

WECHAT_APP_ID=<user_input>
WECHAT_APP_SECRET=<user_input>
步骤 3:解析主题/颜色并验证元数据
  1. 解析主题(采用首个匹配项;如果已解析出主题,则不要询问用户):

    • CLI --theme 参数
    • EXTEND.md default_theme(在步骤 0 中加载)
    • 回退值:default
  2. 解析颜色(采用首个匹配项):

    • CLI --color 参数
    • EXTEND.md default_color(在步骤 0 中加载)
    • 如果未设置,则省略(使用主题默认颜色)
  3. 验证 frontmatter(Markdown)或 HTML meta 标签(HTML 输入)中的元数据:

字段缺少时
标题提示:“输入标题,或按 Enter 键根据内容自动生成”
摘要提示:“输入摘要,或按 Enter 键自动生成(建议用于 SEO)”
作者使用回退链:CLI --author → frontmatter author → EXTEND.md default_author

自动生成逻辑:

  • 标题:第一个 H1/H2 标题,或第一句话
  • 摘要:第一段,截取至 120 个字符
  1. 封面图片检查(API 的 article_type=news 必填):
    1. 如果提供了 CLI --cover,则使用该值。
    2. 否则使用 frontmatter(coverImage、featureImage、cover、image)。
    3. 否则检查文章目录中的默认路径:imgs/cover.png。
    4. 否则回退为正文中的第一张图片。
    5. 如果仍然缺少封面,则停止并要求提供封面图片后再发布。
步骤 4:发布到 WeChat

重要:发布脚本会在内部处理 Markdown 转换。不要预先将 Markdown 转换为 HTML——直接传入原始 Markdown 文件。这样可确保 API 方法将图片渲染为 <img> 标签(用于 API 上传),而浏览器方法使用占位符(用于粘贴并替换的工作流)。

API 方法(接受 .md 或 .html):

npx -y bun ${SKILL_DIR}/scripts/wechat-api.ts <file> --theme <theme> [--color <color>] [--title <title>] [--summary <summary>] [--author <author>] [--cover <cover_path>]

重要:始终包含 --theme 参数。即使使用 default,也绝不能省略。只有用户或 EXTEND.md 明确设置了 --color 时,才包含该参数。

draft/add 请求体规则:

  • 使用端点:POST https://api.weixin.qq.com/cgi-bin/draft/add?access_token=ACCESS_TOKEN
  • article_type:news(默认值)或 newspic
  • 对于 news,必须包含 thumb_media_id(必填封面)
  • 始终解析并发送:
    • need_open_comment(默认值 1)
    • only_fans_can_comment(默认值 0)
  • author 解析顺序:CLI --author → frontmatter author → EXTEND.md default_author

如果脚本参数未提供这两个评论字段,也要确保最终 API 请求体包含解析后的值。

浏览器方法(接受 --markdown 或 --html):

npx -y bun ${SKILL_DIR}/scripts/wechat-article.ts --markdown <markdown_file> --theme <theme> [--color <color>]
npx -y bun ${SKILL_DIR}/scripts/wechat-article.ts --html <html_file>
步骤 5:完成报告

对于 API 方法,包含草稿管理链接:

WeChat Publishing Complete!

Input: [type] - [path]
Method: API
Theme: [theme name] [color if set]

Article:
• Title: [title]
• Summary: [summary]
• Images: [N] inline images
• Comments: [open/closed], [fans-only/all users]

Result:
✓ Draft saved to WeChat Official Account
• media_id: [media_id]

Next Steps:
→ Manage drafts: https://mp.weixin.qq.com (登录后进入「内容管理」→「草稿箱」)

Files created:
[• post-to-wechat/yyyy-MM-dd/slug.md (if plain text)]
[• slug.html (converted)]

对于浏览器方法:

WeChat Publishing Complete!

Input: [type] - [path]
Method: Browser
Theme: [theme name] [color if set]

Article:
• Title: [title]
• Summary: [summary]
• Images: [N] inline images

Result:
✓ Draft saved to WeChat Official Account

Files created:
[• post-to-wechat/yyyy-MM-dd/slug.md (if plain text)]
[• slug.html (converted)]

详细参考

主题参考资料
图文参数、自动压缩references/image-text-posting.md
文章主题、图片处理references/article-posting.md

功能对比

功能图文文章(API)文章(浏览器)
纯文本输入✗✓✓
HTML 输入✗✓✓
Markdown 输入标题/内容✓✓
多张图片✓(最多 9 张)✓(正文内)✓(正文内)
主题✗✓✓
自动生成元数据✗✓✓
默认封面回退(imgs/cover.png)✗✓✗
评论控制(need_open_comment、only_fans_can_comment)✗✓✗
需要 Chrome✓✗✓
需要 API 凭据✗✓✗
速度中快慢

前置条件

API 方法:

  • WeChat Official Account API 凭据
  • 在步骤 2 中按引导完成设置,或手动设置到 .baoyu-skills/.env

浏览器方法:

  • Google Chrome
  • 首次运行:登录 WeChat Official Account(会保留会话)

配置文件位置(按优先级排序):

  1. 环境变量
  2. <cwd>/.baoyu-skills/.env
  3. ~/.baoyu-skills/.env

故障排查

问题解决方案
缺少 API 凭据按照第 2 步中的引导完成设置
访问令牌错误检查 API 凭据是否有效且未过期
未登录(浏览器)首次运行时会打开浏览器——扫描二维码登录
未找到 Chrome设置 WECHAT_BROWSER_CHROME_PATH 环境变量
缺少标题/摘要使用自动生成,或手动提供
没有封面图片添加 frontmatter 封面,或将 imgs/cover.png 放在文章目录中
评论默认设置有误检查 EXTEND.md 中的 need_open_comment 和 only_fans_can_comment 键
粘贴失败检查系统剪贴板权限

扩展支持

通过 EXTEND.md 进行自定义配置。路径和支持的选项请参见偏好设置部分。

OpenClaw 迁移说明

  • 迁移模式:优先使用 OpenClaw 原生方案
  • 保留的目录:
    • scripts:是
    • references:是
    • prompts:否
  • 外部依赖:bun、chrome、external-ai-api、social-platform-access
  • 风险等级:高
  • 检测到的环境变量:ACCESS_TOKEN、API、HOME、WECHAT_BROWSER_CHROME_PATH
  • 配置兼容性:保留原有 .baoyu-skills/<skill>/EXTEND.md 行为,并在需要时于运行时包装器中添加兼容 OpenClaw 的路径。

OpenClaw 预检

  • 当脚本示例使用 npx -y bun ... 时,确认 bun 可用。
  • 确认已安装 Chrome,且可启动以用于 CDP/浏览器自动化流程。
  • 确认执行前已导出所需的 API 凭据。
  • 确认发布或抓取操作前,账号会话/ Cookie 有效。

检测到的环境变量:ACCESS_TOKEN、API、HOME、WECHAT_BROWSER_CHROME_PATH

OpenClaw 故障回退

  • 如果缺少运行时依赖,停止执行并返回准确的安装/设置命令。
  • 如果 API 调用失败,建议使用明确指定的 provider/model 标志重试,并验证密钥权限范围。
  • 如果浏览器自动化失败,则在可用时切换到手动/等待模式。
  • 如果平台阻止自动化,则返回手动发布/导出说明,而不是反复重试。
  • 对于高风险工作流,在执行不可逆操作前,必须获得用户的明确确认。

评论

支持 Markdown