{"id":"28841713-cace-4e51-9fe3-b423b5c56e4c","shortId":"byHZn9","kind":"skill","title":"aws-wechat-article-writing","tagline":"写公众号文章或改写已有内容，可调用第三方模型生成初稿。当用户提到「写文章」「写正文」「写稿」「出稿」「改写」「润色」「续写」「写个初稿」「帮我写」「公众号风格」「把提纲写成文章」「开头结尾」「用 DeepSeek 写」「用 GPT 写」时使用。注意：需要用户明确知道写什么的时候才能直接使用，否则先通过aws-wechat-article-topics获取文章的基本信息。","description":"# 长文写作\n\n## 路由\n\n从零发文、一条龙、完整流程 → [aws-wechat-article-main](../aws-wechat-article-main/SKILL.md)。\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**写作模型**：**`writing_model`**（`provider`、`base_url`、`model` 等）在 **`.aws-article/config.yaml`**；**`WRITING_MODEL_API_KEY`** 在仓库根 **`aws.env`**。键名对照 **`{baseDir}/../aws-wechat-article-main/references/env.example.yaml`**。\n\n**交互约定**：须遵守 main 的**智能体行为约束**——**未**通过环境校验且**未**获用户明确「本次例外」时，不得默认改由当前 Agent 代写并假装流程完整。**环境检查未通过时**，只按 [首次引导](../aws-wechat-article-main/references/first-time-setup.md) 处理配置选项，**不要**在同一条回复里混入写稿、草稿路径或多草稿选择；配置闭环后再进入本 skill 工作流。\n\n## 工作流\n\n```\n写稿进度：\n- [ ] 第0步：⛔ [首次引导 · 检测顺序](../aws-wechat-article-main/references/first-time-setup.md)\n- [ ] 第1步：⛔ **`.aws-article/config.yaml`** 中 **`article_category`**、**`target_reader`**、**`default_author`**（trim 后）须**均非空**；缺则**逐项问用户**、用户确认后再**写回文件**；**禁止**从 **`article.yaml`** 等擅自抄录（与 [main](../aws-wechat-article-main/SKILL.md)「2) 全局账号约束」一致）；**须先于**续旧/新开\n- [ ] 第2步：⛔ **在不了解**用户要**续写既有草稿**还是**新开一篇**时，**须先询问**并确定本篇 `drafts/…` 目录，**再**进入以下步骤；**禁止**未确认就调用写作脚本（见 [main](../aws-wechat-article-main/SKILL.md)「3) 本篇准备」开头）\n- [ ] 第3步：读取本篇约束与写作规范；**写稿前先按下文「说明文档资源库」判断是否查阅/是否传 `--reference`**\n- [ ] 第4步：发布方式（`publish_method`）⛔\n- [ ] 第5步：确定输入与写作方式\n- [ ] 第6步：写作\n- [ ] 第7步：自检与修正\n- [ ] 第8步：展示并等待用户确认 ⛔\n```\n\n**说明**：第 2 步在用户**已明确**路径或意图（例如直接给出 `drafts/…`、或明确说「新开一篇」）时可**不再重复盘问**。\n\n**多草稿 / 未闭环**：与第 2 步同原则——**不了解**续写/新开时**须先问**，**禁止**自动选中某一 `drafts/…` 跑写作脚本。\n\n### 确认轮次优化\n\n以下步骤可**合并或静默通过**以减少交互轮次：\n\n1. **Step 1**（全局三键）：若 `article_category`、`target_reader`、`default_author` 已非空 → **静默通过**，无需再确认。\n2. **Step 4**（publish_method）：若已是 `draft`/`published`/`none`（合法值）→ **静默通过**（规则第3条已允许）。\n3. **合并询问**：当需要同时确认 Step 2（新篇/续写）和 Step 4（发布意图）时，**合并为一轮提问**。\n4. **配图确认**：若用户已给出明确主题且未提出风格要求，images skill 可按默认风格自动生成，**无需单独确认配图方案**。\n\n**最少轮次**：用户意图明确时（如给出主题 + \"写一篇文章\"），理想轮次为 **1 轮**（确认标题/摘要）+ **写完后展示结果**。\n\n### 第1步：全局账号三键（`.aws-article/config.yaml`）⛔\n\n**在续旧/新开询问之前**，打开 **`.aws-article/config.yaml`**，检查 **`article_category`**、**`target_reader`**、**`default_author`** 是否 **trim 后均非空**。任一项缺失：**逐项询问用户**，取得**用户当轮明确答复**后再**写回该文件**，再进入第 2 步。**禁止**从 **`article.yaml`**、其它草稿或仓库文件**静默推断并写盘**；可把从某文件读到的内容**仅作建议展示**，须用户同意后再写入。**禁止**跳过本步。**禁止**仅在对话里确认却不落盘。与 [main](../aws-wechat-article-main/SKILL.md)「2) 全局账号约束」一致。\n\n### 第2步：续旧稿还是新稿（不了解时须先问）⛔\n\n**当不清楚**用户是要**续写 `drafts/` 下某篇进行中草稿**还是**新开一篇**时：**须先询问**（可列出候选目录），待用户选定后再进入第 3 步。**须在第 1 步全局三键已落盘之后执行**。**已明确**时跳过本步询问。\n\n**目录命名**：新开一篇时，目录名**必须**为 `YYYYMMDD-标题slug`（如 `drafts/20260406-wechat-article-skills/`）。`YYYYMMDD` 为当日日期，`slug` 为小写、连字符分隔的标题缩写。**禁止省略日期前缀**。\n\n### 第3步：读取本篇约束与写作规范\n\n**⛔ 关键字段不得空跑**：在调用 **`write.py`** 或按合并约束让 Agent 代写之前，确认合并后的 **`article_category`**、**`target_reader`** **均为非空字符串**（trim 后）；**`default_author`** 非空 **或** 本篇 **`article.yaml` 的 `author`** 非空。若任一项不满足，**须暂停写稿**，引导用户补全 **`.aws-article/config.yaml`**（及/或本篇 **`article.yaml`**），**并实际写入文件**——**不要**仅用对话表格收集「读者」却不落盘。全局三键的优先检查顺序见 [main](../aws-wechat-article-main/SKILL.md)「2) 全局账号约束」；若第 1 步已正确落盘，此处多为合并 **`article.yaml` 覆盖**后的复核。\n\n**约束从哪来**：`write.py` 会先读全局 **`.aws-article/config.yaml`**，再读本篇目录下的 **`article.yaml`**，把两边的键**叠成一张表**用来生成写作提示——**若同一键在两份文件里都有，以本篇 `article.yaml` 为准**。字段分工见 [articlescreening-schema.md](../aws-wechat-article-main/references/articlescreening-schema.md)。\n\n1. **`.aws-article/config.yaml`**：**文风、结构预设、禁用词、字数、`embeds` 等**与「写什么、怎么写」有关的顶层字段会进入这张表。  \n   **`writing_model` / `image_model`** 两段只给脚本**连 API 用**（地址、模型名等），**不**整段放进给大模型的「写作说明」里，以免把技术配置当成正文要求。\n2. 本篇 **`article.yaml`**：本篇标题、作者、摘要、**`publish_completed`** 等；与 config **重名的键**会**覆盖** config。\n\n**`write.py`** 在仓库根执行，按**输入 `.md` 所在目录**找到本篇 **`article.yaml`**；叠完后的约束表不能为空（一般只要 **`config.yaml`** 里已有账号/文风等即可）。**`publish_completed`**：新建或补全本篇 **`article.yaml`** 时须为 **`false`**；本篇发布真正结束后由 [publish skill](../aws-wechat-article-publish/SKILL.md) 改为 **`true`**；**`publish.py` 不修改此字段**。\n\n`default_structure` / `default_closing_block` 指向的 **预设正文**来自 **`.aws-article/presets/`**（及用户目录下同名 presets），与配置中的**文件主名**对应。两者在本篇 **`article.yaml`** 中必须为**单元素列表** `[名]`（或空列表 `[]`）；`write.py` 对预设选择仅读取本篇 `article.yaml`，不再在执行阶段从 `custom_*` / `default_*` 候选池推断。\n\n**多候选自动选择**：当 `default_structure`（或 `default_closing_block`）含**多个候选**时，Agent 须：\n1. 读取每个候选预设文件（如 `.aws-article/presets/structures/<名>.md`），了解其适用场景；\n2. 结合本篇主题 / 选题卡内容，判断最匹配的一个；\n3. 将该名写入 `article.yaml` 同键为单元素列表 `[名]`；\n4. 然后再调用 `write.py`。\n**禁止**盲选第一个——须基于内容匹配。若无法判断，向用户展示候选及说明后请用户选择。\n\n另加载 **`.aws-article/writing-spec.md`**（如有）。\n\n| 字段 | 用途 |\n|------|------|\n| `target_reader` | 读者画像 → 深度、用词、案例 |\n| `tone` | 调性 → 语气与句式 |\n| `writing_style` | 结构表达方式（口语/书面/故事/方法论等） |\n\n配置中其它与写稿相关的键（如 `topic_direction`、`forbidden_words`、`heading_density`、`target_word_count`）一并写入约束。\n\n### 说明文档资源库（写稿前）⛔\n\n**目的**：减轻垂直领域表述含糊或臆测；默认路径为 **`.aws-article/assets/stock/references/`**（按文件命名存放说明类 Markdown；项目另有约定目录时一并视为同一类资源库）。\n\n写作只有 **两种方式**，说明文档用法如下（二选一，勿混用同一条命令里的职责）。\n\n#### 方式一：智能体直接写稿\n\n1. **写稿前**：查看资源库（及项目约定目录）里是否有与**本篇主题、选题卡**明显相关的说明文档。\n2. **写作时**：可引用其中内容并转化为账号文风；**没有相关文档就不引用，不阻断写稿**。\n3. **`draft.md`**：凡正文中**实际引用或依据**了某份说明文档的，在**该处表述之后**用括号附上**该文件的仓库相对路径**（路径须真实存在）；**未引用则不必加括号**。\n4. **配图占位（硬性）**：当 **`image_source` 不为 `user`**（合并 `config.yaml` + 本篇 `article.yaml`）时，按 **`image_density`** 生成配图占位；若未配置或为空，默认**每节一图**。格式必须为 `![类型名：画面内容](placeholder)`，每个占位**独占一行**，**封面**占位放在**标题之前**；类型名与细则见 [references/structure-template.md](references/structure-template.md)「配图标记」。\n5. **`article.md` 定稿**：面向读者发布，**正文中不保留**上述括号路径（与审稿/排版约定一致）。\n\n#### 方式二：`write.py` 写稿\n\n1. **运行脚本前**：同样先**查看/判断**资源库是否有与主题相关的 `.md`（判断标准与方式一一致）。\n2. **有相关文档**：在仓库根执行 `write.py` 时传入 **`--reference <路径>`**（可重复，**最多 5 个**；路径须在 `.aws-article/assets/stock/references/` 下，详见脚本与 [usage](references/usage.md)）。脚本将全文注入系统提示「参考资料库」，并约定模型在依据处标注资料路径。\n3. **无相关文档**：**不传 `--reference`**，仅靠选题卡与合并配置写稿即可。\n4. 若写作 API 因上下文/token 超限失败，减少 `--reference` 篇数或换更短文档后重试。\n\n**禁止**：将与主题无关的文档硬塞进正文；伪造说明文档中不存在的事实。\n\n### 第4步：发布意图（`publish_method`）⛔\n\n在**调用 `write.py` 或进入第6步写作之前**，确认 **`.aws-article/config.yaml`** 中的 **`publish_method`**（与 [发布 skill](../aws-wechat-article-publish/SKILL.md)、[articlescreening-schema.md](../aws-wechat-article-main/references/articlescreening-schema.md) 一致）：\n\n| 取值 | 含义（向用户说明时用 plain 语言） |\n|------|----------------------------------|\n| **`draft`**（**默认**） | 定稿后若走 **`publish.py full`**，只把图文写入**公众号草稿箱**，不自动「发出去」。 |\n| **`published`** | 定稿后 **`publish.py full`** 会在创建草稿后**再提交发布**（异步）。也可用 **`full --publish`** 单次强制带发布。 |\n| **`none`** | 询问微信配置后用户**明确不想填写**：写入 **`publish_method: none`**。**`publish.py full`** 会**直接跳过**、不调微信；写稿/审稿/排版等照常。 |\n\n**规则**：\n\n1. **默认保持或写入 `publish_method: draft`**，除非用户**明确要对外发布** → 改为 **`published`**；**明确不填微信、不走上传** → 改为 **`none`**。\n2. **微信**：提醒发布需要 **`aws.env`**；用户拒绝填写 → **`none`**，不要代跑 **`publish.py full`**（跑了也会无操作退出）。\n3. **若已是 `draft` / `published` / `none`**（小写）：可**不重复盘问**。\n\n**禁止**：在 `publish_method` **非法**时调用 `write.py`；禁止未经同意默认 **`published`**。\n\n### 第5步：确定输入与写作方式\n\n**输入**：`topic-card.md` / 用户提供的提纲或素材 / 用户口述主题；**并已按上文「说明文档资源库」完成判断**（直接写稿则已决定是否引用；走 `write.py` 则已决定是否传 `--reference`）。\n\n**写作方式（优先级）**：\n\n1. **优先：调用第三方模型**（`write.py draft/rewrite/continue`）— 依赖 **`config.yaml` 的 `writing_model` + `aws.env` 的 `WRITING_MODEL_API_KEY`**（见 [usage.md](references/usage.md)）\n2. **自动降级：模型未配置**（退出码 2）→ 先 `write.py prompt <mode> <input>` 获取提示词 JSON，再由 Agent 按**相同提示词**直接写，**无须**「本次例外」确认\n3. **故障降级：调用失败**（退出码 1）→ 按下方重试/排错逻辑\n\n**必须告知用户当前使用的方式**：\n\n- 已配置且调用脚本 → `ℹ️ 使用 write.py 调用第三方模型（{model}）`\n- 模型未配置自动降级 → `ℹ️ 写作模型未配置，本次由当前对话模型直接写稿（使用相同写作约束）`\n- 故障降级 Agent 直写 → `ℹ️ 第三方 API 不可用，本次由当前对话模型代写（使用相同写作约束）`，并说明原因\n\n### `write.py` 退出码处理（智能体必选分支）\n\n运行脚本后**须把终端里的具体报错原样摘要给用户**（或引用关键行），勿只说「调用失败」。\n\n按**退出码与报错类型**分支处理：\n\n| 类型 | 判断线索 | 智能体动作 |\n|------|----------|------------|\n| **未配置（退出码 2）** | stderr 含 `[NO_MODEL]` | **自动降级**：运行 `write.py prompt <mode> <input>` 获取提示词 JSON（`{\"system_prompt\": \"...\", \"user_prompt\": \"...\"}`）→ Agent 按该 `system_prompt` 和 `user_prompt` 写文章 → 输出到 `-o` 指定路径或展示给用户。**无须**用户确认或「本次例外」。 |\n| **网络类（退出码 1）** | 超时、连接失败、`URLError`、`网络错误:`、临时性 502/503 等 | **必须自动再试 1 次**（可简短等待后重跑同一命令，并告知用户「正在重试」）。**第二次仍为网络类失败** → 改用 `write.py prompt` 获取提示词后由 Agent 按相同约束代写；**必须明确告知**：第三方 API 网络不可用，本次由对话模型代写。 |\n| **配置/凭证类（退出码 1）** | 401/403、Key 无效、`未找到写作约束`、YAML 解析失败等 | **不要**为「省事」自动降级掩盖问题。**列出须检查项**（`config.yaml` 的 `writing_model`、`aws.env` 的 `WRITING_MODEL_API_KEY`、本篇目录是否有 `article.yaml` 等），请用户修正后重跑 `write.py`。若用户**明确打字**愿意本次改由 Agent 代写，再按 [main](../aws-wechat-article-main/SKILL.md)「本次例外」处理并留痕。 |\n| **业务/内容类（退出码 1）** | 4xx 中除鉴权外（如 400 参数）、模型返回空等 | 将 API 返回体摘要给用户；可先根据提示改 `model` / 请求参数再试一次；仍失败则与用户商定是否 Agent 代写。 |\n\n**Agent 代写时提示词获取**：无论哪种降级路径，Agent 代写前都应先运行 `write.py prompt <mode> <input>`（`--instruction` 按需传入），取回与 `write.py` 调第三方模型时**完全相同**的 `system_prompt` 和 `user_prompt`，确保写作约束一致。\n\n**禁止**：配置明显错误时静默改用 Agent 写稿却不说明；网络降级后不告知用户「本次未走第三方模型」。\n\n### 第6步：写作\n\n写作时**必须遵循第3步读取的 `target_reader`、`tone`、`writing_style`**（来自合并后的约束）：深度与用词贴合读者，语气贴合调性，结构与表达方式贴合文章风格。\n\n**用户供图分支（`image_source: user`）**：\n\n- 用户图片须先放入本篇 `imgs/`；随后由智能体**读图分析**并生成或补全 `img_analysis.md`（可用 `user_image_prepare.py` 先生成模板再填写）。**未落盘 `img_analysis.md` 不得调用 `write.py`**，否则脚本会报错退出。\n- `img_analysis.md` 是写稿时配图与章节顺序的**唯一依据**：`write.py` 会把它并入提示，按「建议章节 / 推荐用途」把每张图放到合理位置（可重排章节以匹配叙事）。\n- `img_analysis.md` 中“推荐用途：封面”**必须且只能有 1 处**；否则不得写稿。\n- 写稿时直接使用用户图片路径（`imgs/xxx.png`），不再输出 `placeholder`。\n- `image_source` 只允许：`generated` / `user`。**禁止写** `user_provided`。\n- 该字段由智能体按流程动态更新：默认 `generated`；进入用户供图替换流程时写为 `user`。\n\n**状态切换规则（`article.yaml`）**：\n\n- 新建文章默认：`image_source: generated`、`publish_completed: false`。\n- 当进入“用户上传图片替换/重写”流程时：将 `image_source` 改为 `user`，并将 `publish_completed` 置回 `false`（表示需重新发布闭环）。\n- 重新发布成功且有回执后：再写回 `publish_completed: true`。\n\n**文章结构**：按优先级加载结构预设：\n\n1. 用户指定（「用清单体结构」）\n2. 本篇 `article.yaml` 的 `default_structure`（单元素列表）\n3. `.aws-article/presets/structures/` 下的文件\n4. 内置默认：[references/structure-template.md](references/structure-template.md)\n\n**文末区块**：按优先级加载：\n\n1. 本篇 `article.yaml` 的 `default_closing_block` 指定的文件（单元素列表）\n2. 合并约束中 `closing_block` 非空字符串（若有）\n3. **fallback**：内置默认文末（分割线 + 一句关注引导）：`---\\n觉得有用？点个关注，持续获取优质内容。`\n\n默认模式下，写作时在需要图的位置插入配图标记 `![类型名：画面内容](placeholder)`（规则见 `write.py` 系统提示与 `references/structure-template.md`「配图标记」）。\n\n**调用第三方模型**时的脚本用法：[references/usage.md](references/usage.md)\n\n### 第7步：自检与修正\n\n按写作规范做一轮自检（禁用词、段落长度、开头吸睛度、小标题密度），发现问题自动修正。\n\n**配图占位自检（默认模式）**：当 **`image_source != user`** 时，核对 `draft.md` 是否满足 **`image_density`**（未配置则按**每节一图**）；缺失或格式不合法时，先补齐/修正 `![类型名：画面内容](placeholder)` 再进入审稿或配图步骤。\n\n**续写补充（中间产物门禁）**：\n\n- 续写新增 `![...](placeholder)` 时，必须把该占位计入“待配图清单”（供 images 步骤生成与替换）。\n- 进入发布相关步骤前，必须复核本篇正文产物：`article.md` / `article.html` 若仍含 `placeholder`，只能标记为“正文配图未完成”，禁止宣称发布闭环完成。\n\n### 第8步：展示并等待用户确认 ⛔\n\n## 过程文件\n\n| 读取 | 产出 |\n|------|------|\n| `topic-card.md`、**`.aws-article/config.yaml`**、本篇 **`article.yaml`** | `draft.md`（含配图标记）；**本 skill 可能更新** **`publish_method`**（发出去 → **`published`**；不填微信 → **`none`**；默认 **`draft`**）；新建/补全 **`article.yaml`** 时保持 **`publish_completed: false`** |","tags":["aws","wechat","article","writing","skills","aiworkskills","agent-skills","ai-skills","ai-writing","chinese-nlp","codex","content-automation"],"capabilities":["skill","source-aiworkskills","skill-aws-wechat-article-writing","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-writing","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 (11,026 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.552Z","embedding":null,"createdAt":"2026-04-21T19:04:12.167Z","updatedAt":"2026-04-22T01:02:22.552Z","lastSeenAt":"2026-04-22T01:02:22.552Z","tsv":"'/../aws-wechat-article-main/references/env.example.yaml':95 '/assets/stock/references':629,731 '/aws-wechat-article-main/references/articlescreening-schema.md':442,777 '/aws-wechat-article-main/references/first-time-setup.md':51,113,126 '/aws-wechat-article-main/skill.md':45,70,153,177,331,414,1052 '/aws-wechat-article-publish/skill.md':510,775 '/config.yaml':86,131,290,297,403,430,447,768,1313 '/presets':526 '/presets/structures':564,1211 '/skill.md':69 '/token':748 '/writing-spec.md':589 '1':229,231,280,352,418,443,558,640,708,820,876,917,989,998,1018,1058,1146,1197,1219 '2':154,202,215,243,259,315,332,415,473,568,648,716,833,895,899,958,1200,1228 '3':178,255,349,572,653,739,843,913,1207,1234 '4':245,264,268,577,664,744,1213 '400':1062 '401/403':1019 '4xx':1059 '5':697,725 '502/503':995 'agent':108,378,556,906,933,973,1008,1048,1072,1074,1077,1096 'api':89,464,746,890,937,1012,1038,1066 'articl':4,33,43,67,85,130,133,234,289,296,299,381,402,429,446,525,563,588,628,730,767,1210,1312 'article.html':1298 'article.md':698,1297 'article.yaml':149,319,393,406,421,432,438,475,495,504,533,540,574,675,1041,1167,1202,1221,1315,1331 'articlescreening-schema.md':441,776 'author':138,239,304,389,395 'aw':2,41,65,84,129,288,295,401,428,445,524,562,587,627,729,766,1209,1311 'aws-articl':83,128,287,294,400,427,444,523,561,586,626,728,765,1208,1310 'aws-wechat-article-main':40,64 'aws-wechat-article-writ':1 'aws.env':92,836,886,1034 'base':78 'basedir':94 'block':519,552,1225,1231 'categori':134,235,300,382 'close':518,551,1224,1230 'complet':480,502,1173,1186,1193,1334 'config':483,487 'config.yaml':498,673,882,1030 'count':619 'custom':542 'deepseek':22 'default':137,238,303,388,515,517,543,547,550,1204,1223 'densiti':616,679,1275 'direct':612 'draft':169,207,223,249,341,784,824,845,1328 'draft.md':654,1272,1316 'draft/rewrite/continue':880 'drafts/20260406-wechat-article-skills':365 'emb':452 'fallback':1235 'fals':506,1174,1188,1335 'forbidden':613 'full':788,796,801,812,841 'generat':1156,1163,1171 'gpt':25 'head':615 'imag':271,460,668,678,1114,1153,1169,1180,1267,1274,1293 'img':1118 'img_analysis.md':1122,1127,1131,1141 'imgs/xxx.png':1150 'instruct':1081 'json':904,968 'key':90,891,1020,1039 'main':44,68,98,152,176,330,413,1051 'markdown':631 'md':492,566,714 'method':191,247,759,771,809,823,854,1322 'model':76,80,88,459,461,885,889,926,962,1033,1037,1069 'none':251,804,810,832,838,847,1326 'n觉得有用':1239 'o':982 'placehold':687,1152,1246,1283,1288,1300 'plain':782 'preset':528 'prompt':902,966,970,972,976,979,1006,1080,1089,1092 'provid':77,1160 'publish':190,246,250,479,501,508,758,770,793,802,808,822,828,846,853,859,1172,1185,1192,1321,1324,1333 'publish.py':513,787,795,811,840 'reader':136,237,302,384,594,1105 'refer':187,721,742,751,873 'references/structure-template.md':694,695,1215,1216,1250 'references/usage.md':735,894,1254,1255 'skill':72,119,272,509,774,1319 'skill-aws-wechat-article-writing' 'slug':368 'sourc':669,1115,1154,1170,1181,1268 'source-aiworkskills' 'stderr':959 'step':230,244,258,263 'structur':516,548,1205 'style':603,1108 'system':969,975,1088 'target':135,236,301,383,593,617,1104 'tone':599,1106 'topic':611 'topic-agent-skills' 'topic-ai-skills' 'topic-ai-writing' 'topic-card.md':863,1309 'topic-chinese-nlp' 'topic-codex' 'topic-content-automation' 'topic-content-creation' 'topic-copywriting' 'topic-llm' 'topic-markdown-to-html' 'topic-openclaw' 'topic-wechat' 'topics获取文章的基本信息':34 'trim':139,306,386 'true':512,1194 'url':79 'urlerror':992 'usag':734 'usage.md':893 'user':671,971,978,1091,1116,1157,1159,1165,1183,1269 'user_image_prepare.py':1124 'wechat':3,32,42,66 'word':614,618 'write':5,75,87,458,602,884,888,1032,1036,1107 'write.py':376,425,488,538,579,706,719,762,857,871,879,901,924,942,965,1005,1044,1079,1084,1129,1134,1248 'yaml':1023 'yyyymmdd':362,366 'yyyymmdd-标题slug':361 'ℹ️':922,928,935 '一句关注引导':1238 '一并写入约束':620 '一条龙':38 '一致':156,334,778 '一般只要':497 '上述括号路径':702 '下':732 '下某篇进行中草稿':342 '下的文件':1212 '不':468 '不为':670 '不了解':217 '不了解时须先问':337 '不传':741 '不修改此字段':514 '不再在执行阶段从':541 '不再输出':1151 '不再重复盘问':211 '不可用':938 '不填微信':1325 '不得调用':1128 '不得默认改由当前':107 '不自动':791 '不要':115,408,1025 '不要代跑':839 '不调微信':815 '不走上传':830 '不重复盘问':850 '不阻断写稿':652 '与':151,329,454,482,772 '与审稿':703 '与第':214 '与配置中的':529 '业务':1055 '两段只给脚本':462 '两种方式':634 '两者在本篇':532 '个':726 '中':132,1142 '中必须为':534 '中的':769 '中间产物门禁':1286 '中除鉴权外':1060 '临时性':994 '为':360,1026 '为准':439 '为小写':369 '为当日日期':367 '也可用':800 '书面':606 '了某份说明文档的':657 '了解其适用场景':567 '二选一':636 '交互约定':96 '产出':1308 '仅作建议展示':323 '仅在对话里确认却不落盘':328 '仅用对话表格收集':409 '仅靠选题卡与合并配置写稿即可':743 '仍失败则与用户商定是否':1071 '从':148,318 '从选题到发布的':57 '从零发文':37 '代写':1049,1073 '代写之前':379 '代写前都应先运行':1078 '代写并假装流程完整':109 '代写时提示词获取':1075 '以下步骤可':226 '以免把技术配置当成正文要求':472 '以减少交互轮次':228 '以本篇':437 '任一项缺失':308 '任何操作执行前':47 '优先':877 '优先级':875 '会':485,813 '会先读全局':426 '会在创建草稿后':797 '会把它并入提示':1135 '伪造说明文档中不存在的事实':755 '作者':477 '使用':923 '使用相同写作约束':931,940 '例如直接给出':206 '供':1292 '依赖':881 '修正':1280 '候选池推断':544 '先':900 '先生成模板再填写':1125 '先补齐':1279 '全局三键':232 '全局三键的优先检查顺序见':412 '全局账号三键':286 '全局账号约束':155,333,416 '公众号草稿箱':790 '公众号风格':18 '关键字段不得空跑':374 '其它草稿或仓库文件':320 '内容类':1056 '内置默认':1214 '内置默认文末':1236 '再':171 '再写回':1191 '再按':1050 '再提交发布':798 '再由':905 '再读本篇目录下的':431 '再进入审稿或配图步骤':1284 '再进入第':314 '写':23,26 '写一篇文章':278 '写个初稿':16 '写什么':455 '写作':195,1101 '写作只有':633 '写作方式':874 '写作时':649,1102 '写作时在需要图的位置插入配图标记':1243 '写作模型':74 '写作模型未配置':929 '写作说明':470 '写入':807 '写公众号文章或改写已有内容':6 '写回文件':146 '写回该文件':313 '写完后展示结果':284 '写文章':9,980 '写正文':10 '写稿':11,707,816 '写稿前':622,641 '写稿前先按下文':183 '写稿却不说明':1097 '写稿时直接使用用户图片路径':1149 '写稿进度':122 '减少':750 '减轻垂直领域表述含糊或臆测':624 '凡正文中':655 '凭证类':1016 '出稿':12 '分割线':1237 '分支处理':952 '列出须检查项':1029 '则已决定是否传':872 '判断':712 '判断是否查阅':185 '判断最匹配的一个':571 '判断标准与方式一一致':715 '判断线索':954 '前置规则':58 '勿只说':948 '勿混用同一条命令里的职责':637 '单元素列表':535,1206,1227 '单次强制带发布':803 '占位放在':691 '却不落盘':411 '参数':1063 '参考资料库':737 '及':404 '及用户目录下同名':527 '及项目约定目录':643 '发出去':792,1323 '发布':773 '发布意图':265,757 '发布方式':189 '发现问题自动修正':1263 '取值':779 '取回与':1083 '取得':310 '叠完后的约束表不能为空':496 '叠成一张表':434 '口语':605 '另加载':585 '只允许':1155 '只把图文写入':789 '只按':111 '只描述写稿步骤':73 '只能标记为':1301 '可':849 '可先根据提示改':1068 '可列出候选目录':347 '可引用其中内容并转化为账号文风':650 '可把从某文件读到的内容':322 '可按默认风格自动生成':273 '可用':1123 '可简短等待后重跑同一命令':1000 '可能更新':1320 '可调用第三方模型生成初稿':7 '可重复':723 '可重排章节以匹配叙事':1140 '合并':672 '合并为一轮提问':267 '合并或静默通过':227 '合并约束中':1229 '合并询问':256 '合法值':252 '同样先':710 '同键为单元素列表':575 '名':536,565,576 '后':140,387 '后再':312 '后均非空':307 '后的复核':423 '向用户展示候选及说明后请用户选择':584 '向用户说明时用':781 '否则不得写稿':1148 '否则先通过aw':31 '否则先通过aws-wechat-article-topics获取文章的基本信息':30 '否则脚本会报错退出':1130 '含':553,960 '含义':780 '含配图标记':1317 '和':262,977,1090 '唯一依据':1133 '因上下文':747 '在':82,658,760,852 '在不了解':161 '在仓库根':91 '在仓库根执行':489,718 '在同一条回复里混入写稿':116 '在续旧':291 '在调用':375 '地址':466 '均为非空字符串':385 '均非空':142 '处':1147 '处理并留痕':1054 '处理配置选项':114 '多个候选':554 '多候选自动选择':545 '多草稿':212 '如':364,560,610,1061 '如有':590 '如给出主题':277 '字数':451 '字段':591 '字段分工见':440 '完全相同':1086 '完成判断':868 '完整流程':39 '定稿':699 '定稿后':794 '定稿后若走':786 '实际引用或依据':656 '审稿':817 '对应':531 '对预设选择仅读取本篇':539 '封面':690,1144 '将':1065,1179 '将与主题无关的文档硬塞进正文':754 '将该名写入':573 '小写':848 '小标题密度':1262 '展示并等待用户确认':199,1305 '工作流':120,121 '已明确':204,354 '已配置且调用脚本':921 '已非空':240 '帮我写':17 '并告知用户':1001 '并实际写入文件':407 '并将':1184 '并已按上文':866 '并生成或补全':1121 '并确定本篇':168 '并约定模型在依据处标注资料路径':738 '并说明原因':941 '建议章节':1137 '开头':180 '开头吸睛度':1261 '开头结尾':20 '异步':799 '引导用户补全':399 '当':546,667,1266 '当不清楚':338 '当用户提到':8 '当进入':1175 '当需要同时确认':257 '待用户选定后再进入第':348 '待配图清单':1291 '微信':834 '必须':48,359 '必须且只能有':1145 '必须告知用户当前使用的方式':920 '必须复核本篇正文产物':1296 '必须把该占位计入':1290 '必须明确告知':1010 '必须自动再试':997 '必须遵循第3步读取的':1103 '怎么写':456 '愿意本次改由':1047 '或':391,549 '或引用关键行':947 '或按合并约束让':377 '或明确说':208 '或本篇':405 '或用户明确书面确认':55 '或空列表':537 '或进入第6步写作之前':763 '所在目录':493 '打开':293 '执行其中的':52 '找到本篇':494 '把两边的键':433 '把提纲写成文章':19 '把每张图放到合理位置':1139 '持续获取优质内容':1241 '指向的':520 '指定的文件':1226 '指定路径或展示给用户':983 '按':49,490,677,907,950,1136 '按下方重试':918 '按优先级加载':1218 '按优先级加载结构预设':1196 '按写作规范做一轮自检':1258 '按文件命名存放说明类':630 '按相同约束代写':1009 '按该':974 '按需传入':1082 '排版等照常':818 '排版约定一致':704 '排错逻辑':919 '推荐用途':1138,1143 '提醒发布需要':835 '摘要':283,478 '改为':511,827,831,1182 '改写':13 '改用':1004 '故事':607 '故障降级':914,932 '整段放进给大模型的':469 '文件主名':530 '文末区块':1217 '文章结构':1195 '文风':448 '文风等即可':500 '新建':1329 '新建或补全本篇':503 '新建文章默认':1168 '新开':159 '新开一篇':165,209,344 '新开一篇时':357 '新开时':219 '新开询问之前':292 '新篇':260 '方式一':638 '方式二':705 '方法论等':608 '无效':1021 '无相关文档':740 '无论哪种降级路径':1076 '无需再确认':242 '无需单独确认配图方案':274 '无须':910,984 '时':106,166,266,345,555,676,1270,1289 '时传入':720 '时使用':27 '时保持':1332 '时可':210 '时的脚本用法':1253 '时调用':856 '时跳过本步询问':355 '时须为':505 '明显相关的说明文档':647 '明确不填微信':829 '明确不想填写':806 '明确打字':1046 '明确要对外发布':826 '是写稿时配图与章节顺序的':1132 '是否':305 '是否传':186 '是否满足':1273 '智能体动作':955 '智能体必选分支':944 '智能体直接写稿':639 '智能体行为约束':100 '最多':724 '最少轮次':275 '有关的顶层字段会进入这张表':457 '有相关文档':717 '未':101,103 '未引用则不必加括号':663 '未找到写作约束':1022 '未确认就调用写作脚本':174 '未落盘':1126 '未配置':956 '未配置则按':1276 '未闭环':213 '本':71,1318 '本次不检查':56 '本次例外':61,105,911,986,1053 '本次未走第三方模型':1099 '本次由对话模型代写':1014 '本次由当前对话模型代写':939 '本次由当前对话模型直接写稿':930 '本篇':392,474,674,1201,1220,1314 '本篇主题':645 '本篇准备':179 '本篇发布真正结束后由':507 '本篇标题':476 '本篇目录是否有':1040 '来自':522 '来自合并后的约束':1109 '查看':711 '查看资源库':642 '标题slug':363 '标题之前':692 '核对':1271 '格式必须为':684 '案例':598 '检查':298 '检测通过后才能进行以下操作':54 '检测顺序':53,125 '模型名等':467 '模型未配置':897 '模型未配置自动降级':927 '模型返回空等':1064 '次':999 '正在重试':1002 '正文中不保留':701 '正文配图未完成':1302 '此处多为合并':420 '步':316,350 '步全局三键已落盘之后执行':353 '步同原则':216 '步在用户':203 '步已正确落盘':419 '步骤生成与替换':1294 '段落长度':1260 '每个占位':688 '每节一图':683,1277 '没有相关文档就不引用':651 '注意':28 '流程时':1178 '润色':14 '深度':596 '深度与用词贴合读者':1110 '点个关注':1240 '然后再调用':578 '状态切换规则':1166 '独占一行':689 '环境检查未通过时':110 '理想轮次为':279 '生成配图占位':680 '用':21,24,465 '用户上传图片替换':1176 '用户供图分支':1113 '用户口述主题':865 '用户图片须先放入本篇':1117 '用户当轮明确答复':311 '用户意图明确时':276 '用户拒绝填写':837 '用户指定':1198 '用户提供的提纲或素材':864 '用户是要':339 '用户确认后再':145 '用户确认或':985 '用户要':162 '用括号附上':660 '用来生成写作提示':435 '用清单体结构':1199 '用词':597 '用途':592 '画面内容':686,1245,1282 '的':99,394,883,887,1031,1035,1087,1203,1222 '目录':170 '目录名':358 '目录命名':356 '目的':623 '盲选第一个':581 '直写':934 '直接写':909 '直接写稿则已决定是否引用':869 '直接跳过':814 '相同提示词':908 '省事':1027 '硬性':666 '确保写作约束一致':1093 '确定输入与写作方式':193,861 '确认':764,912 '确认合并后的':380 '确认标题':282 '确认轮次优化':225 '禁止':147,173,221,317,325,327,580,753,851,1094 '禁止写':1158 '禁止宣称发布闭环完成':1303 '禁止擅自降级':60 '禁止未经同意默认':858 '禁止省略日期前缀':371 '禁用词':450,1259 '第':201 '第0步':123 '第1步':127,285 '第2步':160,335 '第3步':181,372 '第4步':188,756 '第5步':192,860 '第6步':194,1100 '第7步':196,1256 '第8步':198,1304 '第三方':936,1011 '第二次仍为网络类失败':1003 '等':62,81,453,481,996,1042 '等擅自抄录':150 '篇数或换更短文档后重试':752 '类型':953 '类型名':685,1244,1281 '类型名与细则见':693 '系统提示与':1249 '约束从哪来':424 '结合本篇主题':569 '结构与表达方式贴合文章风格':1112 '结构表达方式':604 '结构预设':449 '续写':15,218,261,340 '续写新增':1287 '续写既有草稿':163 '续写补充':1285 '续旧':158 '续旧稿还是新稿':336 '缺则':143 '缺失或格式不合法时':1278 '网络不可用':1013 '网络类':987 '网络错误':993 '网络降级后不告知用户':1098 '置回':1187 '脚本将全文注入系统提示':736 '自动选中某一':222 '自动降级':896,963 '自动降级掩盖问题':1028 '自检与修正':197,1257 '若':233 '若仍含':1299 '若任一项不满足':397 '若写作':745 '若同一键在两份文件里都有':436 '若已是':248,844 '若无法判断':583 '若有':1233 '若未配置或为空':681 '若用户':1045 '若用户已给出明确主题且未提出风格要求':270 '若第':417 '草稿路径或多草稿选择':117 '获取提示词':903,967 '获取提示词后由':1007 '获用户明确':104 '补全':1330 '表示需重新发布闭环':1189 '覆盖':422,486 '见':63,175,892 '规则':819 '规则第3条已允许':254 '规则见':1247 '解析失败等':1024 '询问微信配置后用户':805 '该处表述之后':659 '该字段由智能体按流程动态更新':1161 '该文件的仓库相对路径':661 '详见脚本与':733 '语气与句式':601 '语气贴合调性':1111 '语言':783 '说明':200 '说明文档用法如下':635 '说明文档资源库':184,621,867 '请求参数再试一次':1070 '请用户修正后重跑':1043 '读取':1307 '读取本篇约束与写作规范':182,373 '读取每个候选预设文件':559 '读图分析':1120 '读者':410 '读者画像':595 '调性':600 '调用':761 '调用失败':915,949 '调用第三方模型':878,925,1252 '调第三方模型时':1085 '资源库是否有与主题相关的':713 '走':870 '超时':990 '超限失败':749 '跑了也会无操作退出':842 '跑写作脚本':224 '路径':722 '路径或意图':205 '路径须在':727 '路径须真实存在':662 '路由':36 '跳过本步':326 '轮':281 '输入':491,862 '输出到':981 '过程文件':1306 '运行':964 '运行脚本前':709 '运行脚本后':945 '返回体摘要给用户':1067 '还是':164,343 '进入以下步骤':172 '进入发布相关步骤前':1295 '进入用户供图替换流程时写为':1164 '连':463 '连字符分隔的标题缩写':370 '连接失败':991 '退出码':898,916,957,988,1017,1057 '退出码与报错类型':951 '退出码处理':943 '选题卡':646 '选题卡内容':570 '逐项询问用户':309 '逐项问用户':144 '通过环境校验且':102 '配图占位':665 '配图占位自检':1264 '配图标记':696,1251 '配图确认':269 '配置':1015 '配置中其它与写稿相关的键':609 '配置明显错误时静默改用':1095 '配置检查':46 '配置闭环后再进入本':118 '里':471 '里已有账号':499 '里是否有与':644 '重写':1177 '重名的键':484 '重新发布成功且有回执后':1190 '键名对照':93 '长文写作':35 '阻断':59 '除非用户':825 '随后由智能体':1119 '需要用户明确知道写什么的时候才能直接使用':29 '静默推断并写盘':321 '静默通过':241,253 '非法':855 '非空':390,396 '非空字符串':1232 '面向读者发布':700 '项目另有约定目录时一并视为同一类资源库':632 '须':141,557 '须先于':157 '须先询问':167,346 '须先问':220 '须在第':351 '须基于内容匹配':582 '须把终端里的具体报错原样摘要给用户':946 '须暂停写稿':398 '须用户同意后再写入':324 '须遵守':97 '预设正文':521 '首次引导':50,112,124 '默认':682,785,1162,1327 '默认保持或写入':821 '默认模式':1265 '默认模式下':1242 '默认路径为':625","prices":[{"id":"3e265966-66bf-4bed-9fcb-f1dd6bf3a9eb","listingId":"28841713-cace-4e51-9fe3-b423b5c56e4c","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:12.167Z"}],"sources":[{"listingId":"28841713-cace-4e51-9fe3-b423b5c56e4c","source":"github","sourceId":"aiworkskills/wechat-article-skills/aws-wechat-article-writing","sourceUrl":"https://github.com/aiworkskills/wechat-article-skills/tree/main/skills/aws-wechat-article-writing","isPrimary":false,"firstSeenAt":"2026-04-21T19:04:12.167Z","lastSeenAt":"2026-04-22T01:02:22.552Z"}],"details":{"listingId":"28841713-cace-4e51-9fe3-b423b5c56e4c","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"aiworkskills","slug":"aws-wechat-article-writing","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":"6905a9617c7bcf4120b1696f67c66e87bb4ab1c9","skill_md_path":"skills/aws-wechat-article-writing/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/aiworkskills/wechat-article-skills/tree/main/skills/aws-wechat-article-writing"},"layout":"multi","source":"github","category":"wechat-article-skills","frontmatter":{"name":"aws-wechat-article-writing","description":"写公众号文章或改写已有内容，可调用第三方模型生成初稿。当用户提到「写文章」「写正文」「写稿」「出稿」「改写」「润色」「续写」「写个初稿」「帮我写」「公众号风格」「把提纲写成文章」「开头结尾」「用 DeepSeek 写」「用 GPT 写」时使用。注意：需要用户明确知道写什么的时候才能直接使用，否则先通过aws-wechat-article-topics获取文章的基本信息。"},"skills_sh_url":"https://skills.sh/aiworkskills/wechat-article-skills/aws-wechat-article-writing"},"updatedAt":"2026-04-22T01:02:22.552Z"}}