{"id":"430d879b-035f-4a0a-9846-9ded6d66f1aa","entityType":"agent","slug":"clawhub-aiworkskills-aws-wechat-article-review","name":"公众号审稿 & 敏感词校对","canonicalUrl":"https://www.xpersona.co/agent/clawhub-aiworkskills-aws-wechat-article-review","canonicalPath":"/agent/clawhub-aiworkskills-aws-wechat-article-review","generatedAt":"2026-10-10T10:53:13.629Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-10T05:49:31.057Z","emptyReason":null},"description":"公众号审稿｜公众号校对｜敏感词检测｜内容合规 — 公众号发布前合规审查：敏感词扫描、错别字检测、政治合规、平台规范校验，一次性输出修改清单。面向公众号编辑、自媒体作者、合规岗。触发词：「审稿」「审核」「校对」「合规」「敏感词」「错别字」「稿子检查一下」「稿子帮我看看」「稿子写完了」「文章检查一下」「检查下有没有问题」「能不能发」「发布前检查」。需要多环节串联（写+审+排+配图+发）请走 aws-wechat-article-main。 Skill: 公众号审稿 & 敏感词校对 Owner: aiworkskills Summary: 公众号审稿｜公众号校对｜敏感词检测｜内容合规 — 公众号发布前合规审查：敏感词扫描、错别字检测、政治合规、平台规范校验，一次性输出修改清单。面向公众号编辑、自媒体作者、合规岗。触发词：「审稿」「审核」「校对」「合规」「敏感词」「错别字」「稿子检查一下」「稿子帮我看看」「稿子写完了」「文章检查一下」「检查下有没有问题」「能不能发」「发布前检查」。需要多环节串联（写+审+排+配图+发）请走 aws-wechat-article-main。 Tags: chinese:1.0.17, claude-code:1.0.17, compliance:1.0.17, latest:1.0.25, moderation:1.0.17, proofreading:1.0.17, review:1.0.17, wechat:1.0.17 Versi","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.6K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s170f08a9xbhfkfp1vjv33y1ph842r9a:aws-wechat-article-review","sourceUrl":"https://clawhub.ai/aiworkskills/aws-wechat-article-review","homepage":"https://clawhub.ai/aiworkskills/skills/aws-wechat-article-review","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/aiworkskills/aws-wechat-article-review","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/aiworkskills/skills/aws-wechat-article-review","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":64,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"公众号审稿｜公众号校对｜敏感词检测｜内容合规 — 公众号发布前合规审查：敏感词扫描、错别字检测、政治合规、平台规范校验，一次性输出修改清单。面向公众号编辑、自媒体作者、合规岗。触发词：「审稿」「审核」「校对」「合规」「敏感词」「错别字」「稿子检查一下」「稿子帮我看看」「稿子写完了」「文章检查一下」「检查下有没有问题」「"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T05:49:31.057Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T05:49:31.057Z","emptyReason":null},"stars":null,"forks":null,"downloads":1641,"packageName":null,"latestVersion":"1.0.25","tractionLabel":"1.6K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T05:49:31.057Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T05:49:31.057Z","lastCrawledAt":"2026-10-10T05:49:31.057Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T05:49:31.057Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.25","createdAt":"2026-09-06T07:23:53.833Z","changelog":"新增 AI 味自检维度：references/ai-flavor-check.md 诊断方法论 + 校准样例，命中只出黄色建议、不阻断定稿；定稿前强制 write.py strip-citations 去掉正文里的资料路径标注；统一 {python} 解释器占位符。","fileCount":8,"zipByteSize":18537},{"version":"1.0.24","createdAt":"2026-06-16T09:48:38.569Z","changelog":"新增「AI 味自检」诊断维度：公众号体裁指纹库 + 真实稿校准样例；默认 🟡 建议、不阻断定稿。","fileCount":8,"zipByteSize":18606},{"version":"1.0.23","createdAt":"2026-05-27T09:52:47.200Z","changelog":"修复 ![](imgs/img1.png) 图片替换的问题；同步审稿 strip-citations 与写作 draft 流程","fileCount":6,"zipByteSize":10619},{"version":"1.0.22","createdAt":"2026-04-22T23:24:00.121Z","changelog":"软化版套件完整性提示：说明工作流会读跨 skill 共享文档、单独安装时会 file-not-found；纯信息性语气，无 shell 循环、无 Agent 强指令","fileCount":5,"zipByteSize":9057},{"version":"1.0.21","createdAt":"2026-04-22T22:54:13.173Z","changelog":"重构为纯本地审稿：去掉 getdraft.py 自动补齐往期链接的调用、去掉 WECHAT_* 凭证声明。往期补齐职责移交 publish skill（那里本来就有 freepublish/* 权限）。review 现在零网络、零凭证、不调外部脚本","fileCount":5,"zipByteSize":8890},{"version":"1.0.20","createdAt":"2026-04-22T22:35:30.166Z","changelog":"修 scanner 精准点名：移除'不外传/不读仓库外'假陈述；补凭证/内容外发披露；sticker+review 补 WECHAT 凭证声明；空 env 的 skill 移除 primaryEnv；3 个脚本不再遍历父目录","fileCount":5,"zipByteSize":8987},{"version":"1.0.19","createdAt":"2026-04-22T16:36:01.727Z","changelog":"能力披露：frontmatter 加 metadata.openclaw.requires；body 加 Capabilities 段；降温前置依赖块（去 shell 循环与强指令语气）；article_init.py 不再读 Path.home()","fileCount":5,"zipByteSize":8977},{"version":"1.0.18","createdAt":"2026-04-22T15:53:02.633Z","changelog":"清理 tags 只留 latest；frontmatter 加 homepage+url；main/publish 加 automation 关键词","fileCount":5,"zipByteSize":9102}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s170f08a9xbhfkfp1vjv33y1ph842r9a:aws-wechat-article-review","setupComplexity":"low","setupSteps":["Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-aiworkskills-aws-wechat-article-review/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-aiworkskills-aws-wechat-article-review/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-aiworkskills-aws-wechat-article-review/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-aiworkskills-aws-wechat-article-review/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-aiworkskills-aws-wechat-article-review/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-aiworkskills-aws-wechat-article-review/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T10:53:13.625Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-aiworkskills-aws-wechat-article-review/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-aiworkskills-aws-wechat-article-review/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-aiworkskills-aws-wechat-article-review/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-aiworkskills-aws-wechat-article-review/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-10T05:49:31.057Z","emptyReason":null},"readme":"Skill: 公众号审稿 & 敏感词校对\n\nOwner: aiworkskills\n\nSummary: 公众号审稿｜公众号校对｜敏感词检测｜内容合规 — 公众号发布前合规审查：敏感词扫描、错别字检测、政治合规、平台规范校验，一次性输出修改清单。面向公众号编辑、自媒体作者、合规岗。触发词：「审稿」「审核」「校对」「合规」「敏感词」「错别字」「稿子检查一下」「稿子帮我看看」「稿子写完了」「文章检查一下」「检查下有没有问题」「能不能发」「发布前检查」。需要多环节串联（写+审+排+配图+发）请走 aws-wechat-article-main。\n\nTags: chinese:1.0.17, claude-code:1.0.17, compliance:1.0.17, latest:1.0.25, moderation:1.0.17, proofreading:1.0.17, review:1.0.17, wechat:1.0.17\n\nVersion history:\n\nv1.0.25 | 2026-09-06T07:23:53.833Z | user\n\n新增 AI 味自检维度：references/ai-flavor-check.md 诊断方法论 + 校准样例，命中只出黄色建议、不阻断定稿；定稿前强制 write.py strip-citations 去掉正文里的资料路径标注；统一 {python} 解释器占位符。\n\nv1.0.24 | 2026-06-16T09:48:38.569Z | user\n\n新增「AI 味自检」诊断维度：公众号体裁指纹库 + 真实稿校准样例；默认 🟡 建议、不阻断定稿。\n\nv1.0.23 | 2026-05-27T09:52:47.200Z | user\n\n修复 ![](imgs/img1.png) 图片替换的问题；同步审稿 strip-citations 与写作 draft 流程\n\nv1.0.22 | 2026-04-22T23:24:00.121Z | user\n\n软化版套件完整性提示：说明工作流会读跨 skill 共享文档、单独安装时会 file-not-found；纯信息性语气，无 shell 循环、无 Agent 强指令\n\nv1.0.21 | 2026-04-22T22:54:13.173Z | user\n\n重构为纯本地审稿：去掉 getdraft.py 自动补齐往期链接的调用、去掉 WECHAT_* 凭证声明。往期补齐职责移交 publish skill（那里本来就有 freepublish/* 权限）。review 现在零网络、零凭证、不调外部脚本\n\nv1.0.20 | 2026-04-22T22:35:30.166Z | user\n\n修 scanner 精准点名：移除'不外传/不读仓库外'假陈述；补凭证/内容外发披露；sticker+review 补 WECHAT 凭证声明；空 env 的 skill 移除 primaryEnv；3 个脚本不再遍历父目录\n\nv1.0.19 | 2026-04-22T16:36:01.727Z | user\n\n能力披露：frontmatter 加 metadata.openclaw.requires；body 加 Capabilities 段；降温前置依赖块（去 shell 循环与强指令语气）；article_init.py 不再读 Path.home()\n\nv1.0.18 | 2026-04-22T15:53:02.633Z | user\n\n清理 tags 只留 latest；frontmatter 加 homepage+url；main/publish 加 automation 关键词\n\nv1.0.17 | 2026-04-22T08:45:05.309Z | user\n\n加前置依赖检查：任一 skill 启动前要求 9 个套件全装，否则停止工作流\n\nv1.0.16 | 2026-04-22T05:13:11.308Z | user\n\n压缩 description 做 SEO 密度优化\n\nv1.0.15 | 2026-04-22T04:49:39.625Z | user\n\nSEO 优化：补关键词/友好名/价值主张/GitHub 链接\n\nv1.0.14 | 2026-04-22T04:34:50.389Z | user\n\n对齐 git tag v1.0.14\n\nv1.0.1 | 2026-04-22T04:26:01.074Z | user\n\n首发/补套件说明：跨 skill 相对引用需同 skills/ 目录一起安装\n\nv1.0.0 | 2026-04-01T03:45:04.161Z | auto\n\n- Initial release of the article review skill for WeChat official accounts.\n- Provides systematic review of articles for sensitive words, typos, compliance, and writing standards, with a clear modification checklist.\n- Supports both content review and final review modes, automatically selected based on file presence.\n- Strict workflow includes environment checks, stepwise review, modification cycles, and mandatory end-of-article embeds before finalizing.\n- Integrates custom review rules and merges configuration from global and per-article sources.\n- Ensures proper documentation and explanation when any checks or requirements are skipped or missing.\n\nArchive index:\n\nArchive v1.0.25: 8 files, 18537 bytes\n\nFiles: references/ai-flavor-check-samples.md (3941b), references/ai-flavor-check.md (8527b), references/checklist.md (3196b), references/output-format.md (3252b), skill-card.md (2461b), skill.json (467b), SKILL.md (13380b), _meta.json (145b)\n\nFile v1.0.25:SKILL.md\n\n---\nname: aws-wechat-article-review\ndescription: 公众号审稿｜公众号校对｜敏感词检测｜内容合规 — 公众号发布前合规审查：敏感词扫描、错别字检测、政治合规、平台规范校验，一次性输出修改清单。面向公众号编辑、自媒体作者、合规岗。触发词：「审稿」「审核」「校对」「合规」「敏感词」「错别字」「稿子检查一下」「稿子帮我看看」「稿子写完了」「文章检查一下」「检查下有没有问题」「能不能发」「发布前检查」。需要多环节串联（写+审+排+配图+发）请走 aws-wechat-article-main。\nhomepage: https://aiworkskills.cn\nurl: https://github.com/aiworkskills/wechat-article-skills\nmetadata:\n  openclaw:\n    requires:\n      env: []\n      bins:\n        - python3\n---\n\n# 审稿与合规\n\n**公众号发布前合规守门员** —— 敏感词、错别字、平台规范一次性筛查，输出可执行修改清单。\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 为**纯本地规则/清单审稿**，零网络、零凭证、不调用任何外部脚本。\n\n- **凭证**：无\n- **网络**：无\n- **文件读**：仓库内 `.aws-article/config.yaml`、`.aws-article/writing-spec.md`（如有）、`.aws-article/presets/review-rules.yaml`（如有）、本篇 `draft.md` / `article.html` / `article.yaml`\n- **文件写**：本篇 `article.md` 定稿、审稿记录\n- **shell**：无（不调用任何脚本）\n\n> 往期推荐链接的**自动补齐**由 [publish skill](../aws-wechat-article-publish/SKILL.md) 处理（那里才有微信 API 凭证与 `getdraft.py`）；本 skill 只做「若 `embeds.related_articles.manual` 非空则按其排占位符」与「若为空则在审稿输出中提示需 publish 补齐或手填」，**不直接调任何网络脚本**。\n\n## 配套 skill（informational）\n\n本 skill 是 `aws-wechat-article-*` 一条龙公众号套件的**审稿环节**（入口 `aws-wechat-article-main`）。工作流中的若干步骤会读取同级 `../aws-wechat-article-main/references/*.md` 等共享文档（首次引导、writing-spec、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)。\n\n对文章做系统性检查，发现问题并引导修改。\n\n## 两种审稿模式\n\n| 模式 | 时机 | 检查重点 |\n|------|------|---------|\n| **内容审** | writing 之后、formatting 之前 | 内容质量、写作规范、敏感词、配图标记 |\n| **终审** | publish 之前 | 排版完整性、图片就位、发布要素齐全 |\n\n自动识别：有 `article.html` → 终审模式，否则 → 内容审模式。\n\n## 工作流\n\n```\n审稿进度：\n- [ ] 第1步：环境检查 + 本篇约束与规范\n- [ ] 第2步：逐项检查\n- [ ] 第3步：输出审稿结果\n- [ ] 第4步：修改循环 🔄\n- [ ] 第5步：确认通过 → **文末 embed（⛔ BLOCKING）** → 保存 `article.md` 定稿\n```\n\n### 智能体行为约束（与定稿强相关）\n\n- **禁止**在未完成 **第5步「文末 embed」**（见下 **⛔ BLOCKING**）的情况下，将稿件称为「已定稿」、写入 **`article.md`**、或进入 **排版（`format.py`）**。\n- **禁止**用「用户没提」「节省时间」等理由跳过文末占位符；**唯一例外**：用户**书面**声明本篇不要任何嵌入元素（名片/小程序/链接），则须在审稿记录中写明「用户声明跳过 embed」，且仍须确认不是误操作。\n- **一条龙 / 完整流程**（[main SKILL](../aws-wechat-article-main/SKILL.md)）中，**内容审**产出的 **`article.md` 必须已含文末 embed**（按合并规则或合法省略），再进入排版。\n\n### 第1步：环境检查 + 本篇约束与规范 ⛔\n\n任何操作执行前，**必须**按 **[首次引导](../aws-wechat-article-main/references/first-time-setup.md)** 执行其中的 **「检测顺序」**。检测通过后才能进行以下操作（或用户明确书面确认「本次不检查」）：\n\n从选题到发布的阻断规则见 [main SKILL](../aws-wechat-article-main/SKILL.md)；**单独启用本 skill** 时亦须先满足同一套环境检查（或用户按 main 约定声明「本次例外」）。\n\n然后读取：\n\n- **`.aws-article/writing-spec.md`**（如有）\n- **`.aws-article/presets/review-rules.yaml`**（如有）\n- **本篇合并配置**（与 [writing](../aws-wechat-article-writing/SKILL.md)、`format.py` 一致）：先 **`.aws-article/config.yaml`** 顶层（不含 `writing_model` / `image_model`），再叠 **本篇目录 `article.yaml`**（**同键本篇优先**；**仅** `embeds.related_articles` 与全局深度合并，其余 `embeds` 仍以全局为准）。审稿与内容向检查以合并结果为准（如 `review_output_format`、`custom_sensitive_words`、`forbidden_words`、`target_reader`、`tone`、`image_density` 等）。字段说明：[articlescreening-schema.md](../aws-wechat-article-main/references/articlescreening-schema.md)。\n\n**fallback**：合并后仍缺关键约束时向用户说明「部分维度无法按本篇约束对齐」，并建议补全 `config.yaml` / `article.yaml`；无写作规范时跳过规范检查项；无自定义审稿规则时仅执行内置检查清单 [references/checklist.md](references/checklist.md)。\n\n### 第2步：逐项检查\n\n按模式执行不同检查项，详见：[references/checklist.md](references/checklist.md)\n\n**内容审** 检查以下维度：\n\n| 维度 | 检查内容 |\n|------|---------|\n| **标题** | 长度、禁用套路、与正文一致性 |\n| **摘要** | 长度、信息量、与正文一致性 |\n| **正文** | 敏感词、禁用词、错别字、事实出处 |\n| **写作规范** | 对照 writing-spec.md 检查用词、句式、段落；深度与调性是否与 **本篇合并配置** 的 `target_reader`、`tone` 一致 |\n| **AI 味自检** | 对照 [references/ai-flavor-check.md](references/ai-flavor-check.md) 的指纹库诊断文风，逐处标注信号强度（强/中/弱）。**默认只诊断**：命中折算为 🟡 建议修改，**不 blocking、不影响定稿**，由作者决定改不改 |\n| **配图标记** | 封面标记存在、数量与 **本篇合并配置** 的 `image_density` 匹配、描述清晰 |\n| **文末 embed** | 定稿前须完成 **第5步 ⛔ BLOCKING**（与 `format.py` 的 `{embed:…}` 一致）；未写入 `article.md` 不得定稿 |\n| **原创标注** | 按 original_attribution 处理 |\n\n**终审** 额外检查：\n\n| 维度 | 检查内容 |\n|------|---------|\n| 排版 | article.html 存在且完整 |\n| 图片 | imgs/ 下图片齐全、placeholder 已替换 |\n| 发布要素 | 标题/摘要/作者/封面 全部就绪 |\n\n### 第3步：输出审稿结果\n\n按 `review_output_format` 输出：\n- **分块详细**：按维度分块，逐项列 ✅/❌ + 修改建议\n- **简要清单**：表格式，一行一项\n\n输出模板：[references/output-format.md](references/output-format.md)\n\n结果分三级：\n- 🔴 **必须修改**：不改不能过（敏感词、严重错别字、缺封面）\n- 🟡 **建议修改**：改了更好（用词优化、段落调整）\n- 🟢 **通过**：无问题\n\n### 第4步：修改循环 🔄\n\n有 🔴 项时**必须进入修改循环**：\n\n```\n发现问题 → 展示审稿结果 → 等用户/agent 修改 → 重新检查 → 直到无 🔴\n```\n\n修改方式：\n- Agent 直接修改 `draft.md`\n- 用户手动修改后说「改好了」\n- 调用 writing skill 的 rewrite 能力\n\n每轮修改后自动重审被标记为 🔴 的项，不需要全量重审。\n\n> ⚠️ **Step 4 完成不代表可以保存 `article.md`**。必须先完成 Step 5（文末 embed ⛔⛔ BLOCKING）才能写入 `article.md` 或进入排版。\n\n### 第5步：确认通过 → 剥离引用标注 → 文末 embed → 保存定稿 ⛔⛔ BLOCKING\n\n全部 🔴 项消除后：\n1. 展示最终审稿结果\n2. 等待用户确认 ⛔\n3. **⛔ BLOCKING · 剥离引用标注**：在仓库根执行\n   `{python} {baseDir}/../aws-wechat-article-writing/scripts/write.py strip-citations <本篇 draft.md> -o <本篇 draft-stripped.md>`\n   纯本地正则剥离正文中所有 `（资料路径：...）` 引用标注（writing 阶段为事实溯源强制注入，发布版必须去除以免泄露内部产品目录路径）。**禁止**用 sed / agent 肉眼撕替代该脚本 —— 历史多次出现\"撕一遍漏一条\"的事故。\n4. **⛔ BLOCKING · 文末 `embeds`**：**在写入 `article.md` 之前**完成本节下方「规则与表格」——**先读取** `.aws-article/config.yaml` 并与本篇 `article.yaml` **合并**（与第 1 步一致：**除 `embeds.related_articles` 外，`embeds` 仅以全局为准**；**`related_articles` 与全局深度合并**），再在 `draft-stripped.md` 的**正文末尾**（原有正文之后）按规则**追加或合法省略**占位符。**占位符必须与合并后可解析的配置一致**，否则排版阶段会失败。**未完成本节不得保存定稿、不得调用 `format.py`。**\n5. 将已剥离引用标注且含文末 embed（或已按规则省略并记录在审稿说明中）的稿件保存为 **`article.md`（定稿）**；中间产物 `draft-stripped.md` 可保留备查或删除。\n\n**定稿文末 `embeds`（规则与表格）**\n\n| 占位符 | 何时写入文末 | 配置对齐 |\n|--------|----------------|----------|\n| `{embed:profile:…}` | 全局 **`embeds.profiles`** 存在**至少一条有效项**（非空 `nickname`） | 每条有效 profile **一行**，占位中 `…` = 该项 `nickname` |\n| `{embed:miniprogram:…}` | 全局 **`embeds.miniprograms`** 存在**至少一条有效项**（非空 `title`） | 每条有效项一行，`…` = `title` |\n| `{embed:miniprogram_card:…}` | 全局 **`embeds.miniprogram_cards`** 存在**至少一条有效项**（非空 `title`） | 每条有效项一行，`…` = `title` |\n| `{embed:link:…}` | **往期链接**：合并后 **`embeds.related_articles.manual`** 有有效项时；或见下方「无 manual」 | `…` = 该项 `name`；**文末相关链接至多 3 条** |\n\n- **前三类（名片 / 小程序文字链 / 小程序卡片）**：若对应列表**未配置或为空或无非空关键字段**，**不追加**该类占位符，无需处理。\n- **往期 `{embed:link:…}`**：\n  - 若合并后 **`manual` 已有** `name` + `url`：在文末追加对应占位符，**最多 3 条**（超过则只保留 3 条，优先与本文主题最相关的条目或按列表顺序取前 3）。\n  - 若合并后 **`manual` 缺失或为空**：**本 skill 不自动补齐**（以保持 review 纯本地、无网络、无凭证）。处理方式：\n    1. 首选由用户手动把已发表文章的 `name` + `url` 写入本篇 `article.yaml` 的 `embeds.related_articles.manual`（每项至多 3 条）；\n    2. 或在**进入 [publish skill](../aws-wechat-article-publish/SKILL.md)** 时，由 publish 在发布前调用 `getdraft.py published-fields` 自动补齐（publish 才有微信 API 凭证与网络能力）；\n    3. 若用户声明跳过往期：**不伪造** `manual`，在审稿说明中注明「本篇跳过往期推荐」，`{embed:link:…}` 占位省略即可。\n\n字段含义与示例见 **`{baseDir}/../aws-wechat-article-main/references/config.example.yaml`** 的 `embeds` 注释及 **[topics SKILL](../aws-wechat-article-topics/SKILL.md)** 文末「推荐链接」说明；排版脚本据此生成 `article.html`。\n\n**全空时的处理**：当所有 embed 配置（profiles / miniprograms / miniprogram_cards / related_articles）均为空或未配置时，仍须在审稿输出中**显式标注**「文末 embed：无配置，已跳过」，**不得静默跳过**。这确保流程可追溯，避免遗漏。\n\n## 自定义检查规则\n\n用户可在 `.aws-article/presets/review-rules.yaml` 添加自定义检查项：\n\n```yaml\n# .aws-article/presets/review-rules.yaml\ncustom_rules:\n  - name: 品牌名称规范\n    check: 正文中「XX公司」必须使用全称，不能简写\n    level: 必须    # 必须 / 建议\n\n  - name: 数据来源\n    check: 所有引用的数据必须标注来源和日期\n    level: 必须\n\n  - name: CTA 检查\n    check: 文末必须包含明确的行动号召\n    level: 建议\n```\n\n自定义规则会追加到标准检查项之后执行。\n\n## 过程文件\n\n| 模式 | 读取 | 产出 |\n|------|------|------|\n| 内容审 | `draft.md`、**`.aws-article/config.yaml` + 本篇 `article.yaml`**、`writing-spec.md` | `review.md`、`article.md`（定稿） |\n| 终审 | `article.html`、`imgs/`、同上合并配置、`article.yaml`（发布元数据等） | `review.md`（终审结果） |\n\nFile v1.0.25:_meta.json\n\n{\n  \"ownerId\": \"kn7f5hvxj1x2ctd5vqnec5x1zs82ce6h\",\n  \"slug\": \"aws-wechat-article-review\",\n  \"version\": \"1.0.25\",\n  \"publishedAt\": 1788679433833\n}\n\nFile v1.0.25:references/ai-flavor-check-samples.md\n\n# AI 味自检 · 校准样例\n\n> 本文是 [ai-flavor-check.md](ai-flavor-check.md) 的**校准锚点**:用仓库内两篇真实 `draft.md` 跑出的诊断结果，给「该报什么、该放过什么」立一把标尺。诊断风格漂移时（报得太狠或太松），回头对照这两个样例校准。**这里的判级同主文档:命中默认 🟡，不 blocking。**\n\n## 样例 A · `drafts/20260404-gongzhonghao-skill-tuiguang/draft.md`\n\n**体裁**:公众号长文 / 干货（标准最严）。\n\n**应命中:**\n\n| 命中 | 信号 | 证据 | 改写方向（不代改） |\n|------|------|------|------|\n| 每节一句加粗对仗/公式金句，通篇扎堆 | 中 | L16「Prompt 是临时工，Skill 才是正式员工」、L35「不要教 AI 做事，要给 AI 立规矩」、L52「写好 Skill = 精准触发 + 清晰流程 + 输出契约」、L65「机器只认契约，不认情怀」 | 留最想被记住的 1–2 句，其余换大白话或删，让节奏有起伏 |\n| 结尾轻度拔高 | 弱 | L107「2026 年的差距，从愿不愿意把经验『文件夹化』开始拉开」 | 与主题尚相关，可留；想更实在就落到具体收益 |\n\n**应放过（阈值/豁免在生效）:**\n\n| 看着像、不报 | 依据 |\n|------|------|\n| 「不是 X，而是 Y」(L11、L26) | 正文严格格式仅 2 次 < 800 字内 ≥3 次阈值，并入对仗金句一起看 |\n| 开头 L9「你是不是也囤了几百个 Prompt」 | 具体痛点提问，非「随着…的发展」万能套话 |\n| 「渐进式披露」(L45) | 真实技术术语，非硬安名字 |\n| 满屏「底层逻辑/新基建/契约」 | 有 L76–80 五步实操 + 真实文件名支撑，不算概念扎堆缺具体 |\n| 「点赞、在看、加星标…下期见」、「你/大家」口语 | writing-spec 鼓励的固定收尾与口语对话，**不当 AI 味扣分** |\n\n**总评折算**:🔴 0 / 🟡 2 / 🟢 余项 → 不阻断定稿。\n\n## 样例 B · `drafts/20260404-cong-anzhuang-dao-caogaoxiang/draft.md`\n\n**体裁**:公众号长文 / 干货（标准最严）。\n\n**应命中:**\n\n| 命中 | 信号 | 证据 | 改写方向（不代改） |\n|------|------|------|------|\n| 对仗金句 + 对仗短句扎堆（比 A 更密） | 中 | L37「不要教 AI 做事，要给 AI 立规矩」、L78「Prompt 是临时工，Skill 才是正式员工」、L43「凭证不对，门打不开。规则不清，活干砸」、L39「工牌决定能进哪扇门，手册决定进门后怎么干活」、L59「没钥匙打不开门，但你可以选择只在屋里练手」 | 对仗留 1–2 处点睛，其余拆成陈述句 |\n| 结尾轻度拔高 | 弱 | L85「2026 年的差距…」（与 A 同款） | 同 A |\n\n**应放过:**\n\n| 看着像、不报 | 依据 |\n|------|------|\n| 「不是 X，而是 Y」(L10、L15) | 正文严格格式约 2 次 < 阈值 |\n| 跨文复用金句（L37/L78 两篇都有） | 系列文统一口号，语境相关，弱信号放过 |\n| 开头痛点提问 (L8) | 非套话开头 |\n| 「凭证/渐进式披露/最小闭环」 | 有 L68–72 真实命令步骤支撑 |\n| 固定互动收尾、口语对话 | writing-spec 鼓励项，豁免 |\n\n**总评折算**:🔴 0 / 🟡 2 / 🟢 余项 → 不阻断定稿。\n\n## 校准要点（两样例共同验证）\n\n1. **首要命中应是「工整对仗/金句扎堆」**——这是这类推广干货最典型的 AI 节奏；抓不到它就是报得太松。\n2. **「不是 X 是 Y」单独出现 1–2 次不报**——只有 800 字内 ≥3 次才命中；否则并入对仗金句。\n3. **口语对话、生活化类比、固定互动收尾一律不报**——它们是 writing-spec 鼓励的「人味」；报了就是与本仓库规范打架。\n4. **有具体步骤/命令/数字支撑的概念词不报**——「概念扎堆」只针对通篇悬空、无法复现的情况。\n5. **全部命中折算 🟡、不 blocking**——AI 味不进第 4 步强制修改循环、不阻断定稿。\n\nFile v1.0.25:references/ai-flavor-check.md\n\n# AI 味诊断方法论\n\n> 本文是审稿环节「AI 味自检」维度的判定依据。它**只用于诊断**，不是定稿门禁：任何命中默认折算为 🟡 建议修改，由作者自行决定改不改（判级规则见 [SKILL.md 第 2 步](../SKILL.md) 与 [output-format.md](output-format.md)）。\n\n## 一、核心理念（先读这一节）\n\n诊断 AI 味之前，先认同三件事，否则容易把好文章误伤、把烂文章洗白：\n\n1. **AI 味的本质是「太完美」。** 不是用词高级，而是**太顺、太均匀、没有取舍**——每段一样长、每个观点都照顾到、情绪从头到尾平稳、该停顿该跑题该自嘲的地方全被抹平。人写东西会有棱角、有偏重、有突然的口语；AI 写东西像一块被打磨过的玻璃，找不到手感。\n\n2. **不以「去 AI 味」为目标。** 去掉 AI 味 ≠ 内容就变好了。一篇观点平庸但「很有人味」的文章，价值未必比一篇结构工整的高。诊断的目的是**让作者看清自己的文字哪里在偷懒**，而不是教 AI 把自己伪装成人。**所以发现 AI 味只提示、不强制改**，更不因为它阻断定稿。\n\n3. **改写必须基于作者意图。** 审稿只负责指出「这里读起来像 AI、原因是什么、可以往哪个方向调」，**不擅自代改**。每一处 AI 味背后往往有作者想表达的东西，没搞清楚意图就动手，只会把文章改成另一种模板。\n\n## 二、信号强度（怎么标命中）\n\n每条命中标注**信号强度**，用文字、不用颜色表情：\n\n| 强度 | 含义 |\n|------|------|\n| **强信号** | 几乎只有 AI 才这么写，人类作者极少自然产出 |\n| **中信号** | AI 高频，但人类在赶稿或偷懒时也会写出来 |\n| **弱信号** | 看体裁和语境，单独出现往往不是问题，扎堆才算 |\n\n> ⚠️ **撞色提醒**：这里的「强/中/弱」只表示「**像不像 AI**」，与审稿总评的 🔴必须 / 🟡建议 / 🟢通过（**行动级**）是两套体系，互不替换。**无论强信号还是弱信号，AI 味命中默认都折算为总评里的 🟡。** 不要在 AI 味诊断里用 🔴/🟡/🟢，也不要把「强信号」当成「必须改」。\n\n## 三、AI 味指纹库\n\n按公众号写作场景整理。每条给出**特征 → 公众号里的典型样子 → 信号强度**。诊断时按正文顺序逐处指出，引用原句，别按类型归类堆在一起。\n\n1. **工整三段式排比。** 「它让你更专注，让你更高效，让你更从容。」每节都来一组对仗排比，整齐得像 PPT。单处排比是好文笔，**通篇每节都排比**才是 AI 味。——**中信号**\n\n2. **「不是 X，而是 Y」句式滥用。** 「这不是工具，而是伙伴。」「重要的不是速度，而是方向。」单次是漂亮的修辞，密集出现就是 AI 的口头禅。——**强信号**（命中阈值见第四节）\n\n3. **面面俱到、没有取舍。** 一个话题把利弊、前提、例外、适用人群全讲一遍，什么都对，什么都不得罪。人写东西会有重点、会偏袒、会略过；什么都讲 = 没有观点。——**强信号**\n\n4. **反复让步、两头讨好。** 「当然，这并不是说……」「诚然，也有人认为……」「不可否认……」每抛一个观点就先垫一句免责声明，生怕得罪谁。——**中信号**\n\n5. **命名仪式感。** 「我把这套方法称为『黄金三角法则』。」「这就是所谓的『复利效应』。」给一个普通做法硬安一个唬人的名字，再郑重其事地解释。——**中信号**\n\n6. **情绪曲线太平滑。** 从头到尾一个温度，均匀的「温暖」「治愈」「赋能」，没有真正的激动、烦躁、犹豫、泄气。真人写作情绪是有起伏和断裂的。——**中信号**\n\n7. **「你值得 / 愿你」式祝福收尾。** 「愿你在喧嚣中找到自己的节奏。」「你值得拥有更好的生活。」用一句正确而空洞的祝福收尾，谁都适用、谁都记不住。——**强信号**\n\n8. **翻译腔。** 「值得注意的是」「在某种程度上」「众所周知」「让我们来看看」，以及很长的前置定语从句。读起来像英文直译，不像中文口语。——**中信号**\n\n9. **万能套话开头。** 「随着 AI 技术的发展」「在当今这个时代」「在快节奏的现代生活中」。用一个放之四海皆准的宏观背景起头，等于没说。——**强信号**\n\n10. **强行拔高升华。** 一个具体的小技巧，结尾非要扯到「人生」「时代」「意义」「成长」。本来在讲怎么用快捷键，最后升华成「这是一种生活态度」。——**中信号**\n\n11. **模板化假故事。** 「我有个朋友……」「记得有一次……」开头，但细节全是空的——没有具体的时间、地点、对话、尴尬，像是为了凑一个故事而临时编的。——**中信号**\n\n12. **总分总八股 + 「总而言之」。** 开头预告「本文将从三个方面」，中间整齐分点，结尾「总而言之/综上所述」收口。结构完整得像作文模板，没有任何意外。——**中信号**\n\n13. **过度规整的标点与节奏。** 句子长度高度均匀，破折号、分号用得很书面，几乎没有短促的口语断句、没有「。」单字成句、没有省略。——**弱信号**\n\n14. **形容词/副词通货膨胀。** 「极其重要」「无比关键」「真正意义上的」「彻头彻尾地」，靠堆叠程度词撑分量，而不是靠具体的事实和细节。——**弱信号**\n\n15. **概念名词扎堆、缺具体。** 满屏「赋能、闭环、抓手、底层逻辑、认知升级」，但通篇没有一个能让人复现的具体步骤或真实数字。——**中信号**\n\n## 四、防误判阈值（别冤枉正常写作）\n\n指纹本身不等于罪证，**关键看密度和语境**。下面这些情况**不要**判命中：\n\n- **「不是 X 是 Y」**：800 字内出现 **≥3 次**才算命中；单次、两次是正常修辞，放过。\n- **排比 / 对仗**：单处是好文笔，**只有当几乎每节都在排比**时才算命中。\n- **让步句（「当然」「诚然」）**：观点确实有争议、需要交代边界时是负责任，不算 AI 味；只有**每个论点前都垫**才算。\n- **故事**：有具体细节（时间、地点、对话、尴尬、数字）的故事不算「模板化假故事」，哪怕开头也是「我有个朋友」。\n- **升华**：文章主题本就关于价值观/人生的，结尾谈意义是切题，不算「强行拔高」。\n- 拿不准时，**宁可不报**。本方法论的立场是「看清自己」，不是凑数找毛病。文章干净就直接说干净，不强行命中。\n\n## 五、与本仓库 writing-spec 的关系（重要）\n\nAI 味自检是 [`.aws-article/writing-spec.md`](../../../.aws-article/writing-spec.md) 的**补充诊断层**，两者分工、不重复扣分：\n\n- writing-spec 已明令禁止的套话（如「随着 AI 发展」「总而言之」），由 writing-spec 维度负责；本维度可以指出，但**不要在两个维度各扣一次**。\n- **本仓库 writing-spec 鼓励的写法，一律不算 AI 味**，包括：用「你/大家」直接对话、用生活化类比解释概念、短句短段、口语化。这些是规范要求的「人味」，**不得反过来当 AI 味命中**。\n- 一句话原则：writing-spec 管「该不该这么写」，本维度管「读起来像不像 AI」；只有当某处**既不被 writing-spec 鼓励、又落在指纹库里**时，才算 AI 味命中。\n\n## 六、体裁差异（判定宽严）\n\n同一条指纹，在不同体裁里的容忍度不同：\n\n- **公众号长文 / 干货**：标准最严，最该有作者的取舍和观点；八股结构、面面俱到、强行升华都更刺眼。\n- **短文案 / 朋友圈 / 推送语**：篇幅短，排比和工整反而可能是设计，放宽；重点看有没有套话开头和空洞祝福。\n- **标题**：单独看「不是 X 是 Y」「你值得」在标题里很常见，**不按正文标准扣**；只在确实千篇一律时提示。\n\n诊断前先判断体裁，再按对应宽严执行。\n\n## 七、校准样例\n\n诊断风格漂移（报得太狠或太松）时，对照 [ai-flavor-check-samples.md](ai-flavor-check-samples.md) —— 用仓库内两篇真实 `draft.md` 跑出的「该报什么、该放过什么」标尺。\n\nFile v1.0.25:references/checklist.md\n\n# 审稿检查清单\n\n## 内容审检查项（writing 之后）\n\n### 标题\n\n- [ ] 字数不超过 `title_max_length`\n- [ ] 不含 `forbidden_title_phrases` 中的套路\n- [ ] 与正文内容一致，不做标题党\n- [ ] 有吸引力，能让读者想点进来\n\n### 摘要\n\n- [ ] 字数在 `summary_length` 范围内\n- [ ] 能概括文章核心价值\n- [ ] 与正文内容一致\n- [ ] 不是正文第一段的复制\n\n### 正文内容\n\n- [ ] 不含 `custom_sensitive_words` 和 `forbidden_words`\n- [ ] 无明显错别字和语病\n- [ ] 事实与数据有出处（如适用）\n- [ ] 原创/转载标注按 `original_attribution` 处理\n- [ ] 开头 2-3 句有吸引力\n\n### 写作规范合规\n\n对照 `.aws-article/writing-spec.md` 检查（如有）：\n\n- [ ] 用词规范：标点、中英文间距、数字格式\n- [ ] 句式偏好：句长、主动语态、无套话\n- [ ] 段落规范：段长、核心观点位置\n- [ ] 禁止事项：无夸张承诺、无未验证数据（AI 味单列，见下「AI 味自检」节）\n- [ ] 品牌调性：与规范中的调性描述一致\n\n### AI 味自检\n\n对照 [ai-flavor-check.md](ai-flavor-check.md) 的指纹库逐处诊断，命中处引用原句并标注信号强度（强/中/弱）：\n\n- [ ] 句式：无工整三段式排比扎堆、无「不是 X 是 Y」滥用（800 字内 ≥3 次才算）、无翻译腔\n- [ ] 观点：有取舍重点，非面面俱到；无反复让步两头讨好\n- [ ] 收尾：无「你值得 / 愿你」式空洞祝福、无强行拔高升华、无「总而言之」八股\n- [ ] 开头：无「随着…的发展」「在当今时代」等万能套话\n- [ ] 质感：无命名仪式感、无模板化假故事、无概念名词扎堆缺具体\n\n> **判级**：本节命中**默认 🟡 建议修改，只诊断不强制改、不阻断定稿**。先判体裁（长文/短文案/标题宽严不同），尊重 writing-spec 鼓励的口语对话与生活化类比（不算 AI 味）。拿不准宁可不报。\n\n### 配图标记\n\n- [ ] 封面标记存在（`![封面：...]`）\n- [ ] 配图数量与 `image_density` 配置匹配\n- [ ] 每个标记的描述清晰、有具体内容（不是泛泛的「配图」）\n- [ ] 标记类型合理（信息图/氛围/实证等与段落内容匹配）\n- [ ] 实证类标记注明了需用户提供\n\n### 结构\n\n- [ ] 小标题密度符合 `heading_density`\n- [ ] 结尾有力（总结/金句/行动号召）\n- [ ] 文末引导区块按 `closing_block` 处理\n- [ ] 若 config 中配置了 `target_word_count`，篇幅应在该范围内\n\n---\n\n## 终审检查项（publish 之前）\n\n在内容审的基础上，额外检查：\n\n### 排版\n\n- [ ] `article.html` 存在且内容完整\n- [ ] HTML 中无乱码或格式异常\n\n### 图片\n\n- [ ] `imgs/` 目录存在\n- [ ] 封面图已生成（`00-cover.*`）\n- [ ] 所有 `placeholder` 已替换为实际图片路径\n- [ ] 图片文件实际存在\n\n### 发布要素\n\n- [ ] 标题、摘要、作者已最终确认\n- [ ] 正文无未替换的占位符或草稿标记\n- [ ] 如需开启评论/仅粉丝可评，已确认设置\n\n---\n\n## 自定义规则\n\n`.aws-article/presets/review-rules.yaml` 中的规则追加在标准项之后执行。\n\nFile v1.0.25:references/output-format.md\n\n# 审稿输出模板\n\n## 分块详细格式\n\n```markdown\n## 审稿结果（内容审）\n\n### 标题\n- [x] 字数：22 字 ≤ 25 字上限 ✅\n- [ ] 发现禁用套路「建议收藏」 ❌\n- 🔴 修改建议：去掉「建议收藏」，改为更具体的价值承诺\n\n### 摘要\n- [x] 字数：95 字，在 summary_length 范围内（上限 128 字，微信 digest 限制） ✅\n- [x] 与正文一致 ✅\n\n### 正文\n- [x] 敏感词检查通过 ✅\n- [ ] 第 3 段发现错别字「帐号」→「账号」 ❌\n- [x] 原创标注已添加 ✅\n- 🔴 修改建议：修正第 3 段错别字\n\n### 写作规范\n- [x] 段落长度符合短段要求 ✅\n- [ ] 第 5 段使用了「随着科技的发展」开头 ❌\n- 🟡 建议修改：换一个更具体的开头\n\n### AI 味自检\n- [x] 开头、观点、收尾无明显指纹 ✅\n- [ ] 第 4 段「这不是工具，而是伙伴；这不是效率，而是自由」连续对仗 + 「不是 X 是 Y」——中信号 ❌\n- 🟡 建议修改（只诊断不代改）：这里想强调产品的陪伴感，但三组对仗读起来像 AI 模板。方向——保留你最想说的那一句，删掉凑数的对仗，或换成一个具体使用场景。\n\n### 配图标记\n- [x] 封面标记存在 ✅\n- [x] 配图数量 4 张，符合「每节一图」 ✅\n- [ ] 第 2 张标记描述过于笼统「配图」 ❌\n- 🟡 建议修改：补充具体描述，如「信息图：3个方案的对比表」\n\n### 结构\n- [x] 小标题密度达标 ✅\n- [x] 结尾有行动号召 ✅\n\n---\n\n## 总结\n\n| 级别 | 数量 | 详情 |\n|------|------|------|\n| 🔴 必须修改 | 2 | 标题禁用套路、正文错别字 |\n| 🟡 建议修改 | 3 | 套话开头、AI 味对仗（中信号）、配图描述 |\n| 🟢 通过 | 8 | |\n\n**下一步**：修正 🔴 项后重审 → 通过后保存为 article.md\n```\n\n---\n\n## 简要清单格式\n\n```markdown\n## 审稿结果（简要）\n\n| 检查项 | 结果 | 说明 |\n|--------|------|------|\n| 标题长度 | ✅ | 22/25 字 |\n| 标题套路 | 🔴 | 含「建议收藏」 |\n| 摘要 | ✅ | 95 字 |\n| 敏感词 | ✅ | 通过 |\n| 错别字 | 🔴 | 「帐号」→「账号」 |\n| 原创标注 | ✅ | 已添加 |\n| 写作规范 | 🟡 | 套话开头 |\n| AI 味自检 | 🟡 | 第4段对仗+「不是X是Y」(中信号) |\n| 配图标记 | 🟡 | 第2张描述不够具体 |\n| 结构 | ✅ | 达标 |\n\n**🔴 必须修改**：标题去掉禁用套路、修正错别字\n**🟡 建议修改**：换开头、淡化 AI 味对仗、补充配图描述\n```\n\n---\n\n## 终审格式\n\n```markdown\n## 终审结果\n\n| 检查项 | 结果 | 说明 |\n|--------|------|------|\n| 排版完整 | ✅ | article.html 存在 |\n| 封面图 | ✅ | 00-cover.png |\n| 正文配图 | ✅ | 4/4 张已替换 |\n| 占位符 | ✅ | 无残留 placeholder |\n| 标题确认 | ✅ | |\n| 摘要确认 | ✅ | |\n| 评论设置 | ✅ | 开启评论 |\n\n**结论**：✅ 可以发布\n```\n\n---\n\n## 修改循环格式\n\n重审时只显示之前标记为 🔴 的项：\n\n```markdown\n## 重审结果\n\n### 之前的 🔴 项\n- [x] 标题：已去掉「建议收藏」 ✅ → 已修正\n- [x] 错别字：「帐号」已改为「账号」 ✅ → 已修正\n\n**结论**：🔴 项已全部消除，可保存为定稿\n```\n\nFile v1.0.25:skill-card.md\n\n## Description:\n\nReviews WeChat public-account articles before publication for sensitive terms, typos, political and platform compliance, article quality, and finalization readiness.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[aiworkskills](https://clawhub.ai/user/aiworkskills)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal creators, editors, and compliance reviewers use this skill to run local pre-publication checks on WeChat article drafts and receive a concrete remediation checklist before formatting or publishing.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill can modify article files during review and finalization.\n\nMitigation: Review proposed changes and keep a draft backup before allowing it to write review records, draft-stripped.md, or article.md.\n\nRisk: Configured end-of-article embed placeholders may be added to finalized articles unless explicitly opted out.\n\nMitigation: Inspect the local embed configuration and document any intentional opt-out before finalization.\n\nRisk: Finalization depends on a sibling Python script from the related writing skill.\n\nMitigation: Install the related skill suite together and review the sibling write.py script before using the citation-stripping finalization step.\n\n## Reference(s):\n\n- [ClawHub Skill Page](https://clawhub.ai/aiworkskills/skills/aws-wechat-article-review)\n- [Review Checklist](artifact/references/checklist.md)\n- [Review Output Template](artifact/references/output-format.md)\n- [AI Flavor Diagnostic Methodology](artifact/references/ai-flavor-check.md)\n- [AI Flavor Calibration Samples](artifact/references/ai-flavor-check-samples.md)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Files, Shell commands, Configuration, Guidance]\n\n**Output Format:** [Markdown review checklist with severity labels, suggested fixes, and finalized article files when the review passes.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May produce review records, draft-stripped.md, and article.md after required checks and user confirmation.]\n\n## Skill Version(s):\n\n1.0.25 (source: server evidence release.version)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.25:skill.json\n\n{\n  \"name\": \"aws-wechat-article-review\",\n  \"version\": \"0.4.0\",\n  \"author\": \"aiworkskills\",\n  \"description\": \"审核公众号文章，检查敏感词、错别字、合规性和写作规范，输出修改清单。\",\n  \"license\": \"MIT\",\n  \"homepage\": \"https://github.com/aiworkskills/wechat-article-skills\",\n  \"tags\": [\"wechat\", \"公众号\", \"review\", \"compliance\"],\n  \"permissions\": [\"filesystem\"],\n  \"entryPoint\": {\n    \"type\": \"natural\",\n    \"path\": \"SKILL.md\"\n  }\n}\n\nArchive v1.0.24: 8 files, 18606 bytes\n\nFiles: references/ai-flavor-check-samples.md (3941b), references/ai-flavor-check.md (8527b), references/checklist.md (3196b), references/output-format.md (3252b), skill-card.md (2847b), skill.json (467b), SKILL.md (13378b), _meta.json (145b)\n\nFile v1.0.24:SKILL.md\n\n---\nname: aws-wechat-article-review\ndescription: 公众号审稿｜公众号校对｜敏感词检测｜内容合规 — 公众号发布前合规审查：敏感词扫描、错别字检测、政治合规、平台规范校验，一次性输出修改清单。面向公众号编辑、自媒体作者、合规岗。触发词：「审稿」「审核」「校对」「合规」「敏感词」「错别字」「稿子检查一下」「稿子帮我看看」「稿子写完了」「文章检查一下」「检查下有没有问题」「能不能发」「发布前检查」。需要多环节串联（写+审+排+配图+发）请走 aws-wechat-article-main。\nhomepage: https://aiworkskills.cn\nurl: https://github.com/aiworkskills/wechat-article-skills\nmetadata:\n  openclaw:\n    requires:\n      env: []\n      bins:\n        - python3\n---\n\n# 审稿与合规\n\n**公众号发布前合规守门员** —— 敏感词、错别字、平台规范一次性筛查，输出可执行修改清单。\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 为**纯本地规则/清单审稿**，零网络、零凭证、不调用任何外部脚本。\n\n- **凭证**：无\n- **网络**：无\n- **文件读**：仓库内 `.aws-article/config.yaml`、`.aws-article/writing-spec.md`（如有）、`.aws-article/presets/review-rules.yaml`（如有）、本篇 `draft.md` / `article.html` / `article.yaml`\n- **文件写**：本篇 `article.md` 定稿、审稿记录\n- **shell**：无（不调用任何脚本）\n\n> 往期推荐链接的**自动补齐**由 [publish skill](../aws-wechat-article-publish/SKILL.md) 处理（那里才有微信 API 凭证与 `getdraft.py`）；本 skill 只做「若 `embeds.related_articles.manual` 非空则按其排占位符」与「若为空则在审稿输出中提示需 publish 补齐或手填」，**不直接调任何网络脚本**。\n\n## 配套 skill（informational）\n\n本 skill 是 `aws-wechat-article-*` 一条龙公众号套件的**审稿环节**（入口 `aws-wechat-article-main`）。工作流中的若干步骤会读取同级 `../aws-wechat-article-main/references/*.md` 等共享文档（首次引导、writing-spec、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)。\n\n对文章做系统性检查，发现问题并引导修改。\n\n## 两种审稿模式\n\n| 模式 | 时机 | 检查重点 |\n|------|------|---------|\n| **内容审** | writing 之后、formatting 之前 | 内容质量、写作规范、敏感词、配图标记 |\n| **终审** | publish 之前 | 排版完整性、图片就位、发布要素齐全 |\n\n自动识别：有 `article.html` → 终审模式，否则 → 内容审模式。\n\n## 工作流\n\n```\n审稿进度：\n- [ ] 第1步：环境检查 + 本篇约束与规范\n- [ ] 第2步：逐项检查\n- [ ] 第3步：输出审稿结果\n- [ ] 第4步：修改循环 🔄\n- [ ] 第5步：确认通过 → **文末 embed（⛔ BLOCKING）** → 保存 `article.md` 定稿\n```\n\n### 智能体行为约束（与定稿强相关）\n\n- **禁止**在未完成 **第5步「文末 embed」**（见下 **⛔ BLOCKING**）的情况下，将稿件称为「已定稿」、写入 **`article.md`**、或进入 **排版（`format.py`）**。\n- **禁止**用「用户没提」「节省时间」等理由跳过文末占位符；**唯一例外**：用户**书面**声明本篇不要任何嵌入元素（名片/小程序/链接），则须在审稿记录中写明「用户声明跳过 embed」，且仍须确认不是误操作。\n- **一条龙 / 完整流程**（[main SKILL](../aws-wechat-article-main/SKILL.md)）中，**内容审**产出的 **`article.md` 必须已含文末 embed**（按合并规则或合法省略），再进入排版。\n\n### 第1步：环境检查 + 本篇约束与规范 ⛔\n\n任何操作执行前，**必须**按 **[首次引导](../aws-wechat-article-main/references/first-time-setup.md)** 执行其中的 **「检测顺序」**。检测通过后才能进行以下操作（或用户明确书面确认「本次不检查」）：\n\n从选题到发布的阻断规则见 [main SKILL](../aws-wechat-article-main/SKILL.md)；**单独启用本 skill** 时亦须先满足同一套环境检查（或用户按 main 约定声明「本次例外」）。\n\n然后读取：\n\n- **`.aws-article/writing-spec.md`**（如有）\n- **`.aws-article/presets/review-rules.yaml`**（如有）\n- **本篇合并配置**（与 [writing](../aws-wechat-article-writing/SKILL.md)、`format.py` 一致）：先 **`.aws-article/config.yaml`** 顶层（不含 `writing_model` / `image_model`），再叠 **本篇目录 `article.yaml`**（**同键本篇优先**；**仅** `embeds.related_articles` 与全局深度合并，其余 `embeds` 仍以全局为准）。审稿与内容向检查以合并结果为准（如 `review_output_format`、`custom_sensitive_words`、`forbidden_words`、`target_reader`、`tone`、`image_density` 等）。字段说明：[articlescreening-schema.md](../aws-wechat-article-main/references/articlescreening-schema.md)。\n\n**fallback**：合并后仍缺关键约束时向用户说明「部分维度无法按本篇约束对齐」，并建议补全 `config.yaml` / `article.yaml`；无写作规范时跳过规范检查项；无自定义审稿规则时仅执行内置检查清单 [references/checklist.md](references/checklist.md)。\n\n### 第2步：逐项检查\n\n按模式执行不同检查项，详见：[references/checklist.md](references/checklist.md)\n\n**内容审** 检查以下维度：\n\n| 维度 | 检查内容 |\n|------|---------|\n| **标题** | 长度、禁用套路、与正文一致性 |\n| **摘要** | 长度、信息量、与正文一致性 |\n| **正文** | 敏感词、禁用词、错别字、事实出处 |\n| **写作规范** | 对照 writing-spec.md 检查用词、句式、段落；深度与调性是否与 **本篇合并配置** 的 `target_reader`、`tone` 一致 |\n| **AI 味自检** | 对照 [references/ai-flavor-check.md](references/ai-flavor-check.md) 的指纹库诊断文风，逐处标注信号强度（强/中/弱）。**默认只诊断**：命中折算为 🟡 建议修改，**不 blocking、不影响定稿**，由作者决定改不改 |\n| **配图标记** | 封面标记存在、数量与 **本篇合并配置** 的 `image_density` 匹配、描述清晰 |\n| **文末 embed** | 定稿前须完成 **第5步 ⛔ BLOCKING**（与 `format.py` 的 `{embed:…}` 一致）；未写入 `article.md` 不得定稿 |\n| **原创标注** | 按 original_attribution 处理 |\n\n**终审** 额外检查：\n\n| 维度 | 检查内容 |\n|------|---------|\n| 排版 | article.html 存在且完整 |\n| 图片 | imgs/ 下图片齐全、placeholder 已替换 |\n| 发布要素 | 标题/摘要/作者/封面 全部就绪 |\n\n### 第3步：输出审稿结果\n\n按 `review_output_format` 输出：\n- **分块详细**：按维度分块，逐项列 ✅/❌ + 修改建议\n- **简要清单**：表格式，一行一项\n\n输出模板：[references/output-format.md](references/output-format.md)\n\n结果分三级：\n- 🔴 **必须修改**：不改不能过（敏感词、严重错别字、缺封面）\n- 🟡 **建议修改**：改了更好（用词优化、段落调整）\n- 🟢 **通过**：无问题\n\n### 第4步：修改循环 🔄\n\n有 🔴 项时**必须进入修改循环**：\n\n```\n发现问题 → 展示审稿结果 → 等用户/agent 修改 → 重新检查 → 直到无 🔴\n```\n\n修改方式：\n- Agent 直接修改 `draft.md`\n- 用户手动修改后说「改好了」\n- 调用 writing skill 的 rewrite 能力\n\n每轮修改后自动重审被标记为 🔴 的项，不需要全量重审。\n\n> ⚠️ **Step 4 完成不代表可以保存 `article.md`**。必须先完成 Step 5（文末 embed ⛔⛔ BLOCKING）才能写入 `article.md` 或进入排版。\n\n### 第5步：确认通过 → 剥离引用标注 → 文末 embed → 保存定稿 ⛔⛔ BLOCKING\n\n全部 🔴 项消除后：\n1. 展示最终审稿结果\n2. 等待用户确认 ⛔\n3. **⛔ BLOCKING · 剥离引用标注**：在仓库根执行\n   `python {baseDir}/../aws-wechat-article-writing/scripts/write.py strip-citations <本篇 draft.md> -o <本篇 draft-stripped.md>`\n   纯本地正则剥离正文中所有 `（资料路径：...）` 引用标注（writing 阶段为事实溯源强制注入，发布版必须去除以免泄露内部产品目录路径）。**禁止**用 sed / agent 肉眼撕替代该脚本 —— 历史多次出现\"撕一遍漏一条\"的事故。\n4. **⛔ BLOCKING · 文末 `embeds`**：**在写入 `article.md` 之前**完成本节下方「规则与表格」——**先读取** `.aws-article/config.yaml` 并与本篇 `article.yaml` **合并**（与第 1 步一致：**除 `embeds.related_articles` 外，`embeds` 仅以全局为准**；**`related_articles` 与全局深度合并**），再在 `draft-stripped.md` 的**正文末尾**（原有正文之后）按规则**追加或合法省略**占位符。**占位符必须与合并后可解析的配置一致**，否则排版阶段会失败。**未完成本节不得保存定稿、不得调用 `format.py`。**\n5. 将已剥离引用标注且含文末 embed（或已按规则省略并记录在审稿说明中）的稿件保存为 **`article.md`（定稿）**；中间产物 `draft-stripped.md` 可保留备查或删除。\n\n**定稿文末 `embeds`（规则与表格）**\n\n| 占位符 | 何时写入文末 | 配置对齐 |\n|--------|----------------|----------|\n| `{embed:profile:…}` | 全局 **`embeds.profiles`** 存在**至少一条有效项**（非空 `nickname`） | 每条有效 profile **一行**，占位中 `…` = 该项 `nickname` |\n| `{embed:miniprogram:…}` | 全局 **`embeds.miniprograms`** 存在**至少一条有效项**（非空 `title`） | 每条有效项一行，`…` = `title` |\n| `{embed:miniprogram_card:…}` | 全局 **`embeds.miniprogram_cards`** 存在**至少一条有效项**（非空 `title`） | 每条有效项一行，`…` = `title` |\n| `{embed:link:…}` | **往期链接**：合并后 **`embeds.related_articles.manual`** 有有效项时；或见下方「无 manual」 | `…` = 该项 `name`；**文末相关链接至多 3 条** |\n\n- **前三类（名片 / 小程序文字链 / 小程序卡片）**：若对应列表**未配置或为空或无非空关键字段**，**不追加**该类占位符，无需处理。\n- **往期 `{embed:link:…}`**：\n  - 若合并后 **`manual` 已有** `name` + `url`：在文末追加对应占位符，**最多 3 条**（超过则只保留 3 条，优先与本文主题最相关的条目或按列表顺序取前 3）。\n  - 若合并后 **`manual` 缺失或为空**：**本 skill 不自动补齐**（以保持 review 纯本地、无网络、无凭证）。处理方式：\n    1. 首选由用户手动把已发表文章的 `name` + `url` 写入本篇 `article.yaml` 的 `embeds.related_articles.manual`（每项至多 3 条）；\n    2. 或在**进入 [publish skill](../aws-wechat-article-publish/SKILL.md)** 时，由 publish 在发布前调用 `getdraft.py published-fields` 自动补齐（publish 才有微信 API 凭证与网络能力）；\n    3. 若用户声明跳过往期：**不伪造** `manual`，在审稿说明中注明「本篇跳过往期推荐」，`{embed:link:…}` 占位省略即可。\n\n字段含义与示例见 **`{baseDir}/../aws-wechat-article-main/references/config.example.yaml`** 的 `embeds` 注释及 **[topics SKILL](../aws-wechat-article-topics/SKILL.md)** 文末「推荐链接」说明；排版脚本据此生成 `article.html`。\n\n**全空时的处理**：当所有 embed 配置（profiles / miniprograms / miniprogram_cards / related_articles）均为空或未配置时，仍须在审稿输出中**显式标注**「文末 embed：无配置，已跳过」，**不得静默跳过**。这确保流程可追溯，避免遗漏。\n\n## 自定义检查规则\n\n用户可在 `.aws-article/presets/review-rules.yaml` 添加自定义检查项：\n\n```yaml\n# .aws-article/presets/review-rules.yaml\ncustom_rules:\n  - name: 品牌名称规范\n    check: 正文中「XX公司」必须使用全称，不能简写\n    level: 必须    # 必须 / 建议\n\n  - name: 数据来源\n    check: 所有引用的数据必须标注来源和日期\n    level: 必须\n\n  - name: CTA 检查\n    check: 文末必须包含明确的行动号召\n    level: 建议\n```\n\n自定义规则会追加到标准检查项之后执行。\n\n## 过程文件\n\n| 模式 | 读取 | 产出 |\n|------|------|------|\n| 内容审 | `draft.md`、**`.aws-article/config.yaml` + 本篇 `article.yaml`**、`writing-spec.md` | `review.md`、`article.md`（定稿） |\n| 终审 | `article.html`、`imgs/`、同上合并配置、`article.yaml`（发布元数据等） | `review.md`（终审结果） |\n\nFile v1.0.24:_meta.json\n\n{\n  \"ownerId\": \"kn7f5hvxj1x2ctd5vqnec5x1zs82ce6h\",\n  \"slug\": \"aws-wechat-article-review\",\n  \"version\": \"1.0.24\",\n  \"publishedAt\": 1781603318569\n}\n\nFile v1.0.24:references/ai-flavor-check-samples.md\n\n# AI 味自检 · 校准样例\n\n> 本文是 [ai-flavor-check.md](ai-flavor-check.md) 的**校准锚点**:用仓库内两篇真实 `draft.md` 跑出的诊断结果，给「该报什么、该放过什么」立一把标尺。诊断风格漂移时（报得太狠或太松），回头对照这两个样例校准。**这里的判级同主文档:命中默认 🟡，不 blocking。**\n\n## 样例 A · `drafts/20260404-gongzhonghao-skill-tuiguang/draft.md`\n\n**体裁**:公众号长文 / 干货（标准最严）。\n\n**应命中:**\n\n| 命中 | 信号 | 证据 | 改写方向（不代改） |\n|------|------|------|------|\n| 每节一句加粗对仗/公式金句，通篇扎堆 | 中 | L16「Prompt 是临时工，Skill 才是正式员工」、L35「不要教 AI 做事，要给 AI 立规矩」、L52「写好 Skill = 精准触发 + 清晰流程 + 输出契约」、L65「机器只认契约，不认情怀」 | 留最想被记住的 1–2 句，其余换大白话或删，让节奏有起伏 |\n| 结尾轻度拔高 | 弱 | L107「2026 年的差距，从愿不愿意把经验『文件夹化』开始拉开」 | 与主题尚相关，可留；想更实在就落到具体收益 |\n\n**应放过（阈值/豁免在生效）:**\n\n| 看着像、不报 | 依据 |\n|------|------|\n| 「不是 X，而是 Y」(L11、L26) | 正文严格格式仅 2 次 < 800 字内 ≥3 次阈值，并入对仗金句一起看 |\n| 开头 L9「你是不是也囤了几百个 Prompt」 | 具体痛点提问，非「随着…的发展」万能套话 |\n| 「渐进式披露」(L45) | 真实技术术语，非硬安名字 |\n| 满屏「底层逻辑/新基建/契约」 | 有 L76–80 五步实操 + 真实文件名支撑，不算概念扎堆缺具体 |\n| 「点赞、在看、加星标…下期见」、「你/大家」口语 | writing-spec 鼓励的固定收尾与口语对话，**不当 AI 味扣分** |\n\n**总评折算**:🔴 0 / 🟡 2 / 🟢 余项 → 不阻断定稿。\n\n## 样例 B · `drafts/20260404-cong-anzhuang-dao-caogaoxiang/draft.md`\n\n**体裁**:公众号长文 / 干货（标准最严）。\n\n**应命中:**\n\n| 命中 | 信号 | 证据 | 改写方向（不代改） |\n|------|------|------|------|\n| 对仗金句 + 对仗短句扎堆（比 A 更密） | 中 | L37「不要教 AI 做事，要给 AI 立规矩」、L78「Prompt 是临时工，Skill 才是正式员工」、L43「凭证不对，门打不开。规则不清，活干砸」、L39「工牌决定能进哪扇门，手册决定进门后怎么干活」、L59「没钥匙打不开门，但你可以选择只在屋里练手」 | 对仗留 1–2 处点睛，其余拆成陈述句 |\n| 结尾轻度拔高 | 弱 | L85「2026 年的差距…」（与 A 同款） | 同 A |\n\n**应放过:**\n\n| 看着像、不报 | 依据 |\n|------|------|\n| 「不是 X，而是 Y」(L10、L15) | 正文严格格式约 2 次 < 阈值 |\n| 跨文复用金句（L37/L78 两篇都有） | 系列文统一口号，语境相关，弱信号放过 |\n| 开头痛点提问 (L8) | 非套话开头 |\n| 「凭证/渐进式披露/最小闭环」 | 有 L68–72 真实命令步骤支撑 |\n| 固定互动收尾、口语对话 | writing-spec 鼓励项，豁免 |\n\n**总评折算**:🔴 0 / 🟡 2 / 🟢 余项 → 不阻断定稿。\n\n## 校准要点（两样例共同验证）\n\n1. **首要命中应是「工整对仗/金句扎堆」**——这是这类推广干货最典型的 AI 节奏；抓不到它就是报得太松。\n2. **「不是 X 是 Y」单独出现 1–2 次不报**——只有 800 字内 ≥3 次才命中；否则并入对仗金句。\n3. **口语对话、生活化类比、固定互动收尾一律不报**——它们是 writing-spec 鼓励的「人味」；报了就是与本仓库规范打架。\n4. **有具体步骤/命令/数字支撑的概念词不报**——「概念扎堆」只针对通篇悬空、无法复现的情况。\n5. **全部命中折算 🟡、不 blocking**——AI 味不进第 4 步强制修改循环、不阻断定稿。\n\nFile v1.0.24:references/ai-flavor-check.md\n\n# AI 味诊断方法论\n\n> 本文是审稿环节「AI 味自检」维度的判定依据。它**只用于诊断**，不是定稿门禁：任何命中默认折算为 🟡 建议修改，由作者自行决定改不改（判级规则见 [SKILL.md 第 2 步](../SKILL.md) 与 [output-format.md](output-format.md)）。\n\n## 一、核心理念（先读这一节）\n\n诊断 AI 味之前，先认同三件事，否则容易把好文章误伤、把烂文章洗白：\n\n1. **AI 味的本质是「太完美」。** 不是用词高级，而是**太顺、太均匀、没有取舍**——每段一样长、每个观点都照顾到、情绪从头到尾平稳、该停顿该跑题该自嘲的地方全被抹平。人写东西会有棱角、有偏重、有突然的口语；AI 写东西像一块被打磨过的玻璃，找不到手感。\n\n2. **不以「去 AI 味」为目标。** 去掉 AI 味 ≠ 内容就变好了。一篇观点平庸但「很有人味」的文章，价值未必比一篇结构工整的高。诊断的目的是**让作者看清自己的文字哪里在偷懒**，而不是教 AI 把自己伪装成人。**所以发现 AI 味只提示、不强制改**，更不因为它阻断定稿。\n\n3. **改写必须基于作者意图。** 审稿只负责指出「这里读起来像 AI、原因是什么、可以往哪个方向调」，**不擅自代改**。每一处 AI 味背后往往有作者想表达的东西，没搞清楚意图就动手，只会把文章改成另一种模板。\n\n## 二、信号强度（怎么标命中）\n\n每条命中标注**信号强度**，用文字、不用颜色表情：\n\n| 强度 | 含义 |\n|------|------|\n| **强信号** | 几乎只有 AI 才这么写，人类作者极少自然产出 |\n| **中信号** | AI 高频，但人类在赶稿或偷懒时也会写出来 |\n| **弱信号** | 看体裁和语境，单独出现往往不是问题，扎堆才算 |\n\n> ⚠️ **撞色提醒**：这里的「强/中/弱」只表示「**像不像 AI**」，与审稿总评的 🔴必须 / 🟡建议 / 🟢通过（**行动级**）是两套体系，互不替换。**无论强信号还是弱信号，AI 味命中默认都折算为总评里的 🟡。** 不要在 AI 味诊断里用 🔴/🟡/🟢，也不要把「强信号」当成「必须改」。\n\n## 三、AI 味指纹库\n\n按公众号写作场景整理。每条给出**特征 → 公众号里的典型样子 → 信号强度**。诊断时按正文顺序逐处指出，引用原句，别按类型归类堆在一起。\n\n1. **工整三段式排比。** 「它让你更专注，让你更高效，让你更从容。」每节都来一组对仗排比，整齐得像 PPT。单处排比是好文笔，**通篇每节都排比**才是 AI 味。——**中信号**\n\n2. **「不是 X，而是 Y」句式滥用。** 「这不是工具，而是伙伴。」「重要的不是速度，而是方向。」单次是漂亮的修辞，密集出现就是 AI 的口头禅。——**强信号**（命中阈值见第四节）\n\n3. **面面俱到、没有取舍。** 一个话题把利弊、前提、例外、适用人群全讲一遍，什么都对，什么都不得罪。人写东西会有重点、会偏袒、会略过；什么都讲 = 没有观点。——**强信号**\n\n4. **反复让步、两头讨好。** 「当然，这并不是说……」「诚然，也有人认为……」「不可否认……」每抛一个观点就先垫一句免责声明，生怕得罪谁。——**中信号**\n\n5. **命名仪式感。** 「我把这套方法称为『黄金三角法则』。」「这就是所谓的『复利效应』。」给一个普通做法硬安一个唬人的名字，再郑重其事地解释。——**中信号**\n\n6. **情绪曲线太平滑。** 从头到尾一个温度，均匀的「温暖」「治愈」「赋能」，没有真正的激动、烦躁、犹豫、泄气。真人写作情绪是有起伏和断裂的。——**中信号**\n\n7. **「你值得 / 愿你」式祝福收尾。** 「愿你在喧嚣中找到自己的节奏。」「你值得拥有更好的生活。」用一句正确而空洞的祝福收尾，谁都适用、谁都记不住。——**强信号**\n\n8. **翻译腔。** 「值得注意的是」「在某种程度上」「众所周知」「让我们来看看」，以及很长的前置定语从句。读起来像英文直译，不像中文口语。——**中信号**\n\n9. **万能套话开头。** 「随着 AI 技术的发展」「在当今这个时代」「在快节奏的现代生活中」。用一个放之四海皆准的宏观背景起头，等于没说。——**强信号**\n\n10. **强行拔高升华。** 一个具体的小技巧，结尾非要扯到「人生」「时代」「意义」「成长」。本来在讲怎么用快捷键，最后升华成「这是一种生活态度」。——**中信号**\n\n11. **模板化假故事。** 「我有个朋友……」「记得有一次……」开头，但细节全是空的——没有具体的时间、地点、对话、尴尬，像是为了凑一个故事而临时编的。——**中信号**\n\n12. **总分总八股 + 「总而言之」。** 开头预告「本文将从三个方面」，中间整齐分点，结尾「总而言之/综上所述」收口。结构完整得像作文模板，没有任何意外。——**中信号**\n\n13. **过度规整的标点与节奏。** 句子长度高度均匀，破折号、分号用得很书面，几乎没有短促的口语断句、没有「。」单字成句、没有省略。——**弱信号**\n\n14. **形容词/副词通货膨胀。** 「极其重要」「无比关键」「真正意义上的」「彻头彻尾地」，靠堆叠程度词撑分量，而不是靠具体的事实和细节。——**弱信号**\n\n15. **概念名词扎堆、缺具体。** 满屏「赋能、闭环、抓手、底层逻辑、认知升级」，但通篇没有一个能让人复现的具体步骤或真实数字。——**中信号**\n\n## 四、防误判阈值（别冤枉正常写作）\n\n指纹本身不等于罪证，**关键看密度和语境**。下面这些情况**不要**判命中：\n\n- **「不是 X 是 Y」**：800 字内出现 **≥3 次**才算命中；单次、两次是正常修辞，放过。\n- **排比 / 对仗**：单处是好文笔，**只有当几乎每节都在排比**时才算命中。\n- **让步句（「当然」「诚然」）**：观点确实有争议、需要交代边界时是负责任，不算 AI 味；只有**每个论点前都垫**才算。\n- **故事**：有具体细节（时间、地点、对话、尴尬、数字）的故事不算「模板化假故事」，哪怕开头也是「我有个朋友」。\n- **升华**：文章主题本就关于价值观/人生的，结尾谈意义是切题，不算「强行拔高」。\n- 拿不准时，**宁可不报**。本方法论的立场是「看清自己」，不是凑数找毛病。文章干净就直接说干净，不强行命中。\n\n## 五、与本仓库 writing-spec 的关系（重要）\n\nAI 味自检是 [`.aws-article/writing-spec.md`](../../../.aws-article/writing-spec.md) 的**补充诊断层**，两者分工、不重复扣分：\n\n- writing-spec 已明令禁止的套话（如「随着 AI 发展」「总而言之」），由 writing-spec 维度负责；本维度可以指出，但**不要在两个维度各扣一次**。\n- **本仓库 writing-spec 鼓励的写法，一律不算 AI 味**，包括：用「你/大家」直接对话、用生活化类比解释概念、短句短段、口语化。这些是规范要求的「人味」，**不得反过来当 AI 味命中**。\n- 一句话原则：writing-spec 管「该不该这么写」，本维度管「读起来像不像 AI」；只有当某处**既不被 writing-spec 鼓励、又落在指纹库里**时，才算 AI 味命中。\n\n## 六、体裁差异（判定宽严）\n\n同一条指纹，在不同体裁里的容忍度不同：\n\n- **公众号长文 / 干货**：标准最严，最该有作者的取舍和观点；八股结构、面面俱到、强行升华都更刺眼。\n- **短文案 / 朋友圈 / 推送语**：篇幅短，排比和工整反而可能是设计，放宽；重点看有没有套话开头和空洞祝福。\n- **标题**：单独看「不是 X 是 Y」「你值得」在标题里很常见，**不按正文标准扣**；只在确实千篇一律时提示。\n\n诊断前先判断体裁，再按对应宽严执行。\n\n## 七、校准样例\n\n诊断风格漂移（报得太狠或太松）时，对照 [ai-flavor-check-samples.md](ai-flavor-check-samples.md) —— 用仓库内两篇真实 `draft.md` 跑出的「该报什么、该放过什么」标尺。\n\nFile v1.0.24:references/checklist.md\n\n# 审稿检查清单\n\n## 内容审检查项（writing 之后）\n\n### 标题\n\n- [ ] 字数不超过 `title_max_length`\n- [ ] 不含 `forbidden_title_phrases` 中的套路\n- [ ] 与正文内容一致，不做标题党\n- [ ] 有吸引力，能让读者想点进来\n\n### 摘要\n\n- [ ] 字数在 `summary_length` 范围内\n- [ ] 能概括文章核心价值\n- [ ] 与正文内容一致\n- [ ] 不是正文第一段的复制\n\n### 正文内容\n\n- [ ] 不含 `custom_sensitive_words` 和 `forbidden_words`\n- [ ] 无明显错别字和语病\n- [ ] 事实与数据有出处（如适用）\n- [ ] 原创/转载标注按 `original_attribution` 处理\n- [ ] 开头 2-3 句有吸引力\n\n### 写作规范合规\n\n对照 `.aws-article/writing-spec.md` 检查（如有）：\n\n- [ ] 用词规范：标点、中英文间距、数字格式\n- [ ] 句式偏好：句长、主动语态、无套话\n- [ ] 段落规范：段长、核心观点位置\n- [ ] 禁止事项：无夸张承诺、无未验证数据（AI 味单列，见下「AI 味自检」节）\n- [ ] 品牌调性：与规范中的调性描述一致\n\n### AI 味自检\n\n对照 [ai-flavor-check.md](ai-flavor-check.md) 的指纹库逐处诊断，命中处引用原句并标注信号强度（强/中/弱）：\n\n- [ ] 句式：无工整三段式排比扎堆、无「不是 X 是 Y」滥用（800 字内 ≥3 次才算）、无翻译腔\n- [ ] 观点：有取舍重点，非面面俱到；无反复让步两头讨好\n- [ ] 收尾：无「你值得 / 愿你」式空洞祝福、无强行拔高升华、无「总而言之」八股\n- [ ] 开头：无「随着…的发展」「在当今时代」等万能套话\n- [ ] 质感：无命名仪式感、无模板化假故事、无概念名词扎堆缺具体\n\n> **判级**：本节命中**默认 🟡 建议修改，只诊断不强制改、不阻断定稿**。先判体裁（长文/短文案/标题宽严不同），尊重 writing-spec 鼓励的口语对话与生活化类比（不算 AI 味）。拿不准宁可不报。\n\n### 配图标记\n\n- [ ] 封面标记存在（`![封面：...]`）\n- [ ] 配图数量与 `image_density` 配置匹配\n- [ ] 每个标记的描述清晰、有具体内容（不是泛泛的「配图」）\n- [ ] 标记类型合理（信息图/氛围/实证等与段落内容匹配）\n- [ ] 实证类标记注明了需用户提供\n\n### 结构\n\n- [ ] 小标题密度符合 `heading_density`\n- [ ] 结尾有力（总结/金句/行动号召）\n- [ ] 文末引导区块按 `closing_block` 处理\n- [ ] 若 config 中配置了 `target_word_count`，篇幅应在该范围内\n\n---\n\n## 终审检查项（publish 之前）\n\n在内容审的基础上，额外检查：\n\n### 排版\n\n- [ ] `article.html` 存在且内容完整\n- [ ] HTML 中无乱码或格式异常\n\n### 图片\n\n- [ ] `imgs/` 目录存在\n- [ ] 封面图已生成（`00-cover.*`）\n- [ ] 所有 `placeholder` 已替换为实际图片路径\n- [ ] 图片文件实际存在\n\n### 发布要素\n\n- [ ] 标题、摘要、作者已最终确认\n- [ ] 正文无未替换的占位符或草稿标记\n- [ ] 如需开启评论/仅粉丝可评，已确认设置\n\n---\n\n## 自定义规则\n\n`.aws-article/presets/review-rules.yaml` 中的规则追加在标准项之后执行。\n\nFile v1.0.24:references/output-format.md\n\n# 审稿输出模板\n\n## 分块详细格式\n\n```markdown\n## 审稿结果（内容审）\n\n### 标题\n- [x] 字数：22 字 ≤ 25 字上限 ✅\n- [ ] 发现禁用套路「建议收藏」 ❌\n- 🔴 修改建议：去掉「建议收藏」，改为更具体的价值承诺\n\n### 摘要\n- [x] 字数：95 字，在 summary_length 范围内（上限 128 字，微信 digest 限制） ✅\n- [x] 与正文一致 ✅\n\n### 正文\n- [x] 敏感词检查通过 ✅\n- [ ] 第 3 段发现错别字「帐号」→「账号」 ❌\n- [x] 原创标注已添加 ✅\n- 🔴 修改建议：修正第 3 段错别字\n\n### 写作规范\n- [x] 段落长度符合短段要求 ✅\n- [ ] 第 5 段使用了「随着科技的发展」开头 ❌\n- 🟡 建议修改：换一个更具体的开头\n\n### AI 味自检\n- [x] 开头、观点、收尾无明显指纹 ✅\n- [ ] 第 4 段「这不是工具，而是伙伴；这不是效率，而是自由」连续对仗 + 「不是 X 是 Y」——中信号 ❌\n- 🟡 建议修改（只诊断不代改）：这里想强调产品的陪伴感，但三组对仗读起来像 AI 模板。方向——保留你最想说的那一句，删掉凑数的对仗，或换成一个具体使用场景。\n\n### 配图标记\n- [x] 封面标记存在 ✅\n- [x] 配图数量 4 张，符合「每节一图」 ✅\n- [ ] 第 2 张标记描述过于笼统「配图」 ❌\n- 🟡 建议修改：补充具体描述，如「信息图：3个方案的对比表」\n\n### 结构\n- [x] 小标题密度达标 ✅\n- [x] 结尾有行动号召 ✅\n\n---\n\n## 总结\n\n| 级别 | 数量 | 详情 |\n|------|------|------|\n| 🔴 必须修改 | 2 | 标题禁用套路、正文错别字 |\n| 🟡 建议修改 | 3 | 套话开头、AI 味对仗（中信号）、配图描述 |\n| 🟢 通过 | 8 | |\n\n**下一步**：修正 🔴 项后重审 → 通过后保存为 article.md\n```\n\n---\n\n## 简要清单格式\n\n```markdown\n## 审稿结果（简要）\n\n| 检查项 | 结果 | 说明 |\n|--------|------|------|\n| 标题长度 | ✅ | 22/25 字 |\n| 标题套路 | 🔴 | 含「建议收藏」 |\n| 摘要 | ✅ | 95 字 |\n| 敏感词 | ✅ | 通过 |\n| 错别字 | 🔴 | 「帐号」→「账号」 |\n| 原创标注 | ✅ | 已添加 |\n| 写作规范 | 🟡 | 套话开头 |\n| AI 味自检 | 🟡 | 第4段对仗+「不是X是Y」(中信号) |\n| 配图标记 | 🟡 | 第2张描述不够具体 |\n| 结构 | ✅ | 达标 |\n\n**🔴 必须修改**：标题去掉禁用套路、修正错别字\n**🟡 建议修改**：换开头、淡化 AI 味对仗、补充配图描述\n```\n\n---\n\n## 终审格式\n\n```markdown\n## 终审结果\n\n| 检查项 | 结果 | 说明 |\n|--------|------|------|\n| 排版完整 | ✅ | article.html 存在 |\n| 封面图 | ✅ | 00-cover.png |\n| 正文配图 | ✅ | 4/4 张已替换 |\n| 占位符 | ✅ | 无残留 placeholder |\n| 标题确认 | ✅ | |\n| 摘要确认 | ✅ | |\n| 评论设置 | ✅ | 开启评论 |\n\n**结论**：✅ 可以发布\n```\n\n---\n\n## 修改循环格式\n\n重审时只显示之前标记为 🔴 的项：\n\n```markdown\n## 重审结果\n\n### 之前的 🔴 项\n- [x] 标题：已去掉「建议收藏」 ✅ → 已修正\n- [x] 错别字：「帐号」已改为「账号」 ✅ → 已修正\n\n**结论**：🔴 项已全部消除，可保存为定稿\n```\n\nFile v1.0.24:skill-card.md\n\n## Description: <br>\nReviews WeChat public-account articles before publication by checking sensitive words, typos, political and platform compliance, writing quality, AI-flavored prose signals, image markers, and required publishing elements, then outputs an actionable revision list. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[aiworkskills](https://clawhub.ai/user/aiworkskills) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal WeChat editors, self-media authors, and compliance reviewers use this skill to review draft articles before publication and receive a prioritized list of required and suggested fixes. It supports content review before formatting and final review before publishing. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The security review reports that the skill under-discloses a finalization-time Python command from a neighboring aws-wechat-article-writing skill that edits draft files. <br>\nMitigation: Install the related skill suite only from a trusted source, review the sibling Python script before use, and run the skill only in the intended local article workspace. <br>\nRisk: The skill can write article files and review records during its review and finalization workflow. <br>\nMitigation: Keep drafts under version control or backups, review proposed changes before finalization, and limit execution to the article workspace. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/aiworkskills/aws-wechat-article-review) <br>\n- [Publisher profile](https://clawhub.ai/user/aiworkskills) <br>\n- [Declared project homepage](https://aiworkskills.cn) <br>\n- [Declared source repository](https://github.com/aiworkskills/wechat-article-skills) <br>\n- [Review checklist](references/checklist.md) <br>\n- [Review output format](references/output-format.md) <br>\n- [AI flavor check methodology](references/ai-flavor-check.md) <br>\n- [AI flavor check samples](references/ai-flavor-check-samples.md) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Text, Markdown, Code, Shell commands, Configuration guidance] <br>\n**Output Format:** [Markdown review results, revision checklists, and local file or command instructions] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May write review records and finalized article files in the local article workspace after the required review flow completes.] <br>\n\n## Skill Version(s): <br>\n1.0.24 (source: ClawHub release metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v1.0.24:skill.json\n\n{\n  \"name\": \"aws-wechat-article-review\",\n  \"version\": \"0.4.0\",\n  \"author\": \"aiworkskills\",\n  \"description\": \"审核公众号文章，检查敏感词、错别字、合规性和写作规范，输出修改清单。\",\n  \"license\": \"MIT\",\n  \"homepage\": \"https://github.com/aiworkskills/wechat-article-skills\",\n  \"tags\": [\"wechat\", \"公众号\", \"review\", \"compliance\"],\n  \"permissions\": [\"filesystem\"],\n  \"entryPoint\": {\n    \"type\": \"natural\",\n    \"path\": \"SKILL.md\"\n  }\n}\n\nArchive v1.0.23: 6 files, 10619 bytes\n\nFiles: references/checklist.md (2261b), references/output-format.md (2696b), skill-card.md (2579b), skill.json (467b), SKILL.md (13103b), _meta.json (145b)\n\nFile v1.0.23:SKILL.md\n\n---\nname: aws-wechat-article-review\ndescription: 公众号审稿｜公众号校对｜敏感词检测｜内容合规 — 公众号发布前合规审查：敏感词扫描、错别字检测、政治合规、平台规范校验，一次性输出修改清单。面向公众号编辑、自媒体作者、合规岗。触发词：「审稿」「审核」「校对」「合规」「敏感词」「错别字」「稿子检查一下」「稿子帮我看看」「稿子写完了」「文章检查一下」「检查下有没有问题」「能不能发」「发布前检查」。需要多环节串联（写+审+排+配图+发）请走 aws-wechat-article-main。\nhomepage: https://aiworkskills.cn\nurl: https://github.com/aiworkskills/wechat-article-skills\nmetadata:\n  openclaw:\n    requires:\n      env: []\n      bins:\n        - python3\n---\n\n# 审稿与合规\n\n**公众号发布前合规守门员** —— 敏感词、错别字、平台规范一次性筛查，输出可执行修改清单。\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 为**纯本地规则/清单审稿**，零网络、零凭证、不调用任何外部脚本。\n\n- **凭证**：无\n- **网络**：无\n- **文件读**：仓库内 `.aws-article/config.yaml`、`.aws-article/writing-spec.md`（如有）、`.aws-article/presets/review-rules.yaml`（如有）、本篇 `draft.md` / `article.html` / `article.yaml`\n- **文件写**：本篇 `article.md` 定稿、审稿记录\n- **shell**：无（不调用任何脚本）\n\n> 往期推荐链接的**自动补齐**由 [publish skill](../aws-wechat-article-publish/SKILL.md) 处理（那里才有微信 API 凭证与 `getdraft.py`）；本 skill 只做「若 `embeds.related_articles.manual` 非空则按其排占位符」与「若为空则在审稿输出中提示需 publish 补齐或手填」，**不直接调任何网络脚本**。\n\n## 配套 skill（informational）\n\n本 skill 是 `aws-wechat-article-*` 一条龙公众号套件的**审稿环节**（入口 `aws-wechat-article-main`）。工作流中的若干步骤会读取同级 `../aws-wechat-article-main/references/*.md` 等共享文档（首次引导、writing-spec、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)。\n\n对文章做系统性检查，发现问题并引导修改。\n\n## 两种审稿模式\n\n| 模式 | 时机 | 检查重点 |\n|------|------|---------|\n| **内容审** | writing 之后、formatting 之前 | 内容质量、写作规范、敏感词、配图标记 |\n| **终审** | publish 之前 | 排版完整性、图片就位、发布要素齐全 |\n\n自动识别：有 `article.html` → 终审模式，否则 → 内容审模式。\n\n## 工作流\n\n```\n审稿进度：\n- [ ] 第1步：环境检查 + 本篇约束与规范\n- [ ] 第2步：逐项检查\n- [ ] 第3步：输出审稿结果\n- [ ] 第4步：修改循环 🔄\n- [ ] 第5步：确认通过 → **文末 embed（⛔ BLOCKING）** → 保存 `article.md` 定稿\n```\n\n### 智能体行为约束（与定稿强相关）\n\n- **禁止**在未完成 **第5步「文末 embed」**（见下 **⛔ BLOCKING**）的情况下，将稿件称为「已定稿」、写入 **`article.md`**、或进入 **排版（`format.py`）**。\n- **禁止**用「用户没提」「节省时间」等理由跳过文末占位符；**唯一例外**：用户**书面**声明本篇不要任何嵌入元素（名片/小程序/链接），则须在审稿记录中写明「用户声明跳过 embed」，且仍须确认不是误操作。\n- **一条龙 / 完整流程**（[main SKILL](../aws-wechat-article-main/SKILL.md)）中，**内容审**产出的 **`article.md` 必须已含文末 embed**（按合并规则或合法省略），再进入排版。\n\n### 第1步：环境检查 + 本篇约束与规范 ⛔\n\n任何操作执行前，**必须**按 **[首次引导](../aws-wechat-article-main/references/first-time-setup.md)** 执行其中的 **「检测顺序」**。检测通过后才能进行以下操作（或用户明确书面确认「本次不检查」）：\n\n从选题到发布的阻断规则见 [main SKILL](../aws-wechat-article-main/SKILL.md)；**单独启用本 skill** 时亦须先满足同一套环境检查（或用户按 main 约定声明「本次例外」）。\n\n然后读取：\n\n- **`.aws-article/writing-spec.md`**（如有）\n- **`.aws-article/presets/review-rules.yaml`**（如有）\n- **本篇合并配置**（与 [writing](../aws-wechat-article-writing/SKILL.md)、`format.py` 一致）：先 **`.aws-article/config.yaml`** 顶层（不含 `writing_model` / `image_model`），再叠 **本篇目录 `article.yaml`**（**同键本篇优先**；**仅** `embeds.related_articles` 与全局深度合并，其余 `embeds` 仍以全局为准）。审稿与内容向检查以合并结果为准（如 `review_output_format`、`custom_sensitive_words`、`forbidden_words`、`target_reader`、`tone`、`image_density` 等）。字段说明：[articlescreening-schema.md](../aws-wechat-article-main/references/articlescreening-schema.md)。\n\n**fallback**：合并后仍缺关键约束时向用户说明「部分维度无法按本篇约束对齐」，并建议补全 `config.yaml` / `article.yaml`；无写作规范时跳过规范检查项；无自定义审稿规则时仅执行内置检查清单 [references/checklist.md](references/checklist.md)。\n\n### 第2步：逐项检查\n\n按模式执行不同检查项，详见：[references/checklist.md](references/checklist.md)\n\n**内容审** 检查 6 个维度：\n\n| 维度 | 检查内容 |\n|------|---------|\n| **标题** | 长度、禁用套路、与正文一致性 |\n| **摘要** | 长度、信息量、与正文一致性 |\n| **正文** | 敏感词、禁用词、错别字、事实出处 |\n| **写作规范** | 对照 writing-spec.md 检查用词、句式、段落、AI 味；深度与调性是否与 **本篇合并配置** 的 `target_reader`、`tone` 一致 |\n| **配图标记** | 封面标记存在、数量与 **本篇合并配置** 的 `image_density` 匹配、描述清晰 |\n| **文末 embed** | 定稿前须完成 **第5步 ⛔ BLOCKING**（与 `format.py` 的 `{embed:…}` 一致）；未写入 `article.md` 不得定稿 |\n| **原创标注** | 按 original_attribution 处理 |\n\n**终审** 额外检查：\n\n| 维度 | 检查内容 |\n|------|---------|\n| 排版 | article.html 存在且完整 |\n| 图片 | imgs/ 下图片齐全、placeholder 已替换 |\n| 发布要素 | 标题/摘要/作者/封面 全部就绪 |\n\n### 第3步：输出审稿结果\n\n按 `review_output_format` 输出：\n- **分块详细**：按维度分块，逐项列 ✅/❌ + 修改建议\n- **简要清单**：表格式，一行一项\n\n输出模板：[references/output-format.md](references/output-format.md)\n\n结果分三级：\n- 🔴 **必须修改**：不改不能过（敏感词、严重错别字、缺封面）\n- 🟡 **建议修改**：改了更好（用词优化、段落调整）\n- 🟢 **通过**：无问题\n\n### 第4步：修改循环 🔄\n\n有 🔴 项时**必须进入修改循环**：\n\n```\n发现问题 → 展示审稿结果 → 等用户/agent 修改 → 重新检查 → 直到无 🔴\n```\n\n修改方式：\n- Agent 直接修改 `draft.md`\n- 用户手动修改后说「改好了」\n- 调用 writing skill 的 rewrite 能力\n\n每轮修改后自动重审被标记为 🔴 的项，不需要全量重审。\n\n> ⚠️ **Step 4 完成不代表可以保存 `article.md`**。必须先完成 Step 5（文末 embed ⛔⛔ BLOCKING）才能写入 `article.md` 或进入排版。\n\n### 第5步：确认通过 → 剥离引用标注 → 文末 embed → 保存定稿 ⛔⛔ BLOCKING\n\n全部 🔴 项消除后：\n1. 展示最终审稿结果\n2. 等待用户确认 ⛔\n3. **⛔ BLOCKING · 剥离引用标注**：在仓库根执行\n   `python {baseDir}/../aws-wechat-article-writing/scripts/write.py strip-citations <本篇 draft.md> -o <本篇 draft-stripped.md>`\n   纯本地正则剥离正文中所有 `（资料路径：...）` 引用标注（writing 阶段为事实溯源强制注入，发布版必须去除以免泄露内部产品目录路径）。**禁止**用 sed / agent 肉眼撕替代该脚本 —— 历史多次出现\"撕一遍漏一条\"的事故。\n4. **⛔ BLOCKING · 文末 `embeds`**：**在写入 `article.md` 之前**完成本节下方「规则与表格」——**先读取** `.aws-article/config.yaml` 并与本篇 `article.yaml` **合并**（与第 1 步一致：**除 `embeds.related_articles` 外，`embeds` 仅以全局为准**；**`related_articles` 与全局深度合并**），再在 `draft-stripped.md` 的**正文末尾**（原有正文之后）按规则**追加或合法省略**占位符。**占位符必须与合并后可解析的配置一致**，否则排版阶段会失败。**未完成本节不得保存定稿、不得调用 `format.py`。**\n5. 将已剥离引用标注且含文末 embed（或已按规则省略并记录在审稿说明中）的稿件保存为 **`article.md`（定稿）**；中间产物 `draft-stripped.md` 可保留备查或删除。\n\n**定稿文末 `embeds`（规则与表格）**\n\n| 占位符 | 何时写入文末 | 配置对齐 |\n|--------|----------------|----------|\n| `{embed:profile:…}` | 全局 **`embeds.profiles`** 存在**至少一条有效项**（非空 `nickname`） | 每条有效 profile **一行**，占位中 `…` = 该项 `nickname` |\n| `{embed:miniprogram:…}` | 全局 **`embeds.miniprograms`** 存在**至少一条有效项**（非空 `title`） | 每条有效项一行，`…` = `title` |\n| `{embed:miniprogram_card:…}` | 全局 **`embeds.miniprogram_cards`** 存在**至少一条有效项**（非空 `title`） | 每条有效项一行，`…` = `title` |\n| `{embed:link:…}` | **往期链接**：合并后 **`embeds.related_articles.manual`** 有有效项时；或见下方「无 manual」 | `…` = 该项 `name`；**文末相关链接至多 3 条** |\n\n- **前三类（名片 / 小程序文字链 / 小程序卡片）**：若对应列表**未配置或为空或无非空关键字段**，**不追加**该类占位符，无需处理。\n- **往期 `{embed:link:…}`**：\n  - 若合并后 **`manual` 已有** `name` + `url`：在文末追加对应占位符，**最多 3 条**（超过则只保留 3 条，优先与本文主题最相关的条目或按列表顺序取前 3）。\n  - 若合并后 **`manual` 缺失或为空**：**本 skill 不自动补齐**（以保持 review 纯本地、无网络、无凭证）。处理方式：\n    1. 首选由用户手动把已发表文章的 `name` + `url` 写入本篇 `article.yaml` 的 `embeds.related_articles.manual`（每项至多 3 条）；\n    2. 或在**进入 [publish skill](../aws-wechat-article-publish/SKILL.md)** 时，由 publish 在发布前调用 `getdraft.py published-fields` 自动补齐（publish 才有微信 API 凭证与网络能力）；\n    3. 若用户声明跳过往期：**不伪造** `manual`，在审稿说明中注明「本篇跳过往期推荐」，`{embed:link:…}` 占位省略即可。\n\n字段含义与示例见 **`{baseDir}/../aws-wechat-article-main/references/config.example.yaml`** 的 `embeds` 注释及 **[topics SKILL](../aws-wechat-article-topics/SKILL.md)** 文末「推荐链接」说明；排版脚本据此生成 `article.html`。\n\n**全空时的处理**：当所有 embed 配置（profiles / miniprograms / miniprogram_cards / related_articles）均为空或未配置时，仍须在审稿输出中**显式标注**「文末 embed：无配置，已跳过」，**不得静默跳过**。这确保流程可追溯，避免遗漏。\n\n## 自定义检查规则\n\n用户可在 `.aws-article/presets/review-rules.yaml` 添加自定义检查项：\n\n```yaml\n# .aws-article/presets/review-rules.yaml\ncustom_rules:\n  - name: 品牌名称规范\n    check: 正文中「XX公司」必须使用全称，不能简写\n    level: 必须    # 必须 / 建议\n\n  - name: 数据来源\n    check: 所有引用的数据必须标注来源和日期\n    level: 必须\n\n  - name: CTA 检查\n    check: 文末必须包含明确的行动号召\n    level: 建议\n```\n\n自定义规则会追加到标准检查项之后执行。\n\n## 过程文件\n\n| 模式 | 读取 | 产出 |\n|------|------|------|\n| 内容审 | `draft.md`、**`.aws-article/config.yaml` + 本篇 `article.yaml`**、`writing-spec.md` | `review.md`、`article.md`（定稿） |\n| 终审 | `article.html`、`imgs/`、同上合并配置、`article.yaml`（发布元数据等） | `review.md`（终审结果） |\n\nFile v1.0.23:_meta.json\n\n{\n  \"ownerId\": \"kn7f5hvxj1x2ctd5vqnec5x1zs82ce6h\",\n  \"slug\": \"aws-wechat-article-review\",\n  \"version\": \"1.0.23\",\n  \"publishedAt\": 1779875567200\n}\n\nFile v1.0.23:references/checklist.md\n\n# 审稿检查清单\n\n## 内容审检查项（writing 之后）\n\n### 标题\n\n- [ ] 字数不超过 `title_max_length`\n- [ ] 不含 `forbidden_title_phrases` 中的套路\n- [ ] 与正文内容一致，不做标题党\n- [ ] 有吸引力，能让读者想点进来\n\n### 摘要\n\n- [ ] 字数在 `summary_length` 范围内\n- [ ] 能概括文章核心价值\n- [ ] 与正文内容一致\n- [ ] 不是正文第一段的复制\n\n### 正文内容\n\n- [ ] 不含 `custom_sensitive_words` 和 `forbidden_words`\n- [ ] 无明显错别字和语病\n- [ ] 事实与数据有出处（如适用）\n- [ ] 原创/转载标注按 `original_attribution` 处理\n- [ ] 开头 2-3 句有吸引力\n\n### 写作规范合规\n\n对照 `.aws-article/writing-spec.md` 检查（如有）：\n\n- [ ] 用词规范：标点、中英文间距、数字格式\n- [ ] 句式偏好：句长、主动语态、无套话\n- [ ] 段落规范：段长、核心观点位置\n- [ ] 禁止事项：无 AI 味表达、无夸张承诺、无未验证数据\n- [ ] 品牌调性：与规范中的调性描述一致\n\n### 配图标记\n\n- [ ] 封面标记存在（`![封面：...]`）\n- [ ] 配图数量与 `image_density` 配置匹配\n- [ ] 每个标记的描述清晰、有具体内容（不是泛泛的「配图」）\n- [ ] 标记类型合理（信息图/氛围/实证等与段落内容匹配）\n- [ ] 实证类标记注明了需用户提供\n\n### 结构\n\n- [ ] 小标题密度符合 `heading_density`\n- [ ] 结尾有力（总结/金句/行动号召）\n- [ ] 文末引导区块按 `closing_block` 处理\n- [ ] 若 config 中配置了 `target_word_count`，篇幅应在该范围内\n\n---\n\n## 终审检查项（publish 之前）\n\n在内容审的基础上，额外检查：\n\n### 排版\n\n- [ ] `article.html` 存在且内容完整\n- [ ] HTML 中无乱码或格式异常\n\n### 图片\n\n- [ ] `imgs/` 目录存在\n- [ ] 封面图已生成（`00-cover.*`）\n- [ ] 所有 `placeholder` 已替换为实际图片路径\n- [ ] 图片文件实际存在\n\n### 发布要素\n\n- [ ] 标题、摘要、作者已最终确认\n- [ ] 正文无未替换的占位符或草稿标记\n- [ ] 如需开启评论/仅粉丝可评，已确认设置\n\n---\n\n## 自定义规则\n\n`.aws-article/presets/review-rules.yaml` 中的规则追加在标准项之后执行。\n\nFile v1.0.23:references/output-format.md\n\n# 审稿输出模板\n\n## 分块详细格式\n\n```markdown\n## 审稿结果（内容审）\n\n### 标题\n- [x] 字数：22 字 ≤ 25 字上限 ✅\n- [ ] 发现禁用套路「建议收藏」 ❌\n- 🔴 修改建议：去掉「建议收藏」，改为更具体的价值承诺\n\n### 摘要\n- [x] 字数：95 字，在 summary_length 范围内（上限 128 字，微信 digest 限制） ✅\n- [x] 与正文一致 ✅\n\n### 正文\n- [x] 敏感词检查通过 ✅\n- [ ] 第 3 段发现错别字「帐号」→「账号」 ❌\n- [x] 原创标注已添加 ✅\n- 🔴 修改建议：修正第 3 段错别字\n\n### 写作规范\n- [x] 段落长度符合短段要求 ✅\n- [ ] 第 5 段使用了「随着科技的发展」开头 ❌\n- 🟡 建议修改：换一个更具体的开头\n\n### 配图标记\n- [x] 封面标记存在 ✅\n- [x] 配图数量 4 张，符合「每节一图」 ✅\n- [ ] 第 2 张标记描述过于笼统「配图」 ❌\n- 🟡 建议修改：补充具体描述，如「信息图：3个方案的对比表」\n\n### 结构\n- [x] 小标题密度达标 ✅\n- [x] 结尾有行动号召 ✅\n\n---\n\n## 总结\n\n| 级别 | 数量 | 详情 |\n|------|------|------|\n| 🔴 必须修改 | 2 | 标题禁用套路、正文错别字 |\n| 🟡 建议修改 | 2 | AI 味开头、配图描述 |\n| 🟢 通过 | 8 | |\n\n**下一步**：修正 🔴 项后重审 → 通过后保存为 article.md\n```\n\n---\n\n## 简要清单格式\n\n```markdown\n## 审稿结果（简要）\n\n| 检查项 | 结果 | 说明 |\n|--------|------|------|\n| 标题长度 | ✅ | 22/25 字 |\n| 标题套路 | 🔴 | 含「建议收藏」 |\n| 摘要 | ✅ | 95 字 |\n| 敏感词 | ✅ | 通过 |\n| 错别字 | 🔴 | 「帐号」→「账号」 |\n| 原创标注 | ✅ | 已添加 |\n| 写作规范 | 🟡 | AI 味开头 |\n| 配图标记 | 🟡 | 第2张描述不够具体 |\n| 结构 | ✅ | 达标 |\n\n**🔴 必须修改**：标题去掉禁用套路、修正错别字\n**🟡 建议修改**：换开头、补充配图描述\n```\n\n---\n\n## 终审格式\n\n```markdown\n## 终审结果\n\n| 检查项 | 结果 | 说明 |\n|--------|------|------|\n| 排版完整 | ✅ | article.html 存在 |\n| 封面图 | ✅ | 00-cover.png |\n| 正文配图 | ✅ | 4/4 张已替换 |\n| 占位符 | ✅ | 无残留 placeholder |\n| 标题确认 | ✅ | |\n| 摘要确认 | ✅ | |\n| 评论设置 | ✅ | 开启评论 |\n\n**结论**：✅ 可以发布\n```\n\n---\n\n## 修改循环格式\n\n重审时只显示之前标记为 🔴 的项：\n\n```markdown\n## 重审结果\n\n### 之前的 🔴 项\n- [x] 标题：已去掉「建议收藏」 ✅ → 已修正\n- [x] 错别字：「帐号」已改为「账号」 ✅ → 已修正\n\n**结论**：🔴 项已全部消除，可保存为定稿\n```\n\nFile v1.0.23:skill-card.md\n\n## Description: <br>\nReviews WeChat public-account article drafts for sensitive terms, typos, content compliance, writing standards, and publishing readiness, then outputs an actionable modification checklist. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[aiworkskills](https://clawhub.ai/user/aiworkskills) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal editors, self-media authors, and compliance reviewers use this skill to review WeChat public-account drafts before publishing. It supports content review and final checks for formatting, images, publication metadata, and required end-of-article embeds. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill may edit drafts and create final article files during review workflows. <br>\nMitigation: Keep backups of draft.md and article.md, require explicit user confirmation before overwrites, and review resulting diffs before publishing. <br>\nRisk: The finalization flow can invoke a sibling writing skill's local write.py script for citation stripping. <br>\nMitigation: Verify the sibling skill and write.py script before Step 5, and allow only the expected local strip-citations command. <br>\nRisk: Single-skill installation can leave sibling references unavailable, reducing coverage for setup checks and shared configuration guidance. <br>\nMitigation: Install the full aws-wechat-article skill suite when using the complete workflow, or confirm which checks are unavailable when using this skill alone. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/aiworkskills/aws-wechat-article-review) <br>\n- [Review checklist](references/checklist.md) <br>\n- [Review output format](references/output-format.md) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Text, Markdown, Files, Shell commands, Guidance] <br>\n**Output Format:** [Markdown review results, checklists, final article files, and local shell commands when citation stripping is required] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May write review records and final article files after review gates and user confirmation.] <br>\n\n## Skill Version(s): <br>\n1.0.23 (source: server release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v1.0.23:skill.json\n\n{\n  \"name\": \"aws-wechat-article-review\",\n  \"version\": \"0.3.0\",\n  \"author\": \"aiworkskills\",\n  \"description\": \"审核公众号文章，检查敏感词、错别字、合规性和写作规范，输出修改清单。\",\n  \"license\": \"MIT\",\n  \"homepage\": \"https://github.com/aiworkskills/wechat-article-skills\",\n  \"tags\": [\"wechat\", \"公众号\", \"review\", \"compliance\"],\n  \"permissions\": [\"filesystem\"],\n  \"entryPoint\": {\n    \"type\": \"natural\",\n    \"path\": \"SKILL.md\"\n  }\n}\n\nArchive v1.0.22: 5 files, 9057 bytes\n\nFiles: references/checklist.md (2261b), references/output-format.md (2696b), skill.json (467b), SKILL.md (12481b), _meta.json (145b)\n\nFile v1.0.22:SKILL.md\n\n---\nname: aws-wechat-article-review\ndescription: 公众号审稿｜公众号校对｜敏感词检测｜内容合规 — 公众号发布前合规审查：敏感词扫描、错别字检测、政治合规、平台规范校验，一次性输出修改清单。面向公众号编辑、自媒体作者、合规岗。触发词：「审稿」「审核」「校对」「合规」「敏感词」「错别字」「稿子检查一下」「稿子帮我看看」「稿子写完了」「文章检查一下」「检查下有没有问题」「能不能发」「发布前检查」。需要多环节串联（写+审+排+配图+发）请走 aws-wechat-article-main。\nhomepage: https://aiworkskills.cn\nurl: https://github.com/aiworkskills/wechat-article-skills\nmetadata:\n  openclaw:\n    requires:\n      env: []\n      bins:\n        - python3\n---\n\n# 审稿与合规\n\n**公众号发布前合规守门员** —— 敏感词、错别字、平台规范一次性筛查，输出可执行修改清单。\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 为**纯本地规则/清单审稿**，零网络、零凭证、不调用任何外部脚本。\n\n- **凭证**：无\n- **网络**：无\n- **文件读**：仓库内 `.aws-article/config.yaml`、`.aws-article/writing-spec.md`（如有）、`.aws-article/presets/review-rules.yaml`（如有）、本篇 `draft.md` / `article.html` / `article.yaml`\n- **文件写**：本篇 `article.md` 定稿、审稿记录\n- **shell**：无（不调用任何脚本）\n\n> 往期推荐链接的**自动补齐**由 [publish skill](../aws-wechat-article-publish/SKILL.md) 处理（那里才有微信 API 凭证与 `getdraft.py`）；本 skill 只做「若 `embeds.related_articles.manual` 非空则按其排占位符」与「若为空则在审稿输出中提示需 publish 补齐或手填」，**不直接调任何网络脚本**。\n\n## 配套 skill（informational）\n\n本 skill 是 `aws-wechat-article-*` 一条龙公众号套件的**审稿环节**（入口 `aws-wechat-article-main`）。工作流中的若干步骤会读取同级 `../aws-wechat-article-main/references/*.md` 等共享文档（首次引导、writing-spec、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)。\n\n对文章做系统性检查，发现问题并引导修改。\n\n## 两种审稿模式\n\n| 模式 | 时机 | 检查重点 |\n|------|------|---------|\n| **内容审** | writing 之后、formatting 之前 | 内容质量、写作规范、敏感词、配图标记 |\n| **终审** | publish 之前 | 排版完整性、图片就位、发布要素齐全 |\n\n自动识别：有 `article.html` → 终审模式，否则 → 内容审模式。\n\n## 工作流\n\n```\n审稿进度：\n- [ ] 第1步：环境检查 + 本篇约束与规范\n- [ ] 第2步：逐项检查\n- [ ] 第3步：输出审稿结果\n- [ ] 第4步：修改循环 🔄\n- [ ] 第5步：确认通过 → **文末 embed（⛔ BLOCKING）** → 保存 `article.md` 定稿\n```\n\n### 智能体行为约束（与定稿强相关）\n\n- **禁止**在未完成 **第5步「文末 embed」**（见下 **⛔ BLOCKING**）的情况下，将稿件称为「已定稿」、写入 **`article.md`**、或进入 **排版（`format.py`）**。\n- **禁止**用「用户没提」「节省时间」等理由跳过文末占位符；**唯一例外**：用户**书面**声明本篇不要任何嵌入元素（名片/小程序/链接），则须在审稿记录中写明「用户声明跳过 embed」，且仍须确认不是误操作。\n- **一条龙 / 完整流程**（[main SKILL](../aws-wechat-article-main/SKILL.md)）中，**内容审**产出的 **`article.md` 必须已含文末 embed**（按合并规则或合法省略），再进入排版。\n\n### 第1步：环境检查 + 本篇约束与规范 ⛔\n\n任何操作执行前，**必须**按 **[首次引导](../aws-wechat-article-main/references/first-time-setup.md)** 执行其中的 **「检测顺序」**。检测通过后才能进行以下操作（或用户明确书面确认「本次不检查」）：\n\n从选题到发布的阻断规则见 [main SKILL](../aws-wechat-article-main/SKILL.md)；**单独启用本 skill** 时亦须先满足同一套环境检查（或用户按 main 约定声明「本次例外」）。\n\n然后读取：\n\n- **`.aws-article/writing-spec.md`**（如有）\n- **`.aws-article/presets/review-rules.yaml`**（如有）\n- **本篇合并配置**（与 [writing](../aws-wechat-article-writing/SKILL.md)、`format.py` 一致）：先 **`.aws-article/config.yaml`** 顶层（不含 `writing_model` / `image_model`），再叠 **本篇目录 `article.yaml`**（**同键本篇优先**；**仅** `embeds.related_articles` 与全局深度合并，其余 `embeds` 仍以全局为准）。审稿与内容向检查以合并结果为准（如 `review_output_format`、`custom_sensitive_words`、`forbidden_words`、`target_reader`、`tone`、`image_density` 等）。字段说明：[articlescreening-schema.md](../aws-wechat-article-main/references/articlescreening-schema.md)。\n\n**fallback**：合并后仍缺关键约束时向用户说明「部分维度无法按本篇约束对齐」，并建议补全 `config.yaml` / `article.yaml`；无写作规范时跳过规范检查项；无自定义审稿规则时仅执行内置检查清单 [references/checklist.md](references/checklist.md)。\n\n### 第2步：逐项检查\n\n按模式执行不同检查项，详见：[references/checklist.md](references/checklist.md)\n\n**内容审** 检查 6 个维度：\n\n| 维度 | 检查内容 |\n|------|---------|\n| **标题** | 长度、禁用套路、与正文一致性 |\n| **摘要** | 长度、信息量、与正文一致性 |\n| **正文** | 敏感词、禁用词、错别字、事实出处 |\n| **写作规范** | 对照 writing-spec.md 检查用词、句式、段落、AI 味；深度与调性是否与 **本篇合并配置** 的 `target_reader`、`tone` 一致 |\n| **配图标记** | 封面标记存在、数量与 **本篇合并配置** 的 `image_density` 匹配、描述清晰 |\n| **文末 embed** | 定稿前须完成 **第5步 ⛔ BLOCKING**（与 `format.py` 的 `{embed:…}` 一致）；未写入 `article.md` 不得定稿 |\n| **原创标注** | 按 original_attribution 处理 |\n\n**终审** 额外检查：\n\n| 维度 | 检查内容 |\n|------|---------|\n| 排版 | article.html 存在且完整 |\n| 图片 | imgs/ 下图片齐全、placeholder 已替换 |\n| 发布要素 | 标题/摘要/作者/封面 全部就绪 |\n\n### 第3步：输出审稿结果\n\n按 `review_output_format` 输出：\n- **分块详细**：按维度分块，逐项列 ✅/❌ + 修改建议\n- **简要清单**：表格式，一行一项\n\n输出模板：[references/output-format.md](references/output-format.md)\n\n结果分三级：\n- 🔴 **必须修改**：不改不能过（敏感词、严重错别字、缺封面）\n- 🟡 **建议修改**：改了更好（用词优化、段落调整）\n- 🟢 **通过**：无问题\n\n### 第4步：修改循环 🔄\n\n有 🔴 项时**必须进入修改循环**：\n\n```\n发现问题 → 展示审稿结果 → 等用户/agent 修改 → 重新检查 → 直到无 🔴\n```\n\n修改方式：\n- Agent 直接修改 `draft.md`\n- 用户手动修改后说「改好了」\n- 调用 writing skill 的 rewrite 能力\n\n每轮修改后自动重审被标记为 🔴 的项，不需要全量重审。\n\n> ⚠️ **Step 4 完成不代表可以保存 `article.md`**。必须先完成 Step 5（文末 embed ⛔⛔ BLOCKING）才能写入 `article.md` 或进入排版。\n\n### 第5步：确认通过 → 文末 embed → 保存定稿 ⛔⛔ BLOCKING\n\n全部 🔴 项消除后：\n1. 展示最终审稿结果\n2. 等待用户确认 ⛔\n3. **⛔ BLOCKING · 文末 `embeds`**：**在写入 `article.md` 之前**完成本节下方「规则与表格」——**先读取** `.aws-article/config.yaml` 并与本篇 `article.yaml` **合并**（与第 1 步一致：**除 `embeds.related_articles` 外，`embeds` 仅以全局为准**；**`related_articles` 与全局深度合并**），再在**正文末尾**（原有正文之后）按规则**追加或合法省略**占位符。**占位符必须与合并后可解析的配置一致**，否则排版阶段会失败。**未完成本节不得保存定稿、不得调用 `format.py`。**\n4. 将已含文末 embed（或已按规则省略并记录在审稿说明中）的稿件保存为 **`article.md`（定稿）**。\n\n**定稿文末 `embeds`（规则与表格）**\n\n| 占位符 | 何时写入文末 | 配置对齐 |\n|--------|----------------|----------|\n| `{embed:profile:…}` | 全局 **`embeds.profiles`** 存在**至少一条有效项**（非空 `nickname`） | 每条有效 profile **一行**，占位中 `…` = 该项 `nickname` |\n| `{embed:miniprogram:…}` | 全局 **`embeds.miniprograms`** 存在**至少一条有效项**（非空 `title`） | 每条有效项一行，`…` = `title` |\n| `{embed:miniprogram_card:…}` | 全局 **`embeds.miniprogram_cards`** 存在**至少一条有效项**（非空 `title`） | 每条有效项一行，`…` = `title` |\n| `{embed:link:…}` | **往期链接**：合并后 **`embeds.related_articles.manual`** 有有效项时；或见下方「无 manual」 | `…` = 该项 `name`；**文末相关链接至多 3 条** |\n\n- **前三类（名片 / 小程序文字链 / 小程序卡片）**：若对应列表**未配置或为空或无非空关键字段**，**不追加**该类占位符，无需处理。\n- **往期 `{embed:link:…}`**：\n  - 若合并后 **`manual` 已有** `name` + `url`：在文末追加对应占位符，**最多 3 条**（超过则只保留 3 条，优先与本文主题最相关的条目或按列表顺序取前 3）。\n  - 若合并后 **`manual` 缺失或为空**：**本 skill 不自动补齐**（以保持 review 纯本地、无网络、无凭证）。处理方式：\n    1. 首选由用户手动把已发表文章的 `name` + `url` 写入本篇 `article.yaml` 的 `embeds.related_articles.manual`（每项至多 3 条）；\n    2. 或在**进入 [publish skill](../aws-wechat-article-publish/SKILL.md)** 时，由 publish 在发布前调用 `getdraft.py published-fields` 自动补齐（publish 才有微信 API 凭证与网络能力）；\n    3. 若用户声明跳过往期：**不伪造** `manual`，在审稿说明中注明「本篇跳过往期推荐」，`{embed:link:…}` 占位省略即可。\n\n字段含义与示例见 **`{baseDir}/../aws-wechat-article-main/references/config.example.yaml`** 的 `embeds` 注释及 **[topics SKILL](../aws-wechat-article-topics/SKILL.md)** 文末「推荐链接」说明；排版脚本据此生成 `article.html`。\n\n**全空时的处理**：当所有 embed 配置（profiles / miniprograms / miniprogram_cards / related_articles）均为空或未配置时，仍须在审稿输出中**显式标注**「文末 embed：无配置，已跳过」，**不得静默跳过**。这确保流程可追溯，避免遗漏。\n\n## 自定义检查规则\n\n用户可在 `.aws-article/presets/review-rules.yaml` 添加自定义检查项：\n\n```yaml\n# .aws-article/presets/review-rules.yaml\ncustom_rules:\n  - name: 品牌名称规范\n    check: 正文中「XX公司」必须使用全称，不能简写\n    level: 必须    # 必须 / 建议\n\n  - name: 数据来源\n    check: 所有引用的数据必须标注来源和日期\n    level: 必须\n\n  - name: CTA 检查\n    check: 文末必须包含明确的行动号召\n    level: 建议\n```\n\n自定义规则会追加到标准检查项之后执行。\n\n## 过程文件\n\n| 模式 | 读取 | 产出 |\n|------|------|------|\n| 内容审 | `draft.md`、**`.aws-article/config.yaml` + 本篇 `article.yaml`**、`writing-spec.md` | `review.md`、`article.md`（定稿） |\n| 终审 | `article.html`、`imgs/`、同上合并配置、`article.yaml`（发布元数据等） | `review.md`（终审结果） |\n\nFile v1.0.22:_meta.json\n\n{\n  \"ownerId\": \"kn7f5hvxj1x2ctd5vqnec5x1zs82ce6h\",\n  \"slug\": \"aws-wechat-article-review\",\n  \"version\": \"1.0.22\",\n  \"publishedAt\": 1776900240121\n}\n\nFile v1.0.22:references/checklist.md\n\n# 审稿检查清单\n\n## 内容审检查项（writing 之后）\n\n### 标题\n\n- [ ] 字数不超过 `title_max_length`\n- [ ] 不含 `forbidden_title_phrases` 中的套路\n- [ ] 与正文内容一致，不做标题党\n- [ ] 有吸引力，能让读者想点进来\n\n### 摘要\n\n- [ ] 字数在 `summary_length` 范围内\n- [ ] 能概括文章核心价值\n- [ ] 与正文内容一致\n- [ ] 不是正文第一段的复制\n\n### 正文内容\n\n- [ ] 不含 `custom_sensitive_words` 和 `forbidden_words`\n- [ ] 无明显错别字和语病\n- [ ] 事实与数据有出处（如适用）\n- [ ] 原创/转载标注按 `original_attribution` 处理\n- [ ] 开头 2-3 句有吸引力\n\n### 写作规范合规\n\n对照 `.aws-article/writing-spec.md` 检查（如有）：\n\n- [ ] 用词规范：标点、中英文间距、数字格式\n- [ ] 句式偏好：句长、主动语态、无套话\n- [ ] 段落规范：段长、核心观点位置\n- [ ] 禁止事项：无 AI 味表达、无夸张承诺、无未验证数据\n- [ ] 品牌调性：与规范中的调性描述一致\n\n### 配图标记\n\n- [ ] 封面标记存在（`![封面：...]`）\n- [ ] 配图数量与 `image_density` 配置匹配\n- [ ] 每个标记的描述清晰、有具体内容（不是泛泛的「配图」）\n- [ ] 标记类型合理（信息图/氛围/实证等与段落内容匹配）\n- [ ] 实证类标记注明了需用户提供\n\n### 结构\n\n- [ ] 小标题密度符合 `heading_density`\n- [ ] 结尾有力（总结/金句/行动号召）\n- [ ] 文末引导区块按 `closing_block` 处理\n- [ ] 若 config 中配置了 `target_word_count`，篇幅应在该范围内\n\n---\n\n## 终审检查项（publish 之前）\n\n在内容审的基础上，额外检查：\n\n### 排版\n\n- [ ] `article.html` 存在且内容完整\n- [ ] HTML 中无乱码或格式异常\n\n### 图片\n\n- [ ] `imgs/` 目录存在\n- [ ] 封面图已生成（`00-cover.*`）\n- [ ] 所有 `placeholder` 已替换为实际图片路径\n- [ ] 图片文件实际存在\n\n### 发布要素\n\n- [ ] 标题、摘要、作者已最终确认\n- [ ] 正文无未替换的占位符或草稿标记\n- [ ] 如需开启评论/仅粉丝可评，已确认设置\n\n---\n\n## 自定义规则\n\n`.aws-article/presets/review-rules.yaml` 中的规则追加在标准项之后执行。\n\nFile v1.0.22:references/output-format.md\n\n# 审稿输出模板\n\n## 分块详细格式\n\n```markdown\n## 审稿结果（内容审）\n\n### 标题\n- [x] 字数：22 字 ≤ 25 字上限 ✅\n- [ ] 发现禁用套路「建议收藏」 ❌\n- 🔴 修改建议：去掉「建议收藏」，改为更具体的价值承诺\n\n### 摘要\n- [x] 字数：95 字，在 summary_length 范围内（上限 128 字，微信 digest 限制） ✅\n- [x] 与正文一致 ✅\n\n### 正文\n- [x] 敏感词检查通过 ✅\n- [ ] 第 3 段发现错别字「帐号」→「账号」 ❌\n- [x] 原创标注已添加 ✅\n- 🔴 修改建议：修正第 3 段错别字\n\n### 写作规范\n- [x] 段落长度符合短段要求 ✅\n- [ ] 第 5 段使用了「随着科技的发展」开头 ❌\n- 🟡 建议修改：换一个更具体的开头\n\n### 配图标记\n- [x] 封面标记存在 ✅\n- [x] 配图数量 4 张，符合「每节一图」 ✅\n- [ ] 第 2 张标记描述过于笼统「配图」 ❌\n- 🟡 建议修改：补充具体描述，如「信息图：3个方案的对比表」\n\n### 结构\n- [x] 小标题密度达标 ✅\n- [x] 结尾有行动号召 ✅\n\n---\n\n## 总结\n\n| 级别 | 数量 | 详情 |\n|------|------|------|\n| 🔴 必须修改 | 2 | 标题禁用套路、正文错别字 |\n| 🟡 建议修改 | 2 | AI 味开头、配图描述 |\n| 🟢 通过 | 8 | |\n\n**下一步**：修正 🔴 项后重审 → 通过后保存为 article.md\n```\n\n---\n\n## 简要清单格式\n\n```markdown\n## 审稿结果（简要）\n\n| 检查项 | 结果 | 说明 |\n|--------|------|------|\n| 标题长度 | ✅ | 22/25 字 |\n| 标题套路 | 🔴 | 含「建议收藏」 |\n| 摘要 | ✅ | 95 字 |\n| 敏感词 | ✅ | 通过 |\n| 错别字 | 🔴 | 「帐号」→「账号」 |\n| 原创标注 | ✅ | 已添加 |\n| 写作规范 | 🟡 | AI 味开头 |\n| 配图标记 | 🟡 | 第2张描述不够具体 |\n| 结构 | ✅ | 达标 |\n\n**🔴 必须修改**：标题去掉禁用套路、修正错别字\n**🟡 建议修改**：换开头、补充配图描述\n```\n\n---\n\n## 终审格式\n\n```markdown\n## 终审结果\n\n| 检查项 | 结果 | 说明 |\n|--------|------|------|\n| 排版完整 | ✅ | article.html 存在 |\n| 封面图 | ✅ | 00-cover.png |\n| 正文配图 | ✅ | 4/4 张已替换 |\n| 占位符 | ✅ | 无残留 placeholder |\n| 标题确认 | ✅ | |\n| 摘要确认 | ✅ | |\n| 评论设置 | ✅ | 开启评论 |\n\n**结论**：✅ 可以发布\n```\n\n---\n\n## 修改循环格式\n\n重审时只显示之前标记为 🔴 的项：\n\n```markdown\n## 重审结果\n\n### 之前的 🔴 项\n- [x] 标题：已去掉「建议收藏」 ✅ → 已修正\n- [x] 错别字：「帐号」已改为「账号」 ✅ → 已修正\n\n**结论**：🔴 项已全部消除，可保存为定稿\n```\n\nFile v1.0.22:skill.json\n\n{\n  \"name\": \"aws-wechat-article-review\",\n  \"version\": \"0.3.0\",\n  \"author\": \"aiworkskills\",\n  \"description\": \"审核公众号文章，检查敏感词、错别字、合规性和写作规范，输出修改清单。\",\n  \"license\": \"MIT\",\n  \"homepage\": \"https://github.com/aiworkskills/wechat-article-skills\",\n  \"tags\": [\"wechat\", \"公众号\", \"review\", \"compliance\"],\n  \"permissions\": [\"filesystem\"],\n  \"entryPoint\": {\n    \"type\": \"natural\",\n    \"path\": \"SKILL.md\"\n  }\n}\n\nArchive v1.0.21: 5 files, 8890 bytes\n\nFiles: references/checklist.md (2261b), references/output-format.md (2696b), skill.json (467b), SKILL.md (12046b), _meta.json (145b)\n\nFile v1.0.21:SKILL.md\n\n---\nname: aws-wechat-article-review\ndescription: 公众号审稿｜公众号校对｜敏感词检测｜内容合规 — 公众号发布前合规审查：敏感词扫描、错别字检测、政治合规、平台规范校验，一次性输出修改清单。面向公众号编辑、自媒体作者、合规岗。触发词：「审稿」「审核」「校对」「合规」「敏感词」「错别字」「稿子检查一下」「稿子帮我看看」「稿子写完了」「文章检查一下」「检查下有没有问题」「能不能发」「发布前检查」。需要多环节串联（写+审+排+配图+发）请走 aws-wechat-article-main。\nhomepage: https://aiworkskills.cn\nurl: https://github.com/aiworkskills/wechat-article-skills\nmetadata:\n  openclaw:\n    requires:\n      env: []\n      bins:\n        - python3\n---\n\n# 审稿与合规\n\n**公众号发布前合规守门员** —— 敏感词、错别字、平台规范一次性筛查，输出可执行修改清单。\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 为**纯本地规则/清单审稿**，零网络、零凭证、不调用任何外部脚本。\n\n- **凭证**：无\n- **网络**：无\n- **文件读**：仓库内 `.aws-article/config.yaml`、`.aws-article/writing-spec.md`（如有）、`.aws-article/presets/review-rules.yaml`（如有）、本篇 `draft.md` / `article.html` / `article.yaml`\n- **文件写**：本篇 `article.md` 定稿、审稿记录\n- **shell**：无（不调用任何脚本）\n\n> 往期推荐链接的**自动补齐**由 [publish skill](../aws-wechat-article-publish/SKILL.md) 处理（那里才有微信 API 凭证与 `getdraft.py`）；本 skill 只做「若 `embeds.related_articles.manual` 非空则按其排占位符」与「若为空则在审稿输出中提示需 publish 补齐或手填」，**不直接调任何网络脚本**。\n\n## 配套 skill（informational）\n\n本 skill 是 `aws-wechat-article-*` 一条龙公众号套件的审稿环节（入口 `aws-wechat-article-main`）。完整说明见 [源码仓库](https://github.com/aiworkskills/wechat-article-skills)。\n\n## 路由\n\n「能不能发」若含代为发布或从稿到发出整条收尾 → [aws-wechat-article-main](../aws-wechat-article-main/SKILL.md)。\n\n对文章做系统性检查，发现问题并引导修改。\n\n## 两种审稿模式\n\n| 模式 | 时机 | 检查重点 |\n|------|------|---------|\n| **内容审** | writing 之后、formatting 之前 | 内容质量、写作规范、敏感词、配图标记 |\n| **终审** | publish 之前 | 排版完整性、图片就位、发布要素齐全 |\n\n自动识别：有 `article.html` → 终审模式，否则 → 内容审模式。\n\n## 工作流\n\n```\n审稿进度：\n- [ ] 第1步：环境检查 + 本篇约束与规范\n- [ ] 第2步：逐项检查\n- [ ] 第3步：输出审稿结果\n- [ ] 第4步：修改循环 🔄\n- [ ] 第5步：确认通过 → **文末 embed（⛔ BLOCKING）** → 保存 `article.md` 定稿\n```\n\n### 智能体行为约束（与定稿强相关）\n\n- **禁止**在未完成 **第5步「文末 embed」**（见下 **⛔ BLOCKING**）的情况下，将稿件称为「已定稿」、写入 **`article.md`**、或进入 **排版（`format.py`）**。\n- **禁止**用「用户没提」「节省时间」等理由跳过文末占位符；**唯一例外**：用户**书面**声明本篇不要任何嵌入元素（名片/小程序/链接），则须在审稿记录中写明「用户声明跳过 embed」，且仍须确认不是误操作。\n- **一条龙 / 完整流程**（[main SKILL](../aws-wechat-article-main/SKILL.md)）中，**内容审**产出的 **`article.md` 必须已含文末 embed**（按合并规则或合法省略），再进入排版。\n\n### 第1步：环境检查 + 本篇约束与规范 ⛔\n\n任何操作执行前，**必须**按 **[首次引导](../aws-wechat-article-main/references/first-time-setup.md)** 执行其中的 **「检测顺序」**。检测通过后才能进行以下操作（或用户明确书面确认「本次不检查」）：\n\n从选题到发布的阻断规则见 [main SKILL](../aws-wechat-article-main/SKILL.md)；**单独启用本 skill** 时亦须先满足同一套环境检查（或用户按 main 约定声明「本次例外」）。\n\n然后读取：\n\n- **`.aws-article/writing-spec.md`**（如有）\n- **`.aws-article/presets/review-rules.yaml`**（如有）\n- **本篇合并配置**（与 [writing](../aws-wechat-article-writing/SKILL.md)、`format.py` 一致）：先 **`.aws-article/config.yaml`** 顶层（不含 `writing_model` / `image_model`），再叠 **本篇目录 `article.yaml`**（**同键本篇优先**；**仅** `embeds.related_articles` 与全局深度合并，其余 `embeds` 仍以全局为准）。审稿与内容向检查以合并结果为准（如 `review_output_format`、`custom_sensitive_words`、`forbidden_words`、`target_reader`、`tone`、`image_density` 等）。字段说明：[articlescreening-schema.md](../aws-wechat-article-main/references/articlescreening-schema.md)。\n\n**fallback**：合并后仍缺关键约束时向用户说明「部分维度无法按本篇约束对齐」，并建议补全 `config.yaml` / `article.yaml`；无写作规范时跳过规范检查项；无自定义审稿规则时仅执行内置检查清单 [references/checklist.md](references/checklist.md)。\n\n### 第2步：逐项检查\n\n按模式执行不同检查项，详见：[references/checklist.md](references/checklist.md)\n\n**内容审** 检查 6 个维度：\n\n| 维度 | 检查内容 |\n|------|---------|\n| **标题** | 长度、禁用套路、与正文一致性 |\n| **摘要** | 长度、信息量、与正文一致性 |\n| **正文** | 敏感词、禁用词、错别字、事实出处 |\n| **写作规范** | 对照 writing-spec.md 检查用词、句式、段落、AI 味；深度与调性是否与 **本篇合并配置** 的 `target_reader`、`tone` 一致 |\n| **配图标记** | 封面标记存在、数量与 **本篇合并配置** 的 `image_density` 匹配、描述清晰 |\n| **文末 embed** | 定稿前须完成 **第5步 ⛔ BLOCKING**（与 `format.py` 的 `{embed:…}` 一致）；未写入 `article.md` 不得定稿 |\n| **原创标注** | 按 original_attribution 处理 |\n\n**终审** 额外检查：\n\n| 维度 | 检查内容 |\n|------|---------|\n| 排版 | article.html 存在且完整 |\n| 图片 | imgs/ 下图片齐全、placeholder 已替换 |\n| 发布要素 | 标题/摘要/作者/封面 全部就绪 |\n\n### 第3步：输出审稿结果\n\n按 `review_output_format` 输出：\n- **分块详细**：按维度分块，逐项列 ✅/❌ + 修改建议\n- **简要清单**：表格式，一行一项\n\n输出模板：[references/output-format.md](references/output-format.md)\n\n结果分三级：\n- 🔴 **必须修改**：不改不能过（敏感词、严重错别字、缺封面）\n- 🟡 **建议修改**：改了更好（用词优化、段落调整）\n- 🟢 **通过**：无问题\n\n### 第4步：修改循环 🔄\n\n有 🔴 项时**必须进入修改循环**：\n\n```\n发现问题 → 展示审稿结果 → 等用户/agent 修改 → 重新检查 → 直到无 🔴\n```\n\n修改方式：\n- Agent 直接修改 `draft.md`\n- 用户手动修改后说「改好了」\n- 调用 writing skill 的 rewrite 能力\n\n每轮修改后自动重审被标记为 🔴 的项，不需要全量重审。\n\n> ⚠️ **Step 4 完成不代表可以保存 `article.md`**。必须先完成 Step 5（文末 embed ⛔⛔ BLOCKING）才能写入 `article.md` 或进入排版。\n\n### 第5步：确认通过 → 文末 embed → 保存定稿 ⛔⛔ BLOCKING\n\n全部 🔴 项消除后：\n1. 展示最终审稿结果\n2. 等待用户确认 ⛔\n3. **⛔ BLOCKING · 文末 `embeds`**：**在写入 `article.md` 之前**完成本节下方「规则与表格」——**先读取** `.aws-article/config.yaml` 并与本篇 `article.yaml` **合并**（与第 1 步一致：**除 `embeds.related_articles` 外，`embeds` 仅以全局为准**；**`related_articles` 与全局深度合并**），再在**正文末尾**（原有正文之后）按规则**追加或合法省略**占位符。**占位符必须与合并后可解析的配置一致**，否则排版阶段会失败。**未完成本节不得保存定稿、不得调用 `format.py`。**\n4. 将已含文末 embed（或已按规则省略并记录在审稿说明中）的稿件保存为 **`article.md`（定稿）**。\n\n**定稿文末 `embeds`（规则与表格）**\n\n| 占位符 | 何时写入文末 | 配置对齐 |\n|--------|----------------|----------|\n| `{embed:profile:…}` | 全局 **`embeds.profiles`** 存在**至少一条有效项**（非空 `nickname`） | 每条有效 profile **一行**，占位中 `…` = 该项 `nickname` |\n| `{embed:miniprogram:…}` | 全局 **`embeds.miniprograms`** 存在**至少一条有效项**（非空 `title`） | 每条有效项一行，`…` = `title` |\n| `{embed:miniprogram_card:…}` | 全局 **`embeds.miniprogram_cards`** 存在**至少一条有效项**（非空 `title`） | 每条有效项一行，`…` = `title` |\n| `{embed:link:…}` | **往期链接**：合并后 **`embeds.related_articles.manual`** 有有效项时；或见下方「无 manual」 | `…` = 该项 `name`；**文末相关链接至多 3 条** |\n\n- **前三类（名片 / 小程序文字链 / 小程序卡片）**：若对应列表**未配置或为空或无非空关键字段**，**不追加**该类占位符，无需处理。\n- **往期 `{embed:link:…}`**：\n  - 若合并后 **`manual` 已有** `name` + `url`：在文末追加对应占位符，**最多 3 条**（超过则只保留 3 条，优先与本文主题最相关的条目或按列表顺序取前 3）。\n  - 若合并后 **`manual` 缺失或为空**：**本 skill 不自动补齐**（以保持 review 纯本地、无网络、无凭证）。处理方式：\n    1. 首选由用户手动把已发表文章的 `name` + `url` 写入本篇 `article.yaml` 的 `embeds.related_articles.manual`（每项至多 3 条）；\n    2. 或在**进入 [publish skill](../aws-wechat-article-publish/SKILL.md)** 时，由 publish 在发布前调用 `getdraft.py published-fields` 自动补齐（publish 才有微信 API 凭证与网络能力）；\n    3. 若用户声明跳过往期：**不伪造** `manual`，在审稿说明中注明「本篇跳过往期推荐」，`{embed:link:…}` 占位省略即可。\n\n字段含义与示例见 **`{baseDir}/../aws-wechat-article-main/references/config.example.yaml`** 的 `embeds` 注释及 **[topics SKILL](../aws-wechat-article-topics/SKILL.md)** 文末「推荐链接」说明；排版脚本据此生成 `article.html`。\n\n**全空时的处理**：当所有 embed 配置（profiles / miniprograms / miniprogram_cards / related_articles）均为空或未配置时，仍须在审稿输出中**显式标注**「文末 embed：无配置，已跳过」，**不得静默跳过**。这确保流程可追溯，避免遗漏。\n\n## 自定义检查规则\n\n用户可在 `.aws-article/presets/review-rules.yaml` 添加自定义检查项：\n\n```yaml\n# .aws-article/presets/review-rules.yaml\ncustom_rules:\n  - name: 品牌名称规范\n    check: 正文中「XX公司」必须使用全称，不能简写\n    level: 必须    # 必须 / 建议\n\n  - name: 数据来源\n    check: 所有引用的数据必须标注来源和日期\n    level: 必须\n\n  - name: CTA 检查\n    check: 文末必须包含明确的行动号召\n    level: 建议\n```\n\n自定义规则会追加到标准检查项之后执行。\n\n## 过程文件\n\n| 模式 | 读取 | 产出 |\n|------|------|------|\n| 内容审 | `draft.md`、**`.aws-article/config.yaml` + 本篇 `article.yaml`**、`writing-spec.md` | `review.md`、`article.md`（定稿） |\n| 终审 | `article.html`、`imgs/`、同上合并配置、`article.yaml`（发布元数据等） | `review.md`（终审结果） |\n\nFile v1.0.21:_meta.json\n\n{\n  \"ownerId\": \"kn7f5hvxj1x2ctd5vqnec5x1zs82ce6h\",\n  \"slug\": \"aws-wechat-article-review\",\n  \"version\": \"1.0.21\",\n  \"publishedAt\": 1776898453173\n}\n\nFile v1.0.21:references/checklist.md\n\n# 审稿检查清单\n\n## 内容审检查项（writing 之后）\n\n### 标题\n\n- [ ] 字数不超过 `title_max_length`\n- [ ] 不含 `forbidden_title_phrases` 中的套路\n- [ ] 与正文内容一致，不做标题党\n- [ ] 有吸引力，能让读者想点进来\n\n### 摘要\n\n- [ ] 字数在 `summary_length` 范围内\n- [ ] 能概括文章核心价值\n- [ ] 与正文内容一致\n- [ ] 不是正文第一段的复制\n\n### 正文内容\n\n- [ ] 不含 `custom_sensitive_words` 和 `forbidden_words`\n- [ ] 无明显错别字和语病\n- [ ] 事实与数据有出处（如适用）\n- [ ] 原创/转载标注按 `original_attribution` 处理\n- [ ] 开头 2-3 句有吸引力\n\n### 写作规范合规\n\n对照 `.aws-article/writing-spec.md` 检查（如有）：\n\n- [ ] 用词规范：标点、中英文间距、数字格式\n- [ ] 句式偏好：句长、主动语态、无套话\n- [ ] 段落规范：段长、核心观点位置\n- [ ] 禁止事项：无 AI 味表达、无夸张承诺、无未验证数据\n- [ ] 品牌调性：与规范中的调性描述一致\n\n### 配图标记\n\n- [ ] 封面标记存在（`![封面：...]`）\n- [ ] 配图数量与 `image_density` 配置匹配\n- [ ] 每个标记的描述清晰、有具体内容（不是泛泛的「配图」）\n- [ ] 标记类型合理（信息图/氛围/实证等与段落内容匹配）\n- [ ] 实证类标记注明了需用户提供\n\n### 结构\n\n- [ ] 小标题密度符合 `heading_density`\n- [ ] 结尾有力（总结/金句/行动号召）\n- [ ] 文末引导区块按 `closing_block` 处理\n- [ ] 若 config 中配置了 `target_word_count`，篇幅应在该范围内\n\n---\n\n## 终审检查项（publish 之前）\n\n在内容审的基础上，额外检查：\n\n### 排版\n\n- [ ] `article.html` 存在且内容完整\n- [ ] HTML 中无乱码或格式异常\n\n### 图片\n\n- [ ] `imgs/` 目录存在\n- [ ] 封面图已生成（`00-cover.*`）\n- [ ] 所有 `placeholder` 已替换为实际图片路径\n- [ ] 图片文件实际存在\n\n### 发布要素\n\n- [ ] 标题、摘要、作者已最终确认\n- [ ] 正文无未替换的占位符或草稿标记\n- [ ] 如需开启评论/仅粉丝可评，已确认设置\n\n---\n\n## 自定义规则\n\n`.aws-article/presets/review-rules.yaml` 中的规则追加在标准项之后执行。\n\nFile v1.0.21:references/output-format.md\n\n# 审稿输出模板\n\n## 分块详细格式\n\n```markdown\n## 审稿结果（内容审）\n\n### 标题\n- [x] 字数：22 字 ≤ 25 字上限 ✅\n- [ ] 发现禁用套路「建议收藏」 ❌\n- 🔴 修改建议：去掉「建议收藏」，改为更具体的价值承诺\n\n### 摘要\n- [x] 字数：95 字，在 summary_length 范围内（上限 128 字，微信 digest 限制） ✅\n- [x] 与正文一致 ✅\n\n### 正文\n- [x] 敏感词检查通过 ✅\n- [ ] 第 3 段发现错别字「帐号」→「账号」 ❌\n- [x] 原创标注已添加 ✅\n- 🔴 修改建议：修正第 3 段错别字\n\n### 写作规范\n- [x] 段落长度符合短段要求 ✅\n- [ ] 第 5 段使用了「随着科技的发展」开头 ❌\n- 🟡 建议修改：换一个更具体的开头\n\n### 配图标记\n- [x] 封面标记存在 ✅\n- [x] 配图数量 4 张，符合「每节一图」 ✅\n- [ ] 第 2 张标记描述过于笼统「配图」 ❌\n- 🟡 建议修改：补充具体描述，如「信息图：3个方案的对比表」\n\n### 结构\n- [x] 小标题密度达标 ✅\n- [x] 结尾有行动号召 ✅\n\n---\n\n## 总结\n\n| 级别 | 数量 | 详情 |\n|------|------|------|\n| 🔴 必须修改 | 2 | 标题禁用套路、正文错别字 |\n| 🟡 建议修改 | 2 | AI 味开头、配图描述 |\n| 🟢 通过 | 8 | |\n\n**下一步**：修正 🔴 项后重审 → 通过后保存为 article.md\n```\n\n---\n\n## 简要清单格式\n\n```markdown\n## 审稿结果（简要）\n\n| 检查项 | 结果 | 说明 |\n|--------|------|------|\n| 标题长度 | ✅ | 22/25 字 |\n| 标题套路 | 🔴 | 含「建议收藏」 |\n| 摘要 | ✅ | 95 字 |\n| 敏感词 | ✅ | 通过 |\n| 错别字 | 🔴 | 「帐号」→「账号」 |\n| 原创标注 | ✅ | 已添加 |\n| 写作规范 | 🟡 | AI 味开头 |\n| 配图标记 | 🟡 | 第2张描述不够具体 |\n| 结构 | ✅ | 达标 |\n\n**🔴 必须修改**：标题去掉禁用套路、修正错别字\n**🟡 建议修改**：换开头、补充配图描述\n```\n\n---\n\n## 终审格式\n\n```markdown\n## 终审结果\n\n| 检查项 | 结果 | 说明 |\n|--------|------|------|\n| 排版完整 | ✅ | article.html 存在 |\n| 封面图 | ✅ | 00-cover.png |\n| 正文配图 | ✅ | 4/4 张已替换 |\n| 占位符 | ✅ | 无残留 placeholder |\n| 标题确认 | ✅ | |\n| 摘要确认 | ✅ | |\n| 评论设置 | ✅ | 开启评论 |\n\n**结论**：✅ 可以发布\n```\n\n---\n\n## 修改循环格式\n\n重审时只显示之前标记为 🔴 的项：\n\n```markdown\n## 重审结果\n\n### 之前的 🔴 项\n- [x] 标题：已去掉「建议收藏」 ✅ → 已修正\n- [x] 错别字：「帐号」已改为「账号」 ✅ → 已修正\n\n**结论**：🔴 项已全部消除，可保存为定稿\n```\n\nFile v1.0.21:skill.json\n\n{\n  \"name\": \"aws-wechat-article-review\",\n  \"version\": \"0.3.0\",\n  \"author\": \"aiworkskills\",\n  \"description\": \"审核公众号文章，检查敏感词、错别字、合规性和写作规范，输出修改清单。\",\n  \"license\": \"MIT\",\n  \"homepage\": \"https://github.com/aiworkskills/wechat-article-skills\",\n  \"tags\": [\"wechat\", \"公众号\", \"review\", \"compliance\"],\n  \"permissions\": [\"filesystem\"],\n  \"entryPoint\": {\n    \"type\": \"natural\",\n    \"path\": \"SKILL.md\"\n  }\n}\n\nArchive v1.0.20: 5 files, 8987 bytes\n\nFiles: references/checklist.md (2261b), references/output-format.md (2696b), skill.json (467b), SKILL.md (12122b), _meta.json (145b)\n\nFile v1.0.20:SKILL.md\n\n---\nname: aws-wechat-article-review\ndescription: 公众号审稿｜公众号校对｜敏感词检测｜内容合规 — 公众号发布前合规审查：敏感词扫描、错别字检测、政治合规、平台规范校验，一次性输出修改清单。面向公众号编辑、自媒体作者、合规岗。触发词：「审稿」「审核」「校对」「合规」「敏感词」「错别字」「稿子检查一下」「稿子帮我看看」「稿子写完了」「文章检查一下」「检查下有没有问题」「能不能发」「发布前检查」。需要多环节串联（写+审+排+配图+发）请走 aws-wechat-article-main。\nhomepage: https://aiworkskills.cn\nurl: https://github.com/aiworkskills/wechat-article-skills\nmetadata:\n  openclaw:\n    requires:\n      env:\n        - WECHAT_1_APPID\n        - WECHAT_1_APPSECRET\n      bins:\n        - python3\n    primaryEnv: aws.env\n---\n\n# 审稿与合规\n\n**公众号发布前合规守门员** —— 敏感词、错别字、平台规范一次性筛查，输出可执行修改清单。\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 以规则/清单审稿为主；仅在文末需补齐往期推荐链接时会调用同套件的 `getdraft.py` 请求微信 API。\n\n- **凭证**：可选读取 `aws.env` 的 `WECHAT_{N}_APPID` / `WECHAT_{N}_APPSECRET`（仅在本篇 `embeds.related_articles.manual` 为空且用户希望自动补齐时）\n- **网络**：可选 `api.weixin.qq.com`（freepublish/batchget 查询已发正文）\n- **文件读**：仓库内 `.aws-article/config.yaml`、`.aws-article/writing-spec.md`、`.aws-article/presets/review-rules.yaml`、本篇 `draft.md` / `article.html` / `article.yaml`\n- **文件写**：本篇 `article.md` 定稿、审稿记录\n- **shell**：可选 `python3 {baseDir}/../aws-wechat-article-publish/scripts/getdraft.py`\n\n## 配套 skill（informational）\n\n本 skill 是 `aws-wechat-article-*` 一条龙公众号套件的审稿环节（入口 `aws-wechat-article-main`）。完整说明见 [源码仓库](https://github.com/aiworkskills/wechat-article-skills)。\n\n## 路由\n\n「能不能发」若含代为发布或从稿到发出整条收尾 → [aws-wechat-article-main](../aws-wechat-article-main/SKILL.md)。\n\n对文章做系统性检查，发现问题并引导修改。\n\n## 两种审稿模式\n\n| 模式 | 时机 | 检查重点 |\n|------|------|---------|\n| **内容审** | writing 之后、formatting 之前 | 内容质量、写作规范、敏感词、配图标记 |\n| **终审** | publish 之前 | 排版完整性、图片就位、发布要素齐全 |\n\n自动识别：有 `article.html` → 终审模式，否则 → 内容审模式。\n\n## 工作流\n\n```\n审稿进度：\n- [ ] 第1步：环境检查 + 本篇约束与规范\n- [ ] 第2步：逐项检查\n- [ ] 第3步：输出审稿结果\n- [ ] 第4步：修改循环 🔄\n- [ ] 第5步：确认通过 → **文末 embed（⛔ BLOCKING）** → 保存 `article.md` 定稿\n```\n\n### 智能体行为约束（与定稿强相关）\n\n- **禁止**在未完成 **第5步「文末 embed」**（见下 **⛔ BLOCKING**）的情况下，将稿件称为「已定稿」、写入 **`article.md`**、或进入 **排版（`format.py`）**。\n- **禁止**用「用户没提」「节省时间」等理由跳过文末占位符；**唯一例外**：用户**书面**声明本篇不要任何嵌入元素（名片/小程序/链接），则须在审稿记录中写明「用户声明跳过 embed」，且仍须确认不是误操作。\n- **一条龙 / 完整流程**（[main SKILL](../aws-wechat-article-main/SKILL.md)）中，**内容审**产出的 **`article.md` 必须已含文末 embed**（按合并规则或合法省略），再进入排版。\n\n### 第1步：环境检查 + 本篇约束与规范 ⛔\n\n任何操作执行前，**必须**按 **[首次引导](../aws-wechat-article-main/references/first-time-setup.md)** 执行其中的 **「检测顺序」**。检测通过后才能进行以下操作（或用户明确书面确认「本次不检查」）：\n\n从选题到发布的阻断规则见 [main SKILL](../aws-wechat-article-main/SKILL.md)；**单独启用本 skill** 时亦须先满足同一套环境检查（或用户按 main 约定声明「本次例外」）。\n\n然后读取：\n\n- **`.aws-article/writing-spec.md`**（如有）\n- **`.aws-article/presets/review-rules.yaml`**（如有）\n- **本篇合并配置**（与 [writing](../aws-wechat-article-writing/SKILL.md)、`format.py` 一致）：先 **`.aws-article/config.yaml`** 顶层（不含 `writing_model` / `image_model`），再叠 **本篇目录 `article.yaml`**（**同键本篇优先**；**仅** `embeds.related_articles` 与全局深度合并，其余 `embeds` 仍以全局为准）。审稿与内容向检查以合并结果为准（如 `review_output_format`、`custom_sensitive_words`、`forbidden_words`、`target_reader`、`tone`、`image_density` 等）。字段说明：[articlescreening-schema.md](../aws-wechat-article-main/references/articlescreening-schema.md)。\n\n**fallback**：合并后仍缺关键约束时向用户说明「部分维度无法按本篇约束对齐」，并建议补全 `config.yaml` / `article.yaml`；无写作规范时跳过规范检查项；无自定义审稿规则时仅执行内置检查清单 [references/checklist.md](references/checklist.md)。\n\n### 第2步：逐项检查\n\n按模式执行不同检查项，详见：[references/checklist.md](references/checklist.md)\n\n**内容审** 检查 6 个维度：\n\n| 维度 | 检查内容 |\n|------|---------|\n| **标题** | 长度、禁用套路、与正文一致性 |\n| **摘要** | 长度、信息量、与正文一致性 |\n| **正文** | 敏感词、禁用词、错别字、事实出处 |\n| **写作规范** | 对照 writing-spec.md 检查用词、句式、段落、AI 味；深度与调性是否与 **本篇合并配置** 的 `target_reader`、`tone` 一致 |\n| **配图标记** | 封面标记存在、数量与 **本篇合并配置** 的 `image_density` 匹配、描述清晰 |\n| **文末 embed** | 定稿前须完成 **第5步 ⛔ BLOCKING**（与 `format.py` 的 `{embed:…}` 一致）；未写入 `article.md` 不得定稿 |\n| **原创标注** | 按 original_attribution 处理 |\n\n**终审** 额外检查：\n\n| 维度 | 检查内容 |\n|------|---------|\n| 排版 | article.html 存在且完整 |\n| 图片 | imgs/ 下图片齐全、placeholder 已替换 |\n| 发布要素 | 标题/摘要/作者/封面 全部就绪 |\n\n### 第3步：输出审稿结果\n\n按 `review_output_format` 输出：\n- **分块详细**：按维度分块，逐项列 ✅/❌ + 修改建议\n- **简要清单**：表格式，一行一项\n\n输出模板：[references/output-format.md](references/output-format.md)\n\n结果分三级：\n- 🔴 **必须修改**：不改不能过（敏感词、严重错别字、缺封面）\n- 🟡 **建议修改**：改了更好（用词优化、段落调整）\n- 🟢 **通过**：无问题\n\n### 第4步：修改循环 🔄\n\n有 🔴 项时**必须进入修改循环**：\n\n```\n发现问题 → 展示审稿结果 → 等用户/agent 修改 → 重新检查 → 直到无 🔴\n```\n\n修改方式：\n- Agent 直接修改 `draft.md`\n- 用户手动修改后说「改好了」\n- 调用 writing skill 的 rewrite 能力\n\n每轮修改后自动重审被标记为 🔴 的项，不需要全量重审。\n\n> ⚠️ **Step 4 完成不代表可以保存 `article.md`**。必须先完成 Step 5（文末 embed ⛔⛔ BLOCKING）才能写入 `article.md` 或进入排版。\n\n### 第5步：确认通过 → 文末 embed → 保存定稿 ⛔⛔ BLOCKING\n\n全部 🔴 项消除后：\n1. 展示最终审稿结果\n2. 等待用户确认 ⛔\n3. **⛔ BLOCKING · 文末 `embeds`**：**在写入 `article.md` 之前**完成本节下方「规则与表格」——**先读取** `.aws-article/config.yaml` 并与本篇 `article.yaml` **合并**（与第 1 步一致：**除 `embeds.related_articles` 外，`embeds` 仅以全局为准**；**`related_articles` 与全局深度合并**），再在**正文末尾**（原有正文之后）按规则**追加或合法省略**占位符。**占位符必须与合并后可解析的配置一致**，否则排版阶段会失败。**未完成本节不得保存定稿、不得调用 `format.py`。**\n4. 将已含文末 embed（或已按规则省略并记录在审稿说明中）的稿件保存为 **`article.md`（定稿）**。\n\n**定稿文末 `embeds`（规则与表格）**\n\n| 占位符 | 何时写入文末 | 配置对齐 |\n|--------|----------------|----------|\n| `{embed:profile:…}` | 全局 **`embeds.profiles`** 存在**至少一条有效项**（非空 `nickname`） | 每条有效 profile **一行**，占位中 `…` = 该项 `nickname` |\n| `{embed:miniprogram:…}` | 全局 **`embeds.miniprograms`** 存在**至少一条有效项**（非空 `title`） | 每条有效项一行，`…` = `title` |\n| `{embed:miniprogram_card:…}` | 全局 **`embeds.miniprogram_cards`** 存在**至少一条有效项**（非空 `title`） | 每条有效项一行，`…` = `title` |\n| `{embed:link:…}` | **往期链接**：合并后 **`embeds.related_articles.manual`** 有有效项时；或见下方「无 manual」 | `…` = 该项 `name`；**文末相关链接至多 3 条** |\n\n- **前三类（名片 / 小程序文字链 / 小程序卡片）**：若对应列表**未配置或为空或无非空关键字段**，**不追加**该类占位符，无需处理。\n- **往期 `{embed:link:…}`**：\n  - 若合并后 **`manual` 已有** `name` + `url`：在文末追加对应占位符，**最多 3 条**（超过则只保留 3 条，优先与本文主题最相关的条目或按列表顺序取前 3）。\n  - 若合并后 **`manual` 缺失或为空**：在**仓库根**执行  \n    `python {baseDir}/../aws-wechat-article-publish/scripts/getdraft.py published-fields`  \n    输出为 JSON 数组（每项含 `title`、`digest`、`url`）。结合**本文主题与摘要**，从已发布正式文章中**选取至多 3 篇**相关条目；将选中项写入**本篇** `article.yaml` 的 **`embeds.related_articles.manual`**（每项 `name`（与占位一致、简短可读）+ `url`），再在 `article.md` 文末追加 `{embed:link:name}`。**勿改**全局 `config.yaml` 仅为本篇补链接。若命令失败（无凭证、网络、接口错误）或用户书面声明跳过往期：**不伪造** `manual`，可省略该类占位并在审稿说明中注明原因。\n\n字段含义与示例见 **`{baseDir}/../aws-wechat-article-main/references/config.example.yaml`** 的 `embeds` 注释及 **[topics SKILL](../aws-wechat-article-topics/SKILL.md)** 文末「推荐链接」说明；排版脚本据此生成 `article.html`。\n\n**全空时的处理**：当所有 embed 配置（profiles / miniprograms / miniprogram_cards / related_articles）均为空或未配置时，仍须在审稿输出中**显式标注**「文末 embed：无配置，已跳过」，**不得静默跳过**。这确保流程可追溯，避免遗漏。\n\n## 自定义检查规则\n\n用户可在 `.aws-article/presets/review-rules.yaml` 添加自定义检查项：\n\n```yaml\n# .aws-article/presets/review-rules.yaml\ncustom_rules:\n  - name: 品牌名称规范\n    check: 正文中「XX公司」必须使用全称，不能简写\n    level: 必须    # 必须 / 建议\n\n  - name: 数据来源\n    check: 所有引用的数据必须标注来源和日期\n    level: 必须\n\n  - name: CTA 检查\n    check: 文末必须包含明确的行动号召\n    level: 建议\n```\n\n自定义规则会追加到标准检查项之后执行。\n\n## 过程文件\n\n| 模式 | 读取 | 产出 |\n|------|------|------|\n| 内容审 | `draft.md`、**`.aws-article/config.yaml` + 本篇 `article.yaml`**、`writing-spec.md` | `review.md`、`article.md`（定稿） |\n| 终审 | `article.html`、`imgs/`、同上合并配置、`article.yaml`（发布元数据等） | `review.md`（终审结果） |\n\nFile v1.0.20:_meta.json\n\n{\n  \"ownerId\": \"kn7f5hvxj1x2ctd5vqnec5x1zs82ce6h\",\n  \"slug\": \"aws-wechat-article-review\",\n  \"version\": \"1.0.20\",\n  \"publishedAt\": 1776897330166\n}\n\nFile v1.0.20:references/checklist.md\n\n# 审稿检查清单\n\n## 内容审检查项（writing 之后）\n\n### 标题\n\n- [ ] 字数不超过 `title_max_length`\n- [ ] 不含 `forbidden_title_phrases` 中的套路\n- [ ] 与正文内容一致，不做标题党\n- [ ] 有吸引力，能让读者想点进来\n\n### 摘要\n\n- [ ] 字数在 `summary_length` 范围内\n- [ ] 能概括文章核心价值\n- [ ] 与正文内容一致\n- [ ] 不是正文第一段的复制\n\n### 正文内容\n\n- [ ] 不含 `custom_sensitive_words` 和 `forbidden_words`\n- [ ] 无明显错别字和语病\n- [ ] 事实与数据有出处（如适用）\n- [ ] 原创/转载标注按 `original_attribution` 处理\n- [ ] 开头 2-3 句有吸引力\n\n### 写作规范合规\n\n对照 `.aws-article/writing-spec.md` 检查（如有）：\n\n- [ ] 用词规范：标点、中英文间距、数字格式\n- [ ] 句式偏好：句长、主动语态、无套话\n- [ ] 段落规范：段长、核心观点位置\n- [ ] 禁止事项：无 AI 味表达、无夸张承诺、无未验证数据\n- [ ] 品牌调性：与规范中的调性描述一致\n\n### 配图标记\n\n- [ ] 封面标记存在（`![封面：...]`）\n- [ ] 配图数量与 `image_density` 配置匹配\n- [ ] 每个标记的描述清晰、有具体内容（不是泛泛的「配图」）\n- [ ] 标记类型合理（信息图/氛围/实证等与段落内容匹配）\n- [ ] 实证类标记注明了需用户提供\n\n### 结构\n\n- [ ] 小标题密度符合 `heading_density`\n- [ ] 结尾有力（总结/金句/行动号召）\n- [ ] 文末引导区块按 `closing_block` 处理\n- [ ] 若 config 中配置了 `target_word_count`，篇幅应在该范围内\n\n---\n\n## 终审检查项（publish 之前）\n\n在内容审的基础上，额外检查：\n\n### 排版\n\n- [ ] `article.html` 存在且内容完整\n- [ ] HTML 中无乱码或格式异常\n\n### 图片\n\n- [ ] `imgs/` 目录存在\n- [ ] 封面图已生成（`00-cover.*`）\n- [ ] 所有 `placeholder` 已替换为实际图片路径\n- [ ] 图片文件实际存在\n\n### 发布要素\n\n- [ ] 标题、摘要、作者已最终确认\n- [ ] 正文无未替换的占位符或草稿标记\n- [ ] 如需开启评论/仅粉丝可评，已确认设置\n\n---\n\n## 自定义规则\n\n`.aws-article/presets/review-rules.yaml` 中的规则追加在标准项之后执行。\n\nFile v1.0.20:references/output-format.md\n\n# 审稿输出模板\n\n## 分块详细格式\n\n```markdown\n## 审稿结果（内容审）\n\n### 标题\n- [x] 字数：22 字 ≤ 25 字上限 ✅\n- [ ] 发现禁用套路「建议收藏」 ❌\n- 🔴 修改建议：去掉「建议收藏」，改为更具体的价值承诺\n\n### 摘要\n- [x] 字数：95 字，在 summary_length 范围内（上限 128 字，微信 digest 限制） ✅\n- [x] 与正文一致 ✅\n\n### 正文\n- [x] 敏感词检查通过 ✅\n- [ ] 第 3 段发现错别字「帐号」→「账号」 ❌\n- [x] 原创标注已添加 ✅\n- 🔴 修改建议：修正第 3 段错别字\n\n### 写作规范\n- [x] 段落长度符合短段要求 ✅\n- [ ] 第 5 段使用了「随着科技的发展」开头 ❌\n- 🟡 建议修改：换一个更具体的开头\n\n### 配图标记\n- [x] 封面标记存在 ✅\n- [x] 配图数量 4 张，符合「每节一图」 ✅\n- [ ] 第 2 张标记描述过于笼统「配图」 ❌\n- 🟡 建议修改：补充具体描述，如「信息图：3个方案的对比表」\n\n### 结构\n- [x] 小标题密度达标 ✅\n- [x] 结尾有行动号召 ✅\n\n---\n\n## 总结\n\n| 级别 | 数量 | 详情 |\n|------|------|------|\n| 🔴 必须修改 | 2 | 标题禁用套路、正文错别字 |\n| 🟡 建议修改 | 2 | AI 味开头、配图描述 |\n| 🟢 通过 | 8 | |\n\n**下一步**：修正 🔴 项后重审 → 通过后保存为 article.md\n```\n\n---\n\n## 简要清单格式\n\n```markdown\n## 审稿结果（简要）\n\n| 检查项 | 结果 | 说明 |\n|--------|------|------|\n| 标题长度 | ✅ | 22/25 字 |\n| 标题套路 | 🔴 | 含「建议收藏」 |\n| 摘要 | ✅ | 95 字 |\n| 敏感词 | ✅ | 通过 |\n| 错别字 | 🔴 | 「帐号」→「账号」 |\n| 原创标注 | ✅ | 已添加 |\n| 写作规范 | 🟡 | AI 味开头 |\n| 配图标记 | 🟡 | 第2张描述不够具体 |\n| 结构 | ✅ | 达标 |\n\n**🔴 必须修改**：标题去掉禁用套路、修正错别字\n**🟡 建议修改**：换开头、补充配图描述\n```\n\n---\n\n## 终审格式\n\n```markdown\n## 终审结果\n\n| 检查项 | 结果 | 说明 |\n|--------|------|------|\n| 排版完整 | ✅ | article.html 存在 |\n| 封面图 | ✅ | 00-cover.png |\n| 正文配图 | ✅ | 4/4 张已替换 |\n| 占位符 | ✅ | 无残留 placeholder |\n| 标题确认 | ✅ | |\n| 摘要确认 | ✅ | |\n| 评论设置 | ✅ | 开启评论 |\n\n**结论**：✅ 可以发布\n```\n\n---\n\n## 修改循环格式\n\n重审时只显示之前标记为 🔴 的项：\n\n```markdown\n## 重审结果\n\n### 之前的 🔴 项\n- [x] 标题：已去掉「建议收藏」 ✅ → 已修正\n- [x] 错别字：「帐号」已改为「账号」 ✅ → 已修正\n\n**结论**：🔴 项已全部消除，可保存为定稿\n```\n\nFile v1.0.20:skill.json\n\n{\n  \"name\": \"aws-wechat-article-review\",\n  \"version\": \"0.3.0\",\n  \"author\": \"aiworkskills\",\n  \"description\": \"审核公众号文章，检查敏感词、错别字、合规性和写作规范，输出修改清单。\",\n  \"license\": \"MIT\",\n  \"homepage\": \"https://github.com/aiworkskills/wechat-article-skills\",\n  \"tags\": [\"wechat\", \"公众号\", \"review\", \"compliance\"],\n  \"permissions\": [\"filesystem\"],\n  \"entryPoint\": {\n    \"type\": \"natural\",\n    \"path\": \"SKILL.md\"\n  }\n}\n\nArchive v1.0.19: 5 files, 8977 bytes\n\nFiles: references/checklist.md (2261b), references/output-format.md (2696b), skill.json (467b), SKILL.md (12071b), _meta.json (145b)\n\nFile v1.0.19:SKILL.md\n\n---\nname: aws-wechat-article-review\ndescription: 公众号审稿｜公众号校对｜敏感词检测｜内容合规 — 公众号发布前合规审查：敏感词扫描、错别字检测、政治合规、平台规范校验，一次性输出修改清单。面向公众号编辑、自媒体作者、合规岗。触发词：「审稿」「审核」「校对」「合规」「敏感词」「错别字」「稿子检查一下」「稿子帮我看看」「稿子写完了」「文章检查一下」「检查下有没有问题」「能不能发」「发布前检查」。需要多环节串联（写+审+排+配图+发）请走 aws-wechat-article-main。\nhomepage: https://aiworkskills.cn\nurl: https://github.com/aiworkskills/wechat-article-skills\nmetadata:\n  openclaw:\n    requires:\n      env: []\n      bins:\n        - python3\n    primaryEnv: aws.env\n---\n\n# 审稿与合规\n\n**公众号发布前合规守门员** —— 敏感词、错别字、平台规范一次性筛查，输出可执行修改清单。\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 以规则/清单审稿为主；仅在文末需补齐往期推荐链接时会调用同套件的 `getdraft.py` 请求微信 API。\n\n- **凭证**：可选读取 `aws.env` 的 `WECHAT_{N}_APPID` / `WECHAT_{N}_APPSECRET`（仅在本篇 `embeds.related_articles.manual` 为空且用户希望自动补齐时）\n- **网络**：可选 `api.weixin.qq.com`（freepublish/batchget 查询已发正文）\n- **文件读**：仓库内 `.aws-article/config.yaml`、`.aws-article/writing-spec.md`、`.aws-article/presets/review-rules.yaml`、本篇 `draft.md` / `article.html` / `article.yaml`\n- **文件写**：本篇 `article.md` 定稿、审稿记录\n- **shell**：可选 `python3 {baseDir}/../aws-wechat-article-publish/scripts/getdraft.py`\n\n## 配套 skill（informational）\n\n本 skill 是 `aws-wechat-article-*` 一条龙公众号套件的审稿环节（入口 `aws-wechat-article-main`）。完整说明见 [源码仓库](https://github.com/aiworkskills/wechat-article-skills)。\n\n## 路由\n\n「能不能发」若含代为发布或从稿到发出整条收尾 → [aws-wechat-article-main](../aws-wechat-article-main/SKILL.md)。\n\n对文章做系统性检查，发现问题并引导修改。\n\n## 两种审稿模式\n\n| 模式 | 时机 | 检查重点 |\n|------|------|---------|\n| **内容审** | writing 之后、formatting 之前 | 内容质量、写作规范、敏感词、配图标记 |\n| **终审** | publish 之前 | 排版完整性、图片就位、发布要素齐全 |\n\n自动识别：有 `article.html` → 终审模式，否则 → 内容审模式。\n\n## 工作流\n\n```\n审稿进度：\n- [ ] 第1步：环境检查 + 本篇约束与规范\n- [ ] 第2步：逐项检查\n- [ ] 第3步：输出审稿结果\n- [ ] 第4步：修改循环 🔄\n- [ ] 第5步：确认通过 → **文末 embed（⛔ BLOCKING）** → 保存 `article.md` 定稿\n```\n\n### 智能体行为约束（与定稿强相关）\n\n- **禁止**在未完成 **第5步「文末 embed」**（见下 **⛔ BLOCKING**）的情况下，将稿件称为「已定稿」、写入 **`article.md`**、或进入 **排版（`format.py`）**。\n- **禁止**用「用户没提」「节省时间」等理由跳过文末占位符；**唯一例外**：用户**书面**声明本篇不要任何嵌入元素（名片/小程序/链接），则须在审稿记录中写明「用户声明跳过 embed」，且仍须确认不是误操作。\n- **一条龙 / 完整流程**（[main SKILL](../aws-wechat-article-main/SKILL.md)）中，**内容审**产出的 **`article.md` 必须已含文末 embed**（按合并规则或合法省略），再进入排版。\n\n### 第1步：环境检查 + 本篇约束与规范 ⛔\n\n任何操作执行前，**必须**按 **[首次引导](../aws-wechat-article-main/references/first-time-setup.md)** 执行其中的 **「检测顺序」**。检测通过后才能进行以下操作（或用户明确书面确认「本次不检查」）：\n\n从选题到发布的阻断规则见 [main SKILL](../aws-wechat-article-main/SKILL.md)；**单独启用本 skill** 时亦须先满足同一套环境检查（或用户按 main 约定声明「本次例外」）。\n\n然后读取：\n\n- **`.aws-article/writing-spec.md`**（如有）\n- **`.aws-article/presets/review-rules.yaml`**（如有）\n- **本篇合并配置**（与 [writing](../aws-wechat-article-writing/SKILL.md)、`format.py` 一致）：先 **`.aws-article/config.yaml`** 顶层（不含 `writing_model` / `image_model`），再叠 **本篇目录 `article.yaml`**（**同键本篇优先**；**仅** `embeds.related_articles` 与全局深度合并，其余 `embeds` 仍以全局为准）。审稿与内容向检查以合并结果为准（如 `review_output_format`、`custom_sensitive_words`、`forbidden_words`、`target_reader`、`tone`、`image_density` 等）。字段说明：[articlescreening-schema.md](../aws-wechat-article-main/references/articlescreening-schema.md)。\n\n**fallback**：合并后仍缺关键约束时向用户说明「部分维度无法按本篇约束对齐」，并建议补全 `config.yaml` / `article.yaml`；无写作规范时跳过规范检查项；无自定义审稿规则时仅执行内置检查清单 [references/checklist.md](references/checklist.md)。\n\n### 第2步：逐项检查\n\n按模式执行不同检查项，详见：[references/checklist.md](references/checklist.md)\n\n**内容审** 检查 6 个维度：\n\n| 维度 | 检查内容 |\n|------|---------|\n| **标题** | 长度、禁用套路、与正文一致性 |\n| **摘要** | 长度、信息量、与正文一致性 |\n| **正文** | 敏感词、禁用词、错别字、事实出处 |\n| **写作规范** | 对照 writing-spec.md 检查用词、句式、段落、AI 味；深度与调性是否与 **本篇合并配置** 的 `target_reader`、`tone` 一致 |\n| **配图标记** | 封面标记存在、数量与 **本篇合并配置** 的 `image_density` 匹配、描述清晰 |\n| **文末 embed** | 定稿前须完成 **第5步 ⛔ BLOCKING**（与 `format.py` 的 `{embed:…}` 一致）；未写入 `article.md` 不得定稿 |\n| **原创标注** | 按 original_attribution 处理 |\n\n**终审** 额外检查：\n\n| 维度 | 检查内容 |\n|------|---------|\n| 排版 | article.html 存在且完整 |\n| 图片 | imgs/ 下图片齐全、placeholder 已替换 |\n| 发布要素 | 标题/摘要/作者/封面 全部就绪 |\n\n### 第3步：输出审稿结果\n\n按 `review_output_format` 输出：\n- **分块详细**：按维度分块，逐项列 ✅/❌ + 修改建议\n- **简要清单**：表格式，一行一项\n\n输出模板：[references/output-format.md](references/output-format.md)\n\n结果分三级：\n- 🔴 **必须修改**：不改不能过（敏感词、严重错别字、缺封面）\n- 🟡 **建议修改**：改了更好（用词优化、段落调整）\n- 🟢 **通过**：无问题\n\n### 第4步：修改循环 🔄\n\n有 🔴 项时**必须进入修改循环**：\n\n```\n发现问题 → 展示审稿结果 → 等用户/agent 修改 → 重新检查 → 直到无 🔴\n```\n\n修改方式：\n- Agent 直接修改 `draft.md`\n- 用户手动修改后说「改好了」\n- 调用 writing skill 的 rewrite 能力\n\n每轮修改后自动重审被标记为 🔴 的项，不需要全量重审。\n\n> ⚠️ **Step 4 完成不代表可以保存 `article.md`**。必须先完成 Step 5（文末 embed ⛔⛔ BLOCKING）才能写入 `article.md` 或进入排版。\n\n### 第5步：确认通过 → 文末 embed → 保存定稿 ⛔⛔ BLOCKING\n\n全部 🔴 项消除后：\n1. 展示最终审稿结果\n2. 等待用户确认 ⛔\n3. **⛔ BLOCKING · 文末 `embeds`**：**在写入 `article.md` 之前**完成本节下方「规则与表格」——**先读取** `.aws-article/config.yaml` 并与本篇 `article.yaml` **合并**（与第 1 步一致：**除 `embeds.related_articles` 外，`embeds` 仅以全局为准**；**`related_articles` 与全局深度合并**），再在**正文末尾**（原有正文之后）按规则**追加或合法省略**占位符。**占位符必须与合并后可解析的配置一致**，否则排版阶段会失败。**未完成本节不得保存定稿、不得调用 `format.py`。**\n4. 将已含文末 embed（或已按规则省略并记录在审稿说明中）的稿件保存为 **`article.md`（定稿）**。\n\n**定稿文末 `embeds`（规则与表格）**\n\n| 占位符 | 何时写入文末 | 配置对齐 |\n|--------|----------------|----------|\n| `{embed:profile:…}` | 全局 **`embeds.profiles`** 存在**至少一条有效项**（非空 `nickname`） | 每条有效 profile **一行**，占位中 `…` = 该项 `nickname` |\n| `{embed:miniprogram:…}` | 全局 **`embeds.miniprograms`** 存在**至少一条有效项**（非空 `title`） | 每条有效项一行，`…` = `title` |\n| `{embed:miniprogram_card:…}` | 全局 **`embeds.miniprogram_cards`** 存在**至少一条有效项**（非空 `title`） | 每条有效项一行，`…` = `title` |\n| `{embed:link:…}` | **往期链接**：合并后 **`embeds.related_articles.manual`** 有有效项时；或见下方「无 manual」 | `…` = 该项 `name`；**文末相关链接至多 3 条** |\n\n- **前三类（名片 / 小程序文字链 / 小程序卡片）**：若对应列表**未配置或为空或无非空关键字段**，**不追加**该类占位符，无需处理。\n- **往期 `{embed:link:…}`**：\n  - 若合并后 **`manual` 已有** `name` + `url`：在文末追加对应占位符，**最多 3 条**（超过则只保留 3 条，优先与本文主题最相关的条目或按列表顺序取前 3）。\n  - 若合并后 **`manual` 缺失或为空**：在**仓库根**执行  \n    `python {baseDir}/../aws-wechat-article-publish/scripts/getdraft.py published-fields`  \n    输出为 JSON 数组（每项含 `title`、`digest`、`url`）。结合**本文主题与摘要**，从已发布正式文章中**选取至多 3 篇**相关条目；将选中项写入**本篇** `article.yaml` 的 **`embeds.related_articles.manual`**（每项 `name`（与占位一致、简短可读）+ `url`），再在 `article.md` 文末追加 `{embed:link:name}`。**勿改**全局 `config.yaml` 仅为本篇补链接。若命令失败（无凭证、网络、接口错误）或用户书面声明跳过往期：**不伪造** `manual`，可省略该类占位并在审稿说明中注明原因。\n\n字段含义与示例见 **`{baseDir}/../aws-wechat-article-main/references/config.example.yaml`** 的 `embeds` 注释及 **[topics SKILL](../aws-wechat-article-topics/SKILL.md)** 文末「推荐链接」说明；排版脚本据此生成 `article.html`。\n\n**全空时的处理**：当所有 embed 配置（profiles / miniprograms / miniprogram_cards / related_articles）均为空或未配置时，仍须在审稿输出中**显式标注**「文末 embed：无配置，已跳过」，**不得静默跳过**。这确保流程可追溯，避免遗漏。\n\n## 自定义检查规则\n\n用户可在 `.aws-article/presets/review-rules.yaml` 添加自定义检查项：\n\n```yaml\n# .aws-article/presets/review-rules.yaml\ncustom_rules:\n  - name: 品牌名称规范\n    check: 正文中「XX公司」必须使用全称，不能简写\n    level: 必须    # 必须 / 建议\n\n  - name: 数据来源\n    check: 所有引用的数据必须标注来源和日期\n    level: 必须\n\n  - name: CTA 检查\n    check: 文末必须包含明确的行动号召\n    level: 建议\n```\n\n自定义规则会追加到标准检查项之后执行。\n\n## 过程文件\n\n| 模式 | 读取 | 产出 |\n|------|------|------|\n| 内容审 | `draft.md`、**`.aws-article/config.yaml` + 本篇 `article.yaml`**、`writing-spec.md` | `review.md`、`article.md`（定稿） |\n| 终审 | `article.html`、`imgs/`、同上合并配置、`article.yaml`（发布元数据等） | `review.md`（终审结果） |\n\nFile v1.0.19:_meta.json\n\n{\n  \"ownerId\": \"kn7f5hvxj1x2ctd5vqnec5x1zs82ce6h\",\n  \"slug\": \"aws-wechat-article-review\",\n  \"version\": \"1.0.19\",\n  \"publishedAt\": 1776875761727\n}\n\nFile v1.0.19:references/checklist.md\n\n# 审稿检查清单\n\n## 内容审检查项（writing 之后）\n\n### 标题\n\n- [ ] 字数不超过 `title_max_length`\n- [ ] 不含 `forbidden_title_phrases` 中的套路\n- [ ] 与正文内容一致，不做标题党\n- [ ] 有吸引力，能让读者想点进来\n\n### 摘要\n\n- [ ] 字数在 `summary_length` 范围内\n- [ ] 能概括文章核心价值\n- [ ] 与正文内容一致\n- [ ] 不是正文第一段的复制\n\n### 正文内容\n\n- [ ] 不含 `custom_sensitive_words` 和 `forbidden_words`\n- [ ] 无明显错别字和语病\n- [ ] 事实与数据有出处（如适用）\n- [ ] 原创/转载标注按 `original_attribution` 处理\n- [ ] 开头 2-3 句有吸引力\n\n### 写作规范合规\n\n对照 `.aws-article/writing-spec.md` 检查（如有）：\n\n- [ ] 用词规范：标点、中英文间距、数字格式\n- [ ] 句式偏好：句长、主动语态、无套话\n- [ ] 段落规范：段长、核心观点位置\n- [ ] 禁止事项：无 AI 味表达、无夸张承诺、无未验证数据\n- [ ] 品牌调性：与规范中的调性描述一致\n\n### 配图标记\n\n- [ ] 封面标记存在（`![封面：...]`）\n- [ ] 配图数量与 `image_density` 配置匹配\n- [ ] 每个标记的描述清晰、有具体内容（不是泛泛的「配图」）\n- [ ] 标记类型合理（信息图/氛围/实证等与段落内容匹配）\n- [ ] 实证类标记注明了需用户提供\n\n### 结构\n\n- [ ] 小标题密度符合 `heading_density`\n- [ ] 结尾有力（总结/金句/行动号召）\n- [ ] 文末引导区块按 `closing_block` 处理\n- [ ] 若 config 中配置了 `target_word_count`，篇幅应在该范围内\n\n---\n\n## 终审检查项（publish 之前）\n\n在内容审的基础上，额外检查：\n\n### 排版\n\n- [ ] `article.html` 存在且内容完整\n- [ ] HTML 中无乱码或格式异常\n\n### 图片\n\n- [ ] `imgs/` 目录存在\n- [ ] 封面图已生成（`00-cover.*`）\n- [ ] 所有 `placeholder` 已替换为实际图片路径\n- [ ] 图片文件实际存在\n\n### 发布要素\n\n- [ ] 标题、摘要、作者已最终确认\n- [ ] 正文无未替换的占位符或草稿标记\n- [ ] 如需开启评论/仅粉丝可评，已确认设置\n\n---\n\n## 自定义规则\n\n`.aws-article/presets/review-rules.yaml` 中的规则追加在标准项之后执行。\n\nFile v1.0.19:references/output-format.md\n\n# 审稿输出模板\n\n## 分块详细格式\n\n```markdown\n## 审稿结果（内容审）\n\n### 标题\n- [x] 字数：22 字 ≤ 25 字上限 ✅\n- [ ] 发现禁用套路「建议收藏」 ❌\n- 🔴 修改建议：去掉「建议收藏」，改为更具体的价值承诺\n\n### 摘要\n- [x] 字数：95 字，在 summary_length 范围内（上限 128 字，微信 digest 限制） ✅\n- [x] 与正文一致 ✅\n\n### 正文\n- [x] 敏感词检查通过 ✅\n- [ ] 第 3 段发现错别字「帐号」→「账号」 ❌\n- [x] 原创标注已添加 ✅\n- 🔴 修改建议：修正第 3 段错别字\n\n### 写作规范\n- [x] 段落长度符合短段要求 ✅\n- [ ] 第 5 段使用了「随着科技的发展」开头 ❌\n- 🟡 建议修改：换一个更具体的开头\n\n### 配图标记\n- [x] 封面标记存在 ✅\n- [x] 配图数量 4 张，符合「每节一图」 ✅\n- [ ] 第 2 张标记描述过于笼统「配图」 ❌\n- 🟡 建议修改：补充具体描述，如「信息图：3个方案的对比表」\n\n### 结构\n- [x] 小标题密度达标 ✅\n- [x] 结尾有行动号召 ✅\n\n---\n\n## 总结\n\n| 级别 | 数量 | 详情 |\n|------|------|------|\n| 🔴 必须修改 | 2 | 标题禁用套路、正文错别字 |\n| 🟡 建议修改 | 2 | AI 味开头、配图描述 |\n| 🟢 通过 | 8 | |\n\n**下一步**：修正 🔴 项后重审 → 通过后保存为 article.md\n```\n\n---\n\n## 简要清单格式\n\n```markdown\n## 审稿结果（简要）\n\n| 检查项 | 结果 | 说明 |\n|--------|------|------|\n| 标题长度 | ✅ | 22/25 字 |\n| 标题套路 | 🔴 | 含「建议收藏」 |\n| 摘要 | ✅ | 95 字 |\n| 敏感词 | ✅ | 通过 |\n| 错别字 | 🔴 | 「帐号」→「账号」 |\n| 原创标注 | ✅ | 已添加 |\n| 写作规范 | 🟡 | AI 味开头 |\n| 配图标记 | 🟡 | 第2张描述不够具体 |\n| 结构 | ✅ | 达标 |\n\n**🔴 必须修改**：标题去掉禁用套路、修正错别字\n**🟡 建议修改**：换开头、补充配图描述\n```\n\n---\n\n## 终审格式\n\n```markdown\n## 终审结果\n\n| 检查项 | 结果 | 说明 |\n|--------|------|------|\n| 排版完整 | ✅ | article.html 存在 |\n| 封面图 | ✅ | 00-cover.png |\n| 正文配图 | ✅ | 4/4 张已替换 |\n| 占位符 | ✅ | 无残留 placeholder |\n| 标题确认 | ✅ | |\n| 摘要确认 | ✅ | |\n| 评论设置 | ✅ | 开启评论 |\n\n**结论**：✅ 可以发布\n```\n\n---\n\n## 修改循环格式\n\n重审时只显示之前标记为 🔴 的项：\n\n```markdown\n## 重审结果\n\n### 之前的 🔴 项\n- [x] 标题：已去掉「建议收藏」 ✅ → 已修正\n- [x] 错别字：「帐号」已改为「账号」 ✅ → 已修正\n\n**结论**：🔴 项已全部消除，可保存为定稿\n```\n\nFile v1.0.19:skill.json\n\n{\n  \"name\": \"aws-wechat-article-review\",\n  \"version\": \"0.3.0\",\n  \"author\": \"aiworkskills\",\n  \"description\": \"审核公众号文章，检查敏感词、错别字、合规性和写作规范，输出修改清单。\",\n  \"license\": \"MIT\",\n  \"homepage\": \"https://github.com/aiworkskills/wechat-article-skills\",\n  \"tags\": [\"wechat\", \"公众号\", \"review\", \"compliance\"],\n  \"permissions\": [\"filesystem\"],\n  \"entryPoint\": {\n    \"type\": \"natural\",\n    \"path\": \"SKILL.md\"\n  }\n}\n\nArchive v1.0.18: 5 files, 9102 bytes\n\nFiles: references/checklist.md (2261b), references/output-format.md (2696b), skill.json (467b), SKILL.md (12534b), _meta.json (145b)\n\nFile v1.0.18:SKILL.md\n\n---\nname: aws-wechat-article-review\ndescription: 公众号审稿｜公众号校对｜敏感词检测｜内容合规 — 公众号发布前合规审查：敏感词扫描、错别字检测、政治合规、平台规范校验，一次性输出修改清单。面向公众号编辑、自媒体作者、合规岗。触发词：「审稿」「审核」「校对」「合规」「敏感词」「错别字」「稿子检查一下」「稿子帮我看看」「稿子写完了」「文章检查一下」「检查下有没有问题」「能不能发」「发布前检查」。需要多环节串联（写+审+排+配图+发）请走 aws-wechat-article-main。\nhomepage: https://aiworkskills.cn\nurl: https://github.com/aiworkskills/wechat-article-skills\n---\n\n# 审稿与合规\n\n**公众号发布前合规守门员** —— 敏感词、错别字、平台规范一次性筛查，输出可执行修改清单。\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## 前置依赖 ⛔ 套件必须装齐\n\n`aws-wechat-article-*` 一条龙套件的 9 个 skill 互相引用首次引导、环境校验与规则文档。**单独安装任一 skill 无法正常工作**，必须装齐 9 个：\n\n```\naws-wechat-article-main\naws-wechat-article-topics\naws-wechat-article-writing\naws-wechat-article-review\naws-wechat-article-formatting\naws-wechat-article-images\naws-wechat-article-publish\naws-wechat-article-assets\naws-wechat-sticker\n```\n\n**Agent：进入下方工作流前，先检查当前 `skills/` 目录下上述 9 个子目录是否都存在。**\n\n**若任一缺失** → 停止本 skill 工作流，**不得**尝试代替用户跑脚本或继续；按下述话术回复用户：\n\n> 本套件需 9 个 skill 都装齐才能使用。检测到缺少：`<列出缺失项>`。请执行：\n>\n> ```bash\n> # macOS / Linux / Git Bash\n> for slug in aws-wechat-article-main aws-wechat-article-topics aws-wechat-article-writing aws-wechat-article-review aws-wechat-article-formatting aws-wechat-article-images aws-wechat-article-publish aws-wechat-article-assets aws-wechat-sticker; do\n>   clawhub install \"$slug\"\n> done\n> ```\n>\n> ```powershell\n> # Windows PowerShell\n> 'aws-wechat-article-main','aws-wechat-article-topics','aws-wechat-article-writing','aws-wechat-article-review','aws-wechat-article-formatting','aws-wechat-article-images','aws-wechat-article-publish','aws-wechat-article-assets','aws-wechat-sticker' | ForEach-Object { clawhub install $_ }\n> ```\n>\n> 装完再回本 skill 让我继续。\n\n**9 个全部存在** → 按下方工作流继续。\n\n## 路由\n\n「能不能发」若含代为发布或从稿到发出整条收尾 → [aws-wechat-article-main](../aws-wechat-article-main/SKILL.md)。\n\n对文章做系统性检查，发现问题并引导修改。\n\n## 两种审稿模式\n\n| 模式 | 时机 | 检查重点 |\n|------|------|---------|\n| **内容审** | writing 之后、formatting 之前 | 内容质量、写作规范、敏感词、配图标记 |\n| **终审** | publish 之前 | 排版完整性、图片就位、发布要素齐全 |\n\n自动识别：有 `article.html` → 终审模式，否则 → 内容审模式。\n\n## 工作流\n\n```\n审稿进度：\n- [ ] 第1步：环境检查 + 本篇约束与规范\n- [ ] 第2步：逐项检查\n- [ ] 第3步：输出审稿结果\n- [ ] 第4步：修改循环 🔄\n- [ ] 第5步：确认通过 → **文末 embed（⛔ BLOCKING）** → 保存 `article.md` 定稿\n```\n\n### 智能体行为约束（与定稿强相关）\n\n- **禁止**在未完成 **第5步「文末 embed」**（见下 **⛔ BLOCKING**）的情况下，将稿件称为「已定稿」、写入 **`article.md`**、或进入 **排版（`format.py`）**。\n- **禁止**用「用户没提」「节省时间」等理由跳过文末占位符；**唯一例外**：用户**书面**声明本篇不要任何嵌入元素（名片/小程序/链接），则须在审稿记录中写明「用户声明跳过 embed」，且仍须确认不是误操作。\n- **一条龙 / 完整流程**（[main SKILL](../aws-wechat-article-main/SKILL.md)）中，**内容审**产出的 **`article.md` 必须已含文末 embed**（按合并规则或合法省略），再进入排版。\n\n### 第1步：环境检查 + 本篇约束与规范 ⛔\n\n任何操作执行前，**必须**按 **[首次引导](../aws-wechat-article-main/references/first-time-setup.md)** 执行其中的 **「检测顺序」**。检测通过后才能进行以下操作（或用户明确书面确认「本次不检查」）：\n\n从选题到发布的阻断规则见 [main SKILL](../aws-wechat-article-main/SKILL.md)；**单独启用本 skill** 时亦须先满足同一套环境检查（或用户按 main 约定声明「本次例外」）。\n\n然后读取：\n\n- **`.aws-article/writing-spec.md`**（如有）\n- **`.aws-article/presets/review-rules.yaml`**（如有）\n- **本篇合并配置**（与 [writing](../aws-wechat-article-writing/SKILL.md)、`format.py` 一致）：先 **`.aws-article/config.yaml`** 顶层（不含 `writing_model` / `image_model`），再叠 **本篇目录 `article.yaml`**（**同键本篇优先**；**仅** `embeds.related_articles` 与全局深度合并，其余 `embeds` 仍以全局为准）。审稿与内容向检查以合并结果为准（如 `review_output_format`、`custom_sensitive_words`、`forbidden_words`、`target_reader`、`tone`、`image_density` 等）。字段说明：[articlescreening-schema.md](../aws-wechat-article-main/references/articlescreening-schema.md)。\n\n**fallback**：合并后仍缺关键约束时向用户说明「部分维度无法按本篇约束对齐」，并建议补全 `config.yaml` / `article.yaml`；无写作规范时跳过规范检查项；无自定义审稿规则时仅执行内置检查清单 [references/checklist.md](references/checklist.md)。\n\n### 第2步：逐项检查\n\n按模式执行不同检查项，详见：[references/checklist.md](references/checklist.md)\n\n**内容审** 检查 6 个维度：\n\n| 维度 | 检查内容 |\n|------|---------|\n| **标题** | 长度、禁用套路、与正文一致性 |\n| **摘要** | 长度、信息量、与正文一致性 |\n| **正文** | 敏感词、禁用词、错别字、事实出处 |\n| **写作规范** | 对照 writing-spec.md 检查用词、句式、段落、AI 味；深度与调性是否与 **本篇合并配置** 的 `target_reader`、`tone` 一致 |\n| **配图标记** | 封面标记存在、数量与 **本篇合并配置** 的 `image_density` 匹配、描述清晰 |\n| **文末 embed** | 定稿前须完成 **第5步 ⛔ BLOCKING**（与 `format.py` 的 `{embed:…}` 一致）；未写入 `article.md` 不得定稿 |\n| **原创标注** | 按 original_attribution 处理 |\n\n**终审** 额外检查：\n\n| 维度 | 检查内容 |\n|------|---------|\n| 排版 | article.html 存在且完整 |\n| 图片 | imgs/ 下图片齐全、placeholder 已替换 |\n| 发布要素 | 标题/摘要/作者/封面 全部就绪 |\n\n### 第3步：输出审稿结果\n\n按 `review_output_format` 输出：\n- **分块详细**：按维度分块，逐项列 ✅/❌ + 修改建议\n- **简要清单**：表格式，一行一项\n\n输出模板：[references/output-format.md](references/output-format.md)\n\n结果分三级：\n- 🔴 **必须修改**：不改不能过（敏感词、严重错别字、缺封面）\n- 🟡 **建议修改**：改了更好（用词优化、段落调整）\n- 🟢 **通过**：无问题\n\n### 第4步：修改循环 🔄\n\n有 🔴 项时**必须进入修改循环**：\n\n```\n发现问题 → 展示审稿结果 → 等用户/agent 修改 → 重新检查 → 直到无 🔴\n```\n\n修改方式：\n- Agent 直接修改 `draft.md`\n- 用户手动修改后说「改好了」\n- 调用 writing skill 的 rewrite 能力\n\n每轮修改后自动重审被标记为 🔴 的项，不需要全量重审。\n\n> ⚠️ **Step 4 完成不代表可以保存 `article.md`**。必须先完成 Step 5（文末 embed ⛔⛔ BLOCKING）才能写入 `article.md` 或进入排版。\n\n### 第5步：确认通过 → 文末 embed → 保存定稿 ⛔⛔ BLOCKING\n\n全部 🔴 项消除后：\n1. 展示最终审稿结果\n2. 等待用户确认 ⛔\n3. **⛔ BLOCKING · 文末 `embeds`**：**在写入 `article.md` 之前**完成本节下方「规则与表格」——**先读取** `.aws-article/config.yaml` 并与本篇 `article.yaml` **合并**（与第 1 步一致：**除 `embeds.related_articles` 外，`embeds` 仅以全局为准**；**`related_articles` 与全局深度合并**），再在**正文末尾**（原有正文之后）按规则**追加或合法省略**占位符。**占位符必须与合并后可解析的配置一致**，否则排版阶段会失败。**未完成本节不得保存定稿、不得调用 `format.py`。**\n4. 将已含文末 embed（或已按规则省略并记录在审稿说明中）的稿件保存为 **`article.md`（定稿）**。\n\n**定稿文末 `embeds`（规则与表格）**\n\n| 占位符 | 何时写入文末 | 配置对齐 |\n|--------|----------------|----------|\n| `{embed:profile:…}` | 全局 **`embeds.profiles`** 存在**至少一条有效项**（非空 `nickname`） | 每条有效 profile **一行**，占位中 `…` = 该项 `nickname` |\n| `{embed:miniprogram:…}` | 全局 **`embeds.miniprograms`** 存在**至少一条有效项**（非空 `title`） | 每条有效项一行，`…` = `title` |\n| `{embed:miniprogram_card:…}` | 全局 **`embeds.miniprogram_cards`** 存在**至少一条有效项**（非空 `title`） | 每条有效项一行，`…` = `title` |\n| `{embed:link:…}` | **往期链接**：合并后 **`embeds.related_articles.manual`** 有有效项时；或见下方「无 manual」 | `…` = 该项 `name`；**文末相关链接至多 3 条** |\n\n- **前三类（名片 / 小程序文字链 / 小程序卡片）**：若对应列表**未配置或为空或无非空关键字段**，**不追加**该类占位符，无需处理。\n- **往期 `{embed:link:…}`**：\n  - 若合并后 **`manual` 已有** `name` + `url`：在文末追加对应占位符，**最多 3 条**（超过则只保留 3 条，优先与本文主题最相关的条目或按列表顺序取前 3）。\n  - 若合并后 **`manual` 缺失或为空**：在**仓库根**执行  \n    `python {baseDir}/../aws-wechat-article-publish/scripts/getdraft.py published-fields`  \n    输出为 JSON 数组（每项含 `title`、`digest`、`url`）。结合**本文主题与摘要**，从已发布正式文章中**选取至多 3 篇**相关条目；将选中项写入**本篇** `article.yaml` 的 **`embeds.related_articles.manual`**（每项 `name`（与占位一致、简短可读）+ `url`），再在 `article.md` 文末追加 `{embed:link:name}`。**勿改**全局 `config.yaml` 仅为本篇补链接。若命令失败（无凭证、网络、接口错误）或用户书面声明跳过往期：**不伪造** `manual`，可省略该类占位并在审稿说明中注明原因。\n\n字段含义与示例见 **`{baseDir}/../aws-wechat-article-main/references/config.example.yaml`** 的 `embeds` 注释及 **[topics SKILL](../aws-wechat-article-topics/SKILL.md)** 文末「推荐链接」说明；排版脚本据此生成 `article.html`。\n\n**全空时的处理**：当所有 embed 配置（profiles / miniprograms / miniprogram_cards / related_articles）均为空或未配置时，仍须在审稿输出中**显式标注**「文末 embed：无配置，已跳过」，**不得静默跳过**。这确保流程可追溯，避免遗漏。\n\n## 自定义检查规则\n\n用户可在 `.aws-article/presets/review-rules.yaml` 添加自定义检查项：\n\n```yaml\n# .aws-article/presets/review-rules.yaml\ncustom_rules:\n  - name: 品牌名称规范\n    check: 正文中「XX公司」必须使用全称，不能简写\n    level: 必须    # 必须 / 建议\n\n  - name: 数据来源\n    check: 所有引用的数据必须标注来源和日期\n    level: 必须\n\n  - name: CTA 检查\n    check: 文末必须包含明确的行动号召\n    level: 建议\n```\n\n自定义规则会追加到标准检查项之后执行。\n\n## 过程文件\n\n| 模式 | 读取 | 产出 |\n|------|------|------|\n| 内容审 | `draft.md`、**`.aws-article/config.yaml` + 本篇 `article.yaml`**、`writing-spec.md` | `review.md`、`article.md`（定稿） |\n| 终审 | `article.html`、`imgs/`、同上合并配置、`article.yaml`（发布元数据等） | `review.md`（终审结果） |\n\nFile v1.0.18:_meta.json\n\n{\n  \"ownerId\": \"kn7f5hvxj1x2ctd5vqnec5x1zs82ce6h\",\n  \"slug\": \"aws-wechat-article-review\",\n  \"version\": \"1.0.18\",\n  \"publishedAt\": 1776873182633\n}\n\nFile v1.0.18:references/checklist.md\n\n# 审稿检查清单\n\n## 内容审检查项（writing 之后）\n\n### 标题\n\n- [ ] 字数不超过 `title_max_length`\n- [ ] 不含 `forbidden_title_phrases` 中的套路\n- [ ] 与正文内容一致，不做标题党\n- [ ] 有吸引力，能让读者想点进来\n\n### 摘要\n\n- [ ] 字数在 `summary_length` 范围内\n- [ ] 能概括文章核心价值\n- [ ] 与正文内容一致\n- [ ] 不是正文第一段的复制\n\n### 正文内容\n\n- [ ] 不含 `custom_sensitive_words` 和 `forbidden_words`\n- [ ] 无明显错别字和语病\n- [ ] 事实与数据有出处（如适用）\n- [ ] 原创/转载标注按 `original_attribution` 处理\n- [ ] 开头 2-3 句有吸引力\n\n### 写作规范合规\n\n对照 `.aws-article/writing-spec.md` 检查（如有）：\n\n- [ ] 用词规范：标点、中英文间距、数字格式\n- [ ] 句式偏好：句长、主动语态、无套话\n- [ ] 段落规范：段长、核心观点位置\n- [ ] 禁止事项：无 AI 味表达、无夸张承诺、无未验证数据\n- [ ] 品牌调性：与规范中的调性描述一致\n\n### 配图标记\n\n- [ ] 封面标记存在（`![封面：...]`）\n- [ ] 配图数量与 `image_density` 配置匹配\n- [ ] 每个标记的描述清晰、有具体内容（不是泛泛的「配图」）\n- [ ] 标记类型合理（信息图/氛围/实证等与段落内容匹配）\n- [ ] 实证类标记注明了需用户提供\n\n### 结构\n\n- [ ] 小标题密度符合 `heading_density`\n- [ ] 结尾有力（总结/金句/行动号召）\n- [ ] 文末引导区块按 `closing_block` 处理\n- [ ] 若 config 中配置了 `target_word_count`，篇幅应在该范围内\n\n---\n\n## 终审检查项（publish 之前）\n\n在内容审的基础上，额外检查：\n\n### 排版\n\n- [ ] `article.html` 存在且内容完整\n- [ ] HTML 中无乱码或格式异常\n\n### 图片\n\n- [ ] `imgs/` 目录存在\n- [ ] 封面图已生成（`00-cover.*`）\n- [ ] 所有 `placeholder` 已替换为实际图片路径\n- [ ] 图片文件实际存在\n\n### 发布要素\n\n- [ ] 标题、摘要、作者已最终确认\n- [ ] 正文无未替换的占位符或草稿标记\n- [ ] 如需开启评论/仅粉丝可评，已确认设置\n\n---\n\n## 自定义规则\n\n`.aws-article/presets/review-rules.yaml` 中的规则追加在标准项之后执行。\n\nFile v1.0.18:references/output-format.md\n\n# 审稿输出模板\n\n## 分块详细格式\n\n```markdown\n## 审稿结果（内容审）\n\n### 标题\n- [x] 字数：22 字 ≤ 25 字上限 ✅\n- [ ] 发现禁用套路「建议收藏」 ❌\n- 🔴 修改建议：去掉「建议收藏」，改为更具体的价值承诺\n\n### 摘要\n- [x] 字数：95 字，在 summary_length 范围内（上限 128 字，微信 digest 限制） ✅\n- [x] 与正文一致 ✅\n\n### 正文\n- [x] 敏感词检查通过 ✅\n- [ ] 第 3 段发现错别字「帐号」→「账号」 ❌\n- [x] 原创标注已添加 ✅\n- 🔴 修改建议：修正第 3 段错别字\n\n### 写作规范\n- [x] 段落长度符合短段要求 ✅\n- [ ] 第 5 段使用了「随着科技的发展」开头 ❌\n- 🟡 建议修改：换一个更具体的开头\n\n### 配图标记\n- [x] 封面标记存在 ✅\n- [x] 配图数量 4 张，符合「每节一图」 ✅\n- [ ] 第 2 张标记描述过于笼统「配图」 ❌\n- 🟡 建议修改：补充具体描述，如「信息图：3个方案的对比表」\n\n### 结构\n- [x] 小标题密度达标 ✅\n- [x] 结尾有行动号召 ✅\n\n---\n\n## 总结\n\n| 级别 | 数量 | 详情 |\n|------|------|------|\n| 🔴 必须修改 | 2 | 标题禁用套路、正文错别字 |\n| 🟡 建议修改 | 2 | AI 味开头、配图描述 |\n| 🟢 通过 | 8 | |\n\n**下一步**：修正 🔴 项后重审 → 通过后保存为 article.md\n```\n\n---\n\n## 简要清单格式\n\n```markdown\n## 审稿结果（简要）\n\n| 检查项 | 结果 | 说明 |\n|--------|------|------|\n| 标题长度 | ✅ | 22/25 字 |\n| 标题套路 | 🔴 | 含「建议收藏」 |\n| 摘要 | ✅ | 95 字 |\n| 敏感词 | ✅ | 通过 |\n| 错别字 | 🔴 | 「帐号」→「账号」 |\n| 原创标注 | ✅ | 已添加 |\n| 写作规范 | 🟡 | AI 味开头 |\n| 配图标记 | 🟡 | 第2张描述不够具体 |\n| 结构 | ✅ | 达标 |\n\n**🔴 必须修改**：标题去掉禁用套路、修正错别字\n**🟡 建议修改**：换开头、补充配图描述\n```\n\n---\n\n## 终审格式\n\n```markdown\n## 终审结果\n\n| 检查项 | 结果 | 说明 |\n|--------|------|------|\n| 排版完整 | ✅ | article.html 存在 |\n| 封面图 | ✅ | 00-cover.png |\n| 正文配图 | ✅ | 4/4 张已替换 |\n| 占位符 | ✅ | 无残留 placeholder |\n| 标题确认 | ✅ | |\n| 摘要确认 | ✅ | |\n| 评论设置 | ✅ | 开启评论 |\n\n**结论**：✅ 可以发布\n```\n\n---\n\n## 修改循环格式\n\n重审时只显示之前标记为 🔴 的项：\n\n```markdown\n## 重审结果\n\n### 之前的 🔴 项\n- [x] 标题：已去掉「建议收藏」 ✅ → 已修正\n- [x] 错别字：「帐号」已改为「账号」 ✅ → 已修正\n\n**结论**：🔴 项已全部消除，可保存为定稿\n```\n\nFile v1.0.18:skill.json\n\n{\n  \"name\": \"aws-wechat-article-review\",\n  \"version\": \"0.3.0\",\n  \"author\": \"aiworkskills\",\n  \"description\": \"审核公众号文章，检查敏感词、错别字、合规性和写作规范，输出修改清单。\",\n  \"license\": \"MIT\",\n  \"homepage\": \"https://github.com/aiworkskills/wechat-article-skills\",\n  \"tags\": [\"wechat\", \"公众号\", \"review\", \"compliance\"],\n  \"permissions\": [\"filesystem\"],\n  \"entryPoint\": {\n    \"type\": \"natural\",\n    \"path\": \"SKILL.md\"\n  }\n}\n\nArchive v1.0.17: 5 files, 9060 bytes\n\nFiles: references/checklist.md (2261b), references/output-format.md (2696b), skill.json (467b), SKILL.md (12413b), _meta.json (145b)\n\nFile v1.0.17:SKILL.md\n\n---\nname: aws-wechat-article-review\ndescription: 公众号审稿｜微信公众号审稿｜公众号校对｜敏感词检测｜错别字检测｜内容合规｜政治合规｜平台规范｜proofreading｜content review｜moderation — 公众号发布前合规审查：敏感词扫描、错别字检测、政治合规、平台规范校验，一次性输出修改清单。面向公众号编辑、自媒体作者、合规岗。触发词：「审稿」「审核」「检查一下」「校对」「合规」「敏感词」「错别字」「帮我看看」「写完了」「检查下有没有问题」「能不能发」。\n---\n\n# 审稿与合规\n\n**公众号发布前合规守门员** —— 敏感词、错别字、平台规范一次性筛查，输出可执行修改清单。\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## 前置依赖 ⛔ 套件必须装齐\n\n`aws-wechat-article-*` 一条龙套件的 9 个 skill 互相引用首次引导、环境校验与规则文档。**单独安装任一 skill 无法正常工作**，必须装齐 9 个：\n\n```\naws-wechat-article-main\naws-wechat-article-topics\naws-wechat-article-writing\naws-wechat-article-review\naws-wechat-article-formatting\naws-wechat-article-images\naws-wechat-article-publish\naws-wechat-article-assets\naws-wechat-sticker\n```\n\n**Agent：进入下方工作流前，先检查当前 `skills/` 目录下上述 9 个子目录是否都存在。**\n\n**若任一缺失** → 停止本 skill 工作流，**不得**尝试代替用户跑脚本或继续；按下述话术回复用户：\n\n> 本套件需 9 个 skill 都装齐才能使用。检测到缺少：`<列出缺失项>`。请执行：\n>\n> ```bash\n> # macOS / Linux / Git Bash\n> for slug in aws-wechat-article-main aws-wechat-article-topics aws-wechat-article-writing aws-wechat-article-review aws-wechat-article-formatting aws-wechat-article-images aws-wechat-article-publish aws-wechat-article-assets aws-wechat-sticker; do\n>   clawhub install \"$slug\"\n> done\n> ```\n>\n> ```powershell\n> # Windows PowerShell\n> 'aws-wechat-article-main','aws-wechat-article-topics','aws-wechat-article-writing','aws-wechat-article-review','aws-wechat-article-formatting','aws-wechat-article-images','aws-wechat-article-publish','aws-wechat-article-assets','aws-wechat-sticker' | ForEach-Object { clawhub install $_ }\n> ```\n>\n> 装完再回本 skill 让我继续。\n\n**9 个全部存在** → 按下方工作流继续。\n\n## 路由\n\n「能不能发」若含代为发布或从稿到发出整条收尾 → [aws-wechat-article-main](../aws-wechat-article-main/SKILL.md)。\n\n对文章做系统性检查，发现问题并引导修改。\n\n## 两种审稿模式\n\n| 模式 | 时机 | 检查重点 |\n|------|------|---------|\n| **内容审** | writing 之后、formatting 之前 | 内容质量、写作规范、敏感词、配图标记 |\n| **终审** | publish 之前 | 排版完整性、图片就位、发布要素齐全 |\n\n自动识别：有 `article.html` → 终审模式，否则 → 内容审模式。\n\n## 工作流\n\n```\n审稿进度：\n- [ ] 第1步：环境检查 + 本篇约束与规范\n- [ ] 第2步：逐项检查\n- [ ] 第3步：输出审稿结果\n- [ ] 第4步：修改循环 🔄\n- [ ] 第5步：确认通过 → **文末 embed（⛔ BLOCKING）** → 保存 `article.md` 定稿\n```\n\n### 智能体行为约束（与定稿强相关）\n\n- **禁止**在未完成 **第5步「文末 embed」**（见下 **⛔ BLOCKING**）的情况下，将稿件称为「已定稿」、写入 **`article.md`**、或进入 **排版（`format.py`）**。\n- **禁止**用「用户没提」「节省时间」等理由跳过文末占位符；**唯一例外**：用户**书面**声明本篇不要任何嵌入元素（名片/小程序/链接），则须在审稿记录中写明「用户声明跳过 embed」，且仍须确认不是误操作。\n- **一条龙 / 完整流程**（[main SKILL](../aws-wechat-article-main/SKILL.md)）中，**内容审**产出的 **`article.md` 必须已含文末 embed**（按合并规则或合法省略），再进入排版。\n\n### 第1步：环境检查 + 本篇约束与规范 ⛔\n\n任何操作执行前，**必须**按 **[首次引导](../aws-wechat-article-main/references/first-time-setup.md)** 执行其中的 **「检测顺序」**。检测通过后才能进行以下操作（或用户明确书面确认「本次不检查」）：\n\n从选题到发布的阻断规则见 [main SKILL](../aws-wechat-article-main/SKILL.md)；**单独启用本 skill** 时亦须先满足同一套环境检查（或用户按 main 约定声明「本次例外」）。\n\n然后读取：\n\n- **`.aws-article/writing-spec.md`**（如有）\n- **`.aws-article/presets/review-rules.yaml`**（如有）\n- **本篇合并配置**（与 [writing](../aws-wechat-article-writing/SKILL.md)、`format.py` 一致）：先 **`.aws-article/config.yaml`** 顶层（不含 `writing_model` / `image_model`），再叠 **本篇目录 `article.yaml`**（**同键本篇优先**；**仅** `embeds.related_articles` 与全局深度合并，其余 `embeds` 仍以全局为准）。审稿与内容向检查以合并结果为准（如 `review_output_format`、`custom_sensitive_words`、`forbidden_words`、`target_reader`、`tone`、`image_density` 等）。字段说明：[articlescreening-schema.md](../aws-wechat-article-main/references/articlescreening-schema.md)。\n\n**fallback**：合并后仍缺关键约束时向用户说明「部分维度无法按本篇约束对齐」，并建议补全 `config.yaml` / `article.yaml`；无写作规范时跳过规范检查项；无自定义审稿规则时仅执行内置检查清单 [references/checklist.md](references/checklist.md)。\n\n### 第2步：逐项检查\n\n按模式执行不同检查项，详见：[references/checklist.md](references/checklist.md)\n\n**内容审** 检查 6 个维度：\n\n| 维度 | 检查内容 |\n|------|---------|\n| **标题** | 长度、禁用套路、与正文一致性 |\n| **摘要** | 长度、信息量、与正文一致性 |\n| **正文** | 敏感词、禁用词、错别字、事实出处 |\n| **写作规范** | 对照 writing-spec.md 检查用词、句式、段落、AI 味；深度与调性是否与 **本篇合并配置** 的 `target_reader`、`tone` 一致 |\n| **配图标记** | 封面标记存在、数量与 **本篇合并配置** 的 `image_density` 匹配、描述清晰 |\n| **文末 embed** | 定稿前须完成 **第5步 ⛔ BLOCKING**（与 `format.py` 的 `{embed:…}` 一致）；未写入 `article.md` 不得定稿 |\n| **原创标注** | 按 original_attribution 处理 |\n\n**终审** 额外检查：\n\n| 维度 | 检查内容 |\n|------|---------|\n| 排版 | article.html 存在且完整 |\n| 图片 | imgs/ 下图片齐全、placeholder 已替换 |\n| 发布要素 | 标题/摘要/作者/封面 全部就绪 |\n\n### 第3步：输出审稿结果\n\n按 `review_output_format` 输出：\n- **分块详细**：按维度分块，逐项列 ✅/❌ + 修改建议\n- **简要清单**：表格式，一行一项\n\n输出模板：[references/output-format.md](references/output-format.md)\n\n结果分三级：\n- 🔴 **必须修改**：不改不能过（敏感词、严重错别字、缺封面）\n- 🟡 **建议修改**：改了更好（用词优化、段落调整）\n- 🟢 **通过**：无问题\n\n### 第4步：修改循环 🔄\n\n有 🔴 项时**必须进入修改循环**：\n\n```\n发现问题 → 展示审稿结果 → 等用户/agent 修改 → 重新检查 → 直到无 🔴\n```\n\n修改方式：\n- Agent 直接修改 `draft.md`\n- 用户手动修改后说「改好了」\n- 调用 writing skill 的 rewrite 能力\n\n每轮修改后自动重审被标记为 🔴 的项，不需要全量重审。\n\n> ⚠️ **Step 4 完成不代表可以保存 `article.md`**。必须先完成 Step 5（文末 embed ⛔⛔ BLOCKING）才能写入 `article.md` 或进入排版。\n\n### 第5步：确认通过 → 文末 embed → 保存定稿 ⛔⛔ BLOCKING\n\n全部 🔴 项消除后：\n1. 展示最终审稿结果\n2. 等待用户确认 ⛔\n3. **⛔ BLOCKING · 文末 `embeds`**：**在写入 `article.md` 之前**完成本节下方「规则与表格」——**先读取** `.aws-article/config.yaml` 并与本篇 `article.yaml` **合并**（与第 1 步一致：**除 `embeds.related_articles` 外，`embeds` 仅以全局为准**；**`related_articles` 与全局深度合并**），再在**正文末尾**（原有正文之后）按规则**追加或合法省略**占位符。**占位符必须与合并后可解析的配置一致**，否则排版阶段会失败。**未完成本节不得保存定稿、不得调用 `format.py`。**\n4. 将已含文末 embed（或已按规则省略并记录在审稿说明中）的稿件保存为 **`article.md`（定稿）**。\n\n**定稿文末 `embeds`（规则与表格）**\n\n| 占位符 | 何时写入文末 | 配置对齐 |\n|--------|----------------|----------|\n| `{embed:profile:…}` | 全局 **`embeds.profiles`** 存在**至少一条有效项**（非空 `nickname`） | 每条有效 profile **一行**，占位中 `…` = 该项 `nickname` |\n| `{embed:miniprogram:…}` | 全局 **`embeds.miniprograms`** 存在**至少一条有效项**（非空 `title`） | 每条有效项一行，`…` = `title` |\n| `{embed:miniprogram_card:…}` | 全局 **`embeds.miniprogram_cards`** 存在**至少一条有效项**（非空 `title`） | 每条有效项一行，`…` = `title` |\n| `{embed:link:…}` | **往期链接**：合并后 **`embeds.related_articles.manual`** 有有效项时；或见下方「无 manual」 | `…` = 该项 `name`；**文末相关链接至多 3 条** |\n\n- **前三类（名片 / 小程序文字链 / 小程序卡片）**：若对应列表**未配置或为空或无非空关键字段**，**不追加**该类占位符，无需处理。\n- **往期 `{embed:link:…}`**：\n  - 若合并后 **`manual` 已有** `name` + `url`：在文末追加对应占位符，**最多 3 条**（超过则只保留 3 条，优先与本文主题最相关的条目或按列表顺序取前 3）。\n  - 若合并后 **`manual` 缺失或为空**：在**仓库根**执行  \n    `python {baseDir}/../aws-wechat-article-publish/scripts/getdraft.py published-fields`  \n    输出为 JSON 数组（每项含 `title`、`digest`、`url`）。结合**本文主题与摘要**，从已发布正式文章中**选取至多 3 篇**相关条目；将选中项写入**本篇** `article.yaml` 的 **`embeds.related_articles.manual`**（每项 `name`（与占位一致、简短可读）+ `url`），再在 `article.md` 文末追加 `{embed:link:name}`。**勿改**全局 `config.yaml` 仅为本篇补链接。若命令失败（无凭证、网络、接口错误）或用户书面声明跳过往期：**不伪造** `manual`，可省略该类占位并在审稿说明中注明原因。\n\n字段含义与示例见 **`{baseDir}/../aws-wechat-article-main/references/config.example.yaml`** 的 `embeds` 注释及 **[topics SKILL](../aws-wechat-article-topics/SKILL.md)** 文末「推荐链接」说明；排版脚本据此生成 `article.html`。\n\n**全空时的处理**：当所有 embed 配置（profiles / miniprograms / miniprogram_cards / related_articles）均为空或未配置时，仍须在审稿输出中**显式标注**「文末 embed：无配置，已跳过」，**不得静默跳过**。这确保流程可追溯，避免遗漏。\n\n## 自定义检查规则\n\n用户可在 `.aws-article/presets/review-rules.yaml` 添加自定义检查项：\n\n```yaml\n# .aws-article/presets/review-rules.yaml\ncustom_rules:\n  - name: 品牌名称规范\n    check: 正文中「XX公司」必须使用全称，不能简写\n    level: 必须    # 必须 / 建议\n\n  - name: 数据来源\n    check: 所有引用的数据必须标注来源和日期\n    level: 必须\n\n  - name: CTA 检查\n    check: 文末必须包含明确的行动号召\n    level: 建议\n```\n\n自定义规则会追加到标准检查项之后执行。\n\n## 过程文件\n\n| 模式 | 读取 | 产出 |\n|------|------|------|\n| 内容审 | `draft.md`、**`.aws-article/config.yaml` + 本篇 `article.yaml`**、`writing-spec.md` | `review.md`、`article.md`（定稿） |\n| 终审 | `article.html`、`imgs/`、同上合并配置、`article.yaml`（发布元数据等） | `review.md`（终审结果） |\n\nFile v1.0.17:_meta.json\n\n{\n  \"ownerId\": \"kn7f5hvxj1x2ctd5vqnec5x1zs82ce6h\",\n  \"slug\": \"aws-wechat-article-review\",\n  \"version\": \"1.0.17\",\n  \"publishedAt\": 1776847505309\n}\n\nFile v1.0.17:references/checklist.md\n\n# 审稿检查清单\n\n## 内容审检查项（writing 之后）\n\n### 标题\n\n- [ ] 字数不超过 `title_max_length`\n- [ ] 不含 `forbidden_title_phrases` 中的套路\n- [ ] 与正文内容一致，不做标题党\n- [ ] 有吸引力，能让读者想点进来\n\n### 摘要\n\n- [ ] 字数在 `summary_length` 范围内\n- [ ] 能概括文章核心价值\n- [ ] 与正文内容一致\n- [ ] 不是正文第一段的复制\n\n### 正文内容\n\n- [ ] 不含 `custom_sensitive_words` 和 `forbidden_words`\n- [ ] 无明显错别字和语病\n- [ ] 事实与数据有出处（如适用）\n- [ ] 原创/转载标注按 `original_attribution` 处理\n- [ ] 开头 2-3 句有吸引力\n\n### 写作规范合规\n\n对照 `.aws-article/writing-spec.md` 检查（如有）：\n\n- [ ] 用词规范：标点、中英文间距、数字格式\n- [ ] 句式偏好：句长、主动语态、无套话\n- [ ] 段落规范：段长、核心观点位置\n- [ ] 禁止事项：无 AI 味表达、无夸张承诺、无未验证数据\n- [ ] 品牌调性：与规范中的调性描述一致\n\n### 配图标记\n\n- [ ] 封面标记存在（`![封面：...]`）\n- [ ] 配图数量与 `image_density` 配置匹配\n- [ ] 每个标记的描述清晰、有具体内容（不是泛泛的「配图」）\n- [ ] 标记类型合理（信息图/氛围/实证等与段落内容匹配）\n- [ ] 实证类标记注明了需用户提供\n\n### 结构\n\n- [ ] 小标题密度符合 `heading_density`\n- [ ] 结尾有力（总结/金句/行动号召）\n- [ ] 文末引导区块按 `closing_block` 处理\n- [ ] 若 config 中配置了 `target_word_count`，篇幅应在该范围内\n\n---\n\n## 终审检查项（publish 之前）\n\n在内容审的基础上，额外检查：\n\n### 排版\n\n- [ ] `article.html` 存在且内容完整\n- [ ] HTML 中无乱码或格式异常\n\n### 图片\n\n- [ ] `imgs/` 目录存在\n- [ ] 封面图已生成（`00-cover.*`）\n- [ ] 所有 `placeholder` 已替换为实际图片路径\n- [ ] 图片文件实际存在\n\n### 发布要素\n\n- [ ] 标题、摘要、作者已最终确认\n- [ ] 正文无未替换的占位符或草稿标记\n- [ ] 如需开启评论/仅粉丝可评，已确认设置\n\n---\n\n## 自定义规则\n\n`.aws-article/presets/review-rules.yaml` 中的规则追加在标准项之后执行。\n\nFile v1.0.17:references/output-format.md\n\n# 审稿输出模板\n\n## 分块详细格式\n\n```markdown\n## 审稿结果（内容审）\n\n### 标题\n- [x] 字数：22 字 ≤ 25 字上限 ✅\n- [ ] 发现禁用套路「建议收藏」 ❌\n- 🔴 修改建议：去掉「建议收藏」，改为更具体的价值承诺\n\n### 摘要\n- [x] 字数：95 字，在 summary_length 范围内（上限 128 字，微信 digest 限制） ✅\n- [x] 与正文一致 ✅\n\n### 正文\n- [x] 敏感词检查通过 ✅\n- [ ] 第 3 段发现错别字「帐号」→「账号」 ❌\n- [x] 原创标注已添加 ✅\n- 🔴 修改建议：修正第 3 段错别字\n\n### 写作规范\n- [x] 段落长度符合短段要求 ✅\n- [ ] 第 5 段使用了「随着科技的发展」开头 ❌\n- 🟡 建议修改：换一个更具体的开头\n\n### 配图标记\n- [x] 封面标记存在 ✅\n- [x] 配图数量 4 张，符合「每节一图」 ✅\n- [ ] 第 2 张标记描述过于笼统「配图」 ❌\n- 🟡 建议修改：补充具体描述，如「信息图：3个方案的对比表」\n\n### 结构\n- [x] 小标题密度达标 ✅\n- [x] 结尾有行动号召 ✅\n\n---\n\n## 总结\n\n| 级别 | 数量 | 详情 |\n|------|------|------|\n| 🔴 必须修改 | 2 | 标题禁用套路、正文错别字 |\n| 🟡 建议修改 | 2 | AI 味开头、配图描述 |\n| 🟢 通过 | 8 | |\n\n**下一步**：修正 🔴 项后重审 → 通过后保存为 article.md\n```\n\n---\n\n## 简要清单格式\n\n```markdown\n## 审稿结果（简要）\n\n| 检查项 | 结果 | 说明 |\n|--------|------|------|\n| 标题长度 | ✅ | 22/25 字 |\n| 标题套路 | 🔴 | 含「建议收藏」 |\n| 摘要 | ✅ | 95 字 |\n| 敏感词 | ✅ | 通过 |\n| 错别字 | 🔴 | 「帐号」→「账号」 |\n| 原创标注 | ✅ | 已添加 |\n| 写作规范 | 🟡 | AI 味开头 |\n| 配图标记 | 🟡 | 第2张描述不够具体 |\n| 结构 | ✅ | 达标 |\n\n**🔴 必须修改**：标题去掉禁用套路、修正错别字\n**🟡 建议修改**：换开头、补充配图描述\n```\n\n---\n\n## 终审格式\n\n```markdown\n## 终审结果\n\n| 检查项 | 结果 | 说明 |\n|--------|------|------|\n| 排版完整 | ✅ | article.html 存在 |\n| 封面图 | ✅ | 00-cover.png |\n| 正文配图 | ✅ | 4/4 张已替换 |\n| 占位符 | ✅ | 无残留 placeholder |\n| 标题确认 | ✅ | |\n| 摘要确认 | ✅ | |\n| 评论设置 | ✅ | 开启评论 |\n\n**结论**：✅ 可以发布\n```\n\n---\n\n## 修改循环格式\n\n重审时只显示之前标记为 🔴 的项：\n\n```markdown\n## 重审结果\n\n### 之前的 🔴 项\n- [x] 标题：已去掉「建议收藏」 ✅ → 已修正\n- [x] 错别字：「帐号」已改为「账号」 ✅ → 已修正\n\n**结论**：🔴 项已全部消除，可保存为定稿\n```\n\nFile v1.0.17:skill.json\n\n{\n  \"name\": \"aws-wechat-article-review\",\n  \"version\": \"0.3.0\",\n  \"author\": \"aiworkskills\",\n  \"description\": \"审核公众号文章，检查敏感词、错别字、合规性和写作规范，输出修改清单。\",\n  \"license\": \"MIT\",\n  \"homepage\": \"https://github.com/aiworkskills/wechat-article-skills\",\n  \"tags\": [\"wechat\", \"公众号\", \"review\", \"compliance\"],\n  \"permissions\": [\"filesystem\"],\n  \"entryPoint\": {\n    \"type\": \"natural\",\n    \"path\": \"SKILL.md\"\n  }\n}\n\nArchive v1.0.16: 5 files, 8518 bytes\n\nFiles: references/checklist.md (2261b), references/output-format.md (2696b), skill.json (467b), SKILL.md (10830b), _meta.json (145b)\n\nFile v1.0.16:SKILL.md\n\n---\nname: aws-wechat-article-review\ndescription: 公众号审稿｜微信公众号审稿｜公众号校对｜敏感词检测｜错别字检测｜内容合规｜政治合规｜平台规范｜proofreading｜content review｜moderation — 公众号发布前合规审查：敏感词扫描、错别字检测、政治合规、平台规范校验，一次性输出修改清单。面向公众号编辑、自媒体作者、合规岗。触发词：「审稿」「审核」「检查一下」「校对」「合规」「敏感词」「错别字」「帮我看看」「写完了」「检查下有没有问题」「能不能发」。\n---\n\n# 审稿与合规\n\n**公众号发布前合规守门员** —— 敏感词、错别字、平台规范一次性筛查，输出可执行修改清单。\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## 路由\n\n「能不能发」若含代为发布或从稿到发出整条收尾 → [aws-wechat-article-main](../aws-wechat-article-main/SKILL.md)。\n\n对文章做系统性检查，发现问题并引导修改。\n\n## 两种审稿模式\n\n| 模式 | 时机 | 检查重点 |\n|------|------|---------|\n| **内容审** | writing 之后、formatting 之前 | 内容质量、写作规范、敏感词、配图标记 |\n| **终审** | publish 之前 | 排版完整性、图片就位、发布要素齐全 |\n\n自动识别：有 `article.html` → 终审模式，否则 → 内容审模式。\n\n## 工作流\n\n```\n审稿进度：\n- [ ] 第1步：环境检查 + 本篇约束与规范\n- [ ] 第2步：逐项检查\n- [ ] 第3步：输出审稿结果\n- [ ] 第4步：修改循环 🔄\n- [ ] 第5步：确认通过 → **文末 embed（⛔ BLOCKING）** → 保存 `article.md` 定稿\n```\n\n### 智能体行为约束（与定稿强相关）\n\n- **禁止**在未完成 **第5步「文末 embed」**（见下 **⛔ BLOCKING**）的情况下，将稿件称为「已定稿」、写入 **`article.md`**、或进入 **排版（`format.py`）**。\n- **禁止**用「用户没提」「节省时间」等理由跳过文末占位符；**唯一例外**：用户**书面**声明本篇不要任何嵌入元素（名片/小程序/链接），则须在审稿记录中写明「用户声明跳过 embed」，且仍须确认不是误操作。\n- **一条龙 / 完整流程**（[main SKILL](../aws-wechat-article-main/SKILL.md)）中，**内容审**产出的 **`article.md` 必须已含文末 embed**（按合并规则或合法省略），再进入排版。\n\n### 第1步：环境检查 + 本篇约束与规范 ⛔\n\n任何操作执行前，**必须**按 **[首次引导](../aws-wechat-article-main/references/first-time-setup.md)** 执行其中的 **「检测顺序」**。检测通过后才能进行以下操作（或用户明确书面确认「本次不检查」）：\n\n从选题到发布的阻断规则见 [main SKILL](../aws-wechat-article-main/SKILL.md)；**单独启用本 skill** 时亦须先满足同一套环境检查（或用户按 main 约定声明「本次例外」）。\n\n然后读取：\n\n- **`.aws-article/writing-spec.md`**（如有）\n- **`.aws-article/presets/review-rules.yaml`**（如有）\n- **本篇合并配置**（与 [writing](../aws-wechat-article-writing/SKILL.md)、`format.py` 一致）：先 **`.aws-article/config.yaml`** 顶层（不含 `writing_model` / `image_model`），再叠 **本篇目录 `article.yaml`**（**同键本篇优先**；**仅** `embeds.related_articles` 与全局深度合并，其余 `embeds` 仍以全局为准）。审稿与内容向检查以合并结果为准（如 `review_output_format`、`custom_sensitive_words`、`forbidden_words`、`target_reader`、`tone`、`image_density` 等）。字段说明：[articlescreening-schema.md](../aws-wechat-article-main/references/articlescreening-schema.md)。\n\n**fallback**：合并后仍缺关键约束时向用户说明「部分维度无法按本篇约束对齐」，并建议补全 `config.yaml` / `article.yaml`；无写作规范时跳过规范检查项；无自定义审稿规则时仅执行内置检查清单 [references/checklist.md](references/checklist.md)。\n\n### 第2步：逐项检查\n\n按模式执行不同检查项，详见：[references/checklist.md](references/checklist.md)\n\n**内容审** 检查 6 个维度：\n\n| 维度 | 检查内容 |\n|------|---------|\n| **标题** | 长度、禁用套路、与正文一致性 |\n| **摘要** | 长度、信息量、与正文一致性 |\n| **正文** | 敏感词、禁用词、错别字、事实出处 |\n| **写作规范** | 对照 writing-spec.md 检查用词、句式、段落、AI 味；深度与调性是否与 **本篇合并配置** 的 `target_reader`、`tone` 一致 |\n| **配图标记** | 封面标记存在、数量与 **本篇合并配置** 的 `image_density` 匹配、描述清晰 |\n| **文末 embed** | 定稿前须完成 **第5步 ⛔ BLOCKING**（与 `format.py` 的 `{embed:…}` 一致）；未写入 `article.md` 不得定稿 |\n| **原创标注** | 按 original_attribution 处理 |\n\n**终审** 额外检查：\n\n| 维度 | 检查内容 |\n|------|---------|\n| 排版 | article.html 存在且完整 |\n| 图片 | imgs/ 下图片齐全、placeholder 已替换 |\n| 发布要素 | 标题/摘要/作者/封面 全部就绪 |\n\n### 第3步：输出审稿结果\n\n按 `review_output_format` 输出：\n- **分块详细**：按维度分块，逐项列 ✅/❌ + 修改建议\n- **简要清单**：表格式，一行一项\n\n输出模板：[references/output-format.md](references/output-format.md)\n\n结果分三级：\n- 🔴 **必须修改**：不改不能过（敏感词、严重错别字、缺封面）\n- 🟡 **建议修改**：改了更好（用词优化、段落调整）\n- 🟢 **通过**：无问题\n\n### 第4步：修改循环 🔄\n\n有 🔴 项时**必须进入修改循环**：\n\n```\n发现问题 → 展示审稿结果 → 等用户/agent 修改 → 重新检查 → 直到无 🔴\n```\n\n修改方式：\n- Agent 直接修改 `draft.md`\n- 用户手动修改后说「改好了」\n- 调用 writing skill 的 rewrite 能力\n\n每轮修改后自动重审被标记为 🔴 的项，不需要全量重审。\n\n> ⚠️ **Step 4 完成不代表可以保存 `article.md`**。必须先完成 Step 5（文末 embed ⛔⛔ BLOCKING）才能写入 `article.md` 或进入排版。\n\n### 第5步：确认通过 → 文末 embed → 保存定稿 ⛔⛔ BLOCKING\n\n全部 🔴 项消除后：\n1. 展示最终审稿结果\n2. 等待用户确认 ⛔\n3. **⛔ BLOCKING · 文末 `embeds`**：**在写入 `article.md` 之前**完成本节下方「规则与表格」——**先读取** `.aws-article/config.yaml` 并与本篇 `article.yaml` **合并**（与第 1 步一致：**除 `embeds.related_articles` 外，`embeds` 仅以全局为准**；**`related_articles` 与全局深度合并**），再在**正文末尾**（原有正文之后）按规则**追加或合法省略**占位符。**占位符必须与合并后可解析的配置一致**，否则排版阶段会失败。**未完成本节不得保存定稿、不得调用 `format.py`。**\n4. 将已含文末 embed（或已按规则省略并记录在审稿说明中）的稿件保存为 **`article.md`（定稿）**。\n\n**定稿文末 `embeds`（规则与表格）**\n\n| 占位符 | 何时写入文末 | 配置对齐 |\n|--------|----------------|----------|\n| `{embed:profile:…}` | 全局 **`embeds.profiles`** 存在**至少一条有效项**（非空 `nickname`） | 每条有效 profile **一行**，占位中 `…` = 该项 `nickname` |\n| `{embed:miniprogram:…}` | 全局 **`embeds.miniprograms`** 存在**至少一条有效项**（非空 `title`） | 每条有效项一行，`…` = `title` |\n| `{embed:miniprogram_card:…}` | 全局 **`embeds.miniprogram_cards`** 存在**至少一条有效项**（非空 `title`） | 每条有效项一行，`…` = `title` |\n| `{embed:link:…}` | **往期链接**：合并后 **`embeds.related_articles.manual`** 有有效项时；或见下方「无 manual」 | `…` = 该项 `name`；**文末相关链接至多 3 条** |\n\n- **前三类（名片 / 小程序文字链 / 小程序卡片）**：若对应列表**未配置或为空或无非空关键字段**，**不追加**该类占位符，无需处理。\n- **往期 `{embed:link:…}`**：\n  - 若合并后 **`manual` 已有** `name` + `url`：在文末追加对应占位符，**最多 3 条**（超过则只保留 3 条，优先与本文主题最相关的条目或按列表顺序取前 3）。\n  - 若合并后 **`manual` 缺失或为空**：在**仓库根**执行  \n    `python {baseDir}/../aws-wechat-article-publish/scripts/getdraft.py published-fields`  \n    输出为 JSON 数组（每项含 `title`、`digest`、`url`）。结合**本文主题与摘要**，从已发布正式文章中**选取至多 3 篇**相关条目；将选中项写入**本篇** `article.yaml` 的 **`embeds.related_articles.manual`**（每项 `name`（与占位一致、简短可读）+ `url`），再在 `article.md` 文末追加 `{embed:link:name}`。**勿改**全局 `config.yaml` 仅为本篇补链接。若命令失败（无凭证、网络、接口错误）或用户书面声明跳过往期：**不伪造** `manual`，可省略该类占位并在审稿说明中注明原因。\n\n字段含义与示例见 **`{baseDir}/../aws-wechat-article-main/references/config.example.yaml`** 的 `embeds` 注释及 **[topics SKILL](../aws-wechat-article-topics/SKILL.md)** 文末「推荐链接」说明；排版脚本据此生成 `article.html`。\n\n**全空时的处理**：当所有 embed 配置（profiles / miniprograms / miniprogram_cards / related_articles）均为空或未配置时，仍须在审稿输出中**显式标注**「文末 embed：无配置，已跳过」，**不得静默跳过**。这确保流程可追溯，避免遗漏。\n\n## 自定义检查规则\n\n用户可在 `.aws-article/presets/review-rules.yaml` 添加自定义检查项：\n\n```yaml\n# .aws-article/presets/review-rules.yaml\ncustom_rules:\n  - name: 品牌名称规范\n    check: 正文中「XX公司」必须使用全称，不能简写\n    level: 必须    # 必须 / 建议\n\n  - name: 数据来源\n    check: 所有引用的数据必须标注来源和日期\n    level: 必须\n\n  - name: CTA 检查\n    check: 文末必须包含明确的行动号召\n    level: 建议\n```\n\n自定义规则会追加到标准检查项之后执行。\n\n## 过程文件\n\n| 模式 | 读取 | 产出 |\n|------|------|------|\n| 内容审 | `draft.md`、**`.aws-article/config.yaml` + 本篇 `article.yaml`**、`writing-spec.md` | `review.md`、`article.md`（定稿） |\n| 终审 | `article.html`、`imgs/`、同上合并配置、`article.yaml`（发布元数据等） | `review.md`（终审结果） |\n\nFile v1.0.16:_meta.json\n\n{\n  \"ownerId\": \"kn7f5hvxj1x2ctd5vqnec5x1zs82ce6h\",\n  \"slug\": \"aws-wechat-article-review\",\n  \"version\": \"1.0.16\",\n  \"publishedAt\": 1776834791308\n}\n\nFile v1.0.16:references/checklist.md\n\n# 审稿检查清单\n\n## 内容审检查项（writing 之后）\n\n### 标题\n\n- [ ] 字数不超过 `title_max_length`\n- [ ] 不含 `forbidden_title_phrases` 中的套路\n- [ ] 与正文内容一致，不做标题党\n- [ ] 有吸引力，能让读者想点进来\n\n### 摘要\n\n- [ ] 字数在 `summary_length` 范围内\n- [ ] 能概括文章核心价值\n- [ ] 与正文内容一致\n- [ ] 不是正文第一段的复制\n\n### 正文内容\n\n- [ ] 不含 `custom_sensitive_words` 和 `forbidden_words`\n- [ ] 无明显错别字和语病\n- [ ] 事实与数据有出处（如适用）\n- [ ] 原创/转载标注按 `original_attribution` 处理\n- [ ] 开头 2-3 句有吸引力\n\n### 写作规范合规\n\n对照 `.aws-article/writing-spec.md` 检查（如有）：\n\n- [ ] 用词规范：标点、中英文间距、数字格式\n- [ ] 句式偏好：句长、主动语态、无套话\n- [ ] 段落规范：段长、核心观点位置\n- [ ] 禁止事项：无 AI 味表达、无夸张承诺、无未验证数据\n- [ ] 品牌调性：与规范中的调性描述一致\n\n### 配图标记\n\n- [ ] 封面标记存在（`![封面：...]`）\n- [ ] 配图数量与 `image_density` 配置匹配\n- [ ] 每个标记的描述清晰、有具体内容（不是泛泛的「配图」）\n- [ ] 标记类型合理（信息图/氛围/实证等与段落内容匹配）\n- [ ] 实证类标记注明了需用户提供\n\n### 结构\n\n- [ ] 小标题密度符合 `heading_density`\n- [ ] 结尾有力（总结/金句/行动号召）\n- [ ] 文末引导区块按 `closing_block` 处理\n- [ ] 若 config 中配置了 `target_word_count`，篇幅应在该范围内\n\n---\n\n## 终审检查项（publish 之前）\n\n在内容审的基础上，额外检查：\n\n### 排版\n\n- [ ] `article.html` 存在且内容完整\n- [ ] HTML 中无乱码或格式异常\n\n### 图片\n\n- [ ] `imgs/` 目录存在\n- [ ] 封面图已生成（`00-cover.*`）\n- [ ] 所有 `placeholder` 已替换为实际图片路径\n- [ ] 图片文件实际存在\n\n### 发布要素\n\n- [ ] 标题、摘要、作者已最终确认\n- [ ] 正文无未替换的占位符或草稿标记\n- [ ] 如需开启评论/仅粉丝可评，已确认设置\n\n---\n\n## 自定义规则\n\n`.aws-article/presets/review-rules.yaml` 中的规则追加在标准项之后执行。\n\nFile v1.0.16:references/output-format.md\n\n# 审稿输出模板\n\n## 分块详细格式\n\n```markdown\n## 审稿结果（内容审）\n\n### 标题\n- [x] 字数：22 字 ≤ 25 字上限 ✅\n- [ ] 发现禁用套路「建议收藏」 ❌\n- 🔴 修改建议：去掉「建议收藏」，改为更具体的价值承诺\n\n### 摘要\n- [x] 字数：95 字，在 summary_length 范围内（上限 128 字，微信 digest 限制） ✅\n- [x] 与正文一致 ✅\n\n### 正文\n- [x] 敏感词检查通过 ✅\n- [ ] 第 3 段发现错别字「帐号」→「账号」 ❌\n- [x] 原创标注已添加 ✅\n- 🔴 修改建议：修正第 3 段错别字\n\n### 写作规范\n- [x] 段落长度符合短段要求 ✅\n- [ ] 第 5 段使用了「随着科技的发展」开头 ❌\n- 🟡 建议修改：换一个更具体的开头\n\n### 配图标记\n- [x] 封面标记存在 ✅\n- [x] 配图数量 4 张，符合「每节一图」 ✅\n- [ ] 第 2 张标记描述过于笼统「配图」 ❌\n- 🟡 建议修改：补充具体描述，如「信息图：3个方案的对比表」\n\n### 结构\n- [x] 小标题密度达标 ✅\n- [x] 结尾有行动号召 ✅\n\n---\n\n## 总结\n\n| 级别 | 数量 | 详情 |\n|------|------|------|\n| 🔴 必须修改 | 2 | 标题禁用套路、正文错别字 |\n| 🟡 建议修改 | 2 | AI 味开头、配图描述 |\n| 🟢 通过 | 8 | |\n\n**下一步**：修正 🔴 项后重审 → 通过后保存为 article.md\n```\n\n---\n\n## 简要清单格式\n\n```markdown\n## 审稿结果（简要）\n\n| 检查项 | 结果 | 说明 |\n|--------|------|------|\n| 标题长度 | ✅ | 22/25 字 |\n| 标题套路 | 🔴 | 含「建议收藏」 |\n| 摘要 | ✅ | 95 字 |\n| 敏感词 | ✅ | 通过 |\n| 错别字 | 🔴 | 「帐号」→「账号」 |\n| 原创标注 | ✅ | 已添加 |\n| 写作规范 | 🟡 | AI 味开头 |\n| 配图标记 | 🟡 | 第2张描述不够具体 |\n| 结构 | ✅ | 达标 |\n\n**🔴 必须修改**：标题去掉禁用套路、修正错别字\n**🟡 建议修改**：换开头、补充配图描述\n```\n\n---\n\n## 终审格式\n\n```markdown\n## 终审结果\n\n| 检查项 | 结果 | 说明 |\n|--------|------|------|\n| 排版完整 | ✅ | article.html 存在 |\n| 封面图 | ✅ | 00-cover.png |\n| 正文配图 | ✅ | 4/4 张已替换 |\n| 占位符 | ✅ | 无残留 placeholder |\n| 标题确认 | ✅ | |\n| 摘要确认 | ✅ | |\n| 评论设置 | ✅ | 开启评论 |\n\n**结论**：✅ 可以发布\n```\n\n---\n\n## 修改循环格式\n\n重审时只显示之前标记为 🔴 的项：\n\n```markdown\n## 重审结果\n\n### 之前的 🔴 项\n- [x] 标题：已去掉「建议收藏」 ✅ → 已修正\n- [x] 错别字：「帐号」已改为「账号」 ✅ → 已修正\n\n**结论**：🔴 项已全部消除，可保存为定稿\n```\n\nFile v1.0.16:skill.json\n\n{\n  \"name\": \"aws-wechat-article-review\",\n  \"version\": \"0.3.0\",\n  \"author\": \"aiworkskills\",\n  \"description\": \"审核公众号文章，检查敏感词、错别字、合规性和写作规范，输出修改清单。\",\n  \"license\": \"MIT\",\n  \"homepage\": \"https://github.com/aiworkskills/wechat-article-skills\",\n  \"tags\": [\"wechat\", \"公众号\", \"review\", \"compliance\"],\n  \"permissions\": [\"filesystem\"],\n  \"entryPoint\": {\n    \"type\": \"natural\",\n    \"path\": \"SKILL.md\"\n  }\n}","readmeExcerpt":"Skill: 公众号审稿 & 敏感词校对 Owner: aiworkskills Summary: 公众号审稿｜公众号校对｜敏感词检测｜内容合规 — 公众号发布前合规审查：敏感词扫描、错别字检测、政治合规、平台规范校验，一次性输出修改清单。面向公众号编辑、自媒体作者、合规岗。触发词：「审稿」「审核」「校对」「合规」「敏感词」「错别字」「稿子检查一下」「稿子帮我看看」「稿子写完了」「文章检查一下」「检查下有没有问题」「能不能发」「发布前检查」。需要多环节串联（写+审+排+配图+发）请走 aws-wechat-article-main。 Tags: chinese:1.0.17, claude-code:1.0.17, compliance:1.0.17, latest:1.0.25, moderation:1.0.17, proofreading:1.0.17, review:1.0.17, wechat:1.0.17 Versi","codeSnippets":[],"executableExamples":[{"language":"text","snippet":"审稿进度：\n- [ ] 第1步：环境检查 + 本篇约束与规范\n- [ ] 第2步：逐项检查\n- [ ] 第3步：输出审稿结果\n- [ ] 第4步：修改循环 🔄\n- [ ] 第5步：确认通过 → **文末 embed（⛔ BLOCKING）** → 保存 `article.md` 定稿"},{"language":"text","snippet":"发现问题 → 展示审稿结果 → 等用户/agent 修改 → 重新检查 → 直到无 🔴"},{"language":"yaml","snippet":"# .aws-article/presets/review-rules.yaml\ncustom_rules:\n  - name: 品牌名称规范\n    check: 正文中「XX公司」必须使用全称，不能简写\n    level: 必须    # 必须 / 建议\n\n  - name: 数据来源\n    check: 所有引用的数据必须标注来源和日期\n    level: 必须\n\n  - name: CTA 检查\n    check: 文末必须包含明确的行动号召\n    level: 建议"},{"language":"markdown","snippet":"## 审稿结果（内容审）\n\n### 标题\n- [x] 字数：22 字 ≤ 25 字上限 ✅\n- [ ] 发现禁用套路「建议收藏」 ❌\n- 🔴 修改建议：去掉「建议收藏」，改为更具体的价值承诺\n\n### 摘要\n- [x] 字数：95 字，在 summary_length 范围内（上限 128 字，微信 digest 限制） ✅\n- [x] 与正文一致 ✅\n\n### 正文\n- [x] 敏感词检查通过 ✅\n- [ ] 第 3 段发现错别字「帐号」→「账号」 ❌\n- [x] 原创标注已添加 ✅\n- 🔴 修改建议：修正第 3 段错别字\n\n### 写作规范\n- [x] 段落长度符合短段要求 ✅\n- [ ] 第 5 段使用了「随着科技的发展」开头 ❌\n- 🟡 建议修改：换一个更具体的开头\n\n### AI 味自检\n- [x] 开头、观点、收尾无明显指纹 ✅\n- [ ] 第 4 段「这不是工具，而是伙伴；这不是效率，而是自由」连续对仗 + 「不是 X 是 Y」——中信号 ❌\n- 🟡 建议修改（只诊断不代改）：这里想强调产品的陪伴感，但三组对仗读起来像 AI 模板。方向——保留你最想说的那一句，删掉凑数的对仗，或换成一个具体使用场景。\n\n### 配图标记\n- [x] 封面标记存在 ✅\n- [x] 配图数量 4 张，符合「每节一图」 ✅\n- [ ] 第 2 张标记描述过于笼统「配图」 ❌\n- 🟡 建议修改：补充具体描述，如「信息图：3个方案的对比表」\n\n### 结构\n- [x] 小标题密度达标 ✅\n- [x] 结尾有行动号召 ✅\n\n---\n\n## 总结\n\n| 级别 | 数量 | 详情 |\n|------|------|------|\n| 🔴 必须修改 | 2 | 标题禁用套路、正文错别字 |\n| 🟡 建议修改 | 3 | 套话开头、AI 味对仗（中信号）、配图描述 |\n| 🟢 通过 | 8 | |\n\n**下一步**：修正 🔴 项后重审 → 通过后保存为 article.md"},{"language":"markdown","snippet":"## 审稿结果（简要）\n\n| 检查项 | 结果 | 说明 |\n|--------|------|------|\n| 标题长度 | ✅ | 22/25 字 |\n| 标题套路 | 🔴 | 含「建议收藏」 |\n| 摘要 | ✅ | 95 字 |\n| 敏感词 | ✅ | 通过 |\n| 错别字 | 🔴 | 「帐号」→「账号」 |\n| 原创标注 | ✅ | 已添加 |\n| 写作规范 | 🟡 | 套话开头 |\n| AI 味自检 | 🟡 | 第4段对仗+「不是X是Y」(中信号) |\n| 配图标记 | 🟡 | 第2张描述不够具体 |\n| 结构 | ✅ | 达标 |\n\n**🔴 必须修改**：标题去掉禁用套路、修正错别字\n**🟡 建议修改**：换开头、淡化 AI 味对仗、补充配图描述"},{"language":"markdown","snippet":"## 终审结果\n\n| 检查项 | 结果 | 说明 |\n|--------|------|------|\n| 排版完整 | ✅ | article.html 存在 |\n| 封面图 | ✅ | 00-cover.png |\n| 正文配图 | ✅ | 4/4 张已替换 |\n| 占位符 | ✅ | 无残留 placeholder |\n| 标题确认 | ✅ | |\n| 摘要确认 | ✅ | |\n| 评论设置 | ✅ | 开启评论 |\n\n**结论**：✅ 可以发布"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: aws-wechat-article-review\ndescription: 公众号审稿｜公众号校对｜敏感词检测｜内容合规 — 公众号发布前合规审查：敏感词扫描、错别字检测、政治合规、平台规范校验，一次性输出修改清单。面向公众号编辑、自媒体作者、合规岗。触发词：「审稿」「审核」「校对」「合规」「敏感词」「错别字」「稿子检查一下」「稿子帮我看看」「稿子写完了」「文章检查一下」「检查下有没有问题」「能不能发」「发布前检查」。需要多环节串联（写+审+排+配图+发）请走 aws-wechat-article-main。\nhomepage: https://aiworkskills.cn\nurl: https://github.com/aiworkskills/wechat-article-skills\nmetadata:\n  openclaw:\n    requires:\n      env: []\n      bins:\n        - python3\n---\n\n# 审稿与合规\n\n**公众号发布前合规守门员** —— 敏感词、错别字、平台规范一次性筛查，输出可执行修改清单。\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 为**纯本地规则/清单审稿**，零网络、零凭证、不调用任何外部脚本。\n\n- **凭证**：无\n- **网络**：无\n- **文件读**：仓库内 `.aws-article/config.yaml`、`.aws-article/writing-spec.md`（如有）、`.aws-article/presets/review-rules.yaml`（如有）、本篇 `draft.md` / `article.html` / `article.yaml`\n- **文件写**：本篇 `article.md` 定稿、审稿记录\n- **shell**：无（不调用任何脚本）\n\n> 往期推荐链接的**自动补齐**由 [publish skill](../aws-wechat-article-publish/SKILL.md) 处理（那里才有微信 API 凭证与 `getdraft.py`）；本 skill 只做「若 `embeds.related_articles.manual` 非空则按其排占位符」与「若为空则在审稿输出中提示需 publish 补齐或手填」，**不直接调任何网络脚本**。\n\n## 配套 skill（informational）\n\n本 skill 是 `aws-wechat-article-*` 一条龙公众号套件的**审稿环节**（入口 `aws-wechat-article-main`）。工作流中的若干步骤会读取同级 `../aws-wechat-article-main/references/*.md` 等共享文档（首次引导、writing-spec、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)。\n\n对文章做系统性检查，发现问题并引导修改。\n\n## 两种审稿模式\n\n| 模式 | 时机 | 检查重点 |\n|------|------|---------|\n| **内容审** | writing 之后、formatting 之前 | 内容质量、写作规范、敏感词、配图标记 |\n| **终审** | publish 之前 | 排版完整性、图片就位、发布要素齐全 |\n\n自动识别：有 `article.html` → 终审模式，否则 → 内容审模式。\n\n## 工作流\n\n```\n审稿进度：\n- [ ] 第1步：环境检查 + 本篇约束与规范\n- [ ] 第2步：逐项检查\n- [ ] 第3步：输出审稿结果\n- [ ] 第4步：修改循环 🔄\n- [ ] 第5步：确认通过 → **文末 embed（⛔ BLOCKING）** → 保存 `article.md` 定稿\n```\n\n### 智能体行为约束（与定稿强相关）\n\n- **禁止**在未完成 **第5步「文末 embed」**（见下 **⛔ BLOCKING**）的情况下，将稿件称为「已定稿」、写入 **`article.md`**、或进入 **排版（`format.py`）**。\n- **禁止**用「用户没提」「节省时间」等理由跳过文末占位符；**唯一例外**：用户**书面**声明本篇不要任何嵌入元素（名片/小程序/链接），则须在审稿记录中写明「用户声明跳过 embed」，且仍须确认不是误操作。\n- **一条龙 / 完整流程**（[main SKILL](../aws-wechat-article-main/SKILL.md)）中，**内容审**产出的 **`article.md` 必须已含文末 embed**（按合并规则或合法省略），再进入排版。\n\n### 第1步：环境检查 + 本篇约束与规范 ⛔\n\n任何操作执行前，**必须**按 **[首次引导](../aws-wechat-article-main/references/first-time-setup.md)** 执行其中的 **「检测顺序」**。检测通过后才能进行以下操作（或用户明确书面确认「本次不检查」）：\n\n从选题到发布的阻断规则见 [main SKILL](../aws-wechat-article-main/SKILL.md)；**单独启用本 skill** 时亦须先满足同一套环境检查（或用户按 main 约定声明「本次例外」）。\n\n然后读取：\n\n- **`.aws-article/writing-spec.md`**（如有）\n- **`.aws-article/presets/review-rules.yaml`**（如有）\n- **本篇合并配置**（与 [writing](../aws-wechat-article-writing/SKILL.md)、`format.py` 一致）：先 **`.aws-a"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7f5hvxj1x2ctd5vqnec5x1zs82ce6h\",\n  \"slug\": \"aws-wechat-article-review\",\n  \"version\": \"1.0.25\",\n  \"publishedAt\": 1788679433833\n}"},{"path":"references/ai-flavor-check-samples.md","content":"# AI 味自检 · 校准样例\n\n> 本文是 [ai-flavor-check.md](ai-flavor-check.md) 的**校准锚点**:用仓库内两篇真实 `draft.md` 跑出的诊断结果，给「该报什么、该放过什么」立一把标尺。诊断风格漂移时（报得太狠或太松），回头对照这两个样例校准。**这里的判级同主文档:命中默认 🟡，不 blocking。**\n\n## 样例 A · `drafts/20260404-gongzhonghao-skill-tuiguang/draft.md`\n\n**体裁**:公众号长文 / 干货（标准最严）。\n\n**应命中:**\n\n| 命中 | 信号 | 证据 | 改写方向（不代改） |\n|------|------|------|------|\n| 每节一句加粗对仗/公式金句，通篇扎堆 | 中 | L16「Prompt 是临时工，Skill 才是正式员工」、L35「不要教 AI 做事，要给 AI 立规矩」、L52「写好 Skill = 精准触发 + 清晰流程 + 输出契约」、L65「机器只认契约，不认情怀」 | 留最想被记住的 1–2 句，其余换大白话或删，让节奏有起伏 |\n| 结尾轻度拔高 | 弱 | L107「2026 年的差距，从愿不愿意把经验『文件夹化』开始拉开」 | 与主题尚相关，可留；想更实在就落到具体收益 |\n\n**应放过（阈值/豁免在生效）:**\n\n| 看着像、不报 | 依据 |\n|------|------|\n| 「不是 X，而是 Y」(L11、L26) | 正文严格格式仅 2 次 < 800 字内 ≥3 次阈值，并入对仗金句一起看 |\n| 开头 L9「你是不是也囤了几百个 Prompt」 | 具体痛点提问，非「随着…的发展」万能套话 |\n| 「渐进式披露」(L45) | 真实技术术语，非硬安名字 |\n| 满屏「底层逻辑/新基建/契约」 | 有 L76–80 五步实操 + 真实文件名支撑，不算概念扎堆缺具体 |\n| 「点赞、在看、加星标…下期见」、「你/大家」口语 | writing-spec 鼓励的固定收尾与口语对话，**不当 AI 味扣分** |\n\n**总评折算**:🔴 0 / 🟡 2 / 🟢 余项 → 不阻断定稿。\n\n## 样例 B · `drafts/20260404-cong-anzhuang-dao-caogaoxiang/draft.md`\n\n**体裁**:公众号长文 / 干货（标准最严）。\n\n**应命中:**\n\n| 命中 | 信号 | 证据 | 改写方向（不代改） |\n|------|------|------|------|\n| 对仗金句 + 对仗短句扎堆（比 A 更密） | 中 | L37「不要教 AI 做事，要给 AI 立规矩」、L78「Prompt 是临时工，Skill 才是正式员工」、L43「凭证不对，门打不开。规则不清，活干砸」、L39「工牌决定能进哪扇门，手册决定进门后怎么干活」、L59「没钥匙打不开门，但你可以选择只在屋里练手」 | 对仗留 1–2 处点睛，其余拆成陈述句 |\n| 结尾轻度拔高 | 弱 | L85「2026 年的差距…」（与 A 同款） | 同 A |\n\n**应放过:**\n\n| 看着像、不报 | 依据 |\n|------|------|\n| 「不是 X，而是 Y」(L10、L15) | 正文严格格式约 2 次 < 阈值 |\n| 跨文复用金句（L37/L78 两篇都有） | 系列文统一口号，语境相关，弱信号放过 |\n| 开头痛点提问 (L8) | 非套话开头 |\n| 「凭证/渐进式披露/最小闭环」 | 有 L68–72 真实命令步骤支撑 |\n| 固定互动收尾、口语对话 | writing-spec 鼓励项，豁免 |\n\n**总评折算**:🔴 0 / 🟡 2 / 🟢 余项 → 不阻断定稿。\n\n## 校准要点（两样例共同验证）\n\n1. **首要命中应是「工整对仗/金句扎堆」**——这是这类推广干货最典型的 AI 节奏；抓不到它就是报得太松。\n2. **「不是 X 是 Y」单独出现 1–2 次不报**——只有 800 字内 ≥3 次才命中；否则并入对仗金句。\n3. **口语对话、生活化类比、固定互动收尾一律不报**——它们是 writing-spec 鼓励的「人味」；报了就是与本仓库规范打架。\n4. **有具体步骤/命令/数字支撑的概念词不报**——「概念扎堆」只针对通篇悬空、无法复现的情况。\n5. **全部命中折算 🟡、不 blocking**——AI 味不进第 4 步强制修改循环、不阻断定稿。"},{"path":"references/ai-flavor-check.md","content":"# AI 味诊断方法论\n\n> 本文是审稿环节「AI 味自检」维度的判定依据。它**只用于诊断**，不是定稿门禁：任何命中默认折算为 🟡 建议修改，由作者自行决定改不改（判级规则见 [SKILL.md 第 2 步](../SKILL.md) 与 [output-format.md](output-format.md)）。\n\n## 一、核心理念（先读这一节）\n\n诊断 AI 味之前，先认同三件事，否则容易把好文章误伤、把烂文章洗白：\n\n1. **AI 味的本质是「太完美」。** 不是用词高级，而是**太顺、太均匀、没有取舍**——每段一样长、每个观点都照顾到、情绪从头到尾平稳、该停顿该跑题该自嘲的地方全被抹平。人写东西会有棱角、有偏重、有突然的口语；AI 写东西像一块被打磨过的玻璃，找不到手感。\n\n2. **不以「去 AI 味」为目标。** 去掉 AI 味 ≠ 内容就变好了。一篇观点平庸但「很有人味」的文章，价值未必比一篇结构工整的高。诊断的目的是**让作者看清自己的文字哪里在偷懒**，而不是教 AI 把自己伪装成人。**所以发现 AI 味只提示、不强制改**，更不因为它阻断定稿。\n\n3. **改写必须基于作者意图。** 审稿只负责指出「这里读起来像 AI、原因是什么、可以往哪个方向调」，**不擅自代改**。每一处 AI 味背后往往有作者想表达的东西，没搞清楚意图就动手，只会把文章改成另一种模板。\n\n## 二、信号强度（怎么标命中）\n\n每条命中标注**信号强度**，用文字、不用颜色表情：\n\n| 强度 | 含义 |\n|------|------|\n| **强信号** | 几乎只有 AI 才这么写，人类作者极少自然产出 |\n| **中信号** | AI 高频，但人类在赶稿或偷懒时也会写出来 |\n| **弱信号** | 看体裁和语境，单独出现往往不是问题，扎堆才算 |\n\n> ⚠️ **撞色提醒**：这里的「强/中/弱」只表示「**像不像 AI**」，与审稿总评的 🔴必须 / 🟡建议 / 🟢通过（**行动级**）是两套体系，互不替换。**无论强信号还是弱信号，AI 味命中默认都折算为总评里的 🟡。** 不要在 AI 味诊断里用 🔴/🟡/🟢，也不要把「强信号」当成「必须改」。\n\n## 三、AI 味指纹库\n\n按公众号写作场景整理。每条给出**特征 → 公众号里的典型样子 → 信号强度**。诊断时按正文顺序逐处指出，引用原句，别按类型归类堆在一起。\n\n1. **工整三段式排比。** 「它让你更专注，让你更高效，让你更从容。」每节都来一组对仗排比，整齐得像 PPT。单处排比是好文笔，**通篇每节都排比**才是 AI 味。——**中信号**\n\n2. **「不是 X，而是 Y」句式滥用。** 「这不是工具，而是伙伴。」「重要的不是速度，而是方向。」单次是漂亮的修辞，密集出现就是 AI 的口头禅。——**强信号**（命中阈值见第四节）\n\n3. **面面俱到、没有取舍。** 一个话题把利弊、前提、例外、适用人群全讲一遍，什么都对，什么都不得罪。人写东西会有重点、会偏袒、会略过；什么都讲 = 没有观点。——**强信号**\n\n4. **反复让步、两头讨好。** 「当然，这并不是说……」「诚然，也有人认为……」「不可否认……」每抛一个观点就先垫一句免责声明，生怕得罪谁。——**中信号**\n\n5. **命名仪式感。** 「我把这套方法称为『黄金三角法则』。」「这就是所谓的『复利效应』。」给一个普通做法硬安一个唬人的名字，再郑重其事地解释。——**中信号**\n\n6. **情绪曲线太平滑。** 从头到尾一个温度，均匀的「温暖」「治愈」「赋能」，没有真正的激动、烦躁、犹豫、泄气。真人写作情绪是有起伏和断裂的。——**中信号**\n\n7. **「你值得 / 愿你」式祝福收尾。** 「愿你在喧嚣中找到自己的节奏。」「你值得拥有更好的生活。」用一句正确而空洞的祝福收尾，谁都适用、谁都记不住。——**强信号**\n\n8. **翻译腔。** 「值得注意的是」「在某种程度上」「众所周知」「让我们来看看」，以及很长的前置定语从句。读起来像英文直译，不像中文口语。——**中信号**\n\n9. **万能套话开头。** 「随着 AI 技术的发展」「在当今这个时代」「在快节奏的现代生活中」。用一个放之四海皆准的宏观背景起头，等于没说。——**强信号**\n\n10. **强行拔高升华。** 一个具体的小技巧，结尾非要扯到「人生」「时代」「意义」「成长」。本来在讲怎么用快捷键，最后升华成「这是一种生活态度」。——**中信号**\n\n11. **模板化假故事。** 「我有个朋友……」「记得有一次……」开头，但细节全是空的——没有具体的时间、地点、对话、尴尬，像是为了凑一个故事而临时编的。——**中信号**\n\n12. **总分总八股 + 「总而言之」。** 开头预告「本文将从三个方面」，中间整齐分点，结尾「总而言之/综上所述」收口。结构完整得像作文模板，没有任何意外。——**中信号**\n\n13. **过度规整的标点与节奏。** 句子长度高度均匀，破折号、分号用得很书面，几乎没有短促的口语断句、没有「。」单字成句、没有省略。——**弱信号**\n\n14. **形容词/副词通货膨胀。** 「极其重要」「无比关键」「真正意义上的」「彻头彻尾地」，靠堆叠程度词撑分量，而不是靠具体的事实和细节。——**弱信号**\n\n15. **概念名词扎堆、缺具体。** 满屏「赋能、闭环、抓手、底层逻辑、认知升级」，但通篇没有一个能让人复现的具体步骤或真实数字。——**中信号**\n\n## 四、防误判阈值（别冤枉正常写作）\n\n指纹本身不等于罪证，**关键看密度和语境**。下面这些情况**不要**判命中：\n\n- **「不是 X 是 Y」**：800 字内出现 **≥3 次**才算命中；单次、两次是正常修辞，放过。\n- **排比 / 对仗**：单处是好文笔，**只有当几乎每节都在排比**时才算命中。\n- **让步句（「当然」「诚然」）**：观点确实有争议、需要交代边界时是负责任，不算 AI 味；只有**每个论点前都垫**才算。\n- **故事**：有具体细节（时间、地点、对话、尴尬、数字）的故事不算「模板化假故事」，哪怕开头也是「我有个朋友」。\n- **升华**：文章主题本就关于价值观/人生的，结尾谈意义是切题，不算「强行拔高」。\n- 拿不准时，**宁可不报**。本方法论的立场是「看清自己」，不是凑数找毛病。文章干净就直接说干净，不强行命中。\n\n## 五、与本仓库 writing-spec 的关系（重要）\n\nAI 味自检是 [`.aws-article/writing-spec.md`](../../../.aws-article/writing-spec.md) 的**补充诊断层**，两者分工、不重复扣分：\n\n- writing-spec 已明令禁止的套话（如「随着 AI 发展」「总而言之」），由 writing-spec 维度负责；本维度可以指出，但**不要在两个维度各扣一次**。\n- **本仓库 writing-spec 鼓励的写法，一律不算 AI 味**，包括：用「你/大家」直接对"},{"path":"references/checklist.md","content":"# 审稿检查清单\n\n## 内容审检查项（writing 之后）\n\n### 标题\n\n- [ ] 字数不超过 `title_max_length`\n- [ ] 不含 `forbidden_title_phrases` 中的套路\n- [ ] 与正文内容一致，不做标题党\n- [ ] 有吸引力，能让读者想点进来\n\n### 摘要\n\n- [ ] 字数在 `summary_length` 范围内\n- [ ] 能概括文章核心价值\n- [ ] 与正文内容一致\n- [ ] 不是正文第一段的复制\n\n### 正文内容\n\n- [ ] 不含 `custom_sensitive_words` 和 `forbidden_words`\n- [ ] 无明显错别字和语病\n- [ ] 事实与数据有出处（如适用）\n- [ ] 原创/转载标注按 `original_attribution` 处理\n- [ ] 开头 2-3 句有吸引力\n\n### 写作规范合规\n\n对照 `.aws-article/writing-spec.md` 检查（如有）：\n\n- [ ] 用词规范：标点、中英文间距、数字格式\n- [ ] 句式偏好：句长、主动语态、无套话\n- [ ] 段落规范：段长、核心观点位置\n- [ ] 禁止事项：无夸张承诺、无未验证数据（AI 味单列，见下「AI 味自检」节）\n- [ ] 品牌调性：与规范中的调性描述一致\n\n### AI 味自检\n\n对照 [ai-flavor-check.md](ai-flavor-check.md) 的指纹库逐处诊断，命中处引用原句并标注信号强度（强/中/弱）：\n\n- [ ] 句式：无工整三段式排比扎堆、无「不是 X 是 Y」滥用（800 字内 ≥3 次才算）、无翻译腔\n- [ ] 观点：有取舍重点，非面面俱到；无反复让步两头讨好\n- [ ] 收尾：无「你值得 / 愿你」式空洞祝福、无强行拔高升华、无「总而言之」八股\n- [ ] 开头：无「随着…的发展」「在当今时代」等万能套话\n- [ ] 质感：无命名仪式感、无模板化假故事、无概念名词扎堆缺具体\n\n> **判级**：本节命中**默认 🟡 建议修改，只诊断不强制改、不阻断定稿**。先判体裁（长文/短文案/标题宽严不同），尊重 writing-spec 鼓励的口语对话与生活化类比（不算 AI 味）。拿不准宁可不报。\n\n### 配图标记\n\n- [ ] 封面标记存在（`![封面：...]`）\n- [ ] 配图数量与 `image_density` 配置匹配\n- [ ] 每个标记的描述清晰、有具体内容（不是泛泛的「配图」）\n- [ ] 标记类型合理（信息图/氛围/实证等与段落内容匹配）\n- [ ] 实证类标记注明了需用户提供\n\n### 结构\n\n- [ ] 小标题密度符合 `heading_density`\n- [ ] 结尾有力（总结/金句/行动号召）\n- [ ] 文末引导区块按 `closing_block` 处理\n- [ ] 若 config 中配置了 `target_word_count`，篇幅应在该范围内\n\n---\n\n## 终审检查项（publish 之前）\n\n在内容审的基础上，额外检查：\n\n### 排版\n\n- [ ] `article.html` 存在且内容完整\n- [ ] HTML 中无乱码或格式异常\n\n### 图片\n\n- [ ] `imgs/` 目录存在\n- [ ] 封面图已生成（`00-cover.*`）\n- [ ] 所有 `placeholder` 已替换为实际图片路径\n- [ ] 图片文件实际存在\n\n### 发布要素\n\n- [ ] 标题、摘要、作者已最终确认\n- [ ] 正文无未替换的占位符或草稿标记\n- [ ] 如需开启评论/仅粉丝可评，已确认设置\n\n---\n\n## 自定义规则\n\n`.aws-article/presets/review-rules.yaml` 中的规则追加在标准项之后执行。"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"公众号审稿｜公众号校对｜敏感词检测｜内容合规 — 公众号发布前合规审查：敏感词扫描、错别字检测、政治合规、平台规范校验，一次性输出修改清单。面向公众号编辑、自媒体作者、合规岗。触发词：「审稿」「审核」「校对」「合规」「敏感词」「错别字」「稿子检查一下」「稿子帮我看看」「稿子写完了」「文章检查一下」「检查下有没有问题」「能不能发」「发布前检查」。需要多环节串联（写+审+排+配图+发）请走 aws-wechat-article-main。 Skill: 公众号审稿 & 敏感词校对 Owner: aiworkskills Summary: 公众号审稿｜公众号校对｜敏感词检测｜内容合规 — 公众号发布前合规审查：敏感词扫描、错别字检测、政治合规、平台规范校验，一次性输出修改清单。面向公众号编辑、自媒体作者、合规岗。触发词：「审稿」「审核」「校对」「合规」「敏感词」「错别字」「稿子检查一下」「稿子帮我看看」「稿子写完了」「文章检查一下」「检查下有没有问题」「能不能发」「发布前检查」。需要多环节串联（写+审+排+配图+发）请走 aws-wechat-article-main。 Tags: chinese:1.0.17, claude-code:1.0.17, compliance:1.0.17, latest:1.0.25, moderation:1.0.17, proofreading:1.0.17, review:1.0.17, wechat:1.0.17 Versi","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":726,"uniquenessScore":55,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T05:49:31.057Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-10T05:49:31.057Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T10:53:13.629Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}