{"id":"f9a45f97-2eb0-4f24-a81f-5207e937f3d5","shortId":"jjUd5U","kind":"skill","title":"aws-wechat-article-images","tagline":"公众号封面｜公众号配图｜公众号插图｜AI 生图 — 公众号 AI 封面与配图生成，按文章标题与内容自动匹配画风，一稿多方案，多风格预设可复用。面向公众号编辑、自媒体、品牌设计。触发词：「封面」「配图」「插图」「生成图片」「给文章加图」「做个封面」「文章插图」「配个图」。不写正文只发一组图请走 aws-wechat-sticker；需要多环节串联（写+审+排+配图+发）请走 aws-wechat-article-main。","description":"# 配图\n\n**公众号封面 & 配图 AI 生成** —— 按文章内容自动匹配画风，一稿多方案，风格体系可复用。\n\n> **套件说明** · 本 skill 属 `aws-wechat-article-*` 一条龙套件（共 9 个 slug，入口 `aws-wechat-article-main`）。跨 skill 的相对引用依赖同一 `skills/` 目录，建议一并 `clawhub install` 全套。源码：<https://github.com/aiworkskills/wechat-article-skills>\n\n## 能力披露（Capabilities）\n\n本 skill 调 `image_create.py` **调外部图像 API** 生成封面与正文配图。**会把图片提示词（可能含文章主题片段）发给用户配置的图像生成端点。** 具体行为：\n\n- **凭证读取**：`aws.env` 的 `IMAGE_MODEL_API_KEY`\n- **凭证外发**：该 key 以 `Authorization: Bearer` 头发送到 `image_model.base_url` 指定端点（常见为 DALL-E、gpt-image 兼容 `/v1/images/generations`，或多模态模型 `/v1/chat/completions`，具体由用户配置）\n- **内容外发**：每张图片的 prompt（文本）作为 JSON POST body 发送；prompt 内容来自本篇 `imgs/prompts/*.md`（可能包含文章标题、章节摘要）\n- **下图 SSRF 防御**：若 API 响应返回图片 URL（而非 base64），脚本**仅允许下载 http/https 公网地址**；内网 / 环回 / 链路本地 / 保留地址全部拒绝（防止恶意或被劫持的模型端点把脚本当作 SSRF 跳板）\n- **文件读**：仓库内 `.aws-article/config.yaml`、本篇 `article.yaml`、`article.md`、`imgs/prompts/*.md`、`.aws-article/products/{产品名}/images/*`（业务配图库，本篇涉及用户业务时优先复用）\n- **文件写**：本篇 `imgs/*.{png,webp}`、可选 `img_analysis.md`\n- **shell**：仅 `python3 {baseDir}/scripts/image_create.py`、`user_image_prepare.py`\n\n**建议**：用专用 key（最低权限、独立计费），避免使用 account 级 master key。\n\n## 配套 skill（informational）\n\n本 skill 是 `aws-wechat-article-*` 一条龙公众号套件的**配图环节**（入口 `aws-wechat-article-main`）。工作流中的若干步骤会读取同级 `../aws-wechat-article-main/references/*.md` 等共享文档（首次引导、env/config 示例、articlescreening schema 等）。\n\n- **套件完整装齐到同一 `skills/` 根目录**时，跨 skill 引用都能读到。\n- **单独安装本 skill** 时，跨 skill 引用的步骤会在读取阶段遇到 `file not found`；本 skill 内的生图脚本仍可用。\n\n完整 9 slug 清单见 [源码仓库](https://github.com/aiworkskills/wechat-article-skills)。\n\n## 路由\n\n完整长文从选题到发布 → [aws-wechat-article-main](../aws-wechat-article-main/SKILL.md)；图片消息/九宫格等多图推送 → [aws-wechat-sticker](../aws-wechat-sticker/SKILL.md)。\n\n读取文章中的配图标记，按 Type × Style 体系生成图片。专注于**长文配图**，贴图请用 sticker。\n\n## 脚本目录\n\n**Agent 执行**：确定本 SKILL.md 所在目录为 `{baseDir}`。\n\n| 脚本 | 用途 |\n|------|------|\n| `scripts/image_create.py` | 专用生图 API：读 **`.aws-article/config.yaml`** 的 **`image_model`** + 仓库根 **`aws.env`** 的 **`IMAGE_MODEL_API_KEY`**|\n| `scripts/user_image_prepare.py` | 用户供图模式：确保本篇 `imgs/` 存在并生成 `img_analysis.md` 模板（封面仅 1 张） |\n\n## 配置检查 ⛔\n\n任何操作执行前，**必须**按 **[首次引导](../aws-wechat-article-main/references/first-time-setup.md)** 执行其中的 **「检测顺序」**。检测通过后才能进行以下操作（或用户明确书面确认「本次不检查」）：\n\n从选题到发布的**前置规则**见 [aws-wechat-article-main/SKILL.md](../aws-wechat-article-main/SKILL.md)；本 skill 只描述配图步骤。\n\n**图片模型**：**`image_model`**（`provider`、`base_url`、`model`、`default_size`、`default_quality` 等）在 **`config.yaml`**；**`IMAGE_MODEL_API_KEY`** 在 **`aws.env`**。键名对照 **`{baseDir}/../aws-wechat-article-main/references/env.example.yaml`**。\n\n**`base_url` 须为完整端点路径**，脚本根据路径判断调用模式：\n- `https://xxx.com/v1/images/generations` — DALL-E / gpt-image 等\n- `https://xxx.com/v1/chat/completions` — Gemini 等多模态模型（通过中转站生图）\n\n**交互约定**：可提示用户上述项是否已填；**一条龙**下通常已通过 **`validate_env.py`**。须遵守 main 的**智能体行为约束**——未通过环境校验且未获用户明确「本次例外」时，不得假装已走专用生图 API。\n\n## 封面风格 + 正文配图\n\n- **封面风格**：独立预设体系，见 [references/cover-styles/](references/cover-styles/)。每个预设 `.md` 自包含视觉关键词。\n- **正文配图**：Type（画面构成）决定\"画什么\"，Style（视觉风格）由 Agent 根据 tone/category 内部选择。Type 列表与 prompt 模板见 [references/image-styles/](references/image-styles/) 目录。\n\n### 封面 vs 正文（资源策略）⛔\n\n| 类型 | 要求 |\n|------|------|\n| **封面** | **必须**通过 **`image_create.py`** 生成（`generate` 或 `batch` 读 `imgs/prompts/*.md`），产出并保存为文章目录下的 **`cover.png`**（或 `cover.jpg` / `cover.jpeg` / `cover.webp`）。**禁止**将 `.aws-article/products/{产品名}/images/`（或其它素材库文件）**直接复制**为 `cover.*` 充当封面。**例外**：用户**明确上传**封面文件并声明「封面只用这一张」时，可跳过脚本，须在 **`img_analysis.md`** 与审稿记录中注明「用户指定封面」。 |\n| **正文** | **优先使用业务配图库**：`.aws-article/products/{相关产品}/images/`（先读同名 `.md` 再复制到本篇 `imgs/` 或引用路径），见下文「正文配图来源优先级」。缺图时再走 **`image_create.py`** 或 Agent 降级生图。 |\n\n> 说明：全局 `config.yaml` 的 **`image_source: user`** 表示「正文以用户/素材引用为主」；**不豁免**上述「封面须脚本生成」规则，除非用户同时提供了封面文件并声明仅用该封面。\n\n## 工作流\n\n```\n配图进度：\n- [ ] 第1步：环境检查 + 本篇约束与文章\n- [ ] 第2步：解析配图标记\n- [ ] 第3步：确定风格\n- [ ] 第4步：生成配图方案\n- [ ] 第5步：展示方案并等待确认 ⛔\n- [ ] 第6步：生成图片（**脚本失败时**见同节「调用失败」分支，勿静默吞掉报错）\n- [ ] 第7步：插入文章\n```\n\n### 正文配图来源优先级（Agent）⛔\n\n**仅适用于正文插图**（不含封面；封面见上文「封面 vs 正文」）。**在**为正文 `placeholder` 调用 `image_create.py`、写入 `imgs/prompts/` **之前**，须先判断是否可用**本地业务配图库**，避免**业务相关文章**（教程 / 产品介绍 / 案例 / 自家界面截图）「有现成业务配图却重新生成」：\n\n1. **仓库业务配图库**：若本篇涉及用户业务，先 `ls .aws-article/products/`，进入相关产品的 **`images/`** 子目录，列出并阅读 **同名 `.md`**（含路径与画面说明），按主题匹配后，在 `article.md` 中直接引用对应 **`.png` / `.webp`**（或复制到本篇 `imgs/` 再引用）。**与正文严格相关才用**，避免硬凑。\n2. **用户上传 / 本篇 `image_source: user`**：用户提供的图或上述引用策略，走「用户供图模式」与 `img_analysis.md`（正文部分）。\n3. **仍缺图或须原创插画**：再进入 **Type × Style**、`imgs/prompts/` 与 **`image_create.py`**（或 Agent 降级生图）。\n\n> 说明：业务配图库属「仓库内业务资源」，**不必**等用户手动上传才查；与「用户供图模式」并列，而非仅附属于后者。\n\n### 第1步：环境检查 + 本篇约束与文章\n\n- **全局**：读 **`.aws-article/config.yaml`** — `cover_aspect`、`cover_style`、`image_density`、`caption_style`、`multi_image_count`、`tone` 等以之为准（完整字段见 [articlescreening-schema.md](../aws-wechat-article-main/references/articlescreening-schema.md) 与 **`config.example.yaml`**）。\n- **本篇**：若同目录有 **`article.yaml`**，读取 **`default_cover_image_style`**、**`default_article_image_style`**（应为单元素列表，代表本篇已选预设）及 `cover_image` 等字段。\n- 读取 **`article.md`**（或当前流程规定的正文来源）。\n- 当 `image_source: user`（全局或本篇）时，进入「用户供图模式」：先创建本篇 `imgs/` 并生成/更新 `img_analysis.md`，记录每张图的内容分析、建议章节与推荐用途。\n\n### 第2步：解析配图标记\n\n提取所有 `![类型：描述](placeholder)`。`实证` 类型提示用户提供素材或从 `.aws-article/products/{相关产品}/images/` 搜索（业务配图库）。\n\n### 用户供图模式（新增分支）\n\n当用户上传图片并指定主题时，按以下顺序执行：\n\n1. 立即确保 `{article_dir}/imgs/` 存在，并将用户图片放入该目录。\n2. 生成/维护 `{article_dir}/img_analysis.md`（每图至少包含：文件名、图片内容、建议章节、推荐用途、图注建议）。\n3. **硬性约束**：`img_analysis.md` 中“推荐用途：封面”**必须且只能出现 1 次**；其余图片用途应为“正文”。\n4. 同步更新本篇 `article.yaml`：`image_source: user`（从模型生图切换到用户供图状态）。\n   - 字段取值只允许 `generated` / `user`。\n5. 写稿阶段直接使用用户图片路径（如 `imgs/淘米.png`），**不再使用 placeholder**。\n\n**顺序说明**：`imgs/` 落图 → 分析并写好 `img_analysis.md` → 再跑 `write.py`；写稿时以 `img_analysis.md` 为准，把图片插到与内容匹配的章节位置。\n\n### 发布后换图重发（新增分支）\n\n当用户明确说「这篇文章配图不满意，换成我上传的新图并重新发草稿箱」时，按以下流程：\n\n1. 用户指定目标文章目录（`drafts/YYYYMMDD-slug/`）。\n2. 将新图放入该目录 `imgs/`，并更新 `img_analysis.md`（仍需满足“封面仅 1 张”）。\n   - 同步把本篇 `article.yaml.image_source` 更新为 `user`。\n3. 按 `img_analysis.md` 重新映射图片到 `article.md` 对应章节（允许重排章节以匹配图序）。\n4. 运行 `format.py` 重新生成 `article.html`（不要只改旧 html 局部）。\n5. 进入终审：确认 `article.md` / `article.html` 无 `placeholder`，且引用图片文件均存在。\n6. 回到发布步骤执行 `publish.py full`（`publish_method: draft` 时写入草稿箱）。\n\n**可用素材库**（与上文「配图来源优先级」一致）：\n\n- `.aws-article/products/{产品名}/images/`：业务配图库（产品截图、品牌素材等）；本篇涉及用户业务时**优先读同名 `.md` 再选图**。若已用业务配图满足正文，可不再走生图 API。\n\n### 第3步：确定风格\n\n封面与正文配图**分别**确定风格，走各自的预设目录。\n\n#### 封面风格\n\n**预设发现**：Agent 扫描两个目录合并可用封面预设列表：\n1. **内置**：`{baseDir}/references/cover-styles/`（随 skill 安装）\n2. **用户自定义**：`.aws-article/presets/cover-styles/`（用户创建或预设包导入）\n\n**加载优先级**：\n1. 用户当次指定（如「封面要简约风」）\n2. **本篇 `article.yaml.default_cover_image_style`**（单元素列表）→ 从内置或 **`.aws-article/presets/cover-styles/<名>.md`** 加载（用户文件同名优先于内置）\n3. **fallback**：根据 `tone` / `article_category` 从可用封面预设中自动推荐（规则见 [auto-selection.md](references/image-styles/auto-selection.md)）\n\n每个封面预设 `.md` 自包含视觉关键词（`Prompt 要点`），无须引用外部 Style 维度。Schema 见 [cover-styles/README.md](references/cover-styles/README.md)。\n\n#### 正文配图风格\n\n**预设发现**：Agent 扫描 `.aws-article/presets/image-styles/` 获取可用正文配图预设。\n\n**加载优先级**：\n1. 用户当次指定（如「正文要扁平插画」）\n2. **本篇 `article.yaml.default_article_image_style`**（单元素列表）→ 加载 **`.aws-article/presets/image-styles/<名>.md`**\n3. **fallback**：根据正文内容信号与 `tone` 自动推荐 Type 和视觉风格（规则见 [auto-selection.md](references/image-styles/auto-selection.md)），视觉风格为 Agent 内部决策\n\n### 第4步：生成配图方案\n\n为每张图生成方案（类型、风格、prompt 要点）。\n\n**封面 prompt frontmatter 必须包含 `aspect`**：从 `config.yaml` 的 `cover_aspect` 读取（如 `2.35:1`），写入 YAML frontmatter。`image_create.py` 据此转换为实际像素尺寸；**缺少 aspect 会导致 fallback 到 1:1**。\n\n**图片内文字**：画面中出现的文字必须为中文。在 prompt 里**直接写出要显示的中文文案**（如「传统对话AI」「OpenClaw」），禁止只写 “labels in Chinese” 或 “Chinese or English OK”，否则模型会生成英文。\n\nPrompt 构建：[references/image-styles/prompt-construction.md](references/image-styles/prompt-construction.md)\n\n### 第5步：展示方案并等待确认 ⛔\n\n### 第6步：生成图片\n\n**封面**：见「封面 vs 正文」— **默认必须先**写好 **`imgs/prompts/`** 中封面 prompt（含 `aspect` 与 `config.yaml` 的 **`cover_aspect`** 一致），再执行 **`image_create.py generate … -o ../cover.png`**（或等价输出路径）。\n\n**生成方式（优先级，正文）**：\n\n0. **已在「正文配图来源优先级」中用尽素材库 / 用户图**：本节不再对**该图位**重复生图（封面仍须单独按上款处理）。\n1. **缺图时优先：调用专用生图 API**（`scripts/image_create.py`）— 依赖 **`config.yaml` 的 `image_model` + `aws.env` 的 `IMAGE_MODEL_API_KEY`**\n2. **自动降级：模型未配置**（退出码 2、stderr 含 `[NO_MODEL]`）且当前 Agent 支持图片生成、并已获用户明确同意代生图 → Agent 读取 `imgs/prompts/*.md` 中的 prompt + frontmatter（size/quality），用自身多模态能力按**相同 prompt** 生图 → 告知用户 `ℹ️ 图片模型未配置，本次由当前对话模型直接生图（使用相同配图方案）` → 生成后**正常执行第 7 步**（插入文章）\n3. **故障降级**（退出码 1）→ 按本节下方「调用失败」表格分类处理\n4. **用户供图：跳过生图** — 当 `image_source=user` 或用户明确”使用我上传的图片”时，不调用 `image_create.py`，改为”读图分析 + 写稿引用 + 重排版”\n\n**必须告知用户当前使用的方式**：\n\n- 已配置且调用脚本 → `ℹ️ 使用 image_create.py 调用专用生图模型（{model}）`\n- Agent 降级生图（退出码 2）→ `ℹ️ 图片模型未配置，本次由当前对话模型直接生图（使用相同配图方案）`\n- 故障降级 / 仅 prompts → `ℹ️ 本次未走 image_create.py（原因：…）`\n\n**⛔ 故障降级（退出码 1）时的终点**：只做到第 4 步（或第 5 步）。产出 `imgs/prompts/*.md` 与方案；**不执行**「替换 article 中的 placeholder」或「修复 HTML」。若 `imgs/README.md` 尚不存在或需补充当前方案的说明，可创建/更新（如何配置 **`aws.env` / `config.yaml`**、如何跑 `image_create.py batch`、如何在 `article.html` 中替换）；若已存在且已涵盖当前方案，**不必重写**。\n\n**注意**：退出码 2（模型未配置）且 Agent 支持图片生成、并已获用户明确同意代生图时，**不受上述终点限制**——Agent 降级生图后继续执行第 7 步。\n\n**调用专用 API 时**（在**仓库根**执行，`{baseDir}` 按上表解析；路径按本篇 `imgs/` 调整）：\n\n```bash\npython {baseDir}/scripts/image_create.py batch drafts/YYYYMMDD-slug/imgs/prompts/ -o drafts/YYYYMMDD-slug/imgs/\n```\n\n单张：`python {baseDir}/scripts/image_create.py generate imgs/prompts/01-cover.md -o imgs/01-cover.png`\n\n连通性自检：`python {baseDir}/scripts/image_create.py test`\n\n图片规格：[references/specs.md](references/specs.md)\n\n#### `image_create.py` 调用失败时（智能体必选分支）\n\n只要执行了 `image_create.py` 且**非零退出或 stderr 有 API/网络错误**，就必须走本节，**不得**只说「生图失败」而不分类、不摘要报错。\n\n运行脚本后**须把终端 stderr 中的具体报错摘要给用户**（含 `❌`、HTTP 状态码、`【配置/认证】`、`网络错误（可重试）`、`[NO_MODEL]` 等关键行），勿只说「失败」。\n\n| 类型 | 判断线索 | 智能体动作 |\n|------|----------|------------|\n| **未配置** | 退出码 2、`[NO_MODEL]` | Agent 支持图片生成且用户明确同意代生图 → 读取 `imgs/prompts/*.md` 中的 prompt + frontmatter（size/quality），用自身多模态能力按相同 prompt 生图并继续第 7 步。Agent 不支持图片生成，或 Agent 代生图失败 → 明确告知“我当前不能完成生图”，给用户二选一：**配置图片模型后重试**，或**本篇不配图继续**（保留 prompts 并在结果中标注无配图）。 |\n| **网络类** | `URLError`、`网络错误（可重试）`、超时、临时 502/503 | **必须自动再试 1 次**（可短暂等待后重跑同一命令）。**第二次仍为网络类** → 可降级为 **Agent 多模态生图** 或仅保留 prompts；**须明确告知**用户本次未走专用 API。 |\n| **配置/凭证类** | 401/403、图片模型配置不完整、`【配置/认证】` | **不要**静默降级。**列出须检查项**（**`config.yaml` 的 `image_model`**、**`aws.env` 的 `IMAGE_MODEL_API_KEY`**、端点、权限），请用户改正后重跑。用户**明确打字**接受本次仅用 Agent/仅 prompts 时，再按 main「本次例外」处理。 |\n| **业务/参数类** | `【请求参数】`、400、返回体提示 model/size 不支持 | 将响应摘要给用户；可改 **`config.yaml` 或 env** 中的 model/尺寸后再试；仍失败则与用户商定是否 Agent 生图。 |\n\n**禁止**：配置明显错误时静默改用 Agent 却不说明；网络降级后不告知「本次未走专用生图」。\n\n### 第7步：插入文章\n\n仅当**已生成图片**时执行：替换 placeholder 为实际图片路径，输出到 `imgs/`。\n\n**封面排除**：封面图（`![封面：...]`）**仅用于微信文章封面上传**，**禁止**作为 `<img>` 嵌入 HTML 正文。替换 placeholder 时**跳过封面标记行**（或直接删除该行），封面图单独复制到文章根目录 `cover.{ext}`。`publish.py` 也支持从 `imgs/` 目录自动发现封面图（`cover.*` 或 `*-cover.*`）。\n\n**修复 HTML 的触发条件**：仅当在 `article.html` 中**确实存在** `href=\"placeholder\"` 或 placeholder 被渲染成可点击链接时，才将误转的 `<a>` 改为 `<img>` 或占位说明；**不要**默认每次都执行「修复流程图占位」或「修复 HTML」。\n\n## 过程文件\n\n| 读取 | 产出 |\n|------|------|\n| **`article.md`**、**`.aws-article/config.yaml`**、本篇可选 **`article.yaml`** 中的标记与配图约束 | `imgs/`（outline + prompts + 图片；未走 API 时为 prompts + 可选 imgs/README.md） |","tags":["aws","wechat","article","images","skills","aiworkskills","agent-skills","ai-skills","ai-writing","chinese-nlp","codex","content-automation"],"capabilities":["skill","source-aiworkskills","skill-aws-wechat-article-images","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-images","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 (11,276 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:26.992Z","embedding":null,"createdAt":"2026-04-21T19:04:11.675Z","updatedAt":"2026-05-18T18:58:26.992Z","lastSeenAt":"2026-05-18T18:58:26.992Z","tsv":"'/../aws-wechat-article-main/references/env.example.yaml':367 '/aiworkskills/wechat-article-skills':85 '/aiworkskills/wechat-article-skills)':259 '/aws-wechat-article-main/references':224 '/aws-wechat-article-main/references/articlescreening-schema.md':643 '/aws-wechat-article-main/references/first-time-setup.md':326 '/aws-wechat-article-main/skill.md':267,341 '/aws-wechat-sticker/skill.md':274 '/config.yaml':168,300,627,1433 '/cover.png':1029 '/images':179,461,485,695,825 '/img_analysis.md':714 '/imgs':706 '/presets/cover-styles':858,876 '/presets/image-styles':913,931 '/products':177,459,483,568,693,823 '/readme.md':904 '/references/cover-styles':849 '/scripts/image_create.py':193,1204,1212,1220 '/skill.md':340 '/v1/chat/completions':126,384 '/v1/images/generations':124,374 '0':1034 '1':319,560,702,728,768,778,846,861,916,967,978,979,1043,1097,1141,1302 '2':587,709,771,853,865,920,1059,1063,1127,1179,1263 '2.35':966 '3':599,721,785,881,934,1094 '4':732,792,1101,1144 '400':1350 '401/403':1316 '5':742,800,1147 '502/503':1300 '6':808 '7':1091,1188,1278 '9':64,253 'account':201 'agent':285,420,496,536,608,844,908,945,1069,1072,1124,1182,1186,1266,1280,1283,1307,1339,1363,1367 'ai':9,12,49 'api':93,104,147,295,309,361,401,835,1046,1057,1191,1234,1313,1331,1442 'articl':4,44,61,71,167,176,214,221,265,299,338,458,482,567,626,655,692,704,712,822,857,875,885,912,923,930,1155,1432 'article.html':796,804,1173,1409 'article.md':171,578,665,789,803,1429 'article.yaml':170,648,734,1435 'article.yaml.default':867,922 'article.yaml.image':781 'articlescreen':230 'articlescreening-schema.md':642 'aspect':629,958,963,974,1018,1023 'author':110 'auto-selection.md':889,942 'aw':2,31,42,59,69,166,175,212,219,263,271,298,336,457,481,566,625,691,821,856,874,911,929,1431 'aws-articl':165,174,297,456,480,565,624,690,820,855,873,910,928,1430 'aws-wechat-articl':58,211 'aws-wechat-article-imag':1 'aws-wechat-article-main':41,68,218,262,335 'aws-wechat-stick':30,270 'aws.env':100,305,364,1053,1167,1327 'base':349,368 'base64':151 'basedir':192,290,366,848,1196,1203,1211,1219 'bash':1201 'batch':444,1171,1205 'bearer':111 'bodi':135 'capabl':87 'caption':634 'categori':886 'chines':992,994 'clawhub':79 'config.example.yaml':645 'config.yaml':358,500,960,1020,1049,1168,1323,1356 'count':638 'cover':465,628,630,651,661,868,902,962,1022,1396,1402,1404 'cover-styl':901 'cover.jpeg':452 'cover.jpg':451 'cover.png':449 'cover.webp':453 'dall':118,376 'dall-':117,375 'default':352,354,650,654 'densiti':633 'dir':705,713 'draft':814 'drafts/yyyymmdd-slug':770 'drafts/yyyymmdd-slug/imgs':1208 'drafts/yyyymmdd-slug/imgs/prompts':1206 'e':119,377 'english':996 'env':1358 'env/config':228 'ext':1397 'fallback':882,935,976 'file':246 'format.py':794 'found':248 'frontmatt':956,970,1078,1273 'full':811 'gemini':385 'generat':442,740,1027,1213 'github.com':84,258 'github.com/aiworkskills/wechat-article-skills':83 'github.com/aiworkskills/wechat-article-skills)':257 'gpt':121,379 'gpt-imag':120,378 'href':1412 'html':798,1160,1388,1406,1425 'http':1247 'http/https':154 'imag':5,102,122,302,307,346,359,380,502,570,590,632,637,652,656,662,668,735,869,924,1051,1055,1105,1325,1329 'image_create.py':91,440,494,547,606,971,1026,1112,1121,1137,1170,1225,1229 'image_model.base':113 'img':184,314,489,583,676,745,751,773,1199,1380,1400,1437 'img_analysis.md':188,316,475,597,679,723,754,758,775,787 'imgs/01-cover.png':1216 'imgs/prompts':139,172,446,549,604,1014,1074,1150,1269 'imgs/prompts/01-cover.md':1214 'imgs/readme.md':1162,1446 'inform':207 'instal':80 'json':133 'key':105,108,197,204,310,362,1058,1332 'label':990 'ls':564 'main':45,72,222,266,339,394,1344 'master':203 'md':140,173,225,410,447,487,574,831,878,892,933,1075,1151,1270 'method':813 'model':103,303,308,347,351,360,1052,1056,1067,1123,1254,1265,1326,1330,1360 'model/size':1352 'multi':636 'o':1028,1207,1215 'ok':997 'openclaw':988 'outlin':1438 'placehold':545,687,749,806,1157,1377,1391,1413,1415 'png':185,580,747 'post':134 'prompt':130,137,426,894,952,955,983,999,1016,1077,1082,1134,1272,1276,1292,1310,1341,1439,1444 'provid':348 'publish':812 'publish.py':810,1398 'python':1202,1210,1218 'python3':191 'qualiti':355 'references/cover-styles':407,408 'references/cover-styles/readme.md':905 'references/image-styles':428,429 'references/image-styles/auto-selection.md':890,943 'references/image-styles/prompt-construction.md':1001,1002 'references/specs.md':1223,1224 'schema':231,899 'scripts/image_create.py':293,1047 'scripts/user_image_prepare.py':311 'shell':189 'size':353 'size/quality':1079,1274 'skill':56,74,76,89,206,209,234,238,241,244,250,343,851 'skill-aws-wechat-article-images' 'skill.md':288 'slug':66,254 'sourc':503,591,669,736,782,1106 'source-aiworkskills' 'ssrf':144,161 'stderr':1064,1232,1244 'sticker':33,273,283 'style':278,417,603,631,635,653,657,870,897,903,925 'test':1221 'tone':639,884,937 'tone/category':422 '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' 'type':277,413,424,602,939 'url':114,149,350,369 'urlerror':1295 'user':504,592,670,737,741,784,1107 'user_image_prepare.py':194 'validate_env.py':392 'vs':432,541,1010 'webp':186,581 'wechat':3,32,43,60,70,213,220,264,272,337 'write.py':756 'xxx.com':373,383 'xxx.com/v1/chat/completions':382 'xxx.com/v1/images/generations':372 'yaml':969 'ℹ️':1085,1119,1128,1135 '一条龙':390 '一条龙公众号套件的':215 '一条龙套件':62 '一稿多方案':15,52 '一致':819,1024 '上述':509 '下图':143 '下通常已通过':391 '不再使用':748 '不写正文只发一组图请走':29 '不受上述终点限制':1185 '不含封面':538 '不得':1237 '不得假装已走专用生图':400 '不必':613 '不必重写':1176 '不执行':1153 '不摘要报错':1241 '不支持':1353 '不支持图片生成':1281 '不要':1320,1420 '不要只改旧':797 '不调用':1111 '不豁免':508 '与':596,605,615,644,1019 '与上文':817 '与审稿记录中注明':476 '与方案':1152 '与正文严格相关才用':585 '专注于':280 '专用生图':294 '且':1181,1230 '且引用图片文件均存在':807 '且当前':1068 '业务':1347 '业务相关文章':554 '业务配图库':180,697,826 '业务配图库属':611 '个':65 '中':724,1410 '中封面':1015 '中替换':1174 '中用尽素材库':1037 '中的':1076,1156,1271,1359 '中的具体报错摘要给用户':1245 '中的标记与配图约束':1436 '中直接引用对应':579 '临时':1299 '为':464 '为准':759 '为实际图片路径':1378 '为正文':544 '为每张图生成方案':949 '之前':550 '九宫格等多图推送':269 '也支持从':1399 '交互约定':388 '产出':1149,1428 '产出并保存为文章目录下的':448 '产品介绍':556 '产品名':178,460,824 '产品截图':827 '仅':190,1133,1340 '仅允许下载':153 '仅当':1373 '仅当在':1408 '仅用于微信文章封面上传':1384 '仅适用于正文插图':537 '仍失败则与用户商定是否':1362 '仍缺图或须原创插画':600 '仍需满足':776 '从':959 '从内置或':872 '从可用封面预设中自动推荐':887 '从模型生图切换到用户供图状态':738 '从选题到发布的':332 '仓库业务配图库':561 '仓库内':164 '仓库内业务资源':612 '仓库根':304,1194 '代生图失败':1284 '代表本篇已选预设':659 '以':109 '任何操作执行前':322 '优先使用业务配图库':479 '优先级':1032 '优先读同名':830 '会导致':975 '会把图片提示词':95 '传统对话ai':987 '体系生成图片':279 '作为':132,1386 '使用':1120 '使用我上传的图片':1109 '使用相同配图方案':1088,1131 '例外':467 '依赖':1048 '保留':1291 '保留地址全部拒绝':159 '修复':1159,1405,1424 '修复流程图占位':1422 '做个封面':26 '允许重排章节以匹配图序':791 '充当封面':466 '先':563 '先创建本篇':675 '先读同名':486 '入口':67,217 '全套':81 '全局':499,622 '全局或本篇':671 '公众号':11 '公众号封面':6,47 '公众号插图':8 '公众号配图':7 '公网地址':155 '共':63 '其余图片用途应为':730 '具体由用户配置':127 '具体行为':98 '兼容':123 '内容外发':128 '内容来自本篇':138 '内的生图脚本仍可用':251 '内网':156 '内置':847 '内部决策':946 '内部选择':423 '再复制到本篇':488 '再引用':584 '再执行':1025 '再按':1343 '再跑':755 '再进入':601 '再选图':832 '写':35 '写入':548,968 '写好':1013 '写稿引用':1115 '写稿时以':757 '写稿阶段直接使用用户图片路径':743 '决定':415 '凭证外发':106 '凭证类':1315 '凭证读取':99 '分别':839 '分支':531 '分析并写好':753 '列出并阅读':572 '列出须检查项':1322 '列表与':425 '判断线索':1259 '到':977 '前置规则':333 '加载':879,927 '加载优先级':860,915 '勿只说':1256 '勿静默吞掉报错':532 '单元素列表':871,926 '单张':1209 '单独安装本':240 '却不说明':1368 '原因':1138 '参数类':1348 '及':660 '发':39 '发布后换图重发':761 '发给用户配置的图像生成端点':97 '发送':136 '只做到第':1143 '只描述配图步骤':344 '只要执行了':1228 '只说':1238 '可不再走生图':834 '可创建':1164 '可提示用户上述项是否已填':389 '可改':1355 '可用素材库':816 '可短暂等待后重跑同一命令':1304 '可能包含文章标题':141 '可能含文章主题片段':96 '可跳过脚本':473 '可选':187,1445 '可重试':1252,1297 '可降级为':1306 '同名':573 '同步把本篇':780 '同步更新本篇':733 '名':877,932 '否则模型会生成英文':998 '含':1017,1065,1246 '含路径与画面说明':575 '告知用户':1084 '和视觉风格':940 '品牌素材等':828 '品牌设计':19 '响应返回图片':148 '回到发布步骤执行':809 '图注建议':720 '图片':1440 '图片内容':717 '图片内文字':980 '图片模型':345 '图片模型未配置':1086,1129 '图片模型配置不完整':1317 '图片消息':268 '图片规格':1222 '在':357,363,543,577,982,1193 '处理':1346 '多模态生图':1308 '多风格预设可复用':16 '失败':1257 '头发送到':112 '套件完整装齐到同一':233 '套件说明':54 '如':744,863,918,965,986 '如何在':1172 '如何跑':1169 '如何配置':1166 '子目录':571 '字段取值只允许':739 '存在':707 '存在并生成':315 '安装':852 '完整':252 '完整字段见':641 '完整长文从选题到发布':261 '实证':688 '审':36 '对应章节':790 '封面':21,431,437,540,726,954,1007,1009,1383 '封面与正文配图':838 '封面与配图生成':13 '封面仅':318,777 '封面仍须单独按上款处理':1042 '封面只用这一张':471 '封面图':1382 '封面图单独复制到文章根目录':1395 '封面排除':1381 '封面文件并声明':470 '封面要简约风':864 '封面见上文':539 '封面须脚本生成':510 '封面风格':402,404,842 '将':455 '将响应摘要给用户':1354 '将新图放入该目录':772 '尚不存在或需补充当前方案的说明':1163 '就必须走本节':1236 '尺寸后再试':1361 '局部':799 '展示方案并等待确认':525,1004 '属':57 '嵌入':1387 '工作流':513 '工作流中的若干步骤会读取同级':223 '已在':1035 '已生成图片':1374 '已配置且调用脚本':1118 '常见为':116 '并列':617 '并在结果中标注无配图':1293 '并将用户图片放入该目录':708 '并已获用户明确同意代生图':1071 '并已获用户明确同意代生图时':1184 '并更新':774 '并生成':677 '应为单元素列表':658 '建议':195 '建议一并':78 '建议章节':718 '建议章节与推荐用途':681 '引用的步骤会在读取阶段遇到':245 '引用都能读到':239 '张':320,779 '当':667,1104 '当用户上传图片并指定主题时':700 '当用户明确说':763 '必须':323,438 '必须且只能出现':727 '必须包含':957 '必须告知用户当前使用的方式':1117 '必须自动再试':1301 '我当前不能完成生图':1286 '或':443,450,495,607,993,1158,1282,1289,1357,1403,1414,1423 '或仅保留':1309 '或其它素材库文件':462 '或占位说明':1419 '或复制到本篇':582 '或多模态模型':125 '或引用路径':490 '或当前流程规定的正文来源':666 '或用户明确':1108 '或用户明确书面确认':330 '或直接删除该行':1394 '或第':1146 '或等价输出路径':1030 '所在目录为':289 '才将误转的':1417 '执行':286,1195 '执行其中的':327 '扫描':909 '扫描两个目录合并可用封面预设列表':845 '把图片插到与内容匹配的章节位置':760 '指定端点':115 '按':276,324,786 '按上表解析':1197 '按主题匹配后':576 '按以下流程':767 '按以下顺序执行':701 '按文章内容自动匹配画风':51 '按文章标题与内容自动匹配画风':14 '按本节下方':1098 '换成我上传的新图并重新发草稿箱':765 '据此转换为实际像素尺寸':972 '排':37 '接受本次仅用':1338 '推荐用途':719,725 '描述':686 '提取所有':684 '插入文章':534,1093,1372 '插图':23 '搜索':696 '支持图片生成':1070,1183 '支持图片生成且用户明确同意代生图':1267 '改为':1113,1418 '故障降级':1095,1132,1139 '教程':555 '文件写':182 '文件名':716 '文件读':163 '文本':131 '文章插图':27 '新增分支':699,762 '无':805 '无须引用外部':896 '时':236,242,399,472,672,766,1110,1192,1342,1392 '时为':1443 '时写入草稿箱':815 '时执行':1375 '时的终点':1142 '明确上传':469 '明确告知':1285 '明确打字':1337 '是':210 '智能体动作':1260 '智能体必选分支':1227 '智能体行为约束':396 '更新':678,1165 '更新为':783 '替换':1154,1376,1390 '最低权限':198 '有':1233 '有现成业务配图却重新生成':559 '未走':1441 '未通过环境校验且未获用户明确':397 '未配置':1261 '本':55,88,208,249,342 '本地业务配图库':552 '本次不检查':331 '本次例外':398,1345 '本次未走':1136 '本次未走专用生图':1370 '本次由当前对话模型直接生图':1087,1130 '本篇':169,183,589,646,866,921 '本篇不配图继续':1290 '本篇可选':1434 '本篇涉及用户业务时':829 '本篇涉及用户业务时优先复用':181 '本篇约束与文章':517,621 '本节不再对':1039 '权限':1334 '构建':1000 '根据':421,883 '根据正文内容信号与':936 '根目录':235 '案例':557 '检测通过后才能进行以下操作':329 '检测顺序':328 '模型未配置':1061,1180 '模板':317 '模板见':427 '次':729,1303 '正常执行第':1090 '正文':433,478,542,731,1011,1033,1389 '正文以用户':506 '正文要扁平插画':919 '正文部分':598 '正文配图':403,412 '正文配图来源优先级':492,535,1036 '正文配图风格':906 '步':1092,1145,1148,1189,1279 '每个封面预设':891 '每个预设':409 '每图至少包含':715 '每张图片的':129 '注意':1177 '淘米':746 '清单见':255 '源码':82 '源码仓库':256 '状态码':1248 '独立计费':199 '独立预设体系':405 '环回':157 '环境检查':516,620 '生图':10,1083,1364 '生图失败':1239 '生图并继续第':1277 '生成':50,441,710 '生成后':1089 '生成图片':24,527,1006 '生成封面与正文配图':94 '生成方式':1031 '生成配图方案':523,948 '用专用':196 '用户':468,1336 '用户上传':588 '用户供图':1102 '用户供图模式':312,595,616,674,698 '用户创建或预设包导入':859 '用户图':1038 '用户当次指定':862,917 '用户指定封面':477 '用户指定目标文章目录':769 '用户提供的图或上述引用策略':593 '用户文件同名优先于内置':880 '用户本次未走专用':1312 '用户自定义':854 '用自身多模态能力按':1080 '用自身多模态能力按相同':1275 '用途':292 '由':419 '画什么':416 '画面中出现的文字必须为中文':981 '画面构成':414 '的':101,301,306,395,501,961,1021,1050,1054,1324,1328 '的相对引用依赖同一':75 '的触发条件':1407 '目录':77,430 '目录自动发现封面图':1401 '直接写出要显示的中文文案':985 '直接复制':463 '相关产品':484,694 '相同':1081 '硬性约束':722 '确保本篇':313 '确定本':287 '确定风格':521,837,840 '确实存在':1411 '确认':802 '示例':229 '禁止':454,1365,1385 '禁止只写':989 '立即确保':703 '章节摘要':142 '端点':1333 '第1步':515,619 '第2步':518,682 '第3步':520,836 '第4步':522,947 '第5步':524,1003 '第6步':526,1005 '第7步':533,1371 '第二次仍为网络类':1305 '等':232,356,381 '等以之为准':640 '等共享文档':226 '等关键行':1255 '等多模态模型':386 '等字段':663 '等用户手动上传才查':614 '类型':435,685,950,1258 '类型提示用户提供素材或从':689 '素材引用为主':507 '级':202 '给文章加图':25 '给用户二选一':1287 '维度':898 '维护':711 '缺图时优先':1044 '缺图时再走':493 '缺少':973 '网络类':1294 '网络错误':1235,1251,1296 '网络降级后不告知':1369 '而不分类':1240 '而非':150 '而非仅附属于后者':618 '能力披露':86 '脚本':152,291 '脚本失败时':528 '脚本根据路径判断调用模式':371 '脚本目录':284 '自动推荐':938 '自动降级':1060 '自包含视觉关键词':411,893 '自媒体':18 '自家界面截图':558 '若':146,1161 '若同目录有':647 '若已存在且已涵盖当前方案':1175 '若已用业务配图满足正文':833 '若本篇涉及用户业务':562 '获取可用正文配图预设':914 '落图':752 '表格分类处理':1100 '表示':505 '被渲染成可点击链接时':1416 '要求':436 '要点':895,953 '见':334,406,900,1008 '见下文':491 '见同节':529 '规则':511 '规则见':888,941 '视觉风格':418 '视觉风格为':944 '解析配图标记':519,683 '触发词':20 '认证':1250,1319 '记录每张图的内容分析':680 '该':107 '该图位':1040 '说明':498,610 '请求参数':1349 '请用户改正后重跑':1335 '请走':40 '读':296,445,623 '读取':649,664,964,1073,1268,1427 '读取文章中的配图标记':275 '读图分析':1114 '调':90 '调外部图像':92 '调整':1200 '调用':546 '调用专用':1190 '调用专用生图':1045 '调用专用生图模型':1122 '调用失败':530,1099 '调用失败时':1226 '贴图请用':282 '资源策略':434 '走':594 '走各自的预设目录':841 '超时':1298 '跨':73,237,243 '路径按本篇':1198 '路由':260 '跳板':162 '跳过封面标记行':1393 '跳过生图':1103 '输出到':1379 '过程文件':1426 '运行':793 '运行脚本后':1242 '返回体提示':1351 '这篇文章配图不满意':764 '进入':673 '进入相关产品的':569 '进入终审':801 '连通性自检':1217 '退出码':1062,1096,1126,1140,1178,1262 '通过':439 '通过中转站生图':387 '避免':553 '避免使用':200 '避免硬凑':586 '配个图':28 '配图':22,38,46,48 '配图来源优先级':818 '配图环节':216 '配图进度':514 '配套':205 '配置':1249,1314,1318 '配置图片模型后重试':1288 '配置明显错误时静默改用':1366 '配置检查':321 '里':984 '重复生图':1041 '重排版':1116 '重新映射图片到':788 '重新生成':795 '链路本地':158 '键名对照':365 '长文配图':281 '防御':145 '防止恶意或被劫持的模型端点把脚本当作':160 '降级生图':497,609,1125 '降级生图后继续执行第':1187 '除非用户同时提供了封面文件并声明仅用该封面':512 '随':850 '需要多环节串联':34 '静默降级':1321 '非零退出或':1231 '面向公众号编辑':17 '顺序说明':750 '须为完整端点路径':370 '须先判断是否可用':551 '须在':474 '须把终端':1243 '须明确告知':1311 '须遵守':393 '预设发现':843,907 '风格':951 '风格体系可复用':53 '首次引导':227,325 '默认必须先':1012 '默认每次都执行':1421","prices":[{"id":"814303c9-862b-49ec-a9c0-0929cb3b282f","listingId":"f9a45f97-2eb0-4f24-a81f-5207e937f3d5","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.675Z"}],"sources":[{"listingId":"f9a45f97-2eb0-4f24-a81f-5207e937f3d5","source":"github","sourceId":"aiworkskills/wechat-article-skills/aws-wechat-article-images","sourceUrl":"https://github.com/aiworkskills/wechat-article-skills/tree/main/skills/aws-wechat-article-images","isPrimary":false,"firstSeenAt":"2026-04-21T19:04:11.675Z","lastSeenAt":"2026-05-18T18:58:26.992Z"}],"details":{"listingId":"f9a45f97-2eb0-4f24-a81f-5207e937f3d5","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"aiworkskills","slug":"aws-wechat-article-images","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":"af5941fd495856843c3ca66747e67c544c8c8a5c","skill_md_path":"skills/aws-wechat-article-images/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/aiworkskills/wechat-article-skills/tree/main/skills/aws-wechat-article-images"},"layout":"multi","source":"github","category":"wechat-article-skills","frontmatter":{"name":"aws-wechat-article-images","description":"公众号封面｜公众号配图｜公众号插图｜AI 生图 — 公众号 AI 封面与配图生成，按文章标题与内容自动匹配画风，一稿多方案，多风格预设可复用。面向公众号编辑、自媒体、品牌设计。触发词：「封面」「配图」「插图」「生成图片」「给文章加图」「做个封面」「文章插图」「配个图」。不写正文只发一组图请走 aws-wechat-sticker；需要多环节串联（写+审+排+配图+发）请走 aws-wechat-article-main。"},"skills_sh_url":"https://skills.sh/aiworkskills/wechat-article-skills/aws-wechat-article-images"},"updatedAt":"2026-05-18T18:58:26.992Z"}}