Pre-publication compliance gatekeeper for Official Accounts — One-time screening for sensitive words, typos, and platform specifications, outputting an actionable revision checklist.
Suite Description · This skill belongs to
aws-wechat-article-*a one-stop suite (9 slugs in total, entry pointaws-wechat-article-main). Cross-skill relative references depend on the sameskills/directory, and it is recommended to installclawhub installthe full suite together. Source code:https://github.com/aiworkskills/wechat-article-skills
Capabilities Disclosure
This skill ispurely local rule/checklist review, with zero network and zero credentials.
- Credentials: none
- Network: none
- File read:
.aws-article/config.yaml、.aws-article/writing-spec.md(if any),.aws-article/presets/review-rules.yaml(if any), this article'sdraft.md/article.html/article.yaml/imgs/ - File write: this article's
draft-stripped.md(intermediate artifact),article.md(final draft),review.md - shell: only called in step 5
{python} .../aws-wechat-article-writing/scripts/write.py strip-citations, and in step 2 the same script'schecksubcommand is called.Both are purely local regular expressions/counts, do not connect to the network, do not read credentials, and do not call an LLM.
Automatic completion of past recommendation linksAutomatic completionis handled by publish skill (that is where the WeChat API credentials and
getdraft.pyare); this skill only arranges placeholders according to the existingmanual,does not directly call any network script。
Routing
"Can it be published" if it includes publishing on behalf of the user, or the entire wrap-up from draft to publication → aws-wechat-article-main。
Two review modes
| Mode | Timing | Check Focus |
|---|---|---|
| Content review | After writing, before formatting | Content quality, writing standards, sensitive words, image markers |
| Final review | Before publish | Formatting completeness, images in place, all publication elements present |
Automatic identification: if there is article.html → final review mode, otherwise → content review mode.
Workflow
审稿进度:
- [ ] 第1步:环境检查 + 本篇约束与规范
- [ ] 第2步:逐项检查(含机器自检)
- [ ] 第3步:输出审稿结果
- [ ] 第4步:修改循环 🔄
- [ ] 第5步:⛔ 剥离引用标注 → 文末 embed → 保存 article.md 定稿
Agent behavior constraints ⛔
- Prohibitedwhen step 5 "end-of-article embed" has not been completed, to call the manuscript "finalized", write
article.md, or proceed to formatting (format.py)。 - Prohibitedto skip the end-of-article placeholders for reasons such as "the user did not mention it" or "to save time".Sole exception: if the userin writingdeclares that this article does not need any embedded elements, then the review record must state "user declared skipping embed", and it must still be confirmed that this is not a misoperation.
- In the one-stop process, the content review output's
article.mdmust already contain the end-of-article embed(according to the merge rules or a legitimate omission), before proceeding to formatting.
Step 1: Environment check + read constraints ⛔
Before any operation, first follow First-time onboarding · detection order to execute, and only continue after passing (or the user explicitly confirms in writing "no check this time"). For the criteria when this skill is enabled on its own, see branches.md "IV"。
Then read:
.aws-article/writing-spec.md(if any).aws-article/presets/review-rules.yaml(if any, see branches.md "II")- Merged configuration for this article(consistent with writing、
format.py): first.aws-article/config.yamltop level (excludingwriting_model/image_model), then overlay this article'sarticle.yaml(Same key: this article takes precedence;Onlyembeds.related_articlesis deeply merged with the global one; the rest ofembedsstill follows the global one). Review is based on the merged result (review_output_format、custom_sensitive_words、forbidden_words、target_reader、tone、image_density, etc.). For field descriptions, see articlescreening-schema.md。
When constraints are missing, follow branches.md "III" to degrade,do not interrupt the review。
Step 2: Check item by item
For the complete checklist, see references/checklist.md。
First run the machine self-check(content review mode) — the countable parts of the output quota should not rely on the eyes:
{python} {baseDir}/../aws-wechat-article-writing/scripts/write.py check <本篇 draft.md>
Same as writing Step 7 the same set of criteria. It should have been run during the writing stage, but the draft may have been pasted in by the user, or manually edited midway,this is the last checkpoint that can be measured by machine. Mapping: what the script reports ashard items → 🔴,reminder items → 🟡. It will also print all bolded text in the whole article strung together on one line —whether that string reads like a summary still has to be read through yourself, the script cannot measure whether the selection is right.
Content reviewThen manually go through each dimension:
| Dimension | Check content |
|---|---|
| Title | Length, banned formulas, consistency with the body |
| Summary | Length, information density, consistency with the body;and it is not the same sentence as the body's first > lead |
| Body | Sensitive words, banned words, typos, factual sources |
| Writing standards | Check wording, sentence patterns, and paragraphs against writing-spec.md; whether depth and tone are consistent with the merged configuration's target_reader、tone consistency |
| AI-flavor self-check | Against ai-flavor-check.md diagnose each spot and mark the signal strength.Diagnose only by default: uniformly convert to 🟡, not blocking, does not affect finalization (for the difference between the two grading sets, see branches.md "V") |
| Image markers | Cover marker exists, count matches image_density match, description is specific |
| End-of-article embed | Must complete Step 5 before finalization ⛔; if not written to article.md must not be finalized |
| Originality labeling | Handle according to original_attribution handle |
Final reviewAdditional checks:
| Dimension | Check content |
|---|---|
| Layout | article.html exists and is complete, no garbled text |
| Images | The article directory contains cover.*(the cover is not in imgs/ ),imgs/ the body images are complete,placeholder all have been replaced, and the files actually exist |
| Publishing elements | Title/summary/author/cover are all ready |
Step 3: Output the review results
Output according to review_output_format :Detailed by block(grouped by dimension, item-by-item ✅/❌ + revision suggestions) orBrief checklist(table, one item per row). See the template in references/output-format.md。
Results are divided into three levels:
- 🔴 Must fix: cannot pass without fixing (sensitive words, serious typos, missing cover, hard requirements from the automated self-check)
- 🟡 Suggested fix: better if fixed (word choice optimization, paragraph adjustments, AI flavor, reminder items from the automated self-check)
- 🟢 Pass
Step 4: Revision loop 🔄
When there are 🔴 items,you must enter the revision loop:发现问题 → 展示审稿结果 → 修改 → 重新检查 → 直到无 🔴。
Revision methods: the Agent directly edits draft.md / after the user manually edits and says "fixed" / call writing 's rewrite.
In each round, only re-review the items marked 🔴; there is no need for a full re-review.
⚠️ Completing Step 4 does not mean
article.mdcan be saved; you must first complete Step 5.
Step 5: Strip citation annotations → end-of-article embed → save the final draft ⛔ BLOCKING
After all 🔴 are eliminated:
-
Show the final review results,wait for user confirmation ⛔。
-
Strip citation annotations — execute at the repository root:
{python} {baseDir}/../aws-wechat-article-writing/scripts/write.py strip-citations <本篇 draft.md> -o <本篇 draft-stripped.md>Use a purely local regex to strip all
(资料路径:…)from the body (they are forcibly injected during the writing stage for fact tracing and must be removed in the published version to avoid leaking internal product catalog paths).Forbiddento use sed or manual tearing as a substitute for this script—historically there have been many cases of "tear once and miss one". -
At the end of the article,
embeds—— before writingarticle.md,according to the merged result from Step 1, indraft-stripped.md'send of bodyappend the placeholder:Placeholder When to write Configuration alignment {embed:profile:…}embeds.profileshas at least one non-emptynicknameOne line per valid item, …= that item'snickname{embed:miniprogram:…}embeds.miniprogramshas at least one non-emptytitleOne line per valid item, …=title{embed:miniprogram_card:…}embeds.miniprogram_cardshas at least one non-emptytitleOne line per valid item, …=title{embed:link:…}embeds.related_articles.manualhas valid items…= that item'sname;at most 3 itemsPlaceholders must be consistent with the merged parseable configuration, otherwise the layout stage will fail. Empty lists,
manualmissing, user-declared skips, and all-empty cases must still be explicitly annotated—see branches.md "One"。 -
Savethe manuscript with citation annotations stripped and the end-of-article embed included(or omitted according to the rules and recorded in the review notes) as
article.md(final draft). The intermediate productdraft-stripped.mdmay be retained for reference or deleted.
Do not save the final draft or call before completing small step 3. format.py。
Branches and exceptions
Three cases of past links and all-empty annotation, custom check rules, fallback for missing constraints, enabling this skill separately, two sets of AI-flavor grading → references/branches.md。
Process files
| Mode | Read | Output |
|---|---|---|
| Content review | draft.md、.aws-article/config.yaml + this article article.yaml、writing-spec.md |
review.md、article.md(final draft) |
| Final review | article.html、cover.*、imgs/, same merged configuration as above,article.yaml |
review.md(final review result) |