公众号运营|微信公众号|公众号一条龙|公众号全流程|自媒体运营|wechat automation|content pipeline|AIGC workflow — 公众号一条龙运营总控入口,选题→写稿→审稿→排版→配图→发布串联 8 个子 skill,单条指令完成整篇图文从 0 到上架。面向公众号小编、自媒体、品牌内容。触发词分层:**一条龙流程**「一条龙」「完整流程」「从头做」「从 0 到发布」;**新做新发**「帮我写篇公众号文章」「做一篇公众号文章」「我想发一篇」「帮我发一篇」「再来一篇」;**选题起点**「今天写什么好」「有什么好写的」「找个话题」「爆款选题」「热点选题」「起个爆款标题」;**策划起点**「内容日历」「系列策划」「专栏规划」「连载」;**流程恢复**「接着上次那篇」「继续昨天的」「继续上次的」「接着之前的进度」;**显式模型新写**「用 GPT 写一篇」「用 DeepSeek 写一篇」「把提纲写成文章」。子 skill(topics/writing/review/formatting/images/publish/sticker/assets)单独触发...
Scanned 9/9/2026
Install to Claude Code
npx -y skills add Lord1Egypt/awesome-skill-forge --skill aws-wechat-article-main --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Aws Wechat Article Main?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/lord1egypt-aws-wechat-article-main)More formats (shields.io, HTML) on the badges page.
---
name: aws-wechat-article-main
description: 公众号运营|微信公众号|公众号一条龙|公众号全流程|自媒体运营|wechat automation|content pipeline|AIGC workflow — 公众号一条龙运营总控入口,选题→写稿→审稿→排版→配图→发布串联 8 个子 skill,单条指令完成整篇图文从 0 到上架。面向公众号小编、自媒体、品牌内容。触发词分层:**一条龙流程**「一条龙」「完整流程」「从头做」「从 0 到发布」;**新做新发**「帮我写篇公众号文章」「做一篇公众号文章」「我想发一篇」「帮我发一篇」「再来一篇」;**选题起点**「今天写什么好」「有什么好写的」「找个话题」「爆款选题」「热点选题」「起个爆款标题」;**策划起点**「内容日历」「系列策划」「专栏规划」「连载」;**流程恢复**「接着上次那篇」「继续昨天的」「继续上次的」「接着之前的进度」;**显式模型新写**「用 GPT 写一篇」「用 DeepSeek 写一篇」「把提纲写成文章」。子 skill(topics/writing/review/formatting/images/publish/sticker/assets)单独触发仅限对**已有产物**的修改场景(如"改标题""润色这段""排版""审稿""加封面""发布");新做/策划/多环节串联一律走本入口。
homepage: https://aiworkskills.cn
url: https://github.com/aiworkskills/wechat-article-skills
metadata:
openclaw:
requires:
env:
- WRITING_MODEL_API_KEY
- IMAGE_MODEL_API_KEY
- WECHAT_1_APPID
- WECHAT_1_APPSECRET
bins:
- python3
primaryEnv: aws.env
---
# 公众号运营总览
**一键式公众号 AI 内容流水线** —— 从选题到上架 8 个子 skill 串联,公众号小编 / 自媒体 / 品牌内容团队一键产出整篇图文。
> **套件说明** · `aws-wechat-article-*` 是公众号一条龙套件,共 9 个 slug:`aws-wechat-article-main / topics / writing / review / formatting / images / publish / assets`,外加 `aws-wechat-sticker`。跨 skill 的相对引用依赖同一 `skills/` 根目录;推荐 `clawhub sync` 或逐个 `clawhub install` 一次性全装。源码:<https://github.com/aiworkskills/wechat-article-skills>
## 能力披露(Capabilities)
本 skill 作为一条龙套件**编排入口**;真正调用外部 API 的是子 skill(writing / images / publish / sticker / review)。**本入口自身的 `validate_env.py` 脚本**行为:
- **凭证读取**:读取仓库根 `aws.env` 的 `WRITING_MODEL_API_KEY` / `IMAGE_MODEL_API_KEY` / `WECHAT_{N}_APPID` / `WECHAT_{N}_APPSECRET`,**仅用于校验键是否存在且非空**,值不用于任何网络请求
- **网络**:本入口脚本无外发请求;**子 skill 有外发**(详见各子 skill 的能力披露)
- **文件读**:仓库内 `aws.env`、`.aws-article/config.yaml`、本篇 `article.yaml`
- **文件写**:仓库内 —— `.aws-article/`(首次引导创建目录结构)、本篇 `article.yaml` 状态字段
- **shell**:仅 `python3 {baseDir}/scripts/validate_env.py`
> **注意**:整体套件(含子 skill)会调用外部 LLM、图像 API 与微信 API,并在调用时外发 API key 与本篇内容。完整行为见各子 skill 的「能力披露」。
## 配套 skill(informational)
本 skill 是 `aws-wechat-article-*` 一条龙公众号套件的入口,编排 8 个子 skill:`topics / writing / review / formatting / images / publish / assets` 以及 `aws-wechat-sticker`。
- **装齐全部 9 个 slug** 到同一 `skills/` 根目录,才能走完整一条龙流程(选题→写稿→审稿→排版→配图→发布)。
- 只装 main 一个时,仍可用于环境校验(`validate_env.py`);进入内容流水线会因对应子 skill 缺失而无法执行相关步骤(工作流里的跨 skill 脚本调用 / 文档读取会遇到 `file not found`)。
完整 9 slug 清单与安装指引见 [源码仓库](https://github.com/aiworkskills/wechat-article-skills)。
**Agent 执行**:确定本 SKILL.md 所在目录为 `{baseDir}`。
## 配置检查 ⛔ BLOCKING
**进入交互顺序「2) 全局账号约束」「3) 本篇准备」及内容流水线前**须完成 **第 0~2.5 步**配置检测(任一步失败则 **不得** 继续)。**第 3 步**是**调用 `publish.py` 前**的核对(非流水线起点):**`.aws-article/config.yaml`** 中 **`publish_method`** 默认为 **`draft`**(**`publish.py full`** 只把图文写入**公众号草稿箱**);仅当用户明确要求「发出去 / 对外发布」时,再将该键改为 **`published`**(或使用 **`full --publish`** 临时强制发布)。**微信**:**`validate_env.py`** 默认要求公众号账号配齐(见第 2 步);用户**明确不接微信**时,先将 **`publish_method`** 设为 **`none`** 再过校验(脚本会跳过微信组),之后 **`publish.py full`** 仍直接跳过。要走草稿/发布,须补全 **`aws.env`** 与 **`config.yaml`** 微信槽位,并建议 **`check-wechat-env`**。文风与账号约束以 **`config.yaml`** 为准,发文元数据以本篇 **`article.yaml`** 为准。
### 第 0 步:判断操作系统
智能体在执行下列检测命令前,**先判断当前环境**:
- **Linux / macOS**:使用 Bash 命令(`test`、`echo` 等)。
- **Windows**:使用 **PowerShell** 命令(`Test-Path` 等)。
### 第 1 步:`.aws-article/config.yaml` 与 `aws.env` 是否存在
在**仓库根目录**(当前工作目录为项目根)执行:
**Linux / macOS:**
```bash
test -f .aws-article/config.yaml && test -f aws.env && echo "ok" || echo "missing"
```
**Windows(PowerShell):**
```powershell
if ((Test-Path -LiteralPath ".aws-article\config.yaml") -and (Test-Path -LiteralPath "aws.env")) { "ok" } else { "missing" }
```
⛔ 输出为 `missing`(任一文件不存在)→ 按 [首次引导](references/first-time-setup.md) 创建或补全:可参考 **`{baseDir}/references/config.example.yaml`** 得到 **`config.yaml`**,在仓库根创建 **`aws.env`**(仅密钥与微信 `WECHAT_N_APPID` / `WECHAT_N_APPSECRET` 等,键名可与 `{baseDir}/references/env.example.yaml` 对照)。
**初始化约束**:新建 **`.aws-article/config.yaml`** 时,`publish_method` 默认必须为 **`draft`**;除非用户明确指定不接微信,否则禁止初始化或改写为 `none`。
### 第 2 步:校验配置内容(`validate_env.py`)
两文件均存在后,在仓库根运行:
```bash
python {baseDir}/scripts/validate_env.py
```
(默认读取 **`.aws-article/config.yaml`** 与 **`aws.env`**;可用 `--config` / `--env` 指定路径。)
脚本检查(规则摘要,具体交互文案统一以 [首次引导](references/first-time-setup.md) 为准):
- **写作模型**:`config.yaml` 中 `writing_model.base_url` / `model` 与 `aws.env` 中 **`WRITING_MODEL_API_KEY`** 须同时非空(`provider` 可选,不填按 URL/模型名自动识别);否则 **`failed`** + **`写作模型配置不完整`**,**退出码 1**。
- **图片模型**:`image_model.base_url` / `model` 与 **`IMAGE_MODEL_API_KEY`** 须同时非空(`provider` 可选,不填按 URL/模型名自动识别);否则同上,**退出码 1**。
- **微信公众号**:`wechat_accounts`、`wechat_api_base`、各槽位名与 **`aws.env`** 中 **`WECHAT_{i}_APPID` / `WECHAT_{i}_APPSECRET`** 须成对完整;否则 **`failed`** + **`微信公众号配置不完整`**,**退出码 1**。**例外**:**`config.yaml`** 中 **`publish_method: none`**(用户明确不接微信)时,**跳过**微信组校验,仍输出 **`True`**(并附一行说明已跳过)。
**退出码 0**:写作、图片均通过,且(未声明 **`none`** 时)微信也通过 → **`True`** + **`配置校验通过`**。**退出码 1**:任一组未通过 → 不得进入一条龙默认流水线,并引导 [首次引导](references/first-time-setup.md) 补全或 **`publish_method: none`** 后重跑。
### 第 2.5 步:创建预设与运行目录(硬性前置,必须执行)
**仅当第 2 步退出码为 0** 才执行本步;执行成功后才允许进入「2) 全局账号约束」与后续流水线。
目录要求与命令以 [首次引导第 2 步](references/first-time-setup.md) 为准(需覆盖 `presets/*` 与 `tmp`)。**业务资料库 `.aws-article/products/{产品名}/`** 不在本步建——由 AI 写第一份业务介绍时按 [assets skill](../aws-wechat-article-assets/SKILL.md) 自动 mkdir。
- **禁止**因为“环境检查通过”就跳过本步直接写稿。
- 若目录已存在,可视为本步通过;若缺失,必须立即补建并继续校验。
### 第 3 步:调用 `publish.py` 前(`publish_method` + 微信)
- **`publish_method`**(**`draft`** / **`published`** / **`none`**)写在 **`config.yaml`**,**默认 `draft`**。**`none`** = 用户明确不填微信:**`full`** 不调 API。要「发布出去」→ **`published`** 或 **`full --publish`**。
- **微信**:在 **`aws.env`**;槽位在 **`config.yaml`**。**`draft`/`published`** 走 **`full`** 前须就绪;**`none`** 下不调用微信。
- 运行 **`publish.py full`** 前:确认 **`publish_method`** 合法(小写);**非 `none`** 时建议 **`check-wechat-env`**。
### 智能体行为约束(禁止自作主张)
检测到 **`.aws-article/config.yaml` 或 `aws.env` 缺失**、**`validate_env.py` 退出码 1**(微信配置不完整,且未声明 **`publish_method: none`**),或用户**已要求调用 `publish.py`** 而微信槽位 / 凭证未就绪时:
- **禁止**在未询问用户、未取得用户**明确文字确认**的情况下,自行决定:跳过微信配置、仅出 prompt 却继续宣称「一条龙已完成」、或继续排版/发布并假装配置已就绪。
- **必须先**:向用户说明**具体缺哪一类**(脚本 **`failed`** 下的 **`微信公众号配置不完整`**;或即将 **`publish.py`** 但微信未配齐),并**统一按** [首次引导](references/first-time-setup.md) 中「校验失败时的配置引导」文案执行。
- **输出约束**:该场景下除”环境检查结果”可按实际失败项替换外,其余引导文案须与首次引导保持一致。
- 用户在本地编辑器中填好 `aws.env` 与 `config.yaml` 并保存后,智能体协助重跑 **`validate_env.py`** 复检;若用户明确声明本次例外,按首次引导与本节约束继续处理。
- **凭证处理原则**:Agent **不得索取、不得接收**用户在对话里粘贴的 `APPSECRET` / `API_KEY` 等任何密钥;所有密钥由用户自己在编辑器里写入 `aws.env`(或通过 `https://aiworkskills.cn/` 平台配置)。Agent 只校验存在性、不读取值、不外发值。
> **模型未配置例外**:写作模型默认阻断;仅当**用户明确同意**由 Agent 代写并传入 `--agent-writing-approved` 时,写作模型未配置才降为警告。图片模型同理,仅在**用户明确同意**使用 Agent 代生图并传入 `--agent-image-capable` 时降为警告;未获用户明确同意时,模型未配置均按阻断处理。须告知用户当前使用的方式。
> **单步子 skill**:用户只触发某一子能力(如仅排版、仅审稿)且**未走本总览流水线**时,仍以各子 skill 内说明为准;**一条龙 / 完整流程 / 从选题到发布** 必须满足本节 BLOCKING 与上条「禁止自作主张」。
## 主要配置文件(不要混用)
| 文件 | 位置 | 作用 |
|------|------|------|
| `aws.env` | **仓库根** | **密钥**:写作/图片 `*_API_KEY`、微信 `WECHAT_N_APPID` / `WECHAT_N_APPSECRET` 等(键名见 `references/env.example.yaml`;与 `config.yaml` 一起由 `validate_env.py` 校验) |
| `.aws-article/config.yaml` | 仓库内 | **非密钥配置**:账号文风、模型 `provider`/`base_url`/`model`、微信槽位数与 `wechat_api_base`、各槽位展示名等(模板见 `references/config.example.yaml`) |
| `references/env.example.yaml` | 仓库内示例 | **仅文档**:`aws.env` 键名说明 |
| `references/config.example.yaml` | 仓库内示例 | **仅文档**:`config.yaml` 结构示例 |
| `article.yaml` | **本篇目录** `drafts/YYYYMMDD-标题slug/` | **发文元数据**(标题/作者/摘要/封面等)及状态字段:**`image_source`**(仅 `generated` / `user`;默认 `generated`,用户上传配图时改为 `user`)与 **`publish_completed`**(新建 **`false`**,发布闭环结束 **`true`**),与 **`config.yaml`** 分工 |
### 发布方式与时间线
1. **账号与发布策略**:**文风、选题边界、`publish_method`(默认 **`draft`**)、微信槽位元数据**等均在 **`.aws-article/config.yaml`** 维护;**密钥**仅在 **`aws.env`**。
2. **本篇准备**(须先完成交互顺序 **「2) 全局账号约束」**):在 **定题与 slug** 之后新建 `drafts/YYYYMMDD-标题slug/`,并**优先**创建 **`article.yaml`**(含 **`publish_completed: false`**、标题/作者/摘要等;通常为本目录内**首个**应落盘的文件),再进入内容流水线。
3. **执行原则(严格顺序)**:必须按下述流水线顺序依次执行,**不能跳过任何部分**;每到一步若缺少必要输入(目录、元数据、主题、用户选择、发布意图等),要**先及时询问用户并获得确认**,再进入下一步,除非用户指出基于某个历史任务继续创作,那么需要智能体根据中间产物判断从哪个阶段开始。
4. **内容流水线**(子 skill 串行,详见下文 **「交互顺序」第 4 步** 与 **「流程」** 表):**选题**([topics](../aws-wechat-article-topics/SKILL.md))→ **写稿**([writing](../aws-wechat-article-writing/SKILL.md))→ **审稿(内容审)**([review](../aws-wechat-article-review/SKILL.md))→ **排版**([formatting](../aws-wechat-article-formatting/SKILL.md))→ **配图**([images](../aws-wechat-article-images/SKILL.md))→ **审稿(终审)**(review)。**内容审**产出的 **`article.md` 定稿须满足 [review 第 5 步](../aws-wechat-article-review/SKILL.md)(文末 **`{embed:…}`**,⛔ BLOCKING)后再排版。全程以 **`.aws-article/config.yaml`** 为账号与文风约束;典型产物依次为 `topic-card.md` / `draft.md` → `article.md` → `article.html` 与 `imgs/` 等。
5. **发布**([publish](../aws-wechat-article-publish/SKILL.md)):**`draft`** → **`full`** 仅**草稿箱**;**`published`** 或 **`full --publish`** → 再**提交发布**;**`none`** → **`full`** **立即跳过**、不调微信。前两档需微信凭证。
**再强调**:**`aws.env`** = 密钥;**`config.yaml`** = 账号/文风/模型与微信元数据及 **`publish_method`**;**本篇 `article.yaml`** = 发文元数据。
## 交互顺序(一步步,最小提问)
按以下顺序与用户交互,**上一步完成再进下一步**;上一环节就绪后再进入下一环节。
### 1) 配置自检(必做)
- 按上文 **配置检查** 完成:**`config.yaml` 与 `aws.env` 均存在** → 运行 **`validate_env.py`**(默认不加 `--agent-image-capable`)**且退出码 0**。**退出码 1** 时按 [首次引导](references/first-time-setup.md) 补全环境;仅当用户**明确表示不接微信**时才可设 **`none`**;走**本次例外**需用户明确书面确认。
- **`validate_env.py` 退出码 0 后,必须立即执行「第 2.5 步目录创建」**(可复用 [首次引导第 2 步](references/first-time-setup.md) 命令);该步完成前,**禁止**进入「2) 全局账号约束」与任何写稿流程。
- **退出码 0 + 模型警告**:流程**不阻断**,可直接进入下一步。模型警告仅在用户已明确同意并传入对应参数时出现:写作模型用 `--agent-writing-approved`,图片模型用 `--agent-image-capable`。
- **禁止擅自加参数**:未获用户明确同意前,禁止自行追加 `--agent-image-capable` 或宣称可按代生图模式继续。
- **退出码 1(微信不完整)时**:只展示 [首次引导](references/first-time-setup.md) 中的 **配置选项**,**不要**在同一轮回复里再问「写哪篇 / 继续哪篇草稿 / 新选题」等;须等配置闭环(重跑校验通过或「本次例外」已书面确认)后,**再**进入下方 **「2) 全局账号约束」**。
- **`validate_env.py` 不检查** `article_category`、`target_reader`、`default_author`;须在 **「2) 全局账号约束」** 中单独检查并落盘。
### 2) 全局账号约束(`.aws-article/config.yaml`)⛔
**在 `validate_env.py` 已通过**(或已按总览完成「本次例外」)**之后、进入「3) 本篇准备」之前**,**必须**打开 **`.aws-article/config.yaml`**,检查下列键 **trim 后是否非空**:
- **`article_category`**、**`target_reader`**、**`default_author`**
任一项缺失或空白:**逐项询问用户**(1.账号领域2.目标读者3.作者名字),取得**用户当轮明确答复**后再**写回** **`.aws-article/config.yaml`**,再进入 **「3) 本篇准备」**。**禁止**仅在对话里口头确认却不写入文件。**禁止**跳过本步直接假定可写稿。
**⛔ 禁止擅自填写(必须写进行为约束)**
- **不得**从本篇或其它目录的 **`article.yaml`**、历史草稿、**`topic-card.md`**、对话记忆或仓库内任意文件**静默抄录、推断或「顺手补全」**后写入 **`article_category` / `target_reader` / `default_author`**。对 **`tone`** 等与账号画像强相关的全局项,要直接询问用户,**同样禁止**未询问就写盘。
- **允许的做法**:向用户说明「当前为空」,**请用户填写或确认**;若你想根据某篇 `article.yaml` 给**建议**,只能**展示为待选文案**,并问「是否采用 / 要改哪几个字」,**用户明确同意后再写入** `config.yaml`。
- **顺序**:在尚未完成 **「3) 本篇准备」** 中「续旧 / 新开」的确认前,**禁止**用某一 `drafts/…/article.yaml` **反推**全局三键,避免误把单篇元数据当成整号定位。
### 3) 本篇准备(二选一,默认「新建一篇」)
**在完成「2) 全局账号约束」之后**,**在不了解用户是要续写既有草稿还是新开一篇时**(例如未指定 `drafts/…` 路径、且仓库 **`drafts/`** 下存在进行中目录或多个候选):**须先询问**并让用户选定 **「继续哪一篇」** 或 **「新开一篇」**,**再**进入下列 A/B 或调用写作脚本。**禁止**默认「最近修改」目录、未确认就运行写作脚本、或假定沿用上一轮路径。
**业务素材双向规则(涉及用户自身业务时强制,详见 [assets skill](../aws-wechat-article-assets/SKILL.md))**:
- **读**:若本篇涉及用户自家业务(产品/软件/服务),**先 `ls .aws-article/products/`** 看有无相关产品目录,进入后必读根下 `*.md`(业务介绍)作为底稿来源;`images/` 子目录里有现成业务配图则优先复用。
- **写**:本流程中产生的内容若**语义属于业务介绍**(不是文章主体而是侧重产品/服务自介),由 AI 主动引导用户保存到 `.aws-article/products/{产品名}/{文件名}.md`(用 Write 工具直接落库;目录不存在时同时创建 `images/`),下次涉及业务的文章自动用上。
#### A. 新建一篇(**严格子顺序**,勿跳步)
1. **写作意图** ⛔ **BLOCKING**:必须问清用户 **本篇要写什么**(具体主题、角度、体裁或目标)。若用户只想「帮我出选题」,须**明确确认**后再当无方向模式处理。
- **禁止**在用户未回答本步(且当前对话也未等价说明)之前:**调用 web_search**、**执行 topics 的调研**、**批量生成选题或标题**。
- 用户已在当次对话中说清楚「写什么」的,可本步口头确认一句即可,不必重复盘问。
2. **定题与 slug**:在写作意图已明确的前提下,确定**发文章标题**——用户从候选中选一个,或**自定义标题**;据此生成 **slug**,目录名为 `YYYYMMDD-标题slug`(slug 规则:小写、连字符、与项目习惯一致即可)。
3. **建目录与 `article.yaml`**:创建 `{drafts_root}/YYYYMMDD-标题slug/`(`drafts_root` 以 **`config.yaml`** 为准,默认 `drafts/`)。随即初始化本篇 **`article.yaml`**(含 **`publish_completed: false`**,及标题、作者、摘要等;目录内**宜最先写入**;可用 `{baseDir}/../aws-wechat-article-publish/scripts/article_init.py`)。
- **`publish_method`**:默认 **`draft`**;要发出去 → **`published`** 或 **`full --publish`**;用户明确不填微信 → **`none`**。
4. **本篇预设单选落盘(必做)**:初始化后按场景执行:**新建首轮**以 **`.aws-article/config.yaml`** 为来源,按 **`custom_* > default_*`** 结合本篇主题/选题卡,为以下字段各选**单一预设**并写回本篇 **`article.yaml`** 为**单元素列表**:`default_structure`、`default_closing_block`、`default_title_style`、`default_format_preset`、`default_cover_image_style`、`default_article_image_style`、`default_sticker_style`。**续写/重入**时若本篇 `article.yaml` 对应字段已为单元素列表,视为本篇已选并优先保留,不重选不覆盖。若 `config.yaml` 不存在或候选为空,可保持 `[]`。
5. 至此才进入 **第 4 步内容流水线**。
#### B. 我已有目录
- 用户给出路径。必读 **`.aws-article/config.yaml`**(账号与发布策略);本篇目录内需有 **`article.yaml`**(或按用户状态后补)。若已有 `article.html`/`cover.jpg` 可直接从流水线中靠后的步骤接入。
- 若用户意图是「发布后换图并重发草稿箱」,也走本分支:指定既有目录后,从 **配图(用户供图分支)** 接入,再执行 **终审 → 发布**。
### 4) 内容流水线(子 skill)
须已具备 **本篇目录** 与 **`article.yaml`**(「已有目录」分支按上条处理);账号侧约束以 **`config.yaml`** 为准。
**确认轮次优化**:全局三键已非空时静默通过;`publish_method` 已为合法值时不重复盘问;多个待确认项可合并为一轮提问。用户意图明确时(如给出主题 + "写一篇文章"),理想轮次为 **1 轮**(确认标题/摘要)+ **写完后展示结果**。配图方案在用户无特殊要求时按默认风格自动执行,不单独确认。
```
选题 → 写稿 → 审稿(内容审) → 排版 → 配图 → 审稿(终审)
```
- **topics**:仅在 **写作意图已明确**(见上 3-A-1)之后执行;仍须遵守 **aws-wechat-article-topics** 中「展示后等用户选」等规则。
- **writing**:结合 **`.aws-article/config.yaml`** 与 `topic-card.md`(或用户素材);**`publish_method`** 见 **`config.yaml`**(上文「发布方式与时间线」);产物 `draft.md` → 内容审后 `article.md`。
- **review(内容审)**:定稿 **`article.md` 前**须按 [review 第 5 步 ⛔ BLOCKING](../aws-wechat-article-review/SKILL.md) 完成文末 **`{embed:…}`**(或规则允许的省略并留痕);**未完成不得进入 formatting**。
- **formatting**:`article.md` → `article.html`(用户当次指定排版主题可覆盖默认)。
- **images**:按 **aws-wechat-article-images**(配置与行为约束以本节「配置检查」为准)。
- **review(终审)**:检查 `article.html` 与 `imgs/`;有问题给出清单,等用户确认或修复。
### 5) 发布
- 以 **`config.yaml`** 的 **`publish_method`** 为准;**`draft`** / **`published`** / **`none`** 含义见上文。**`none`** 时运行 **`full`** 会无操作退出。
- **`draft`/`published`**:**微信**须配齐后再调 **`publish.py`**;建议 **`check-wechat-env`**。**`none`**:不调微信,说明即可。
- 完成后输出小结与回执,目录按需移至 `published_root`。
### 6) 发布后换图重发(补充分支)
当用户说「草稿箱里图不满意,换我上传的图重新发」:
1. 锁定目标 `drafts/…` 目录;
2. 将新图放入本篇 `imgs/`,生成/更新 `img_analysis.md`(封面仅 1 张);
- 同步更新本篇 `article.yaml`:`image_source: user`;
- 开始重做流程前,将 `publish_completed` 置回 `false`;
3. 依据分析结果更新 `article.md` 图片映射(允许重排);
4. 重新执行 `format.py` 生成 `article.html`;
5. 终审通过后执行 `publish.py full`(`draft` 写草稿箱);
6. 发布命令成功且回执可用后,写回 `publish_completed: true`。
## 流程
```
选题 → 写稿 → 审稿(内容审) → 排版 → 配图 → 审稿(终审) → 发布
```
## 中间产物门禁(缺啥补啥)⛔
进入下一步前,必须先检查本步所需中间产物;缺什么就先补什么,禁止跳步并宣称已完成。
| 阶段 | 必要产物(最小集合) | 缺失时动作 |
|------|----------------------|------------|
| 写稿完成 | `article.md` 存在且非空 | 继续写稿或回滚到 writing |
| 排版完成 | `article.html` 存在,且由当前 `article.md` 重新生成 | 先执行 formatting 重转 |
| 配图完成 | 文章目录存在 `cover.(png/jpg/jpeg/webp)`;`article.md` 与 `article.html` 不含 `placeholder` | 先执行 images 生成并替换(`image_source=user` 时走用户供图映射与重排) |
| 发布就绪 | `article.yaml` 含 `title/author/digest/content_source`;发布环境检查通过 | 先补齐元数据或环境 |
| 发布闭环 | 发布命令成功且回执可用 | 才允许写回 `publish_completed: true` |
**禁止**:仅凭单一信号(如“草稿创建成功”)就宣称全流程完成。若正文仍有 `placeholder`,状态必须标记为“草稿已提交,正文配图未完成”。
| 步骤 | 子 skill | 读取 | 产出 |
|------|---------|------|------|
| 选题 | topics | **`.aws-article/config.yaml`**、`aws.env`、web_search | `topic-card.md` `research.md` |
| 写稿 | writing | `topic-card.md`、**`.aws-article/config.yaml`**、`aws.env`(专用写作 API) | `draft.md` |
| 审稿 | review | `draft.md`、`aws.env`、**`.aws-article/config.yaml`** | `review.md` → `article.md`(定稿须含文末 embed,见 [review 第 5 步](../aws-wechat-article-review/SKILL.md)) |
| 排版 | formatting | `article.md`、**`.aws-article/config.yaml`** | `article.html` |
| 配图 | images | `article.md`、`aws.env`、**`.aws-article/config.yaml`** | `imgs/` |
| 终审 | review | `article.html`、`imgs/`、**`.aws-article/config.yaml`** | `review.md` |
| 发布 | publish | `article.html`+`imgs/`、**`config.yaml`**、`aws.env`(调用 publish.py 时) | 草稿 media_id / 发布 publish_id、URL、`out/` 记录 |
**账号与文风约束**:以 **`.aws-article/config.yaml`** 为准。
**topics / `web_search`**:须满足上文 **3-A-1**(用户已说明本篇写什么,或已确认「只帮忙出选题」)之后才可调研与生成选题;不得默认跳过提问直接搜索。
> 提示:发布前需就绪本篇 `article.yaml`(标题/作者/摘要/封面等元数据;`content_source` 默认 `article.html`)。可用 `{baseDir}/../aws-wechat-article-publish/scripts/article_init.py` 快速初始化或更新。
## 路由
**默认**:与长文发文相关时 **优先 main**,由本 skill 按步编排;不要因用户说了「写」「选题」「发」就跳过 main 直连子 skill。
**何时直连子 skill**(可跳过 main 入口):用户**明确只要该步产物**、且不隐含「从零到发出」整条链。例如:已有 `article.md` 只要排版;已有稿只要审稿清单;已有 `article.html`+`imgs/` 只要发布前检查或提交;已有选题卡只要扩写等。
| 用户说法 | 路由到 |
|---------|--------|
| 从0开始、从零、从头、一条龙、完整流程、帮我发一篇、发到公众号(含各前置步)、今天发什么/写什么好(要成文并发)、不确定从哪步开始 | **main** |
| **只要**选题卡、标题、摘要、排期、系列策划(明确不做后续编排) | topics |
| **只要**在已有选题/大纲/草稿上写稿、改写、润色、续写(明确不要全流程) | writing |
| **只要**审稿/校对/合规清单(成稿或已定版 HTML) | review |
| 「能不能发」且含代为发布、或要从稿到发出整条收尾 | **main** |
| **只要**排版、换主题、转 HTML | formatting |
| **只要**长文封面/正文配图(有正文或插图位) | images |
| 贴图、图片消息、多图推送、九宫格(非长文图文链路) | **sticker** |
| **只要**执行发布/提交/群发(已有约定产物) | publish |
## 运行模式
### 一条龙
用户说「一条龙」「完整流程」时启用。按 **交互顺序** 的 1→2→3→4→5 执行;**3-A** 内子步骤亦须逐步完成。流水线中每步完成后**暂停**等用户确认。审稿有 🔴 项时进入修改循环。
### 单步
用户**明确只要某一步**且已有对应输入产物(或声明不做全流程)时,可仅执行该步骤;若表述含糊、可能还要后续发文,仍从 **main** 问起或按一条龙拆步确认。
### 贴图
路由到独立的 **aws-wechat-sticker** skill。
## 配置与自定义
- **`aws.env`**(仓库根,密钥)与 **`.aws-article/config.yaml`**(非密钥与模型/微信元数据及 **`publish_method`**):校验 **`{baseDir}/scripts/validate_env.py`**;`aws.env` 键名见 **`references/env.example.yaml`**
- **`config.yaml` / `article.yaml` / `aws.env` 字段说明**:[references/articlescreening-schema.md](references/articlescreening-schema.md)
- 发布前微信:**`{baseDir}/../aws-wechat-article-publish/scripts/publish.py check-wechat-env`**(仓库根执行,试换微信 **access_token**;凭证在 **`aws.env`**)
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!