用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/anbanai/anbanwriter-openclaw --skill article命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
基于 SOC 职业分类
正在显示 SKILL.md
| name | article |
| description | 微信公众号图文文章全自动创作。用户提到"写文章"、"写一篇"、"发文章"、"公众号文章"、"推文"时使用此 skill。 |
| user-invocable | true |
你正在执行微信公众号文章创作任务。你必须使用工具(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 校验、正文图片互不相同等图片相关要求才是硬性项;关闭时跳过且不计为失败。
按顺序执行以下步骤。每一步都必须调用对应的工具,不能跳过。
项目选择(必须先完成,再调用项目 API):
$ANBAN_DEFAULT_PROJECT 环境变量,非空则直接使用list_projects(platform="article"),仅根据 name、positioning、keywords 语义匹配或让用户选择 → $PROJECT_IDget_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) → 工作目录路径 $DIRmkdir -p "$DIR" 创建目录using the topic-research skill 结合账号关键词和用户需求搜索热门话题,创作文章大纲。产出:
$DIR/01-research.md — 选题分析和关键词$DIR/02-outline.md — 文章大纲(≥3 个二级标题)using the content-writing skill 基于账号定位和大纲输出 Markdown 格式文章。写作时不需要插入配图占位符(配图由步骤 7 专门处理)。产出:
$DIR/03-article.md — 完整文章内容using the content-writing skill 先执行 AI 去痕(humanizer skill,无强度档位),再执行违禁词合规检查。产出:
$DIR/04-article-final.md — 检查后的文章using the seo-optimization skill 优化标题、关键词、摘要。将优化后的标题和摘要保存为 $DIR/seo-result.md,供步骤 9/10 使用。
using the article-visual-design skill 完成以下子步骤。详细规范见 skills/article-visual-design/SKILL.md 与 skills/article-visual-design/references/{cover,content,rhythm}.md。
公众号"模板"由三个正交维度组成:图片视觉(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。
读取 $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。
视觉风格优先取自步骤 1 已解析的任务字段(task > project):
$VISUAL_STYLE_CONFIGURED 非空 → 它是权威视觉锚点。以它为 $VISUAL_STYLE 的核心,三维分析(账号定位 / 内容主题 / 受众)只做补充细化(配色、情绪、构图),绝不可覆盖或偏离配置的视觉方向。例如配置了"温暖自然的生活摄影",就不得生成维多利亚木刻/黑白版画等冲突风格。$VISUAL_STYLE_CONFIGURED 为空(所有层级都未配置视觉)→ 执行完整三维分析兜底。产出 $VISUAL_STYLE(含配置锚点 + 细化方向)/ $COLOR_PALETTE / $MOOD / $VISUAL_STYLE_SOURCE。映射关系见 skills/article-visual-design/references/cover.md。
封面是全篇风格锚点。封面设计已独立成稿——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。
按 $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
using the article-visual-design skill 按 $DIR/visual-rhythm-plan.md 中 slot 顺序生成。每个需要图的 slot 执行:
基于 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。
解析 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 次尝试)quality_status=failed,继续后续 slot锐化 prompt 策略:在 prompt 开头加 MUST CONTAIN: + verification.missing_entities 列表;把 visual_brief 改写得更具体(加入材质、颜色、方位、数量);加强主体权重 "MAIN SUBJECT: <具体物体>"。
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。按 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 块中。
生成完成后执行检查:
visual-rhythm-plan.md 中每个 ## 都映射到一个 slotimages.json 中所有内容图 ref_image_path="$DIR/cover.png";封面关·配图开时无 ref_image_path 或链首图,且不得指向不存在的 $DIR/cover.pngcomposition_type(listicle 模板豁免)verification.passed=trueimages.json 每条含 visual_brief / required_entities / must_match_excerpts / verification / slot_id / section_index / wechat_url / media_idimages.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
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)创建 $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=truemedia_id;封面+配图均开启时所有内容图 ref_image_path="$DIR/cover.png";封面关·配图开时内容图不传 ref_image_path 或链首图seo-result.md 包含优化后的标题和摘要05-article.html 由 render_template 生成(记录在 final-review.md 的 render_audit 段),图片链接有效,内容未超过平台限制thumb_media_id 仅封面开关开启时要求可读取硬性闸门:任一项失败时停止发布,记录失败原因和需要回退的步骤;不得调用 publish_draft。
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:仅取自步骤 1 get_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) |
| 错误处理 | 自动重试 + 降级,非关键步骤跳过继续 |
$COVER_CDN_URL 只能用于 thumb_media_id,正文每张图必须独立生成上 CDN。publish_draft 会硬拦截"正文 ≥2 图但唯一 URL==1"的草稿。thumb_media_id(仅封面开关开启时);未通过 vision 的封面不得用于发布。render_template(带 layout_plan);convert_markdown 仅作旧版 server 兼容降级,不得作主渲染路径。list_projects、generate_image、render_template 等)prepare_workspace / archive_workspace 仅返回路径,目录创建和文件移动由 agent 本地执行templates/article/*.yaml 加载模板,不得临时编造节奏visual-rhythm-plan.md 存在且每个 ## 都映射到 slot$VISUAL_STYLE 优先取自 get_project_profile 的 visual_style 字段,配置为空时三维分析兜底;不使用 writer YAML 的 cover_style/cover_promptimage-plan.md 每张图含 visual_brief + required_entities + must_match_excerpts,prompt 必须引用章节具体物体/比喻/案例(非通用描述)verify_with_vision(或单独 analyze_image)校验;至少 80% verification.passed=trueref_image_path="$DIR/cover.png" 保持视觉一致;封面关·配图开时不传或链首图## 章节至少一张配图(按模板 rhythm 规则);正文配图关闭时不得判失败listicle 模板可豁免)render_template(带 layout_plan)生成,不得用 convert_markdown 自由发挥wechat_url 两两不同,且无一张复用封面 $COVER_CDN_URLfinal-review.md 全部通过后才能创建草稿合规检查由 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_plan JSON$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_strategyimages.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非关键步骤失败(SEO优化、AI去痕):记录问题,使用降级方案继续,在最终报告中说明。
配图步骤失败(单张配图生成失败):重试一次(锐化 prompt 后),仍失败则记录该章节缺少配图继续后续章节。如果超过一半章节配图失败,暂停流程请求用户协助。
关键步骤失败(封面生成、草稿创建):暂停流程,分析原因,尝试重试一次,仍失败则请求用户协助。
配置问题:假定配置已正确设置,不要尝试验证配置。如果 MCP 工具因配置问题失败,直接报告错误信息并继续流程。
$DIR)$DIR/ 下(cover.png, img_01.png 等)$DIR/visual-rhythm-plan.md、$DIR/cover-prompt.md、$DIR/image-plan.md、$DIR/final-review.mdTaskUpdate status → in_progressTaskUpdate status → completed[3/10] 文章撰写完成 → $DIR/03-article.md (2,847字)visual-rhythm-plan.md 把每个 ## 映射到 slot,模板决定图片数量和位置$VISUAL_STYLE 优先取自 get_project_profile 的 visual_style 字段(配置锚点),配置为空时由三维分析兜底;不使用 writer YAML 的 cover_style/cover_promptvisual_brief(具体画面)+ required_entities(必须物体)+ must_match_excerpts(章节原句)——这是 vision 校验的前提verify_with_vision(或单独 analyze_image)校验,失败锐化 prompt 重试,最多 3 次ref_image_path="$DIR/cover.png"(用封面防止风格漂移);封面关·配图开时不传 ref_image_path 或链首图,严禁指向不存在的 $DIR/cover.pngrender_template(带 layout_plan)确定性渲染,不用 convert_markdown 自由发挥images.json 必须记录 verification、required_entities、slot_id、composition_type、chapter_title 等字段final-review.md 全部通过后才能创建草稿配图设计流程、封面合规、违禁词检查等详见各 skill 文档。
流程中出现以下情况时需要特别关注:
visual-rhythm-plan.md 缺失 → 步骤 6b 必须创建,不得跳过long-form-essay,避免临时编造$VISUAL_STYLE_CONFIGURED 非空但配图偏离配置方向(如配置温暖自然却生成维多利亚木刻)→ 回到步骤 6c 重新收敛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当文章较长时,按以下阶段独立交付:
01-research.md, 02-outline.md)03-article.md, 04-article-final.md)render_template)、发布前总验收和草稿创建每个阶段完成后可独立验证,配图生成可分批进行。
ref_image_path="$DIR/cover.png"$DIR/cover.pngwechat_url 两两不同,且无一张复用封面 $COVER_CDN_URLverification.passed=true04-article-final.md 中每个 ## 章节都有 CDN 图片链接(按模板 rhythm 规则)listicle 模板豁免)images.json 包含所有配图的 CDN 链接05-article.html 由 render_template 生成,final-review.md 中记录 render_auditfinal-review.md 全部通过draft.json 使用了 SEO 优化后的标题和摘要convert_markdown 生成(而非 render_template)→ 回到步骤 8 重新渲染layout_plan JSON 中 image_url 未回填 CDN URL → 步骤 7d 未完成final-review.md 未通过 → 不得发布草稿