{"id":"f9a45f97-2eb0-4f24-a81f-5207e937f3d5","shortId":"jjUd5U","kind":"skill","title":"aws-wechat-article-images","tagline":"为公众号文章生成封面图和正文配图，根据文章内容自动匹配风格。当用户提到「封面」「配图」「插图」「生成图片」「给文章加图」「做个封面」「文章插图」「配个图」时使用。","description":"# 配图\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/assets/stock/images/`（或其它素材库文件）**直接复制**为 `cover.*` 充当封面。**例外**：用户**明确上传**封面文件并声明「封面只用这一张」时，可跳过脚本，须在 **`img_analysis.md`** 与审稿记录中注明「用户指定封面」。 |\n| **正文** | **可直接使用参考资料库**：`.aws-article/assets/stock/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. **仓库素材库（参考资料库）**：列出并阅读 **`.aws-article/assets/stock/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/assets/` 搜索。\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/assets/stock/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.457","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 14 github stars · SKILL.md body (9,598 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-04-22T01:02:22.341Z","embedding":null,"createdAt":"2026-04-21T19:04:11.675Z","updatedAt":"2026-04-22T01:02:22.341Z","lastSeenAt":"2026-04-22T01:02:22.341Z","tsv":"'/../aws-wechat-article-main/references/env.example.yaml':126 '/assets':440 '/assets/stock/images':218,240,318,567 '/aws-wechat-article-main/references/articlescreening-schema.md':390 '/aws-wechat-article-main/references/first-time-setup.md':85 '/aws-wechat-article-main/skill.md':26,100 '/aws-wechat-sticker/skill.md':33 '/config.yaml':59,374,1173 '/cover.png':769 '/img_analysis.md':458 '/imgs':450 '/presets/cover-styles':598,616 '/presets/image-styles':653,671 '/readme.md':644 '/references/cover-styles':589 '/scripts/image_create.py':944,952,960 '/skill.md':99 '/v1/chat/completions':143 '/v1/images/generations':133 '0':774 '1':78,311,446,472,512,522,586,601,656,707,718,719,783,837,881,1042 '2':334,453,515,593,605,660,799,803,867,919,1003 '2.35':706 '3':346,465,529,621,674,834 '4':476,536,841,884 '400':1090 '401/403':1056 '5':486,544,887 '502/503':1040 '6':552 '7':831,928,1018 'agent':44,179,251,291,355,584,648,685,809,812,864,922,926,1006,1020,1023,1047,1079,1103,1107 'api':54,68,120,160,575,786,797,931,974,1053,1071,1182 'articl':4,24,58,97,217,239,317,373,402,439,448,456,566,597,615,625,652,663,670,895,1172 'article.html':540,548,913,1149 'article.md':325,412,533,547,1169 'article.yaml':395,478,1175 'article.yaml.default':607,662 'article.yaml.image':525 'articlescreening-schema.md':389 'aspect':376,698,703,714,758,763 'auto-selection.md':629,682 'aw':2,22,30,57,95,216,238,316,372,438,565,596,614,651,669,1171 'aws-articl':56,215,237,315,371,437,564,595,613,650,668,1170 'aws-wechat-article-imag':1 'aws-wechat-article-main':21,94 'aws-wechat-stick':29 'aws.env':64,123,793,907,1067 'base':108,127 'basedir':49,125,588,936,943,951,959 'bash':941 'batch':203,911,945 'caption':381 'categori':626 'chines':732,734 'config.example.yaml':392 'config.yaml':117,255,700,760,789,908,1063,1096 'count':385 'cover':222,375,377,398,408,608,642,702,762,1136,1142,1144 'cover-styl':641 'cover.jpeg':211 'cover.jpg':210 'cover.png':208 'cover.webp':212 'dall':135 'dall-':134 'default':111,113,397,401 'densiti':380 'dir':449,457 'draft':558 'drafts/yyyymmdd-slug':514 'drafts/yyyymmdd-slug/imgs':948 'drafts/yyyymmdd-slug/imgs/prompts':946 'e':136 'english':736 'env':1098 'ext':1137 'fallback':622,675,716 'format.py':538 'frontmatt':696,710,818,1013 'full':555 'gemini':144 'generat':201,484,767,953 'gpt':138 'gpt-imag':137 'href':1152 'html':542,900,1128,1146,1165 'http':987 'imag':5,61,66,105,118,139,257,337,379,384,399,403,409,415,479,609,664,791,795,845,1065,1069 'image_create.py':199,249,302,353,711,766,852,861,877,910,965,969 'img':73,244,330,423,489,495,517,939,1120,1140,1177 'img_analysis.md':75,232,344,426,467,498,502,519,531 'imgs/01-cover.png':956 'imgs/prompts':205,304,351,754,814,890,1009 'imgs/prompts/01-cover.md':954 'imgs/readme.md':902,1186 'key':69,121,798,1072 'label':730 'main':25,98,153,1084 'md':169,206,242,321,571,618,632,673,815,891,1010 'method':557 'model':62,67,106,110,119,792,796,807,863,994,1005,1066,1070,1100 'model/size':1092 'multi':383 'o':768,947,955 'ok':737 'openclaw':728 'outlin':1178 'placehold':300,434,493,550,897,1117,1131,1153,1155 'png':327,491 'prompt':185,634,692,695,723,739,756,817,822,874,1012,1016,1032,1050,1081,1179,1184 'provid':107 'publish':556 'publish.py':554,1138 'python':942,950,958 'qualiti':114 'references/cover-styles':166,167 'references/cover-styles/readme.md':645 'references/image-styles':187,188 'references/image-styles/auto-selection.md':630,683 'references/image-styles/prompt-construction.md':741,742 'references/specs.md':963,964 'schema':639 'scripts/image_create.py':52,787 'scripts/user_image_prepare.py':70 'size':112 'size/quality':819,1014 'skill':102,591 'skill-aws-wechat-article-images' 'skill.md':47 'sourc':258,338,416,480,526,846 'source-aiworkskills' 'stderr':804,972,984 'sticker':32,42 'style':37,176,350,378,382,400,404,610,637,643,665 'test':961 'tone':386,624,677 'tone/category':181 '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':36,172,183,349,679 'url':109,128 'urlerror':1035 'user':259,339,417,481,485,528,847 'validate_env.py':151 'vs':191,296,750 'webp':328 'wechat':3,23,31,96 'write.py':500 'xxx.com':132,142 'xxx.com/v1/chat/completions':141 'xxx.com/v1/images/generations':131 'yaml':709 'ℹ️':825,859,868,875 '一条龙':149 '一致':563,764 '上述':264 '下':319 '下通常已通过':150 '不再使用':492 '不受上述终点限制':925 '不含封面':293 '不得':977 '不得假装已走专用生图':159 '不必':360 '不必重写':916 '不执行':893 '不摘要报错':981 '不支持':1093 '不支持图片生成':1021 '不要':1060,1160 '不要只改旧':541 '不调用':851 '不豁免':263 '与':343,352,362,391,759 '与上文':561 '与审稿记录中注明':233 '与方案':892 '与正文严格相关才用':332 '专注于':39 '专用生图':53 '且':921,970 '且引用图片文件均存在':551 '且当前':808 '业务':1087 '中':468,1150 '中封面':755 '中替换':914 '中用尽素材库':777 '中的':816,896,1011,1099 '中的具体报错摘要给用户':985 '中的标记与配图约束':1176 '中直接引用对应':326 '临时':1039 '为':221 '为公众号文章生成封面图和正文配图':6 '为准':503 '为实际图片路径':1118 '为正文':299 '为每张图生成方案':689 '之前':305 '九宫格等多图推送':28 '也支持从':1139 '交互约定':147 '产出':889,1168 '产出并保存为文章目录下的':207 '产品截图目录':569 '产品界面类文章':309 '仅':873,1080 '仅当':1113 '仅当在':1148 '仅用于微信文章封面上传':1124 '仅适用于正文插图':292 '仍失败则与用户商定是否':1102 '仍缺图或须原创插画':347 '仍需满足':520 '从':699 '从内置或':612 '从可用封面预设中自动推荐':627 '从模型生图切换到用户供图状态':482 '从选题到发布的':91 '仓库内预设资源':359 '仓库根':63,934 '仓库素材库':312 '代生图失败':1024 '代表本篇已选预设':406 '任何操作执行前':81 '优先级':772 '优先读同名':570 '会导致':715 '传统对话ai':727 '体系生成图片':38 '作为':1126 '使用':860 '使用我上传的图片':849 '使用相同配图方案':828,871 '例外':224 '依赖':788 '保留':1031 '修复':899,1145,1164 '修复流程图占位':1162 '做个封面':14 '允许重排章节以匹配图序':535 '充当封面':223 '先创建本篇':422 '先读同名':241 '全局':254,369 '全局或本篇':418 '其余图片用途应为':474 '内置':587 '内部决策':686 '内部选择':182 '再复制到本篇':243 '再引用':331 '再执行':765 '再按':1083 '再跑':499 '再进入':348 '再选图':572 '写入':303,708 '写好':753 '写稿引用':855 '写稿时以':501 '写稿阶段直接使用用户图片路径':487 '决定':174 '凭证类':1055 '分别':579 '分支':286 '分析并写好':497 '列出并阅读':314 '列出须检查项':1062 '列表与':184 '判断线索':999 '到':717 '前置规则':92 '加载':619,667 '加载优先级':600,655 '勿只说':996 '勿静默吞掉报错':287 '单元素列表':611,666 '单张':949 '却不说明':1108 '原因':878 '参数类':1088 '参考资料库':313 '及':407 '发布后换图重发':505 '只做到第':883 '只描述配图步骤':103 '只要执行了':968 '只说':978 '可不再走生图':574 '可创建':904 '可提示用户上述项是否已填':148 '可改':1095 '可用素材库':560 '可直接使用参考资料库':236 '可短暂等待后重跑同一命令':1044 '可跳过脚本':230 '可选':1185 '可重试':992,1037 '可降级为':1046 '同名':320 '同步把本篇':524 '同步更新本篇':477 '名':617,672 '否则模型会生成英文':738 '含':757,805,986 '含路径与画面说明':322 '告知用户':824 '和视觉风格':680 '回到发布步骤执行':553 '图注建议':464 '图片':1180 '图片内容':461 '图片内文字':720 '图片模型':104 '图片模型未配置':826,869 '图片模型配置不完整':1057 '图片消息':27 '图片规格':962 '在':116,122,298,324,722,933 '处理':1086 '多模态生图':1048 '失败':997 '如':488,603,658,705,726 '如何在':912 '如何跑':909 '如何配置':906 '字段取值只允许':483 '存在':451 '存在并生成':74 '安装':592 '完整字段见':388 '完整长文从选题到发布':20 '实证':435 '对应章节':534 '封面':9,190,196,295,470,694,747,749,1123 '封面与正文配图':578 '封面仅':77,521 '封面仍须单独按上款处理':782 '封面只用这一张':228 '封面图':1122 '封面图单独复制到文章根目录':1135 '封面排除':1121 '封面文件并声明':227 '封面要简约风':604 '封面见上文':294 '封面须脚本生成':265 '封面风格':161,163,582 '将':214 '将响应摘要给用户':1094 '将新图放入该目录':516 '尚不存在或需补充当前方案的说明':903 '就必须走本节':976 '尺寸后再试':1101 '局部':543 '展示方案并等待确认':280,744 '嵌入':1127 '工作流':268 '已在':775 '已生成图片':1114 '已配置且调用脚本':858 '并列':364 '并在结果中标注无配图':1033 '并将用户图片放入该目录':452 '并已获用户明确同意代生图':811 '并已获用户明确同意代生图时':924 '并更新':518 '并生成':424 '应为单元素列表':405 '建议章节':462 '建议章节与推荐用途':428 '张':79,523 '当':414,844 '当用户上传图片并指定主题时':444 '当用户提到':8 '当用户明确说':507 '必须':82,197 '必须且只能出现':471 '必须包含':697 '必须告知用户当前使用的方式':857 '必须自动再试':1041 '我当前不能完成生图':1026 '或':202,209,250,354,733,898,1022,1029,1097,1143,1154,1163 '或仅保留':1049 '或其它素材库文件':219 '或占位说明':1159 '或复制到本篇':329 '或引用路径':245 '或当前流程规定的正文来源':413 '或用户明确':848 '或用户明确书面确认':89 '或直接删除该行':1134 '或第':886 '或等价输出路径':770 '所在目录为':48 '才将误转的':1157 '执行':45,935 '执行其中的':86 '扫描':649 '扫描两个目录合并可用封面预设列表':585 '把图片插到与内容匹配的章节位置':504 '按':35,83,530 '按上表解析':937 '按主题匹配后':323 '按以下流程':511 '按以下顺序执行':445 '按本节下方':838 '换成我上传的新图并重新发草稿箱':509 '据此转换为实际像素尺寸':712 '接受本次仅用':1078 '推荐用途':463,469 '描述':433 '提取所有':431 '插入文章':289,833,1112 '插图':11 '搜索':441 '支持图片生成':810,923 '支持图片生成且用户明确同意代生图':1007 '改为':853,1158 '故障降级':835,872,879 '文件名':460 '文章插图':15 '新增分支':443,506 '无':549 '无须引用外部':636 '时':158,229,419,510,850,932,1082,1132 '时为':1183 '时使用':17 '时写入草稿箱':559 '时执行':1115 '时的终点':882 '明确上传':226 '明确告知':1025 '明确打字':1077 '智能体动作':1000 '智能体必选分支':967 '智能体行为约束':155 '更新':425,905 '更新为':527 '替换':894,1116,1130 '有':973 '有截图资源却重新生成':310 '未走':1181 '未通过环境校验且未获用户明确':156 '未配置':1001 '本':101 '本地参考':568 '本地素材库':307 '本次不检查':90 '本次例外':157,1085 '本次未走':876 '本次未走专用生图':1110 '本次由当前对话模型直接生图':827,870 '本篇':336,393,606,661 '本篇不配图继续':1030 '本篇可选':1174 '本篇约束与文章':272,368 '本节不再对':779 '权限':1074 '构建':740 '根据':180,623 '根据文章内容自动匹配风格':7 '根据正文内容信号与':676 '检测通过后才能进行以下操作':88 '检测顺序':87 '模型未配置':801,920 '模板':76 '模板见':186 '次':473,1043 '正常执行第':830 '正文':192,235,297,475,751,773,1129 '正文以用户':261 '正文要扁平插画':659 '正文部分':345 '正文配图':162,171 '正文配图来源优先级':247,290,776 '正文配图风格':646 '步':832,885,888,929,1019 '每个封面预设':631 '每个预设':168 '每图至少包含':459 '注意':917 '淘米':490 '状态码':988 '独立预设体系':164 '环境检查':271,367 '生图':823,1104 '生图失败':979 '生图并继续第':1017 '生成':200,454 '生成后':829 '生成图片':12,282,746 '生成方式':771 '生成配图方案':278,688 '用户':225,1076 '用户上传':335 '用户供图':842 '用户供图模式':71,342,363,421,442 '用户创建或预设包导入':599 '用户图':778 '用户当次指定':602,657 '用户指定封面':234 '用户指定目标文章目录':513 '用户提供的图或上述引用策略':340 '用户文件同名优先于内置':620 '用户本次未走专用':1052 '用户自定义':594 '用自身多模态能力按':820 '用自身多模态能力按相同':1015 '用途':51 '由':178 '画什么':175 '画面中出现的文字必须为中文':721 '画面构成':173 '的':60,65,154,256,701,761,790,794,1064,1068 '的触发条件':1147 '目录':189 '目录自动发现封面图':1141 '直接写出要显示的中文文案':725 '直接复制':220 '相同':821 '硬性约束':466 '确保本篇':72 '确定本':46 '确定风格':276,577,580 '确实存在':1151 '确认':546 '禁止':213,1105,1125 '禁止只写':729 '立即确保':447 '端点':1073 '第1步':270,366 '第2步':273,429 '第3步':275,576 '第4步':277,687 '第5步':279,743 '第6步':281,745 '第7步':288,1111 '第二次仍为网络类':1045 '等':115,140 '等以之为准':387 '等关键行':995 '等多模态模型':145 '等字段':410 '等用户手动上传才查':361 '类型':194,432,690,998 '类型提示用户提供素材或从':436 '素材库属':358 '素材引用为主':262 '给文章加图':13 '给用户二选一':1027 '维度':638 '维护':455 '缺图时优先':784 '缺图时再走':248 '缺少':713 '网络类':1034 '网络错误':975,991,1036 '网络降级后不告知':1109 '而不分类':980 '而非仅附属于后者':365 '脚本':50 '脚本失败时':283 '脚本根据路径判断调用模式':130 '脚本目录':43 '自动推荐':678 '自动降级':800 '自包含视觉关键词':170,633 '若':901 '若同目录有':394 '若已存在且已涵盖当前方案':915 '若已用素材库满足正文':573 '获取可用正文配图预设':654 '落图':496 '表格分类处理':840 '表示':260 '被渲染成可点击链接时':1156 '要求':195 '要点':635,693 '见':93,165,640,748 '见下文':246 '见同节':284 '规则':266 '规则见':628,681 '视觉风格':177 '视觉风格为':684 '解析配图标记':274,430 '认证':990,1059 '记录每张图的内容分析':427 '该图位':780 '说明':253,357 '请求参数':1089 '请用户改正后重跑':1075 '读':55,204,370 '读取':396,411,704,813,1008,1167 '读取文章中的配图标记':34 '读图分析':854 '调整':940 '调用':301 '调用专用':930 '调用专用生图':785 '调用专用生图模型':862 '调用失败':285,839 '调用失败时':966 '贴图请用':41 '资源策略':193 '走':341 '走各自的预设目录':581 '超时':1038 '路径按本篇':938 '路由':19 '跳过封面标记行':1133 '跳过生图':843 '输出到':1119 '过程文件':1166 '运行':537 '运行脚本后':982 '返回体提示':1091 '这篇文章配图不满意':508 '进入':420 '进入终审':545 '连通性自检':957 '退出码':802,836,866,880,918,1002 '通过':198 '通过中转站生图':146 '避免教程类':308 '避免硬凑':333 '配个图':16 '配图':10,18 '配图来源优先级':562 '配图进度':269 '配置':989,1054,1058 '配置图片模型后重试':1028 '配置明显错误时静默改用':1106 '配置检查':80 '里':724 '重复生图':781 '重排版':856 '重新映射图片到':532 '重新生成':539 '键名对照':124 '长文配图':40 '降级生图':252,356,865 '降级生图后继续执行第':927 '除非用户同时提供了封面文件并声明仅用该封面':267 '随':590 '静默降级':1061 '非零退出或':971 '顺序说明':494 '须为完整端点路径':129 '须先判断是否可用':306 '须在':231 '须把终端':983 '须明确告知':1051 '须遵守':152 '预设发现':583,647 '风格':691 '首次引导':84 '默认必须先':752 '默认每次都执行':1161","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-04-22T01:02:22.341Z"}],"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":14,"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-04-21T06:27:58Z","description":"微信公众号 AI 运营助手 | 选题、写稿、审稿、排版、配图、发布全流程 Skill，支持 OpenClaw / Claude Code / Cursor / Codex","skill_md_sha":"a060ed75a8eac8d0b54c6e27f43095398d684922","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":"为公众号文章生成封面图和正文配图，根据文章内容自动匹配风格。当用户提到「封面」「配图」「插图」「生成图片」「给文章加图」「做个封面」「文章插图」「配个图」时使用。"},"skills_sh_url":"https://skills.sh/aiworkskills/wechat-article-skills/aws-wechat-article-images"},"updatedAt":"2026-04-22T01:02:22.341Z"}}