/article 微信公众号文章创作命令
强制执行声明
你正在执行微信公众号文章创作任务。你必须使用工具(MCP 工具、Write、Bash、TaskCreate 等)完成完整的创作流水线。
禁止直接用文字回答用户的主题问题。 你不是在回答问题,你是在创作一篇微信公众号文章。如果你直接输出文字回答而没有使用任何工具,说明你理解错了任务。
用户输入 /article 后面的内容是创作主题,不是让你回答的问题。
图片运行控制前置(硬性)
公众号文章的封面图与正文配图由 user message 的结构化运行控制 article_image_mode 决定。若该键缺失,按 cover_and_content 兼容旧任务;不要扫描自然语言禁令来推断开关。所有质量标准、成功标准、发布前验证和失败判定都必须先判断图片模式:
cover_and_content:封面和正文配图都开启,按完整视觉流程执行。cover_only:不得生成image-plan.md/images.json/ 正文<img>;模板image_count.min不生效;不得把章节缺图、缺image-plan.md、缺images.json判为失败。content_only:不得生成cover.png/cover-prompt.md;草稿不带thumb_media_id;不得把缺封面或缺media_id判为失败;正文图不得把ref_image_path指向不存在的$DIR/cover.png。text_only:纯文字文章,不生成任何图片,visual-rhythm-plan.md可存在但所有image_url=null,草稿不带thumb_media_id,final-review.md记录「未生成封面,公众号后台可能不显示封面/需手动设置」。
仅在对应图片模式开启该产物时,封面、正文配图、vision 校验、正文图片互不相同等图片相关要求才是硬性项;关闭时跳过且不计为失败。
必须执行的步骤
按顺序执行以下步骤。每一步都必须调用对应的工具,不能跳过。
Phase 1: 信息收集
步骤 1:获取项目信息与工作目录
项目选择(必须先完成,再调用项目 API):
- 检查
$ANBAN_DEFAULT_PROJECT环境变量,非空则直接使用 - 否则调用
list_projects(platform="article"),仅根据name、positioning、keywords语义匹配或让用户选择 →$PROJECT_ID - ⚠️ 禁止基于 API 可用性选择项目:不要对多个项目调用
get_project_profile/list_published_articles来评估哪个"可用"。项目选择仅依据list_projects返回的name、positioning、keywords。选定项目后,即使后续 API 调用返回错误也不得切换到其他项目
项目选定后,仅对 $PROJECT_ID 调用:
get_project_profile(project_id="$PROJECT_ID", scope="article", task_id="$TASK_ID")→ 获取账号定位、受众、风格维度。同时解析视觉维度的权威来源:$VISUAL_STYLE_CONFIGURED= profile 的visual_style字段、$VISUAL_STYLE_SOURCE=visual_style_source(task / project)。task_id让服务端按任务级覆盖解析(task > project两层),不传则只拿到 project 级信息。务必区分两个易混字段:顶层author是公众号署名(步骤 10 发布时原样填入draft.json的 author,空则省略);顶层writer是写作风格资源 key(驱动正文语气)。二者用途不同,绝非署名、绝不混用。写作风格头像/昵称只是 Studio 展示元数据,不会出现在 MCP profile 中。list_drafts(project_id="$PROJECT_ID")和list_published_articles(project_id="$PROJECT_ID")→ 已有文章标题(如返回错误可忽略,用空列表继续)prepare_workspace(content_type="articles", task_id=TASK_ID)→ 工作目录路径$DIR- Bash 执行
mkdir -p "$DIR"创建目录
步骤 2:选题研究
using the topic-research skill 结合账号关键词和用户需求搜索热门话题,创作文章大纲。产出:
$DIR/01-research.md— 选题分析和关键词$DIR/02-outline.md— 文章大纲(≥3 个二级标题)
Phase 2: 内容创作
步骤 3:撰写文章
using the content-writing skill 基于账号定位和大纲输出 Markdown 格式文章。写作时不需要插入配图占位符(配图由步骤 7 专门处理)。产出:
$DIR/03-article.md— 完整文章内容
步骤 4:AI 去痕与合规检查
using the content-writing skill 先执行 AI 去痕(humanizer skill,无强度档位),再执行违禁词合规检查。产出:
$DIR/04-article-final.md— 检查后的文章
Phase 3: SEO 与视觉
步骤 5:SEO 优化
using the seo-optimization skill 优化标题、关键词、摘要。将优化后的标题和摘要保存为 $DIR/seo-result.md,供步骤 9/10 使用。
步骤 6:模板选择、节奏规划、封面生成(带视觉校验)、配图规划
using the article-visual-design skill 完成以下子步骤。详细规范见 skills/article-visual-design/SKILL.md 与 skills/article-visual-design/references/{cover,content,rhythm}.md。
6a:选择文章类型模板(配置优先风格)
公众号"模板"由三个正交维度组成:图片视觉(visual_style)、写作者(writer)、排版样式(theme)。三者各自独立解析,互不推导——写作风格绝不决定图片视觉。
读取 $DIR/03-article.md(或 04-article-final.md),根据结构特征匹配模板(自动决策,不询问用户):
| 特征 | 模板 | YAML 路径 |
|---|---|---|
| 含"3 个/5 种/N 条" + 并列项 | listicle |
templates/article/listicle.yaml |
| 按步骤序号组织(步骤 1 / step N) | tutorial |
templates/article/tutorial.yaml |
| 情节弧、场景、人物时间线 | story-narrative |
templates/article/story-narrative.yaml |
| 其他(深度观点、评论、分析) | long-form-essay(默认) |
templates/article/long-form-essay.yaml |
加载模板 YAML,提取 rhythm(slot 规则)、image_count(min/max)、modules.preferred(可用 layout module)、composition_guidance(构图指南)。记录 $TEMPLATE_NAME / $TEMPLATE_PATH。特征模糊时优先选 long-form-essay。
6b:创建视觉节奏规划
读取 $DIR/03-article.md,对每个 ## 章节分配 slot,创建 $DIR/visual-rhythm-plan.md:按模板 rhythm 规则把每个 ## 映射到 hero / section_opener / inline_detail / footer;按 composition_guidance 为每个图 slot 选 composition_type(3+ 图时用 3+ 种构图,listicle 模板豁免);从 modules.preferred 选 module;每个 slot 写 1 句 chapter_anchor。模板自检:hero 有且仅有 1 个、section_opener 数量符合模板、footer 符合必选/可选规则。模板格式和完整示例见 skills/article-visual-design/references/rhythm.md。
6c:视觉风格确定(配置优先,分析兜底)
视觉风格优先取自步骤 1 已解析的任务字段(task > project):
- 若
$VISUAL_STYLE_CONFIGURED非空 → 它是权威视觉锚点。以它为$VISUAL_STYLE的核心,三维分析(账号定位 / 内容主题 / 受众)只做补充细化(配色、情绪、构图),绝不可覆盖或偏离配置的视觉方向。例如配置了"温暖自然的生活摄影",就不得生成维多利亚木刻/黑白版画等冲突风格。 - 若
$VISUAL_STYLE_CONFIGURED为空(所有层级都未配置视觉)→ 执行完整三维分析兜底。 - 不从 writer YAML 推视觉(writer 仅决定文字风格,已不再携带任何视觉/封面字段)。
产出 $VISUAL_STYLE(含配置锚点 + 细化方向)/ $COLOR_PALETTE / $MOOD / $VISUAL_STYLE_SOURCE。映射关系见 skills/article-visual-design/references/cover.md。
6d:生成封面(委托 article-cover-design skill,生成与上传原子化)
封面是全篇风格锚点。封面设计已独立成稿——using the article-cover-design skill:硬编码官方比例(900×383 / 2.35:1)、中心安全区构图(转发卡 1:1 兼容)、受控文字策略(按真实场景决定是否带短文字)、从文章核心隐喻推导视觉概念、vision 6 维评分卡把关。本步骤只交代与本流水线的衔接:
- 从
$DIR/04-article-final.md提取核心论点和最强视觉隐喻,交给article-cover-designskill 推导视觉概念(绝不生成通用素材图)。 - 调用
generate_image(upload_to_cdn=true让生成与上传原子化:同一调用内完成生成→裁剪→校验→压缩→上传微信 CDN,直接返回media_id+wechat_url):generate_image( project_id=$PROJECT_ID, prompt=<article-cover-design skill 构建的封面提示词>, image_type="cover", output_path="$DIR/cover.png", task_id=$TASK_ID, size="21:9", verify_with_vision=true, verification_prompt=<6 维评分卡>, upload_to_cdn=true )size="21:9"是生成提示比(Volcengine 支持的最近比);服务端按platform=article + image_type=cover把成品精确裁到 900×383 并像素断言——微信零裁剪,告别「需要手动裁剪的纯图」。
- 校验不过 → 按
sharper_prompt_hint锐化 prompt 重试,最多 3 次;仍不过请求用户协助。封面必须 vision 校验通过后才可作为thumb_media_id;未通过 vision 的封面不得用于发布。 - 从返回值取
media_id(发布草稿的 thumb)+wechat_url($COVER_CDN_URL,仅供 thumb_media_id 来源识别,不得复用为正文<img src>)。不再单独调用upload_image。若返回upload_error(生成成功但上传失败),用upload_image(file_path="$DIR/cover.png")单独重传即可,无需重新生成。 - 记录
$COVER_PATH="$DIR/cover.png"、$COVER_MEDIA_ID、$COVER_CDN_URL(供步骤 7/8/10 使用)。 - 原子写
$DIR/cover-prompt.md(先写$DIR/.cover-prompt.md.tmp→fsync→rename覆盖):完整记录封面生成决策(比例 900×383、账号视觉风格来源、核心隐喻、required_entities、最终 prompt、vision 6 维评分卡结果)——模板见skills/article-cover-design/SKILL.md。
详细推导链、6 维评分卡模板、迭代策略见 skills/article-cover-design/SKILL.md;三维风格方向参考见 skills/article-visual-design/references/cover.md。
6e:创建配图内容规划(升级 schema)
按 $DIR/visual-rhythm-plan.md 中每个需要图的 slot,规划配图内容,写入 $DIR/image-plan.md。新 schema 强制要求:
visual_brief:1-2 句白话"这张图必须画什么"required_entities:必须出现的具体物体列表(vision 校验依据)must_match_excerpts:章节中支撑这些实体的原句- 沿用字段:
slot_id、section_index、chapter_title、core_point、composition_type、source_excerpt、prompt_strategy
详细正反例和填写规范见 skills/article-visual-design/references/content.md。
产出:$DIR/visual-rhythm-plan.md, $DIR/cover-prompt.md, $DIR/cover.png, media_id, $COVER_CDN_URL, $VISUAL_STYLE/$COLOR_PALETTE/$MOOD/$VISUAL_STYLE_SOURCE, $TEMPLATE_NAME, $DIR/image-plan.md
步骤 7:配图生成(带 vision 校验循环)
using the article-visual-design skill 按 $DIR/visual-rhythm-plan.md 中 slot 顺序生成。每个需要图的 slot 执行:
7a:构建 prompt 并生成(生成与上传原子化)
基于 image-plan.md 中对应 slot 的 visual_brief + required_entities + composition_type 叠加 $VISUAL_STYLE / $COLOR_PALETTE 构建 prompt,并构建 vision 校验 prompt(含 visual_brief + required_entities,详见 skills/article-visual-design/references/content.md)。调用(upload_to_cdn=true 让生成与上传原子化:校验通过才上传,返回值直接带 wechat_url/media_id):
generate_image(
project_id=$PROJECT_ID,
prompt=<构建的 prompt>,
image_type="content",
output_path="$DIR/img_N.png",
task_id=$TASK_ID,
ref_image_path=<封面开关开启时 "$DIR/cover.png";封面关时省略或链到首张已生成图>,
size=<按 slot 固定:section_opener/信息图用 "4:3",inline_detail 用 "1:1">,
verify_with_vision=true,
verification_prompt=<vision 校验 prompt>,
upload_to_cdn=true
)
关键:公众号正文配图不依赖项目级/任务级 image ratio;每次 generate_image 必须显式传 size(section_opener/信息图用 size="4:3",inline_detail 用 size="1:1")。封面+配图均开启时,ref_image_path 用 $DIR/cover.png(风格锚点/参考输入,不是把封面图当作正文图复用);封面关·配图开时不传 ref_image_path 或链到首张已生成图,严禁指向不存在的 $DIR/cover.png。每张正文图的 <img src> 必须是该图独立生成并上 CDN 后得到的 wechat_url——严禁把封面 $COVER_CDN_URL 直接填入正文任何 <img src>,也严禁多张正文图共用同一个 wechat_url;否则会触发服务端"正文全图相同"硬拦截导致发布失败。不再有独立的批量 upload_image 阶段——每张图生成的瞬间即上 CDN。
7b:vision 校验与失败重试
解析 generate_image(verify_with_vision=true) 返回的 verification 字段。字段名是服务端归一化后的 passed/score/missing_entities/notes/raw,不是 LLM 原始 JSON 的 overall_pass/relevance_score(服务端已为你做归一化)。若 server 未自动校验,agent 单独调 analyze_image 并按 article-visual-design skill 的容错解析规则处理返回文本。失败重试策略:
passed=true→ 通过,继续下一 slotpassed=false+score为 medium/low → 用notes中的sharper_prompt_hint锐化 prompt 重试(最多 2 次,共 3 次尝试)- 3 次仍失败 → 标记
quality_status=failed,继续后续 slot
锐化 prompt 策略:在 prompt 开头加 MUST CONTAIN: + verification.missing_entities 列表;把 visual_brief 改写得更具体(加入材质、颜色、方位、数量);加强主体权重 "MAIN SUBJECT: <具体物体>"。
7c:记录并立即原子落盘(生成即持久化)
generate_image(upload_to_cdn=true) 返回时,wechat_url/media_id 已就绪(或返回 upload_error)。无需调用 upload_image——立即把这张图写回 $DIR/images.json,使中断最多丢失"正在生成的那一张",已上 CDN 的全部安全。
- 从
generate_image返回值取wechat_url→ 写入url字段;若返回upload_error(生成成功但上传失败),记到upload_error字段并用upload_image(file_path="$DIR/img_N.png")单独重传(不重新生成),重传成功后再落盘。 - 原子写
$DIR/images.json:先写$DIR/.images.json.tmp→fsync→rename覆盖。绝不要"攒齐所有图再一次性写"——每张图返回即落盘。 - 每条记录必须含:
index、slot_id、section_index、image_type、chapter_title、composition_type、visual_brief、required_entities、must_match_excerpts、prompt、verification(passed/score/missing_entities/notes/raw,直接来自服务端返回值)、verification_audit(attempt_count/sharper_prompt_history,agent 维护)、ref_image_path、file_path、url、wechat_url、media_id、quality_status。
7d:插入到文章并回填 rhythm-plan
按 slot 的 slot_id + section_index 把  插入 $DIR/04-article-final.md:
section_opener:紧跟## 章节标题之后inline_detail:在after_paragraph_index指定的段落之后hero:在文章开头(如有 hero module 文字,则在 hero module 之后)
把所有 CDN URL 回填到 $DIR/visual-rhythm-plan.md 的 layout_plan JSON 块中。
7e:质量验证
生成完成后执行检查:
- 节奏完整性:
visual-rhythm-plan.md中每个##都映射到一个 slot - 模板一致性:所选模板的 rhythm 规则被遵守(listicle 的 inline_detail 必须为空、tutorial 的 footer 必填等)
- 文件完整性:所有图片文件存在且可访问
- 风格一致性:封面+配图均开启时,
images.json中所有内容图ref_image_path="$DIR/cover.png";封面关·配图开时无ref_image_path或链首图,且不得指向不存在的$DIR/cover.png - 视觉多样性:3+ 配图使用 3+ 种不同
composition_type(listicle模板豁免) - Vision 校验通过率:至少 80% 的内容图
verification.passed=true - 审计完整性:
images.json每条含visual_brief/required_entities/must_match_excerpts/verification/slot_id/section_index/wechat_url/media_id - CDN 持久化:
images.json每条都有非空wechat_url(即每张图已上微信 CDN) - 正文图片互不相同:
images.json中所有内容图的wechat_url两两不同,且没有任何一张等于封面$COVER_CDN_URL(封面只能用于thumb_media_id,不得复用为正文图);服务端publish_draft会硬拦截"正文 ≥2 图但唯一 URL==1"的草稿,配图失败时宁可缺图降级也不得用封面/他图顶替
未通过检查时按问题类型处理:单图失败降级、节奏/模板违规回步骤 6a/b、Vision 通过率 <80% 回步骤 6e。超过一半章节配图失败则暂停流程请求用户协助。
产出:更新后的 $DIR/04-article-final.md(含 CDN 图片链接)、$DIR/images.json、回填后的 $DIR/visual-rhythm-plan.md
Phase 4: 组装发布
步骤 8:HTML 渲染(render_template)
using the content-writing skill 渲染 HTML。不再使用 convert_markdown 自由发挥,改用 render_template MCP 工具按节奏计划确定性渲染:
render_template(
project_id=$PROJECT_ID,
markdown=<$DIR/04-article-final.md 全文>,
layout_plan=<$DIR/visual-rhythm-plan.md 中的 layout_plan JSON 块>,
theme=<可选,默认用 project theme>
)
render_template 服务端按 layout_plan 中的 slot 顺序确定性渲染 HTML 骨架,图片占位符按 slot 位置精确插入,layout module 按 module_vars 渲染。返回 { html, slots_rendered }。把返回的 html 字段保存为 $DIR/05-article.html,把 slots_rendered 写入 $DIR/final-review.md 作为渲染审计。
图片单一路径(避免重复
<img>):render_template按layout_plan的 slot 自动注入配图。若传入的markdown(04-article-final.md)里已内联同一张图,服务端按 URL 去重——同一 URL 只渲染一个<img>,无需手动 Edit 清理重复 img。配图位置以layout_plan为单一权威路径;04-article-final.md的内联图仅作人工可读 markdown 产物。
注:
convert_markdown仅在render_template不可用的旧版 server 上作为兼容降级路径,新流水线主路径必须用render_template。
产出:
$DIR/05-article.html(含 CDN 图片 + 结构化 slot)
步骤 9:发布前总验收
创建 $DIR/final-review.md,汇总并判定以下硬性项(图片开关守卫:封面/配图相关项在对应开关关闭时跳过且不计为失败;纯文字文章时额外记录「未生成封面,公众号后台可能不显示封面/需手动设置」):
- 内容质量:文章贴合用户需求、账号定位和上下文
- 模板与节奏:
visual-rhythm-plan.md存在;所选模板的 rhythm 规则被遵守;每个##章节映射到 slot;封面/配图开启时layout_planJSON 块的对应image_url已用 CDN URL 回填(关闭时对应 slotimage_url=null) - 配图内容贴切(仅正文配图开启时):
image-plan.md每张图含visual_brief+required_entities+must_match_excerpts;images.json中至少 80% 的内容图verification.passed=true - 视觉一致性(封面开关开启时):封面存在且已上传获得
media_id;封面+配图均开启时所有内容图ref_image_path="$DIR/cover.png";封面关·配图开时内容图不传ref_image_path或链首图 - SEO:
seo-result.md包含优化后的标题和摘要 - 合规:违禁词和平台合规检查无高风险未处理项
- HTML:
05-article.html由render_template生成(记录在final-review.md的render_audit段),图片链接有效,内容未超过平台限制 - 草稿字段:title、digest、content 可从前序产物读取;
thumb_media_id仅封面开关开启时要求可读取
硬性闸门:任一项失败时停止发布,记录失败原因和需要回退的步骤;不得调用 publish_draft。
步骤 10:草稿发布
using the article-publishing skill 创建 draft.json 并发布:
title:步骤 5 优化后的标题(从$DIR/seo-result.md读取)content:步骤 8 的 HTMLdigest:步骤 5 优化后的摘要thumb_media_id:仅当封面开关开启时填步骤 6 的封面$COVER_MEDIA_ID;封面开关关闭时一律不带thumb_media_id,并在final-review.md记录提示author:仅取自步骤 1get_project_profile顶层author(公众号署名,原样填入draft.json的author键;空则省略,禁用writer顶替——见 article-publishing skill「作者字段来源」)
仅当 $DIR/final-review.md 所有硬性项通过时,调用 publish_draft 发布到草稿箱。产出:
$DIR/draft.json
自动决策原则
全程零用户交互。所有决策点自动选择最优解(项目选择是唯一例外——多个项目无法匹配时需让用户选择):
| 决策点 | 自动策略 |
|---|---|
| 选题方向 | 结合账号关键词 + 用户需求 + 历史文章去重,自动选 Top 1 |
| 文章结构 | 根据选题类型自动匹配结构模板(教程/清单/故事/分析) |
| 视觉模板 | 根据文章结构特征自动选 templates/article/*.yaml(listicle / tutorial / story-narrative / long-form-essay),模板定义节奏、配图数量、layout module |
| 视觉节奏 | 模板选定后,自动把每个 ## 映射到 slot(hero / section_opener / inline_detail / footer),写入 visual-rhythm-plan.md |
| 配图内容贴切 | 每张图提取 visual_brief + required_entities + must_match_excerpts,生成后强制 vision 校验,失败锐化 prompt 重试 |
| 视觉风格 | 配置优先:优先取自任务解析的 visual_style 字段(get_project_profile 的 visual_style/visual_style_source,按 task > project 解析);配置为空时由账号定位+内容主题+受众三维分析兜底;不使用 writer YAML 的 cover_style/cover_prompt(writer 仅决定文字风格)。封面+配图均开启时配图通过 ref_image_path="$DIR/cover.png" 保持一致;封面关·配图开时不传 ref_image_path 或链首图 |
| HTML 渲染 | 用 render_template(带 layout_plan)确定性渲染,不再用 convert_markdown 自由发挥 |
| SEO 优化 | 自动提取关键词,生成标题/摘要/标签,结果用于草稿发布 |
| AI 去痕 | 自动检测并移除 AI 写作模式(33 类,详见 humanizer skill) |
| 错误处理 | 自动重试 + 降级,非关键步骤跳过继续 |
硬性规则(违反即发布失败或质量不达标)
- 禁止把封面 wechat_url 当作正文 img src:封面
$COVER_CDN_URL只能用于thumb_media_id,正文每张图必须独立生成上 CDN。 - 禁止多张正文图共用同一 wechat_url:服务端
publish_draft会硬拦截"正文 ≥2 图但唯一 URL==1"的草稿。 - 正文全图相同时不得发布:服务端发布前会做图片去重硬拦截;配图失败时宁可缺图降级,也不得用封面/他图顶替。
- 封面必须 vision 校验通过才可作为
thumb_media_id(仅封面开关开启时);未通过 vision 的封面不得用于发布。 - 超过一半章节配图失败:暂停流程,请求用户协助(不得用降级顶替方式强行凑齐)。
- Vision 校验通过率 < 80%:回到步骤 6e 检查 prompt 构建逻辑,不得直接发布。
- HTML 主路径必须用
render_template(带layout_plan);convert_markdown仅作旧版 server 兼容降级,不得作主渲染路径。
MCP 工具使用规则
- 必须使用 MCP 工具调用服务端接口(如
list_projects、generate_image、render_template等) - 禁止编写 JavaScript/Node.js/Python 脚本或创建自定义 HTTP 客户端来调用 MCP 接口
- 如果 MCP 工具不可用或调用失败,立即停止并报告错误,不要尝试自行发现、探测或创建替代连接方式
prepare_workspace/archive_workspace仅返回路径,目录创建和文件移动由 agent 本地执行
质量标准
- 有标题和清晰结构(至少 3 个二级标题)
- 字数符合用户要求或文章类型的合理长度
- 无明显 AI 痕迹,无违禁词
- 有价值、有见地、语言自然
- 模板驱动节奏(硬性要求):从
templates/article/*.yaml加载模板,不得临时编造节奏 - 节奏规划完整(硬性要求):
visual-rhythm-plan.md存在且每个##都映射到 slot - 封面图必须成功生成并上传(硬性要求,仅封面开关开启时),vision 校验通过
- 配置优先风格匹配(硬性要求):
$VISUAL_STYLE优先取自get_project_profile的visual_style字段,配置为空时三维分析兜底;不使用 writer YAML 的cover_style/cover_prompt - 配图内容贴切(硬性要求):
image-plan.md每张图含visual_brief+required_entities+must_match_excerpts,prompt 必须引用章节具体物体/比喻/案例(非通用描述) - Vision 校验闭环(硬性要求):每张内容图经过
verify_with_vision(或单独analyze_image)校验;至少 80%verification.passed=true - 参考链一致(硬性要求,仅封面+配图均开启时):所有内容配图使用
ref_image_path="$DIR/cover.png"保持视觉一致;封面关·配图开时不传或链首图 - 正文配图开启时的图文并茂:正文配图开启时,每个
##章节至少一张配图(按模板 rhythm 规则);正文配图关闭时不得判失败 - 视觉多样性(硬性要求):3 张以上配图时使用 3 种以上不同构图类型(
listicle模板可豁免) - 结构化渲染(硬性要求):HTML 由
render_template(带layout_plan)生成,不得用convert_markdown自由发挥 - 正文图片互不相同(硬性要求):所有正文内容图
wechat_url两两不同,且无一张复用封面$COVER_CDN_URL - 发布前总验收(硬性要求):
final-review.md全部通过后才能创建草稿 - 草稿使用 SEO 优化后的标题和摘要
平台合规检查
合规检查由 skill content-writing 执行,关键要点:
- 封面图:人物五官完整、无马赛克/播放标记、画质清晰
- 标题:准确反映内容、无省略号隐藏关键信息
- 内容:语言文明、无低俗擦边、无暴力宣扬
风险与缓解措施
| 风险 | 缓解措施 |
|---|---|
| 选题与历史文章重复 | 自动跳过重复选题,选择次优候选 |
| 文章结构不清晰 | 自动匹配结构模板,确保至少 3 个二级标题 |
| 封面生成失败 | 重试两次(不同 prompt 措辞),仍失败则请求用户协助 |
| 封面 vision 校验未通过 | 重试一次(锐化 prompt),仍失败请求用户协助;不得用未通过 vision 的封面发布 |
| 配图提示词设计质量差 | 提示词必须引用章节具体内容,使用 ref_image_path 保持风格一致 |
| 单张配图生成失败 | 重试一次(更换提示词),仍失败则标记该章节缺图,继续后续章节 |
| 超过一半章节配图失败 | 暂停流程,请求用户协助 |
| 正文图片全图相同 / 复用封面 URL | 服务端 publish_draft 硬拦截;为每个 slot 独立 generate_image(upload_to_cdn=true),不得用封面/他图顶替 |
| AI 去痕过度 | 由 humanizer skill draft→audit→final 改写,保留人称/情绪/细节等人味 |
| 违禁词检测误报 | 记录疑似词,人工复核标记,不自动删除 |
| HTML 渲染失败 | 检查 Markdown 格式和 layout_plan JSON,修复后用 render_template 重试 |
| 草稿创建失败 | 检查 draft.json 格式和 media_id 有效性 |
成功标准
- 工作目录创建成功,
$DIR路径有效 -
01-research.md包含选题分析和关键词 -
02-outline.md包含清晰的文章结构(≥3 个二级标题) -
03-article.md包含完整文章内容 -
04-article-final.md无 AI 痕迹,无违禁词 -
seo-result.md包含优化后的标题和摘要 -
visual-rhythm-plan.md存在,记录所选模板、slot 分配表、layout_planJSON - 封面图
$DIR/cover.png存在且可访问,vision 校验通过 - 封面图已上传,获得有效
media_id -
$DIR/cover-prompt.md存在,含2.35:1比例、视觉风格来源(配置锚点优先)、核心隐喻、required_entities、vision 校验结果 -
image-plan.md存在,每张图含slot_id+section_index+chapter_title+core_point+composition_type+source_excerpt+visual_brief+required_entities+must_match_excerpts+prompt_strategy -
images.json每条记录含slot_id+section_index+chapter_title+composition_type+visual_brief+required_entities+must_match_excerpts+prompt+verification+ref_image_path+image_type+quality_status - 封面+配图均开启时,所有内容配图使用了
ref_image_path="$DIR/cover.png"生成并记录;封面关·配图开时所有内容图未指向不存在的$DIR/cover.png - 所有正文内容图的
wechat_url两两不同,且无一张复用封面$COVER_CDN_URL - 至少 80% 的内容图
verification.passed=true -
04-article-final.md中每个##章节都有 CDN 图片链接(按模板 rhythm 规则) - 每个配图提示词包含对应章节的具体物体/比喻/案例(非通用描述)
- 3 张以上配图使用了 3 种以上不同构图类型(
listicle模板豁免) - 所有章节配图生成并上传成功
-
images.json包含所有配图的 CDN 链接 -
05-article.html由render_template生成,final-review.md中记录render_audit -
final-review.md全部通过 -
draft.json使用了 SEO 优化后的标题和摘要 - 草稿创建成功,可通过公众号后台查看
错误处理
非关键步骤失败(SEO优化、AI去痕):记录问题,使用降级方案继续,在最终报告中说明。
配图步骤失败(单张配图生成失败):重试一次(锐化 prompt 后),仍失败则记录该章节缺少配图继续后续章节。如果超过一半章节配图失败,暂停流程请求用户协助。
关键步骤失败(封面生成、草稿创建):暂停流程,分析原因,尝试重试一次,仍失败则请求用户协助。
配置问题:假定配置已正确设置,不要尝试验证配置。如果 MCP 工具因配置问题失败,直接报告错误信息并继续流程。
工作规范
文件组织
- 每篇文章使用独立目录(步骤 1 创建,变量
$DIR) - 编号命名(01-research.md, 02-outline.md...)
- 使用标准格式:Markdown(.md)、JSON(.json)、HTML(.html)
- 图片统一保存在
$DIR/下(cover.png, img_01.png 等) - 质量报告统一保存在
$DIR/visual-rhythm-plan.md、$DIR/cover-prompt.md、$DIR/image-plan.md、$DIR/final-review.md
任务追踪
- 流程启动时用 TaskCreate 创建任务列表
- 每个任务对应一个流程步骤
- 开始前:
TaskUpdate status → in_progress - 完成后:
TaskUpdate status → completed - 设置依赖:每个任务 blockedBy 前一个任务
- 报告进度:
[3/10] 文章撰写完成 → $DIR/03-article.md (2,847字)
最佳实践
- 模板驱动视觉节奏:步骤 6a 自动选模板,6b 生成
visual-rhythm-plan.md把每个##映射到 slot,模板决定图片数量和位置 - 视觉风格配置优先:
$VISUAL_STYLE优先取自get_project_profile的visual_style字段(配置锚点),配置为空时由三维分析兜底;不使用 writer YAML 的 cover_style/cover_prompt - 配图内容三件套:每张图必须有
visual_brief(具体画面)+required_entities(必须物体)+must_match_excerpts(章节原句)——这是 vision 校验的前提 - vision 校验闭环:每张图生成后必须用
verify_with_vision(或单独analyze_image)校验,失败锐化 prompt 重试,最多 3 次 - 参考链保持风格一致:封面+配图均开启时,所有内容配图使用
ref_image_path="$DIR/cover.png"(用封面防止风格漂移);封面关·配图开时不传ref_image_path或链首图,严禁指向不存在的$DIR/cover.png - 结构化 HTML 渲染:步骤 8 用
render_template(带layout_plan)确定性渲染,不用convert_markdown自由发挥 - 正文图片各自独立:每张正文图独立生成上 CDN,严禁复用封面 URL 或多图共用同一 URL
- 审计记录可复盘:
images.json必须记录verification、required_entities、slot_id、composition_type、chapter_title等字段 - 发布前总验收:
final-review.md全部通过后才能创建草稿 - SEO 结果回写:优化后的标题和摘要用于最终草稿
- 决策透明记录:选题、模板选择、风格选择写入文件,便于追溯
配图设计流程、封面合规、违禁词检查等详见各 skill 文档。
红旗检查清单
流程中出现以下情况时需要特别关注:
- 文章缺少二级标题(<3 个)→ 需补充结构
-
visual-rhythm-plan.md缺失 → 步骤 6b 必须创建,不得跳过 - 模板选择含糊 → 默认选
long-form-essay,避免临时编造 - 所选模板的 rhythm 规则被违反(如 listicle 出现 inline_detail)→ 回到步骤 6a/b 重新规划
- 章节缺少配图(且模板要求该 slot 必填)→ 需在步骤 7 补充
-
$VISUAL_STYLE_CONFIGURED非空但配图偏离配置方向(如配置温暖自然却生成维多利亚木刻)→ 回到步骤 6c 重新收敛 - 封面 prompt 参考了 writer YAML 的 cover_prompt → 应从零构建
- 封面 vision 校验未通过 → 重试一次,仍失败请求用户协助
-
image-plan.md缺失或字段不完整 → 步骤 6e 必须按新 schema 创建 -
visual_brief是抽象描述("商务场景"、"科技感")→ 重写为具体画面 -
required_entities是抽象词("美感"、"氛围")→ 重写为可识别的物体 -
must_match_excerpts是论点而非原句 → 从章节中摘真实段落 - 封面+配图均开启时,内容配图未使用
ref_image_path="$DIR/cover.png"→ 风格不一致风险;封面关·配图开时,内容配图指向不存在的$DIR/cover.png→ 必须移除或链到首张已生成图 - 正文
<img src>出现封面$COVER_CDN_URL,或多张正文图共用同一wechat_url→ 服务端publish_draft会拒绝发布;回步骤 7 为缺失 slot 独立生成,不得用封面/他图顶替 -
$DIR/cover-prompt.md缺失 → 步骤 6d 第 8 步必须原子写入 -
images.json缺少verification字段 → vision 校验未执行,回步骤 7b - Vision 校验通过率 < 80% → 回到步骤 6e 检查 prompt 构建逻辑
- 配图提示词为通用描述(如"美丽风景"、"商务场景")→ 需重写为章节具体内容
- 连续 3 张配图视觉雷同 → 需更换构图类型
- 封面图包含马赛克/播放标记 → 需重新生成
- 标题使用省略号隐藏关键信息 → 需补全信息
- 文章字数过短(<500 字)→ 需扩展内容
- AI 痕迹明显(33 类模式检测得分低)→ 需加强去痕
- 违禁词报告显示高风险词汇 → 需人工复核
- HTML 用
convert_markdown生成(而非render_template)→ 回到步骤 8 重新渲染 -
layout_planJSON 中image_url未回填 CDN URL → 步骤 7d 未完成 - HTML 文件过大(>1MB)→ 需精简内联样式
-
final-review.md未通过 → 不得发布草稿
分阶段交付策略
当文章较长时,按以下阶段独立交付:
- 阶段 1 - 选题与大纲:完成选题分析、关键词提取、文章大纲(
01-research.md,02-outline.md) - 阶段 2 - 内容创作:完成文章撰写、AI 去痕、合规检查(
03-article.md,04-article-final.md) - 阶段 3 - SEO 与视觉:完成 SEO 优化、模板选择与节奏规划、封面图生成(带 vision 校验)、配图设计与生成
- 阶段 4 - 发布准备:完成 HTML 渲染(
render_template)、发布前总验收和草稿创建
每个阶段完成后可独立验证,配图生成可分批进行。