{"id":"1177f910-dc3c-451f-a2c1-75e27e181c77","shortId":"Q9Py3A","kind":"skill","title":"aws-wechat-article-main","tagline":"公众号运营｜微信公众号｜公众号一条龙｜公众号全流程｜自媒体运营｜wechat automation｜content pipeline｜AIGC workflow — 公众号一条龙运营总控入口，选题→写稿→审稿→排版→配图→发布串联 8 个子 skill，单条指令完成整篇图文从 0 到上架。面向公众号小编、自媒体、品牌内容。触发词分层：**一条龙流程**「一条龙」「完整流程」「从头做」「从 0 到发布」；**新做新发**「帮我写篇公众号文章」「做一篇公众号文章」「我想发一篇」「帮我发一篇」「再来一篇」；**选题起点**「今天写什么好」「有什么好写的」「找个","description":"# 公众号运营总览\n\n**一键式公众号 AI 内容流水线** —— 从选题到上架 8 个子 skill 串联，公众号小编 / 自媒体 / 品牌内容团队一键产出整篇图文。\n\n> **套件说明** · `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>\n\n## 能力披露（Capabilities）\n\n本 skill 作为一条龙套件**编排入口**；真正调用外部 API 的是子 skill（writing / images / publish / sticker / review）。**本入口自身的 `validate_env.py` 脚本**行为：\n\n- **凭证读取**：读取仓库根 `aws.env` 的 `WRITING_MODEL_API_KEY` / `IMAGE_MODEL_API_KEY` / `WECHAT_{N}_APPID` / `WECHAT_{N}_APPSECRET`，**仅用于校验键是否存在且非空**，值不用于任何网络请求\n- **网络**：本入口脚本无外发请求；**子 skill 有外发**（详见各子 skill 的能力披露）\n- **文件读**：仓库内 `aws.env`、`.aws-article/config.yaml`、本篇 `article.yaml`\n- **文件写**：仓库内 —— `.aws-article/`（首次引导创建目录结构）、本篇 `article.yaml` 状态字段\n- **shell**：仅 `python3 {baseDir}/scripts/validate_env.py`\n\n> **注意**：整体套件（含子 skill）会调用外部 LLM、图像 API 与微信 API，并在调用时外发 API key 与本篇内容。完整行为见各子 skill 的「能力披露」。\n\n## 配套 skill（informational）\n\n本 skill 是 `aws-wechat-article-*` 一条龙公众号套件的入口，编排 8 个子 skill：`topics / writing / review / formatting / images / publish / assets` 以及 `aws-wechat-sticker`。\n\n- **装齐全部 9 个 slug** 到同一 `skills/` 根目录，才能走完整一条龙流程（选题→写稿→审稿→排版→配图→发布）。\n- 只装 main 一个时，仍可用于环境校验（`validate_env.py`）；进入内容流水线会因对应子 skill 缺失而无法执行相关步骤（工作流里的跨 skill 脚本调用 / 文档读取会遇到 `file not found`）。\n\n完整 9 slug 清单与安装指引见 [源码仓库](https://github.com/aiworkskills/wechat-article-skills)。\n\n**Agent 执行**：确定本 SKILL.md 所在目录为 `{baseDir}`。\n\n## 配置检查 ⛔ BLOCKING\n\n**进入交互顺序「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`** 为准。\n\n### 第 0 步：判断操作系统\n\n智能体在执行下列检测命令前，**先判断当前环境**：\n\n- **Linux / macOS**：使用 Bash 命令（`test`、`echo` 等）。\n- **Windows**：使用 **PowerShell** 命令（`Test-Path` 等）。\n\n### 第 1 步：`.aws-article/config.yaml` 与 `aws.env` 是否存在\n\n在**仓库根目录**（当前工作目录为项目根）执行：\n\n**Linux / macOS：**\n\n```bash\ntest -f .aws-article/config.yaml && test -f aws.env && echo \"ok\" || echo \"missing\"\n```\n\n**Windows（PowerShell）：**\n\n```powershell\nif ((Test-Path -LiteralPath \".aws-article\\config.yaml\") -and (Test-Path -LiteralPath \"aws.env\")) { \"ok\" } else { \"missing\" }\n```\n\n⛔ 输出为 `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` 对照）。\n\n**初始化约束**：新建 **`.aws-article/config.yaml`** 时，`publish_method` 默认必须为 **`draft`**；除非用户明确指定不接微信，否则禁止初始化或改写为 `none`。\n\n### 第 2 步：校验配置内容（`validate_env.py`）\n\n两文件均存在后，在仓库根运行：\n\n```bash\npython {baseDir}/scripts/validate_env.py\n```\n\n（默认读取 **`.aws-article/config.yaml`** 与 **`aws.env`**；可用 `--config` / `--env` 指定路径。）\n\n脚本检查（规则摘要，具体交互文案统一以 [首次引导](references/first-time-setup.md) 为准）：\n\n- **写作模型**：`config.yaml` 中 `writing_model.base_url` / `model` 与 `aws.env` 中 **`WRITING_MODEL_API_KEY`** 须同时非空（`provider` 可选，不填按 URL/模型名自动识别）；否则 **`failed`** + **`写作模型配置不完整`**，**退出码 1**。\n- **图片模型**：`image_model.base_url` / `model` 与 **`IMAGE_MODEL_API_KEY`** 须同时非空（`provider` 可选，不填按 URL/模型名自动识别）；否则同上，**退出码 1**。\n- **微信公众号**：`wechat_accounts`、`wechat_api_base`、各槽位名与 **`aws.env`** 中 **`WECHAT_{i}_APPID` / `WECHAT_{i}_APPSECRET`** 须成对完整；否则 **`failed`** + **`微信公众号配置不完整`**，**退出码 1**。**例外**：**`config.yaml`** 中 **`publish_method: none`**（用户明确不接微信）时，**跳过**微信组校验，仍输出 **`True`**（并附一行说明已跳过）。\n\n**退出码 0**：写作、图片均通过，且（未声明 **`none`** 时）微信也通过 → **`True`** + **`配置校验通过`**。**退出码 1**：任一组未通过 → 不得进入一条龙默认流水线，并引导 [首次引导](references/first-time-setup.md) 补全或 **`publish_method: none`** 后重跑。\n\n### 第 2.5 步：创建预设与运行目录（硬性前置，必须执行）\n\n**仅当第 2 步退出码为 0** 才执行本步；执行成功后才允许进入「2) 全局账号约束」与后续流水线。  \n目录要求与命令以 [首次引导第 2 步](references/first-time-setup.md) 为准（需覆盖 `presets/*` 与 `tmp`）。**业务资料库 `.aws-article/products/{产品名}/`** 不在本步建——由 AI 写第一份业务介绍时按 [assets skill](../aws-wechat-article-assets/SKILL.md) 自动 mkdir。\n\n- **禁止**因为“环境检查通过”就跳过本步直接写稿。\n- 若目录已存在，可视为本步通过；若缺失，必须立即补建并继续校验。\n\n### 第 3 步：调用 `publish.py` 前（`publish_method` + 微信）\n\n- **`publish_method`**（**`draft`** / **`published`** / **`none`**）写在 **`config.yaml`**，**默认 `draft`**。**`none`** = 用户明确不填微信：**`full`** 不调 API。要「发布出去」→ **`published`** 或 **`full --publish`**。\n- **微信**：在 **`aws.env`**；槽位在 **`config.yaml`**。**`draft`/`published`** 走 **`full`** 前须就绪；**`none`** 下不调用微信。\n- 运行 **`publish.py full`** 前：确认 **`publish_method`** 合法（小写）；**非 `none`** 时建议 **`check-wechat-env`**。\n\n### 智能体行为约束（禁止自作主张）\n\n检测到 **`.aws-article/config.yaml` 或 `aws.env` 缺失**、**`validate_env.py` 退出码 1**（微信配置不完整，且未声明 **`publish_method: none`**），或用户**已要求调用 `publish.py`** 而微信槽位 / 凭证未就绪时：\n\n- **禁止**在未询问用户、未取得用户**明确文字确认**的情况下，自行决定：跳过微信配置、仅出 prompt 却继续宣称「一条龙已完成」、或继续排版/发布并假装配置已就绪。\n- **必须先**：向用户说明**具体缺哪一类**（脚本 **`failed`** 下的 **`微信公众号配置不完整`**；或即将 **`publish.py`** 但微信未配齐），并**统一按** [首次引导](references/first-time-setup.md) 中「校验失败时的配置引导」文案执行。\n- **输出约束**：该场景下除”环境检查结果”可按实际失败项替换外，其余引导文案须与首次引导保持一致。\n- 用户在本地编辑器中填好 `aws.env` 与 `config.yaml` 并保存后，智能体协助重跑 **`validate_env.py`** 复检；若用户明确声明本次例外，按首次引导与本节约束继续处理。\n- **凭证处理原则**：Agent **不得索取、不得接收**用户在对话里粘贴的 `APPSECRET` / `API_KEY` 等任何密钥；所有密钥由用户自己在编辑器里写入 `aws.env`（或通过 `https://aiworkskills.cn/` 平台配置）。Agent 只校验存在性、不读取值、不外发值。\n\n> **模型未配置例外**：写作模型默认阻断；仅当**用户明确同意**由 Agent 代写并传入 `--agent-writing-approved` 时，写作模型未配置才降为警告。图片模型同理，仅在**用户明确同意**使用 Agent 代生图并传入 `--agent-image-capable` 时降为警告；未获用户明确同意时，模型未配置均按阻断处理。须告知用户当前使用的方式。\n\n> **单步子 skill**：用户只触发某一子能力（如仅排版、仅审稿）且**未走本总览流水线**时，仍以各子 skill 内说明为准；**一条龙 / 完整流程 / 从选题到发布** 必须满足本节 BLOCKING 与上条「禁止自作主张」。\n\n## 主要配置文件（不要混用）\n\n| 文件 | 位置 | 作用 |\n|------|------|------|\n| `aws.env` | **仓库根** | **密钥**：写作/图片 `*_API_KEY`、微信 `WECHAT_N_APPID` / `WECHAT_N_APPSECRET` 等（键名见 `references/env.example.yaml`；与 `config.yaml` 一起由 `validate_env.py` 校验） |\n| `.aws-article/config.yaml` | 仓库内 | **非密钥配置**：账号文风、模型 `provider`/`base_url`/`model`、微信槽位数与 `wechat_api_base`、各槽位展示名等（模板见 `references/config.example.yaml`） |\n| `references/env.example.yaml` | 仓库内示例 | **仅文档**：`aws.env` 键名说明 |\n| `references/config.example.yaml` | 仓库内示例 | **仅文档**：`config.yaml` 结构示例 |\n| `article.yaml` | **本篇目录** `drafts/YYYYMMDD-标题slug/` | **发文元数据**（标题/作者/摘要/封面等）及状态字段：**`image_source`**（仅 `generated` / `user`；默认 `generated`，用户上传配图时改为 `user`）与 **`publish_completed`**（新建 **`false`**，发布闭环结束 **`true`**），与 **`config.yaml`** 分工 |\n\n### 发布方式与时间线\n\n1. **账号与发布策略**：**文风、选题边界、`publish_method`（默认 **`draft`**）、微信槽位元数据**等均在 **`.aws-article/config.yaml`** 维护；**密钥**仅在 **`aws.env`**。\n2. **本篇准备**（须先完成交互顺序 **「2) 全局账号约束」**）：在 **定题与 slug** 之后新建 `drafts/YYYYMMDD-标题slug/`，并**优先**创建 **`article.yaml`**（含 **`publish_completed: false`**、标题/作者/摘要等；通常为本目录内**首个**应落盘的文件），再进入内容流水线。\n3. **执行原则（严格顺序）**：必须按下述流水线顺序依次执行，**不能跳过任何部分**；每到一步若缺少必要输入（目录、元数据、主题、用户选择、发布意图等），要**先及时询问用户并获得确认**，再进入下一步，除非用户指出基于某个历史任务继续创作，那么需要智能体根据中间产物判断从哪个阶段开始。\n4. **内容流水线**（子 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/` 等。\n5. **发布**（[publish](../aws-wechat-article-publish/SKILL.md)）：**`draft`** → **`full`** 仅**草稿箱**；**`published`** 或 **`full --publish`** → 再**提交发布**；**`none`** → **`full`** **立即跳过**、不调微信。前两档需微信凭证。\n\n**再强调**：**`aws.env`** = 密钥；**`config.yaml`** = 账号/文风/模型与微信元数据及 **`publish_method`**；**本篇 `article.yaml`** = 发文元数据。\n\n## 交互顺序（一步步，最小提问）\n\n按以下顺序与用户交互，**上一步完成再进下一步**；上一环节就绪后再进入下一环节。\n\n### 1) 配置自检（必做）\n\n- 按上文 **配置检查** 完成：**`config.yaml` 与 `aws.env` 均存在** → 运行 **`validate_env.py`**（默认不加 `--agent-image-capable`）**且退出码 0**。**退出码 1** 时按 [首次引导](references/first-time-setup.md) 补全环境；仅当用户**明确表示不接微信**时才可设 **`none`**；走**本次例外**需用户明确书面确认。\n- **`validate_env.py` 退出码 0 后，必须立即执行「第 2.5 步目录创建」**（可复用 [首次引导第 2 步](references/first-time-setup.md) 命令）；该步完成前，**禁止**进入「2) 全局账号约束」与任何写稿流程。\n- **退出码 0 + 模型警告**：流程**不阻断**，可直接进入下一步。模型警告仅在用户已明确同意并传入对应参数时出现：写作模型用 `--agent-writing-approved`，图片模型用 `--agent-image-capable`。\n- **禁止擅自加参数**：未获用户明确同意前，禁止自行追加 `--agent-image-capable` 或宣称可按代生图模式继续。\n- **退出码 1（微信不完整）时**：只展示 [首次引导](references/first-time-setup.md) 中的 **配置选项**，**不要**在同一轮回复里再问「写哪篇 / 继续哪篇草稿 / 新选题」等；须等配置闭环（重跑校验通过或「本次例外」已书面确认）后，**再**进入下方 **「2) 全局账号约束」**。\n- **`validate_env.py` 不检查** `article_category`、`target_reader`、`default_author`；须在 **「2) 全局账号约束」** 中单独检查并落盘。\n\n### 2) 全局账号约束（`.aws-article/config.yaml`）⛔\n\n**在 `validate_env.py` 已通过**（或已按总览完成「本次例外」）**之后、进入「3) 本篇准备」之前**，**必须**打开 **`.aws-article/config.yaml`**，检查下列键 **trim 后是否非空**：\n\n- **`article_category`**、**`target_reader`**、**`default_author`**\n\n任一项缺失或空白：**逐项询问用户**（1.账号领域2.目标读者3.作者名字），取得**用户当轮明确答复**后再**写回** **`.aws-article/config.yaml`**，再进入 **「3) 本篇准备」**。**禁止**仅在对话里口头确认却不写入文件。**禁止**跳过本步直接假定可写稿。\n\n**⛔ 禁止擅自填写（必须写进行为约束）**\n\n- **不得**从本篇或其它目录的 **`article.yaml`**、历史草稿、**`topic-card.md`**、对话记忆或仓库内任意文件**静默抄录、推断或「顺手补全」**后写入 **`article_category` / `target_reader` / `default_author`**。对 **`tone`** 等与账号画像强相关的全局项，要直接询问用户，**同样禁止**未询问就写盘。\n- **允许的做法**：向用户说明「当前为空」，**请用户填写或确认**；若你想根据某篇 `article.yaml` 给**建议**，只能**展示为待选文案**，并问「是否采用 / 要改哪几个字」，**用户明确同意后再写入** `config.yaml`。\n- **顺序**：在尚未完成 **「3) 本篇准备」** 中「续旧 / 新开」的确认前，**禁止**用某一 `drafts/…/article.yaml` **反推**全局三键，避免误把单篇元数据当成整号定位。\n\n### 3) 本篇准备（二选一，默认「新建一篇」）\n\n**在完成「2) 全局账号约束」之后**，**在不了解用户是要续写既有草稿还是新开一篇时**（例如未指定 `drafts/…` 路径、且仓库 **`drafts/`** 下存在进行中目录或多个候选）：**须先询问**并让用户选定 **「继续哪一篇」** 或 **「新开一篇」**，**再**进入下列 A/B 或调用写作脚本。**禁止**默认「最近修改」目录、未确认就运行写作脚本、或假定沿用上一轮路径。\n\n**业务素材双向规则（涉及用户自身业务时强制，详见 [assets skill](../aws-wechat-article-assets/SKILL.md)）**：\n\n- **读**：若本篇涉及用户自家业务（产品/软件/服务），**先 `ls .aws-article/products/`** 看有无相关产品目录，进入后必读根下 `*.md`（业务介绍）作为底稿来源；`images/` 子目录里有现成业务配图则优先复用。\n- **写**：本流程中产生的内容若**语义属于业务介绍**（不是文章主体而是侧重产品/服务自介），由 AI 主动引导用户保存到 `.aws-article/products/{产品名}/{文件名}.md`（用 Write 工具直接落库；目录不存在时同时创建 `images/`），下次涉及业务的文章自动用上。\n\n#### A. 新建一篇（**严格子顺序**，勿跳步）\n\n1. **写作意图** ⛔ **BLOCKING**：必须问清用户 **本篇要写什么**（具体主题、角度、体裁或目标）。若用户只想「帮我出选题」，须**明确确认**后再当无方向模式处理。  \n   - **禁止**在用户未回答本步（且当前对话也未等价说明）之前：**调用 web_search**、**执行 topics 的调研**、**批量生成选题或标题**。  \n   - 用户已在当次对话中说清楚「写什么」的，可本步口头确认一句即可，不必重复盘问。\n2. **定题与 slug**：在写作意图已明确的前提下，确定**发文章标题**——用户从候选中选一个，或**自定义标题**；据此生成 **slug**，目录名为 `YYYYMMDD-标题slug`（slug 规则：小写、连字符、与项目习惯一致即可）。\n3. **建目录与 `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`）。\n   - **`publish_method`**：默认 **`draft`**；要发出去 → **`published`** 或 **`full --publish`**；用户明确不填微信 → **`none`**。\n4. **本篇预设单选落盘（必做）**：初始化后按场景执行：**新建首轮**以 **`.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` 不存在或候选为空，可保持 `[]`。\n5. 至此才进入 **第 4 步内容流水线**。\n\n#### B. 我已有目录\n\n- 用户给出路径。必读 **`.aws-article/config.yaml`**（账号与发布策略）；本篇目录内需有 **`article.yaml`**（或按用户状态后补）。若已有 `article.html`/`cover.jpg` 可直接从流水线中靠后的步骤接入。\n- 若用户意图是「发布后换图并重发草稿箱」，也走本分支：指定既有目录后，从 **配图（用户供图分支）** 接入，再执行 **终审 → 发布**。\n\n### 4) 内容流水线（子 skill）\n\n须已具备 **本篇目录** 与 **`article.yaml`**（「已有目录」分支按上条处理）；账号侧约束以 **`config.yaml`** 为准。\n\n**确认轮次优化**：全局三键已非空时静默通过；`publish_method` 已为合法值时不重复盘问；多个待确认项可合并为一轮提问。用户意图明确时（如给出主题 + \"写一篇文章\"），理想轮次为 **1 轮**（确认标题/摘要）+ **写完后展示结果**。配图方案在用户无特殊要求时按默认风格自动执行，不单独确认。\n\n```\n选题 → 写稿 → 审稿(内容审) → 排版 → 配图 → 审稿(终审)\n```\n\n- **topics**：仅在 **写作意图已明确**（见上 3-A-1）之后执行；仍须遵守 **aws-wechat-article-topics** 中「展示后等用户选」等规则。\n- **writing**：结合 **`.aws-article/config.yaml`** 与 `topic-card.md`（或用户素材）；**`publish_method`** 见 **`config.yaml`**（上文「发布方式与时间线」）；产物 `draft.md` → 内容审后 `article.md`。\n- **review（内容审）**：定稿 **`article.md` 前**须按 [review 第 5 步 ⛔ BLOCKING](../aws-wechat-article-review/SKILL.md) 完成文末 **`{embed:…}`**（或规则允许的省略并留痕）；**未完成不得进入 formatting**。\n- **formatting**：`article.md` → `article.html`（用户当次指定排版主题可覆盖默认）。\n- **images**：按 **aws-wechat-article-images**（配置与行为约束以本节「配置检查」为准）。\n- **review（终审）**：检查 `article.html` 与 `imgs/`；有问题给出清单，等用户确认或修复。\n\n### 5) 发布\n\n- 以 **`config.yaml`** 的 **`publish_method`** 为准；**`draft`** / **`published`** / **`none`** 含义见上文。**`none`** 时运行 **`full`** 会无操作退出。\n- **`draft`/`published`**：**微信**须配齐后再调 **`publish.py`**；建议 **`check-wechat-env`**。**`none`**：不调微信，说明即可。\n- 完成后输出小结与回执，目录按需移至 `published_root`。\n\n### 6) 发布后换图重发（补充分支）\n\n当用户说「草稿箱里图不满意，换我上传的图重新发」：\n\n1. 锁定目标 `drafts/…` 目录；\n2. 将新图放入本篇 `imgs/`，生成/更新 `img_analysis.md`（封面仅 1 张）；\n   - 同步更新本篇 `article.yaml`：`image_source: user`；\n   - 开始重做流程前，将 `publish_completed` 置回 `false`；\n3. 依据分析结果更新 `article.md` 图片映射（允许重排）；\n4. 重新执行 `format.py` 生成 `article.html`；\n5. 终审通过后执行 `publish.py full`（`draft` 写草稿箱）；\n6. 发布命令成功且回执可用后，写回 `publish_completed: true`。\n\n## 流程\n\n```\n选题 → 写稿 → 审稿(内容审) → 排版 → 配图 → 审稿(终审) → 发布\n```\n\n## 中间产物门禁（缺啥补啥）⛔\n\n进入下一步前，必须先检查本步所需中间产物；缺什么就先补什么，禁止跳步并宣称已完成。\n\n| 阶段 | 必要产物（最小集合） | 缺失时动作 |\n|------|----------------------|------------|\n| 写稿完成 | `article.md` 存在且非空 | 继续写稿或回滚到 writing |\n| 排版完成 | `article.html` 存在，且由当前 `article.md` 重新生成 | 先执行 formatting 重转 |\n| 配图完成 | 文章目录存在 `cover.(png/jpg/jpeg/webp)`；`article.md` 与 `article.html` 不含 `placeholder` | 先执行 images 生成并替换（`image_source=user` 时走用户供图映射与重排） |\n| 发布就绪 | `article.yaml` 含 `title/author/digest/content_source`；发布环境检查通过 | 先补齐元数据或环境 |\n| 发布闭环 | 发布命令成功且回执可用 | 才允许写回 `publish_completed: true` |\n\n**禁止**：仅凭单一信号（如“草稿创建成功”）就宣称全流程完成。若正文仍有 `placeholder`，状态必须标记为“草稿已提交，正文配图未完成”。\n\n| 步骤 | 子 skill | 读取 | 产出 |\n|------|---------|------|------|\n| 选题 | topics | **`.aws-article/config.yaml`**、`aws.env`、web_search | `topic-card.md` `research.md` |\n| 写稿 | writing | `topic-card.md`、**`.aws-article/config.yaml`**、`aws.env`（专用写作 API） | `draft.md` |\n| 审稿 | review | `draft.md`、`aws.env`、**`.aws-article/config.yaml`** | `review.md` → `article.md`（定稿须含文末 embed，见 [review 第 5 步](../aws-wechat-article-review/SKILL.md)） |\n| 排版 | formatting | `article.md`、**`.aws-article/config.yaml`** | `article.html` |\n| 配图 | images | `article.md`、`aws.env`、**`.aws-article/config.yaml`** | `imgs/` |\n| 终审 | review | `article.html`、`imgs/`、**`.aws-article/config.yaml`** | `review.md` |\n| 发布 | publish | `article.html`+`imgs/`、**`config.yaml`**、`aws.env`（调用 publish.py 时） | 草稿 media_id / 发布 publish_id、URL、`out/` 记录 |\n\n**账号与文风约束**：以 **`.aws-article/config.yaml`** 为准。\n\n**topics / `web_search`**：须满足上文 **3-A-1**（用户已说明本篇写什么，或已确认「只帮忙出选题」）之后才可调研与生成选题；不得默认跳过提问直接搜索。\n\n> 提示：发布前需就绪本篇 `article.yaml`（标题/作者/摘要/封面等元数据；`content_source` 默认 `article.html`）。可用 `{baseDir}/../aws-wechat-article-publish/scripts/article_init.py` 快速初始化或更新。\n\n## 路由\n\n**默认**：与长文发文相关时 **优先 main**，由本 skill 按步编排；不要因用户说了「写」「选题」「发」就跳过 main 直连子 skill。\n\n**何时直连子 skill**（可跳过 main 入口）：用户**明确只要该步产物**、且不隐含「从零到发出」整条链。例如：已有 `article.md` 只要排版；已有稿只要审稿清单；已有 `article.html`+`imgs/` 只要发布前检查或提交；已有选题卡只要扩写等。\n\n| 用户说法 | 路由到 |\n|---------|--------|\n| 从0开始、从零、从头、一条龙、完整流程、帮我发一篇、发到公众号（含各前置步）、今天发什么/写什么好（要成文并发）、不确定从哪步开始 | **main** |\n| **只要**选题卡、标题、摘要、排期、系列策划（明确不做后续编排） | topics |\n| **只要**在已有选题/大纲/草稿上写稿、改写、润色、续写（明确不要全流程） | writing |\n| **只要**审稿/校对/合规清单（成稿或已定版 HTML） | review |\n| 「能不能发」且含代为发布、或要从稿到发出整条收尾 | **main** |\n| **只要**排版、换主题、转 HTML | formatting |\n| **只要**长文封面/正文配图（有正文或插图位） | images |\n| 贴图、图片消息、多图推送、九宫格（非长文图文链路） | **sticker** |\n| **只要**执行发布/提交/群发（已有约定产物） | publish |\n\n## 运行模式\n\n### 一条龙\n\n用户说「一条龙」「完整流程」时启用。按 **交互顺序** 的 1→2→3→4→5 执行；**3-A** 内子步骤亦须逐步完成。流水线中每步完成后**暂停**等用户确认。审稿有 🔴 项时进入修改循环。\n\n### 单步\n\n用户**明确只要某一步**且已有对应输入产物（或声明不做全流程）时，可仅执行该步骤；若表述含糊、可能还要后续发文，仍从 **main** 问起或按一条龙拆步确认。\n\n### 贴图\n\n路由到独立的 **aws-wechat-sticker** skill。\n\n## 配置与自定义\n\n- **`aws.env`**（仓库根，密钥）与 **`.aws-article/config.yaml`**（非密钥与模型/微信元数据及 **`publish_method`**）：校验 **`{baseDir}/scripts/validate_env.py`**；`aws.env` 键名见 **`references/env.example.yaml`**\n- **`config.yaml` / `article.yaml` / `aws.env` 字段说明**：[references/articlescreening-schema.md](references/articlescreening-schema.md)\n- 发布前微信：**`{baseDir}/../aws-wechat-article-publish/scripts/publish.py check-wechat-env`**（仓库根执行，试换微信 **access_token**；凭证在 **`aws.env`**）","tags":["aws","wechat","article","main","skills","aiworkskills","agent-skills","ai-skills","ai-writing","chinese-nlp","codex","content-automation"],"capabilities":["skill","source-aiworkskills","skill-aws-wechat-article-main","topic-agent-skills","topic-ai-skills","topic-ai-writing","topic-chinese-nlp","topic-codex","topic-content-automation","topic-content-creation","topic-copywriting","topic-llm","topic-markdown-to-html","topic-openclaw","topic-wechat"],"categories":["wechat-article-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/aiworkskills/wechat-article-skills/aws-wechat-article-main","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add aiworkskills/wechat-article-skills","source_repo":"https://github.com/aiworkskills/wechat-article-skills","install_from":"skills.sh"}},"qualityScore":"0.469","qualityRationale":"deterministic score 0.47 from registry signals: · indexed on github topic:agent-skills · 39 github stars · SKILL.md body (16,783 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T18:58:27.106Z","embedding":null,"createdAt":"2026-04-21T19:04:11.770Z","updatedAt":"2026-05-18T18:58:27.106Z","lastSeenAt":"2026-05-18T18:58:27.106Z","tsv":"'-1':1588,1916 '/../aws-wechat-article-publish/scripts/article_init.py':1445,1935 '/../aws-wechat-article-publish/scripts/publish.py':2108 '/aiworkskills/wechat-article-skills':105 '/aiworkskills/wechat-article-skills)':257 '/article.yaml':1284 '/aws-wechat-article-assets/skill.md':628,1324 '/aws-wechat-article-formatting/skill.md':998 '/aws-wechat-article-images/skill.md':1001 '/aws-wechat-article-publish/skill.md':1035 '/aws-wechat-article-review/skill.md':995,1013,1629,1858 '/aws-wechat-article-topics/skill.md':988 '/aws-wechat-article-writing/skill.md':991 '/config.yaml':159,293,379,395,455,479,702,857,926,1022,1187,1203,1226,1466,1524,1604,1824,1836,1848,1865,1874,1883,1908,2089 '/products':620,1335,1354 '/references/config.example.yaml':433 '/references/env.example.yaml':448 '/scripts/validate_env.py':175,474,2096 '/yyyymmdd-':1423 '0':28,39,274,352,569,600,1087,1103,1122 '1':374,515,533,554,580,708,913,1069,1089,1147,1215,1368,1567,1696,1707,2048 '2':267,317,465,598,603,608,931,934,1111,1118,1168,1179,1182,1294,1397,1700,2049 '2.5':275,592,1107 '3':269,282,640,957,1195,1228,1275,1288,1417,1586,1720,1914,2050,2054 '4':973,981,1457,1515,1544,1725,2051 '5':1011,1032,1512,1626,1657,1730,1856,2052 '6':1690,1736 '8':24,56,206 '9':70,222,251 'a/b':1311 'access':2115 'account':536 'agent':258,765,778,787,790,799,802,1083,1130,1135,1142 'agent-image-cap':801,1082,1134,1141 'agent-writing-approv':789,1129 'ai':53,624,1349 'aigc':15 'aiworkskills.cn':776 'api':113,131,135,183,185,187,503,523,538,661,770,837,868,1839 'appid':139,441,545,842 'approv':792,1132 'appsecret':142,444,548,769,845 'articl':4,67,76,158,166,203,292,378,394,413,454,478,619,701,856,925,1021,1172,1186,1202,1207,1225,1246,1334,1353,1465,1495,1523,1594,1603,1644,1823,1835,1847,1864,1873,1882,1907,2088 'article.html':1028,1530,1637,1652,1729,1768,1782,1866,1878,1887,1932,1969 'article.md':1007,1027,1617,1621,1636,1722,1763,1771,1780,1850,1861,1869,1965 'article.yaml':161,169,349,883,945,1061,1238,1263,1419,1433,1476,1504,1527,1551,1710,1793,1924,2101 'asset':84,215,626,1322 'author':1177,1212,1251 'autom':12 'aw':2,65,74,87,157,165,201,218,291,377,393,412,453,477,618,700,855,924,1020,1185,1201,1224,1333,1352,1464,1522,1592,1602,1642,1822,1834,1846,1863,1872,1881,1906,2077,2087 'aws-articl':156,164,290,376,392,411,452,476,617,699,854,923,1019,1184,1200,1223,1332,1351,1463,1521,1601,1821,1833,1845,1862,1871,1880,1905,2086 'aws-wechat-articl':64,200 'aws-wechat-article-imag':1641 'aws-wechat-article-main':1,73 'aws-wechat-article-top':1591 'aws-wechat-stick':86,217,2076 'aws.env':127,155,336,381,398,420,437,481,499,541,670,704,755,774,832,876,930,1052,1077,1825,1837,1844,1870,1890,2082,2097,2102,2118 'b':1517 'base':539,863,869 'basedir':174,263,432,447,473,1444,1934,2095,2107 'bash':360,389,471 'block':265,824,1016,1370,1483,1628 'capabl':107,804,1085,1137,1144 'categori':1173,1208,1247 'check':342,693,1680,2110 'check-wechat-env':341,692,1679,2109 'clawhub':96,99 'close':1482 'complet':904,948,1436,1717,1740,1802 'config':483 'config.yaml':338,346,414,435,493,556,654,672,757,850,881,910,1054,1075,1272,1428,1509,1555,1611,1660,1889,2100 'content':13,1929 'cover':1491,1778 'cover.jpg':1531 'custom':1469 'default':1176,1211,1250,1470,1479,1481,1484,1487,1490,1494,1498 'draft':298,460,650,656,673,920,1036,1283,1299,1302,1421,1425,1431,1449,1665,1673,1698,1734 'draft.md':1026,1615,1840,1843 'drafts/yyyymmdd-':885,940 'echo':363,399,401 'els':422 'emb':1015,1631,1852 'env':344,484,695,1682,2112 'f':391,397 'fail':512,551,736 'fals':906,949,1437,1719 'file':247 'format':81,212,997,1488,1634,1635,1774,1860,2021 'format.py':1727 'found':249 'full':300,310,331,659,666,676,682,1037,1042,1047,1453,1671,1733 'generat':896,899 'github.com':104,256 'github.com/aiworkskills/wechat-article-skills':103 'github.com/aiworkskills/wechat-article-skills)':255 'html':2010,2020 'id':1896,1899 'imag':82,117,133,213,521,803,893,1000,1084,1136,1143,1341,1362,1492,1496,1639,1645,1711,1786,1788,1868,2026 'image_model.base':517 'img':1030,1654,1702,1875,1879,1888,1970 'img_analysis.md':1705 'inform':196 'instal':100 'key':132,136,188,504,524,771,838 'linux':357,387 'literalpath':410,419 'llm':181 'ls':1331 'maco':358,388 'main':5,77,236,1941,1950,1956,1987,2015,2072 'md':1338,1357 'media':1895 'method':296,324,458,559,588,646,649,686,712,918,1059,1447,1560,1609,1663,2093 'miss':402,423,425 'mkdir':630 'model':130,134,497,502,519,522,865 'n':138,141,440,443,841,844 'none':326,463,560,574,589,652,657,678,690,713,1046,1097,1456,1667,1669,1683 'ok':400,421 'path':371,409,418 'pipelin':14 'placehold':1784,1810 'png/jpg/jpeg/webp':1779 'powershel':367,404,405 'preset':613,1489 'prompt':727 'provid':506,526,862 'publish':83,118,214,295,308,311,323,457,558,587,645,648,651,664,667,674,685,711,903,917,947,1034,1040,1043,1058,1435,1446,1451,1454,1559,1608,1662,1666,1674,1688,1716,1739,1801,1886,1898,2038,2092 'publish.py':286,299,330,643,681,716,740,1677,1732,1892 'python':472 'python3':173 'reader':1175,1210,1249 'references/articlescreening-schema.md':2104,2105 'references/config.example.yaml':872,878 'references/env.example.yaml':848,873,2099 'references/first-time-setup.md':429,490,585,610,745,1092,1113,1152 'research.md':1829 'review':80,120,211,994,1004,1009,1618,1624,1649,1842,1854,1877,2011 'review.md':1849,1884 'root':1422,1426,1689 'search':1387,1827,1912 'shell':171 'skill':26,58,91,93,109,115,148,151,179,191,195,198,208,226,241,244,627,810,818,976,1323,1547,1816,1943,1952,1954,2080 'skill-aws-wechat-article-main' 'skill.md':261 'slug':72,224,252,938,1399,1407,1412 'sourc':894,1712,1789,1930 'source-aiworkskills' 'sticker':89,119,220,1499,2032,2079 'structur':1480 'style':1486,1493,1497,1500 'sync':97 'target':1174,1209,1248 'test':362,370,390,396,408,417 'test-path':369,407,416 'titl':1485 'title/author/digest/content_source':1795 'tmp':615 'token':2116 'tone':1253 'topic':78,209,987,1389,1582,1595,1820,1910,1995 'topic-agent-skills' 'topic-ai-skills' 'topic-ai-writing' 'topic-card.md':1025,1240,1606,1828,1832 'topic-chinese-nlp' 'topic-codex' 'topic-content-automation' 'topic-content-creation' 'topic-copywriting' 'topic-llm' 'topic-markdown-to-html' 'topic-openclaw' 'topic-wechat' 'trim':1205 'true':566,577,908,1741,1803 'url':496,509,518,529,864,1900 'user':897,901,1713,1790 'validate_env.py':122,239,314,468,706,760,852,1080,1101,1170,1189 'web':1386,1826,1911 'wechat':3,11,66,75,88,137,140,202,219,343,439,442,535,537,543,546,694,840,843,867,1593,1643,1681,2078,2111 'window':365,403 'workflow':16 'write':79,116,129,210,501,791,990,1131,1359,1599,1766,1831,2004 'writing_model.base':495 'yyyymmdd':1410 'yyyymmdd-标题slug':1409 '一个时':237 '一条龙':35,820,1978,2040,2042 '一条龙公众号套件的入口':204 '一条龙已完成':729 '一条龙流程':34 '一次性全装':101 '一步步':1064 '一起由':851 '一键式公众号':52 '上一步完成再进下一步':1067 '上一环节就绪后再进入下一环节':1068 '上文':1612 '下不调用微信':679 '下存在进行中目录或多个候选':1303 '下次涉及业务的文章自动用上':1363 '下的':737 '不单独确认':1573 '不含':1783 '不在本步建':622 '不填按':508,528 '不外发值':781 '不存在或候选为空':1510 '不得':279,1236 '不得接收':767 '不得索取':766 '不得进入一条龙默认流水线':582 '不得默认跳过提问直接搜索':1921 '不必重复盘问':1396 '不是文章主体而是侧重产品':1346 '不检查':1171 '不确定从哪步开始':1986 '不能跳过任何部分':961 '不要':1155 '不要因用户说了':1945 '不要混用':828 '不读取值':780 '不调':660 '不调微信':1049,1684 '不重选不覆盖':1507 '不阻断':1125 '与':337,380,480,498,520,614,756,849,902,909,983,1029,1076,1550,1605,1653,1781,2085 '与上条':825 '与任何写稿流程':1120 '与后续流水线':605 '与微信':184 '与本篇内容':189 '与长文发文相关时':1939 '与项目习惯一致即可':1416 '专用写作':1838 '且':572,814 '且不隐含':1960 '且仓库':1301 '且含代为发布':2013 '且已有对应输入产物':2065 '且当前对话也未等价说明':1383 '且未声明':710 '且由当前':1770 '且退出码':1086 '业务介绍':1339 '业务素材双向规则':1319 '业务资料库':616 '两文件均存在后':469 '严格子顺序':1366 '严格顺序':959 '个':71,223 '个子':25,57,207 '中':294,494,500,542,557,746,1277,1596 '中单独检查并落盘':1181 '中的':1153 '中间产物门禁':1752 '串联':59 '串行':977 '临时强制发布':312 '为':1477 '为以下字段各选':1473 '为准':347,350,491,611,1429,1556,1648,1664,1909 '为来源':1467 '为账号与文风约束':1023 '主动引导用户保存到':1350 '主要配置文件':827 '主题':965 '之前':1197,1384 '之后':329,1193,1296 '之后才可调研与生成选题':1920 '之后执行':1589 '之后新建':939 '九宫格':2030 '也走本分支':1535 '二选一':1290 '交互顺序':979,1063,2046 '产出':1818 '产出的':1006 '产品':1327 '产品名':621,1355 '产物':1614 '仅':172,895,1038 '仅凭单一信号':1805 '仅出':726 '仅在':796,929,1583 '仅在对话里口头确认却不写入文件':1231 '仅审稿':813 '仅密钥与微信':438 '仅当':784 '仅当用户':1094 '仅当用户明确要求':303 '仅当第':597 '仅文档':875,880 '仅用于校验键是否存在且非空':143 '今天写什么好':48 '今天发什么':1983 '仍从':2071 '仍以各子':817 '仍可用于环境校验':238 '仍直接跳过':332 '仍输出':565 '仍须遵守':1590 '从':38,1537 '从0开始':1975 '从头':1977 '从头做':37 '从本篇或其它目录的':1237 '从选题到上架':55 '从选题到发布':822 '从零':1976 '从零到发出':1961 '仓库内':154,163,858 '仓库内示例':874,879 '仓库根':833,2083 '仓库根执行':2113 '仓库根目录':384 '代写并传入':788 '代生图并传入':800 '以':1427,1462,1659,1904 '以及':216 '任一文件不存在':426 '任一步失败则':278 '任一组未通过':581 '任一项缺失或空白':1213 '优先':943,1940 '会无操作退出':1672 '会调用外部':180 '但微信未配齐':741 '位置':830 '体裁或目标':1375 '何时直连子':1953 '作为一条龙套件':110 '作为底稿来源':1340 '作用':831 '作者':889,951,1439,1926 '作者名字':1218 '使用':359,366,798 '例外':555 '例如':1963 '例如未指定':1298 '依据分析结果更新':1721 '值不用于任何网络请求':144 '做一篇公众号文章':43 '允许的做法':1258 '允许重排':1724 '元数据':964 '先':1330 '先判断当前环境':356 '先及时询问用户并获得确认':969 '先将':322 '先执行':1773,1785 '先补齐元数据或环境':1797 '入口':1957 '全局三键':1286 '全局三键已非空时静默通过':1558 '全局账号约束':268,604,935,1119,1169,1180,1183,1295 '全程以':1018 '公众号一条龙':8 '公众号一条龙运营总控入口':17 '公众号全流程':9 '公众号小编':60 '公众号草稿箱':302 '公众号运营':6 '公众号运营总览':51 '共':69 '其余引导文案须与首次引导保持一致':753 '具体主题':1373 '具体交互文案统一以':488 '具体缺哪一类':734 '典型产物依次为':1024 '内子步骤亦须逐步完成':2056 '内容审':993,1005,1577,1619,1746 '内容审后':1616 '内容流水线':54,974,1545 '内说明为准':819 '再':1044,1166,1309 '再将该键改为':307 '再强调':1051 '再执行':1541 '再来一篇':46 '再过校验':327 '再进入':1227 '再进入下一步':970 '再进入内容流水线':956 '写':1343,1946 '写一篇文章':1565 '写什么':1393 '写什么好':1984 '写作':570,835 '写作意图':1369 '写作意图已明确':1584 '写作模型':492 '写作模型未配置才降为警告':794 '写作模型用':1128 '写作模型配置不完整':513 '写作模型默认阻断':783 '写哪篇':1157 '写回':1222,1738 '写在':653 '写完后展示结果':1571 '写稿':19,230,989,1575,1744,1830 '写稿完成':1762 '写第一份业务介绍时按':625 '写草稿箱':1735 '凭证在':2117 '凭证处理原则':764 '凭证未就绪时':718 '凭证读取':125 '分工':911 '分支按上条处理':1553 '创建':944,1420 '创建或补全':430 '创建预设与运行目录':594 '初始化后按场景执行':1460 '初始化约束':450 '判断操作系统':354 '到上架':29 '到发布':40 '到同一':225 '前':287,644,683,1622 '前两档需微信凭证':1050 '前须就绪':677 '勿跳步':1367 '单一预设':1474 '单元素列表':1478 '单条指令完成整篇图文从':27 '单步':2062 '单步子':809 '却继续宣称':728 '历史草稿':1239 '及内容流水线前':271 '及标题':1438 '及状态字段':892 '反推':1285 '发':1948 '发出去':304 '发到公众号':1981 '发布':234,334,1033,1543,1658,1751,1885,1897 '发布串联':23 '发布出去':663 '发布前微信':2106 '发布前需就绪本篇':1923 '发布后换图并重发草稿箱':1534 '发布后换图重发':1691 '发布命令成功且回执可用':1799 '发布命令成功且回执可用后':1737 '发布就绪':1792 '发布并假装配置已就绪':731 '发布意图等':967 '发布方式与时间线':912,1613 '发布环境检查通过':1796 '发布闭环':1798 '发布闭环结束':907 '发文元数据':887,1062 '发文元数据以本篇':348 '发文章标题':1402 '取得':1219 '只展示':1150 '只帮忙出选题':1919 '只把图文写入':301 '只校验存在性':779 '只能':1266 '只装':235 '只要':1988,1996,2005,2016,2022,2033 '只要发布前检查或提交':1971 '只要排版':1966 '可仅执行该步骤':2068 '可保持':1511 '可参考':431 '可复用':1109 '可按实际失败项替换外':752 '可本步口头确认一句即可':1395 '可用':482,1443,1933 '可直接从流水线中靠后的步骤接入':1532 '可直接进入下一步':1126 '可能还要后续发文':2070 '可视为本步通过':636 '可跳过':1955 '可选':507,527 '各槽位名与':540 '各槽位展示名等':870 '合法':687 '合规清单':2008 '同样禁止':1256 '同步更新本篇':1709 '后':1104,1165 '后再':1221 '后再当无方向模式处理':1380 '后再排版':1017 '后写入':1245 '后是否非空':1206 '后重跑':590 '向用户说明':733,1259 '否则':511,550 '否则同上':531 '否则禁止初始化或改写为':462 '含':946,1434,1794 '含义见上文':1668 '含各前置步':1982 '含子':178 '命令':361,368,1114 '品牌内容':32 '品牌内容团队一键产出整篇图文':62 '因为':632 '图像':182 '图片':836 '图片均通过':571 '图片映射':1723 '图片模型':516 '图片模型同理':795 '图片模型用':1133 '图片消息':2028 '在':383,669,936,1188 '在不了解用户是要续写既有草稿还是新开一篇时':1297 '在仓库根创建':436 '在仓库根运行':470 '在写作意图已明确的前提下':1400 '在同一轮回复里再问':1156 '在完成':1293 '在尚未完成':1274 '在已有选题':1997 '在未询问用户':720 '在用户未回答本步':1382 '均存在':1078 '复检':761 '外加':85 '多个待确认项可合并为一轮提问':1562 '多图推送':2029 '大纲':1998 '套件说明':63 '如':1806 '如仅排版':812 '如给出主题':1564 '子':147,975,1546,1815 '子目录里有现成业务配图则优先复用':1342 '字段说明':2103 '存在':1769 '存在且非空':1764 '完成':1074 '完成后输出小结与回执':1686 '完成文末':1630 '完整':250 '完整流程':36,821,1979,2043 '完整行为见各子':190 '定稿':1620 '定稿须含文末':1851 '定稿须满足':1008 '定题与':937,1398 '宜最先写入':1442 '审稿':20,231,992,1002,1576,1580,1745,1749,1841,2006 '审稿有':2060 '密钥':834,928,1053,2084 '对':1252 '对外发布':305 '对应字段已为单元素列表':1505 '对照':449 '对话记忆或仓库内任意文件':1241 '封面仅':1706 '封面等':891 '封面等元数据':1928 '将':1715 '将新图放入本篇':1701 '小写':688,1414 '就宣称全流程完成':1808 '就跳过':1949 '就跳过本步直接写稿':634 '展示为待选文案':1267 '展示后等用户选':1597 '工作流里的跨':243 '工具直接落库':1360 '已为合法值时不重复盘问':1561 '已书面确认':1164 '已有':1964,1968 '已有目录':1552 '已有稿只要审稿清单':1967 '已有约定产物':2037 '已有选题卡只要扩写等':1972 '已要求调用':715 '已通过':1190 '帮我写篇公众号文章':42 '帮我出选题':1377 '帮我发一篇':45,1980 '平台配置':777 '并':742,942 '并保存后':758 '并写回本篇':1475 '并在调用时外发':186 '并建议':340 '并引导':583 '并让用户选定':1305 '并问':1268 '并附一行说明已跳过':567 '应落盘的文件':955 '建目录与':1418 '建议':1265,1678 '开始重做流程前':1714 '张':1708 '当前为空':1260 '当前工作目录为项目根':385 '当用户说':1693 '得到':434 '微信':313,647,668,839,1675 '微信不完整':1148 '微信也通过':576 '微信元数据及':2091 '微信公众号':7,534 '微信公众号配置不完整':552,738 '微信槽位':339 '微信槽位元数据':921 '微信槽位数与':866 '微信组校验':564 '微信配置不完整':709 '必做':1071,1459 '必要产物':1759 '必读':1520 '必须':1198 '必须先':732 '必须先检查本步所需中间产物':1755 '必须写进行为约束':1235 '必须执行':596 '必须按下述流水线顺序依次执行':960 '必须满足本节':823 '必须立即执行':1105 '必须立即补建并继续校验':638 '必须问清用户':1371 '快速初始化或更新':1936 '成稿或已定版':2009 '我已有目录':1518 '我想发一篇':44 '或':665,703,1041,1307,1404,1452 '或使用':309 '或假定沿用上一轮路径':1318 '或即将':739 '或声明不做全流程':2066 '或宣称可按代生图模式继续':1145 '或已按总览完成':1191 '或已确认':1918 '或按用户状态后补':1528 '或用户':714 '或用户素材':1607 '或继续排版':730 '或要从稿到发出整条收尾':2014 '或规则允许的省略并留痕':1632 '或调用写作脚本':1312 '或逐个':98 '或通过':775 '所在目录为':262 '所有密钥由用户自己在编辑器里写入':773 '才允许写回':1800 '才执行本步':601 '才能走完整一条龙流程':228 '打开':1199 '执行':259,386,1388,2053 '执行原则':958 '执行发布':2034 '执行成功后才允许进入':602 '批量生成选题或标题':1391 '找个':50 '指定既有目录后':1536 '指定路径':485 '按':427,1468,1640,2045 '按上文':1072 '按以下顺序与用户交互':1066 '按步编排':1944 '按首次引导与本节约束继续处理':763 '换主题':2018 '换我上传的图重新发':1695 '据此生成':1406 '排期':1992 '排版':21,232,996,1578,1747,1859,2017 '排版完成':1767 '接入':1540 '推断或':1243 '推荐':95 '提交':2035 '提交发布':1045 '提示':1922 '摘要':890,1570,1927,1991 '摘要等':952,1440 '改写':2000 '整体套件':177 '整条链':1962 '文件':829 '文件写':162 '文件名':1356 '文件读':153 '文末':1014 '文案执行':748 '文档读取会遇到':246 '文章目录存在':1777 '文风':915,1056 '文风与账号约束以':345 '新做新发':41 '新建':451,905 '新建一篇':1292,1365 '新建首轮':1461 '新开':1279 '新开一篇':1308 '新选题':1159 '时':306,321,456,562,575,793,816,1149,1893,2067 '时启用':2044 '时建议':691 '时才可设':1096 '时按':1090 '时若本篇':1503 '时走用户供图映射与重排':1791 '时运行':1670 '时降为警告':805 '明确不做后续编排':1994 '明确不接微信':320 '明确不要全流程':2003 '明确只要某一步':2064 '明确只要该步产物':1959 '明确文字确认':722 '明确确认':1379 '明确表示不接微信':1095 '是':199,284 '是公众号一条龙套件':68 '是否存在':382 '是否采用':1269 '智能体协助重跑':759 '智能体在执行下列检测命令前':355 '智能体行为约束':696 '暂停':2058 '更新':1704 '最小提问':1065 '最小集合':1760 '最近修改':1315 '有什么好写的':49 '有外发':149 '有正文或插图位':2025 '有问题给出清单':1655 '服务':1329 '服务自介':1347 '未取得用户':721 '未声明':573 '未完成不得进入':1633 '未确认就运行写作脚本':1317 '未获用户明确同意前':1139 '未获用户明确同意时':806 '未询问就写盘':1257 '未走本总览流水线':815 '本':108,197 '本入口脚本无外发请求':146 '本入口自身的':121 '本次例外':1099,1163,1192 '本流程中产生的内容若':1344 '本篇':160,168,1060 '本篇准备':270,932,1196,1229,1276,1289 '本篇目录':884,1549 '本篇目录内需有':1526 '本篇要写什么':1372 '本篇预设单选落盘':1458 '标题':888,950,1925,1990 '标题slug':886,941,1411,1424 '校对':2007 '校验':853,2094 '校验失败时的配置引导':747 '校验配置内容':467 '根目录':94,227 '检查':1651 '检查下列键':1204 '检测到':698 '槽位在':671 '模型':861 '模型与微信元数据及':1057 '模型名自动识别':510,530 '模型未配置例外':782 '模型未配置均按阻断处理':807 '模型警告':1123 '模型警告仅在用户已明确同意并传入对应参数时出现':1127 '模板见':871 '正文配图':2024 '正文配图未完成':1813 '步':276,283,318,353,375,466,593,609,641,982,1012,1112,1627,1857 '步内容流水线':1516 '步目录创建':1108 '步退出码为':599 '步骤':1814 '每到一步若缺少必要输入':962 '注意':176 '流水线中每步完成后':2057 '流程':984,1124,1742 '涉及用户自身业务时强制':1320 '润色':2001 '清单与安装指引见':253 '源码':102 '源码仓库':254 '状态字段':170 '状态必须标记为':1811 '环境检查结果':751 '环境检查通过':633 '理想轮次为':1566 '生成':1703,1728 '生成并替换':1787 '用':1358 '用户':319,1958,2063 '用户上传配图时改为':900 '用户从候选中选一个':1403 '用户供图分支':1539 '用户只触发某一子能力':811 '用户在对话里粘贴的':768 '用户在本地编辑器中填好':754 '用户已在当次对话中说清楚':1392 '用户已说明本篇写什么':1917 '用户当次指定排版主题可覆盖默认':1638 '用户当轮明确答复':1220 '用户意图明确时':1563 '用户明确不填微信':658,1455 '用户明确不接微信':561 '用户明确同意':785,797 '用户明确同意后再写入':1271 '用户给出路径':1519 '用户说':2041 '用户说法':1973 '用户选择':966 '用某一':1282 '由':623,786,1348 '由本':1942 '的':128,192,1394,1661,2047 '的情况下':723 '的是子':114 '的核对':288 '的相对引用依赖同一':92 '的确认前':1280 '的能力披露':152 '的调研':1390 '目录':963,1316,1699 '目录不存在时同时创建':1361 '目录内':1441 '目录名为':1408 '目录按需移至':1687 '目录要求与命令以':606 '目标读者3':1217 '直连子':1951 '看有无相关产品目录':1336 '真正调用外部':112 '硬性前置':595 '确定':1401 '确定本':260 '确认':684 '确认标题':1569 '确认轮次优化':1557 '禁止':631,719,1116,1230,1232,1281,1313,1381,1804 '禁止擅自加参数':1138 '禁止擅自填写':1234 '禁止自作主张':697,826 '禁止自行追加':1140 '禁止跳步并宣称已完成':1757 '立即跳过':1048 '第':273,281,351,373,464,591,639,980,1010,1106,1514,1625,1855 '等':364,372,445,846,1031,1160 '等与账号画像强相关的全局项':1254 '等任何密钥':772 '等均在':922 '等用户确认':2059 '等用户确认或修复':1656 '等规则':1598 '系列策划':1993 '终审':1003,1542,1581,1650,1750,1876 '终审通过后执行':1731 '结合':1600 '结合本篇主题':1471 '结构示例':882 '给':1264 '统一按':743 '继续':280 '继续写稿或回滚到':1765 '继续哪一篇':1306 '继续哪篇草稿':1158 '续写':1501,2002 '续旧':1278 '维护':927 '编排':205 '编排入口':111 '缺什么就先补什么':1756 '缺啥补啥':1753 '缺失':705 '缺失时动作':1761 '缺失而无法执行相关步骤':242 '网络':145 '置回':1718 '群发':2036 '而微信槽位':717 '能不能发':2012 '能力披露':106,193 '脚本':123,735 '脚本会跳过微信组':328 '脚本检查':486 '脚本调用':245 '自动':629 '自媒体':31,61 '自媒体运营':10 '自定义标题':1405 '自行决定':724 '至此才进入':1513 '若':1508 '若你想根据某篇':1262 '若已有':1529 '若本篇涉及用户自家业务':1326 '若正文仍有':1809 '若用户只想':1376 '若用户意图是':1533 '若用户明确声明本次例外':762 '若目录已存在':635 '若缺失':637 '若表述含糊':2069 '草稿':1894 '草稿上写稿':1999 '草稿创建成功':1807 '草稿已提交':1812 '草稿箱':1039 '草稿箱里图不满意':1694 '行为':124 '补充分支':1692 '补全或':586 '补全环境':1093 '表':985 '装齐全部':221 '要':662,968 '要发出去':1450 '要成文并发':1985 '要改哪几个字':1270 '要直接询问用户':1255 '要走草稿':333 '见':1610,1853 '见上':1585 '见第':316 '规则':1413 '规则摘要':487 '视为本篇已选并优先保留':1506 '角度':1374 '触发词分层':33 '记录':1902 '设为':325 '试换微信':2114 '该场景下除':750 '该步完成前':1115 '详见':1321 '详见下文':978 '详见各子':150 '语义属于业务介绍':1345 '说明即可':1685 '请用户填写或确认':1261 '读':1325 '读取':1817 '读取仓库根':126 '调用':285,642,1385,1891 '账号':1055 '账号与发布策略':914,1525 '账号与文风约束':1903 '账号侧约束以':1554 '账号文风':860 '账号领域2':1216 '贴图':2027,2074 '走':675,1098 '跨':90 '路径':1300 '路由':1937 '路由到':1974 '路由到独立的':2075 '跳过':563 '跳过微信配置':725 '跳过本步直接假定可写稿':1233 '转':2019 '轮':1568 '软件':1328 '输出为':424 '输出约束':749 '运行':680,1079 '运行模式':2039 '进入':1117,1194 '进入下一步前':1754 '进入下列':1310 '进入下方':1167 '进入交互顺序':266 '进入内容流水线会因对应子':240 '进入后必读根下':1337 '连字符':1415 '退出码':514,532,553,568,579,707,1088,1102,1121,1146 '选题':18,229,986,1574,1743,1819,1947 '选题卡':1472,1989 '选题起点':47 '选题边界':916 '逐项询问用户':1214 '通常为本目录内':953 '避免误把单篇元数据当成整号定位':1287 '那么需要智能体根据中间产物判断从哪个阶段开始':972 '配图':22,233,999,1538,1579,1748,1867 '配图完成':1776 '配图方案在用户无特殊要求时按默认风格自动执行':1572 '配套':194 '配置与自定义':2081 '配置与行为约束以本节':1646 '配置校验通过':578 '配置检查':264,1073,1647 '配置检测':277 '配置自检':1070 '配置选项':1154 '重入':1502 '重新执行':1726 '重新生成':1772 '重跑校验通过或':1162 '重转':1775 '锁定目标':1697 '键名可与':446 '键名见':847,2098 '键名说明':877 '长文封面':2023 '问起或按一条龙拆步确认':2073 '阶段':1758 '除非用户指出基于某个历史任务继续创作':971 '除非用户明确指定不接微信':461 '随即初始化本篇':1432 '需用户明确书面确认':1100 '需覆盖':612 '静默抄录':1242 '非':689 '非密钥与模型':2090 '非密钥配置':859 '非流水线起点':289 '非长文图文链路':2031 '面向公众号小编':30 '项时进入修改循环':2061 '顺序':1273 '顺手补全':1244 '须':1378 '须先完成交互顺序':933 '须先询问':1304 '须同时非空':505,525 '须告知用户当前使用的方式':808 '须在':1178 '须完成':272 '须已具备':1548 '须成对完整':549 '须按':1623 '须满足上文':1913 '须等配置闭环':1161 '须补全':335 '须配齐后再调':1676 '首个':954 '首次引导':428,489,584,744,1091,1151 '首次引导创建目录结构':167 '首次引导第':607,1110 '默认':655,898,919,1291,1314,1430,1448,1931,1938 '默认不加':1081 '默认为':297 '默认必须为':459 '默认要求公众号账号配齐':315 '默认读取':475","prices":[{"id":"e9b477e4-b4e3-4d12-bca6-756d6a789393","listingId":"1177f910-dc3c-451f-a2c1-75e27e181c77","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"aiworkskills","category":"wechat-article-skills","install_from":"skills.sh"},"createdAt":"2026-04-21T19:04:11.770Z"}],"sources":[{"listingId":"1177f910-dc3c-451f-a2c1-75e27e181c77","source":"github","sourceId":"aiworkskills/wechat-article-skills/aws-wechat-article-main","sourceUrl":"https://github.com/aiworkskills/wechat-article-skills/tree/main/skills/aws-wechat-article-main","isPrimary":false,"firstSeenAt":"2026-04-21T19:04:11.770Z","lastSeenAt":"2026-05-18T18:58:27.106Z"}],"details":{"listingId":"1177f910-dc3c-451f-a2c1-75e27e181c77","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"aiworkskills","slug":"aws-wechat-article-main","github":{"repo":"aiworkskills/wechat-article-skills","stars":39,"topics":["agent-skills","ai-skills","ai-writing","chinese-nlp","codex","content-automation","content-creation","copywriting","llm","markdown-to-html","openclaw","wechat","wechat-api","wechat-official-account"],"license":"apache-2.0","html_url":"https://github.com/aiworkskills/wechat-article-skills","pushed_at":"2026-05-06T01:47:51Z","description":"微信公众号 AI 运营助手 | 选题、写稿、审稿、排版、配图、发布全流程 Skill，支持 OpenClaw / Claude Code / Cursor / Codex","skill_md_sha":"5e9d4bb3415e9540d3d1f93585a80c26ce0265e4","skill_md_path":"skills/aws-wechat-article-main/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/aiworkskills/wechat-article-skills/tree/main/skills/aws-wechat-article-main"},"layout":"multi","source":"github","category":"wechat-article-skills","frontmatter":{"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）单独触发仅限对**已有产物**的修改场景（如\"改标题\"\"润色这段\"\"排版\"\"审稿\"\"加封面\"\"发布\"）；新做/策划/多环节串联一律走本入口。"},"skills_sh_url":"https://skills.sh/aiworkskills/wechat-article-skills/aws-wechat-article-main"},"updatedAt":"2026-05-18T18:58:27.106Z"}}