wechat-article-publisher

wechat-article-publisher

热门

通过 API 将 Markdown/HTML 文章发布到微信公众号草稿箱

152Star
20Fork
更新于 2026/1/16
SKILL.md
readonly只读
name
wechat-article-publisher
description

通过 API 将 Markdown/HTML 文章发布到微信公众号草稿箱

微信公众号文章发布器

通过 API 将 Markdown 或 HTML 内容发布到微信公众号草稿箱,并自动进行格式转换。

前提条件

  • 设置 WECHAT_API_KEY 环境变量(来自 .env 文件)
  • Python 3.9+
  • wx.limyai.com 上授权的微信公众号

脚本

位于 ~/.claude/skills/wechat-article-publisher/scripts/ 目录下:

wechat_api.py

用于列出账号和发布文章的微信 API 客户端:

# 列出已授权的账号
python wechat_api.py list-accounts

# 从 Markdown 文件发布
python wechat_api.py publish --appid <wechat_appid> --markdown /path/to/article.md

# 从 HTML 文件发布(保留格式)
python wechat_api.py publish --appid <wechat_appid> --html /path/to/article.html

# 使用自定义选项发布
python wechat_api.py publish --appid <appid> --markdown /path/to/article.md --type newspic

parse_markdown.py

解析 Markdown 并提取结构化数据(可选,用于高级用途):

python parse_markdown.py <markdown_file> [--output json|html]

工作流程

策略:“API 优先发布”

与基于浏览器的发布方式不同,此技能使用直接 API 调用,实现可靠、快速的发布。

  1. 从环境变量加载 WECHAT_API_KEY
  2. 列出可用的微信公众号(如果用户未指定)
  3. 检测文件格式(Markdown 或 HTML)并相应解析
  4. 调用发布 API 在微信中创建草稿
  5. 报告成功并附带草稿详情

支持的文件格式:

  • .md 文件 → 作为 Markdown 解析,由微信 API 转换
  • .html 文件 → 作为 HTML 发送,保留格式

分步指南

步骤 1:检查 API 密钥

在任何操作之前,请验证 API 密钥是否可用:

# 检查 .env 文件是否存在并包含 WECHAT_API_KEY
cat .env | grep WECHAT_API_KEY

如果未设置,提醒用户:

  1. .env.example 复制为 .env
  2. 设置他们的 WECHAT_API_KEY

步骤 2:列出可用账号

获取已授权的微信公众号列表:

python ~/.claude/skills/wechat-article-publisher/scripts/wechat_api.py list-accounts

输出示例:

{
  "success": true,
  "data": {
    "accounts": [
      {
        "name": "我的公众号",
        "wechatAppid": "wx1234567890",
        "username": "gh_abc123",
        "type": "subscription",
        "verified": true,
        "status": "active"
      }
    ],
    "total": 1
  }
}

重要提示:

  • 如果只有一个账号,自动使用它
  • 如果有多个账号,询问用户选择
  • 注意发布时使用的 wechatAppid

步骤 3:发布文章

对于 Markdown 文件:

python ~/.claude/skills/wechat-article-publisher/scripts/wechat_api.py publish \
  --appid <wechatAppid> \
  --markdown /path/to/article.md

对于 HTML 文件(保留格式):

python ~/.claude/skills/wechat-article-publisher/scripts/wechat_api.py publish \
  --appid <wechatAppid> \
  --html /path/to/article.html

对于小绿书(图文模式):

python ~/.claude/skills/wechat-article-publisher/scripts/wechat_api.py publish \
  --appid <wechatAppid> \
  --markdown /path/to/article.md \
  --type newspic

成功响应:

{
  "success": true,
  "data": {
    "publicationId": "uuid-here",
    "materialId": "uuid-here",
    "mediaId": "wechat-media-id",
    "status": "published",
    "message": "文章已成功发布到公众号草稿箱"
  }
}

步骤 4:报告结果

成功发布后:

  • 确认草稿已创建
  • 提醒用户在微信管理后台预览并手动发布
  • 提供相关 ID 供参考

API 参考

认证

所有 API 请求都需要 X-API-Key 请求头:

X-API-Key: WECHAT_API_KEY

获取账号列表

POST https://wx.limyai.com/api/openapi/wechat-accounts

发布文章

POST https://wx.limyai.com/api/openapi/wechat-publish

参数:

参数 类型 必填 描述
wechatAppid string 微信 AppID
title string 文章标题(最多 64 个字符)
content string 文章内容(Markdown/HTML)
summary string 文章摘要(最多 120 个字符)
coverImage string 封面图片 URL
author string 作者姓名
contentFormat string 'markdown'(默认)或 'html'
articleType string 'news'(默认)或 'newspic'

错误代码

代码 描述
API_KEY_MISSING 未提供 API 密钥
API_KEY_INVALID API 密钥无效
ACCOUNT_NOT_FOUND 账号不存在或未授权
ACCOUNT_TOKEN_EXPIRED 账号授权已过期
INVALID_PARAMETER 参数无效
WECHAT_API_ERROR 微信接口调用失败
INTERNAL_ERROR 服务器错误

关键规则

  1. 绝不自动发布 - 仅保存到草稿箱,由用户手动发布
  2. 先检查 API 密钥 - 如果未配置则快速失败
  3. 先列出账号 - 用户可能有多个账号
  4. 优雅处理错误 - 显示清晰的错误消息
  5. 保留原始内容 - 不要不必要地修改用户的 Markdown

支持的格式

Markdown 文件 (.md)

  • H1 标题(# )→ 文章标题
  • H2/H3 标题(##, ###)→ 章节标题
  • 粗体(文本
  • 斜体(文本
  • 链接 文本
  • 引用(> )
  • 代码块(...
  • 列表(- 或 1.)
  • 图片 alt → 自动上传到微信

HTML 文件 (.html)

  • <title><h1> → 文章标题
  • 所有 HTML 格式均保留(样式、表格等)
  • <img> 标签 → 图片自动上传到微信
  • 第一个 <p> → 自动提取为摘要
  • 支持内联样式和富文本格式

HTML 标题提取优先级:

  1. <title> 标签内容
  2. 第一个 <h1> 标签内容
  3. 回退为“无标题”

HTML 内容提取:

  • 如果存在 <body>,则使用 body 内容
  • 否则,去除 <html><head><!DOCTYPE> 并使用剩余内容

文章类型

news(普通文章)

  • 标准微信文章格式
  • 完整的 Markdown/HTML 支持
  • 带图片的富文本

newspic(小绿书/图文消息)

  • 以图片为主的格式(类似 Instagram 帖子)
  • 从内容中提取最多 20 张图片
  • 文本内容限制为 1000 个字符
  • 图片自动上传到微信

示例流程

Markdown 文件

用户:“把 ~/articles/ai-tools.md 发布到微信公众号”

# 步骤 1:验证 API 密钥
cat .env | grep WECHAT_API_KEY

# 步骤 2:列出账号
python ~/.claude/skills/wechat-article-publisher/scripts/wechat_api.py list-accounts

# 步骤 3:发布(假设只有一个账号,appid 为 wx1234567890)
python ~/.claude/skills/wechat-article-publisher/scripts/wechat_api.py publish \
  --appid wx1234567890 \
  --markdown ~/articles/ai-tools.md

# 步骤 4:报告
# “文章已成功发布到公众号草稿箱!请登录微信公众平台预览并发布。”

HTML 文件

用户:“把这个 HTML 文章发布到公众号:~/articles/newsletter.html”

# 步骤 1:验证 API 密钥
cat .env | grep WECHAT_API_KEY

# 步骤 2:列出账号
python ~/.claude/skills/wechat-article-publisher/scripts/wechat_api.py list-accounts

# 步骤 3:发布 HTML(自动检测格式)
python ~/.claude/skills/wechat-article-publisher/scripts/wechat_api.py publish \
  --appid wx1234567890 \
  --html ~/articles/newsletter.html

# 步骤 4:报告
# “文章已成功发布到公众号草稿箱!HTML 格式已保留。请登录微信公众平台预览并发布。”

错误处理

未找到 API 密钥

错误:未设置 WECHAT_API_KEY 环境变量。

解决方案:要求用户设置包含 API 密钥的 .env 文件。

账号未找到

错误:ACCOUNT_NOT_FOUND - 公众号不存在或未授权

解决方案:要求用户在 wx.limyai.com 上授权其账号。

令牌过期

错误:ACCOUNT_TOKEN_EXPIRED - 公众号授权已过期

解决方案:要求用户在 wx.limyai.com 上重新授权。

微信 API 错误

错误:WECHAT_API_ERROR - 微信接口调用失败

解决方案:可能是临时问题,重试或检查微信服务状态。

最佳实践

为什么使用 API 而不是浏览器自动化?

  1. 可靠性:直接 API 调用比浏览器自动化更稳定
  2. 速度:无需启动浏览器、加载页面或进行 UI 交互
  3. 简单性:单条命令即可发布
  4. 可移植性:可在任何装有 Python 的系统上运行(无 macOS 专属依赖)

内容指南

  1. 图片:尽可能使用公共 URL;本地图片将自动上传
  2. 标题:保持在 64 个字符以内
  3. 摘要:如果未提供,则自动从第一段提取
  4. 封面:如果未指定,Markdown 中的第一张图片将成为封面

工作流效率

最小工作流(1 条命令):
- list-accounts → 获取 appid → 发布 → 完成

完整工作流(带验证):
1. 检查 .env → 列出账号 → 与用户确认
2. 使用选项发布 → 报告结果

故障排除

问:如何获取 WECHAT_API_KEY?

答:在 wx.limyai.com 注册并授权您的微信公众号,即可获取 API 密钥。

问:可以发布到多个账号吗?

答:可以,使用 list-accounts 查看所有已授权的账号,然后指定目标 --appid

问:图片在微信中不显示?

答:确保图片是可访问的 URL。本地图片会自动上传,但如果路径不正确可能会失败。

问:标题太长?

答:微信限制标题为 64 个字符。脚本将使用 H1 的前 64 个字符。

问:news 和 newspic 有什么区别?

答:news 是标准文章格式;newspic(小绿书)以图片为主,文本有限。