| name | article |
| description | 微信公众号图文文章全自动创作。用户提到"写文章"、"写一篇"、"发文章"、"公众号文章"、"推文"时使用此 skill。 |
| user-invocable | true |
/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-design skill 推导视觉概念(绝不生成通用素材图)。
- 调用
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 → 通过,继续下一 slot
passed=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:质量验证
生成完成后执行检查:
未通过检查时按问题类型处理:单图失败降级、节奏/模板违规回步骤 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_plan JSON 块的对应 image_url 已用 CDN URL 回填(关闭时对应 slot image_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 的 HTML
digest:步骤 5 优化后的摘要
thumb_media_id:仅当封面开关开启时填步骤 6 的封面 $COVER_MEDIA_ID;封面开关关闭时一律不带 thumb_media_id,并在 final-review.md 记录提示
author:仅取自步骤 1 get_project_profile 顶层 author(公众号署名,原样填入 draft.json 的 author 键;空则省略,禁用 writer 顶替——见 article-publishing skill「作者字段来源」)
仅当 $DIR/final-review.md 所有硬性项通过时,调用 publish_draft 发布到草稿箱。产出:
自动决策原则
全程零用户交互。所有决策点自动选择最优解(项目选择是唯一例外——多个项目无法匹配时需让用户选择):
| 决策点 | 自动策略 |
|---|
| 选题方向 | 结合账号关键词 + 用户需求 + 历史文章去重,自动选 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 有效性 |
成功标准
错误处理
非关键步骤失败(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 文档。
红旗检查清单
流程中出现以下情况时需要特别关注:
分阶段交付策略
当文章较长时,按以下阶段独立交付:
- 阶段 1 - 选题与大纲:完成选题分析、关键词提取、文章大纲(
01-research.md, 02-outline.md)
- 阶段 2 - 内容创作:完成文章撰写、AI 去痕、合规检查(
03-article.md, 04-article-final.md)
- 阶段 3 - SEO 与视觉:完成 SEO 优化、模板选择与节奏规划、封面图生成(带 vision 校验)、配图设计与生成
- 阶段 4 - 发布准备:完成 HTML 渲染(
render_template)、发布前总验收和草稿创建
每个阶段完成后可独立验证,配图生成可分批进行。