Skills aws-wechat-article-publish
将文章发布到微信公众号(API 写入草稿箱或提交发布),含发布前检查。当用户提到「发布」「提交」「群发」「推送」「发出去」「上传到公众号」「发到公众号」「可以发了吗」「发布前检查」时使用。
install
source · Clone the upstream repo
git clone https://github.com/openclaw/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/bbd145/aws-wechat-article-publish" ~/.claude/skills/clawdbot-skills-aws-wechat-article-publish && rm -rf "$T"
manifest:
skills/bbd145/aws-wechat-article-publish/SKILL.mdsource content
发布
通过微信公众号 API 将排版稿写入草稿箱或再提交发布(由
的 config.yaml
与命令行 publish_method
控制)。--publish
配置检查 ⛔
任何操作执行前,必须按 首次引导 执行其中的 「检测顺序」。检测通过后才能进行以下操作(或用户明确书面确认「本次不检查」):
脚本目录
Agent 执行:本 skill 的
{baseDir} 为 skills/aws-wechat-article-publish/。发布子命令在 {baseDir}/scripts/publish.py(仓库根执行)。
| 脚本 / 子命令 | 用途 |
|---|---|
| 初始化或更新本篇 (及可选 )。用于总览 本篇准备(建目录后)或 发布前 补全元数据。仓库根执行: |
| 独立于 :用于正式文章查询( / / / ,对应 ),可用于 为空时自动补全推荐链接。注意: 需要公众号具备对应接口权限。仓库根: |
| 校验 的 ( / / ) |
| 按 槽位检查 的 / 是否已填(调用 前建议跑) |
| 环境检查:、各槽位、依赖、可选探测 token |
| 列出 中各微信槽位名称,并标记 凭证缺项 |
/ / … | 调微信 API(需 微信凭证) |
凭证与 publish_method
⛔
publish_methodpublish_method
(以仓库 config.yaml
为准)
publish_methodconfig.yaml| 值 | 含义 | 行为 |
|---|---|---|
(默认) | 只进公众号草稿箱 | 创建草稿后不调用 freepublish 提交发布。 |
| 草稿 + 提交发布 | 创建草稿后继续提交发布(异步)。 可单次强制带发布,即使当前为 。 |
| 用户明确不填微信 | 立即退出,不调任何微信接口( 也会被忽略)。其它子命令( 等)仍要凭证。 |
多账号时如何选槽位
- 运行
,从python {baseDir}/scripts/publish.py accounts
的config.yaml
+wechat_accounts
向用户展示列表(例如:wechat_N_name
)必须询问用户选择哪个账号发布到草稿箱,然后根据用户选择发布到指定的账号。您有2个账号:1."xiaoming",2."xiaoz" - 在
写config.yaml
,或命令行wechat_publish_slot: <整数>
(CLI 优先,见 articlescreening-schema.md)。--account <序号或名称>
全局环境
在仓库根具备
(微信密钥)与 aws.env
(微信槽位数量与名称)。写作/生图见 config.yaml
(微信未齐仍可先做内容)。validate_env.py
时 publish_method: none
会跳过;full
/draft
发布前建议 published
。API 端点优先取 check-wechat-env
,若槽位未配则回退 WECHAT_N_API_BASE
(两者都空时使用官方)。config.yaml.wechat_api_base
作者名回退
full / create-draft 若 article.yaml 无 author,回退 config.yaml 的 default_author。
publish_completed
(本篇是否已发布完成)
publish_completed- 字段在本篇
。article.yaml
不读、不改;由智能体维护。publish.py
:发布流程未闭环。false
:已视为发布完成(草稿已确认 / 或true
流程成功且运营确认)。published
本篇发布真正结束后:将
写回 publish_completed: true
。article.yaml
写回
的前置门禁(缺啥补啥):true
存在;article.html- 文章目录存在封面图
;cover.(png/jpg/jpeg/webp)
与article.md
中均不含article.html
;placeholder- 发布命令成功并拿到回执(
或media_id
)。publish_id
任一不满足:只可标记为“已提交草稿,未闭环”,不得写回
publish_completed: true。
用户仅说「发布」且未明确路径时 ⛔
在用户未给出
drafts/… 路径、仅说「发布文章」「帮我发一下」等时:
- 确定本篇目录:列出仓库下
中子目录;若多篇,请用户指定一篇或选「最新修改」的一篇再读该目录drafts/
。勿在未确认目录时假定路径。article.yaml - 读取该目录
中的article.yaml
(YAML 布尔:publish_completed
/true
;缺省按false
处理)。false
| 智能体对用户说明(可略作口语化,勿改含义) |
|---|---|
| 告知:项目里本篇文档已按记录成功发布;问:您是否需要编写新文章? 若需要 → 转交 main / writing 从本篇准备或选题起走。 |
或缺省 | 读取 的 (若无则用目录名简述),说明:《{title}》尚未执行完成(发布流程未闭环);问:是否需要继续并完成发布? 或 编写新文章? 若继续本篇 → 再核对 的 、、 等。 |
工作流
发布进度: - [ ] 前置:配置检查(见本节「配置检查」)⛔ - [ ] 第0步:若用户未给路径 → 选本篇目录 → 读 publish_completed → 按上表分流(true/false) - [ ] 第1步:读 **`config.yaml`** → **`draft` / `published`**(及是否 **`full --publish`**) - [ ] 第2步:读取 **`config.yaml`** 的 `wechat_accounts` + `wechat_N_name` 向用户展示账号列表并询问目标槽位;随后跑 **`check-wechat-env`** 校验 `aws.env` 凭证 → **`wechat_publish_slot` 或 `--account`** - [ ] 第3步:发布前检查(checklist + **`check-screening`** + **`check`**) - [ ] 第4步:准备文章目录 - [ ] 第5步:**`full`**(仅草稿或含发布,视上步) - [ ] 第6步:确认结果与用户说明 - [ ] 第7步:成功后写回 **`article.yaml`** 的 **`publish_completed: true`**;按需归档
交互顺序(最小提问)
- 未给路径时:先按上文 「用户仅说发布」 处理
;用户选 继续本篇 后再做下列步骤。publish_completed - 先看
的config.yaml
:publish_method
= 默认只进草稿箱;draft
或published
= 再提交发布。full --publish - 多槽位:展示账号列表(来源:
的config.yaml
+wechat_accounts
),请用户选槽位 →wechat_N_name
或wechat_publish_slot
。--account - 缺微信字段:运行
,补全check-wechat-env
后再发。aws.env - 发布失败(由脚本 stderr / 微信 errcode 判断):
- 网络类(超时、连接失败、5xx):脚本已对单次请求 自动重试 1 次;仍失败 → 告知「网络不可用,请稍后重试或检查代理」。
- 凭证/配置类(如 token 失败带 errcode、缺字段)→ 提示 第几槽位、检查 APPID/SECRET、IP 白名单,用户改正后再执行
/full
。publish
- 中间产物缺失(封面缺失 / 存在
):先补产物再发;若用户坚持先发草稿,必须明确告知“正文配图未完成”,且保持placeholder
。publish_completed: false
命令示例(仓库根)
python {baseDir}/scripts/publish.py check-screening python {baseDir}/scripts/publish.py check-wechat-env python {baseDir}/scripts/publish.py accounts python {baseDir}/scripts/publish.py check python {baseDir}/scripts/publish.py --account 1 full drafts/YYYYMMDD-标题slug/ python {baseDir}/scripts/getdraft.py published-fields
详见 references/usage.md、references/submit-guide.md、references/api-reference.md。
过程文件
| 读取 | 产出 |
|---|---|
、、(含 等)、、(微信槽位) | 发布到公众号草稿或提交发布;成功后由智能体将 写回 ( 不改此键) |