| name | wechat-mp-topic-to-article |
| description | 将已锁定文章简报或用户直接确认的热点命题编排成可发布的微信公众号文章。负责校验编辑决策与实践门禁,继承账号和作者素材,建立事实基座、大纲、标题、类型化初稿、去 AI、审稿、搜一搜优化和配图占位;适用于“公众号成稿”“按锁定简报写稿”“从热点到终稿”。不用于选题发现、未完成编辑讨论或实验的选题、纯快讯、排版和发布。 |
公众号热点成稿编排器
将本技能作为项目成稿链的唯一正式总契约。article-pipeline.mjs 只负责加载本技能与阶段子技能、传递阶段输入、调用模型、执行确定性门禁并保存产物;不得在执行器中维护与本技能重复的长篇写作提示词。
把一个已通过筛选的选题变成有来源、有立场、可继续排版的公众号终稿。将每阶段产物写入同一工作目录,并保留可复核的中间文件。
开始前
收集或从上下文提取:
topic:发生了什么
angle:文章要证明的核心判断
article_brief:编排链选题必填,指向 brief_status: LOCKED 的 article-brief.md
analysis_card:可选,含选题分、受众、时效、事实线索
account_context:可选,来自上游冻结快照或 .agents/wechat-account-context.md
content_pillar:可选,本题对应的账号内容支柱
reader_job:可选,读者看完要完成的判断、理解或行动
distribution_lane:可选,推荐池、通知池或实验池
reader_stake:可选,内容影响读者的工作、收入、岗位、效率、成本或选择中的具体一项
packaging_mode:可选,搜索型、分享型或双栖型
content_package:可选,含推荐方案、核心判断、标题方向、开头钩子、结构骨架、实用增量和后续承接
source_materials:可选,用户提供且确实可用于本题的链接、笔记、项目资料、过往文章或个人体验
material_gaps:可选,上游列出的事实、案例、截图、数据或作者体验缺口
duplicate_check:可选,与近期内容的去重或承接结论
voice_guardrails:可选,本题应保持与避免的表达
selection_authority:可选,ranking-default 或 explicit-user;用户明确选中低于默认门槛的题时记录后者
content_role:可选,拉新、沉淀或搜索;上游缺失时根据选题推断
expected_action:可选,主要希望读者评论、分享、收藏、关注或搜索
practical_increment:可选,上游建议的实用增量
conversion_bridge:可选,后续承接内容的类型、真实标题或链接
follow_reason:可选,关注后可持续获得的具体价值
workdir:默认 articles/<topic-slug>/
seo:默认开启;用户明确不需要时关闭
min_visible_chars:默认 1300;仅当用户在当前文章中明确要求其它长度时覆盖
max_visible_chars:默认 1800;仅当用户在当前文章中明确要求其它长度时覆盖
若输入来自 hotspot-to-topics-orchestrated、包含 candidate_id 或引用 topics-selected.md,必须读取 article_brief。brief_status 不是 LOCKED、final_readiness 不是 WRITE_NOW、实验未回填或 drafting_status 不是 READY 时停止并返回编辑会,不得在本技能内补造简报。
用户绕过选题链直接要求成稿时,可在工作目录建立本地 00-article-brief.md:先确认核心命题、事实边界、是否依赖亲身实践和禁写项,再锁定。公共资料分析可用 decision_source: public-analysis 且 experience_required: false;依赖作者经历或实验的文章必须得到用户明确确认。缺 topic 或 angle 时只询问缺失项,不执行选题发现。
读取 references/artifact-contracts.md、references/growth-conversion-contract.md 和 references/runtime-stage-contracts.md,按其中的阶段 ID、文件结构、模型输出和门禁写入产物。调用某个子技能前,先读取该子技能的 SKILL.md;其旧版 Step 编号或旧文件名仅作历史说明,始终以本技能的契约为准。
项目运行时固定按以下阶段执行并记录,不得静默增删或改序:
brief → fact-base → planning → drafting → draft-quality-gate → title-generation → humanize → review → seo-keyword-scoring → seo-optimization → final-quality-gate → visual-planning → image-planning
每个 AI 阶段都同时接收本总契约和当前阶段子技能;没有独立子技能的事实基座与规划阶段由本技能直接约束。
工作流
0. 校验锁定简报
按 references/artifact-contracts.md 检查 00-article-brief.md 或上游 article-brief.md。把锁定命题、作者决定、已确认实践、反证与边界、最终包装和禁写项作为后续唯一创作约束。聊天中的临时建议、探索卡的 provisional_package 和未确认资产不得覆盖锁定简报。
若简报声明 experience_required: false,允许没有第一人称实践,但正文不得写“我测试了”“我使用后发现”等亲历叙述。若声明 experience_required: true,至少需要一项已确认实践及其证据;否则停止。
1. 建立作者素材
一次性向用户收集以下信息,允许用户只答其中一部分:
- 亲身体验或产品感受
- 一句最直白的夸或骂
- 圈内段子、冷知识或行业观察
- 禁用词、讨厌的句式或不想采用的立场
已有锁定简报或 source_materials 足够时直接提取,不重复询问。先检查 material_gaps:缺口只影响细节时继续并显式避开;缺口会使核心判断无法成立时暂停补证或返回编辑会。不得根据分析卡替用户推断核心立场;只允许为不依赖亲历的公共资料分析补充明确标记的编辑性过渡判断。
写入 01-personal-materials.md。记录简报路径与状态、账号上下文来源、内容支柱、读者任务、分发池、读者利益、最终包装、实际采用的用户素材、素材缺口、近期去重结论、语气门禁、内容角色、预期动作和上游承接建议。experience_required: true 时至少包含一个已确认经验锚点;为 false 时可使用事实或机制锚点,不得为了“个人感”虚构经历。
2. 建立事实基座与大纲
对拟写入文章的外部事实进行核验。优先使用第一方来源;新闻事件至少补一个可靠媒体来源。将每条事实标记为:
verified:来源直接支持
disputed:可靠来源之间存在冲突
unverified:只有线索,尚不能确认
opinion:作者判断,不是事实
只有 verified 可以作为确定事实写入正文。disputed 必须呈现分歧;unverified 不进入正文,除非明确写成待核实线索。禁止补造数字、引语、时间、人物行为或来源。
写入 02-outline.md,包括:账号定位来源、内容支柱、核心判断、目标读者、读者任务、分发池、读者利益、包装模式、内容角色、事实基座、章节推进、至少两个信息增量锚点、实用增量和增长承接。优先采用 content_package 的开头钩子与结构骨架;因事实核验需要调整时记录差异。开头直接进入事件,第二段前亮明立场。
通知池必须达到账号上下文的通知资格并在大纲中兑现 reader_stake;推荐池必须规划真实场景、可信证据、可获得结果和限制;实验池必须记录待验证假设。条件不成立时回到编辑会改池或收窄命题,不在成稿阶段强行包装。
职场、行业或社会事件至少规划一个有事实支撑的可保存模块,例如影响清单、观察信号、核对清单、行动建议或机制解释。依据不足时写观察框架,不得编造法律、劳动关系、财务或职业建议。增长承接只记录具体关注理由和可用的后续内容;没有真实历史文章标题或链接时不得虚构。
若选题分低于 70,默认停止成稿并说明原因,不擅自改成别的选题。用户已经看过榜单并明确选择该题时,可用 selection_authority=explicit-user 继续,但必须在 02-outline.md 记录分数、选择来源和预期上限;F 低于 55 仍停止。事实不足以支撑核心判断时不得用人工选择绕过,必须停止或收窄角度。
3. 生成并选择标题
读取并使用 title-generator。写入 03-titles.md:3–5 个候选、评分、核心关键词和唯一 SELECTED_TITLE。
标题必须准确反映事实和立场。优先包含主体、事件词和具体信息,但不要为了凑公式虚构数字或制造过度冲突。默认不超过 28 个汉字;若下游排版要求更严格,再按其限制收紧。
标题策略同时服从内容角色、packaging_mode 与 distribution_lane,但不覆盖事实准确性:推荐池优先“场景痛点 + 可信证据 + 可获得结果”和稳定搜索词;通知池优先“事件 + 对读者的直接影响”并兑现 reader_stake;实验池突出待验证的新角度。拉新/分享型突出冲突、切身影响和可复述认知;沉淀文突出具体价值;搜索型优先使用真实主体、事件词和稳定搜索词;双栖型必须同时兑现搜索意图和传播钩子。优先从上游标题方向继续打磨,不无故推翻包装。
4. 路由写作子技能并生成初稿
按内容类型选择一个写作子技能:
| 类型 | 子技能 |
|---|
| 技术热点快评、产品或行业动态 | wechat-mp-tech-hotspot |
| 技术原理、性能或成本拆解 | wechat-mp-tech-deep |
| 行业、职场或社会事件深度分析 | wechat-mp-deep-dive |
| 大厂趣事、轻量八卦 | wechat-mp-gossip-chill |
| 多热点综合、趋势综述 | wechat-mp-composite |
技术深解只在锁定命题明确要求原理、架构、性能、成本、公式、比较口径或可复算指标时触发;仅仅出现模型、芯片、开源或产品名称仍按技术热点快评处理。轻量八卦遇到裁员、事故、骚扰、违法、健康或劳动争议等严肃主题时降级为深度分析。
类型不明确时,根据 topic + angle + audience 选择最接近者并在作者素材中记录 writer_skill 与 writer_skill_reason,不反问用户。将当前契约中的 02-outline.md、03-titles.md 作为上下文传给子技能,即使其文档仍写着旧文件名。
本编排器不承接纯资讯早报、没有统一命题的快讯拼盘、依赖真实操作步骤的教程实操或工具清单。纯快讯应进入独立早报流程;教程必须先建立环境、步骤、成功标准和作者实践证据;工具清单与工具展示优先进入“工具 → 图文”流程。不得为了复用本流程把这些内容伪装成热点深度稿。
写入 04-draft.md。要求:
- 只使用事实基座允许的事实;每个关键事实就近标注来源
- 至少嵌入一个作者素材锚点
- 遵守
voice_guardrails,并让正文兑现 reader_job,不能只在元数据里记录
- 让开头、主体分析和实用增量共同兑现
distribution_lane 与 reader_stake,不能只在作者素材中记录
- 每节包含作者判断或分析增量,不连续堆叠资讯摘要
- 将事实、引述和作者判断清楚区分
- 实现大纲中的实用增量;不得用空泛总结冒充清单、信号或建议
- 按内容角色组织读者动作:拉新文保留讨论张力,沉淀文突出可保存价值,搜索文保证问题和关键词明确
- 结尾最多设置一个不超过两句话的转化段,说明持续价值;不连续索要关注、点赞、在看和转发
- 结尾设置一个与本文内容具体相关的留言引导问题(一句话,可与转化段合并),引导读者打开评论区留言;禁止“你怎么看”“欢迎留言”式泛问
- 仅在提供了真实标题或链接时推荐具体历史内容,否则把
conversion_bridge 留在编辑规划中,不写入正文
- 不使用“近年来,随着”“综上所述”“在未来的格局中”等模板腔
- 正文以 1500 个可见字符为目标,允许上下浮动 200 个字符,即
min_visible_chars 与 max_visible_chars 默认为 1300 和 1700。用 scripts/count-article-chars.mjs 04-draft.md 1300 1700 检查;不计 H1 标题、Markdown 标记、链接 URL 和内部注释,正文标点、数字与来源名称计入
5. 去 AI 与审稿
依次执行:
- 使用
humanizer-zh 处理 04-draft.md,写入 05-humanized.md。调用时明确要求保留已核验事实、数字、引语、来源、标题和作者素材锚点;只输出改写后的文章,不附评分或修改总结。若其通用规则与这些约束冲突,以本约束为准
- 使用
article-reviewer 审阅并修订,写入 06-reviewed.md
审稿至少检查事实支持、事实与判断混淆、逻辑跳跃、敏感与侵权风险、标题正文一致性,以及增长与承接契约。确认内容角色与结构一致、实用增量具体且有依据、关注理由自然克制、具体历史内容真实存在、留言引导问题具体可答且商业词汇自然不硬插。计算关键事实引用覆盖率;低于 100% 时补来源、删除事实或降级为明确判断,不用一个模糊来源覆盖多项事实。
在 06-reviewed.md 文末审稿注释中记录 content_role、expected_action、practical_increment、follow_reason 和 conversion_bridge_status。转化校验失败时回到第 2 或第 4 步修订,不在终稿阶段临时追加生硬 CTA。
审稿完成后再次运行字数门禁。若超过上限,回到第 4 步压缩重复背景、次要案例和同义结论;不得通过删除关键事实、风险边界或必要来源伪装达标。
返工应回到问题首次出现的阶段:事实问题回到第 2 步,标题承诺问题回到第 3 步,表达或论证问题回到第 4 步。最多自动返工两轮;仍不通过则保留产物并向用户报告具体阻塞项。
6. 搜一搜优化
SEO 开启时:
- 使用
seo-keyword-scoring,写入 07-seo-keywords.md
- 使用
seo-content-optimizer,写入 08-seo-optimized.md
SEO 优化不得改变事实、引语、作者立场、实用增量和已通过审稿的转化段,也不得制造关键词堆砌。核心搜索词应自然出现在标题或前 200 字。SEO 关闭时,记录跳过原因并直接使用 06-reviewed.md 进入下一步。
SEO 输出也必须通过同一字数门禁;SEO 不得把正文缩短到 1300 字以下或扩写到 1800 字以上。
7. 生成终稿
仅在文章存在需要作者手动提供的来源图、资料图或参考图时使用 article-image-placeholders;不要为纯装饰图强加占位符。
从已通过事实审稿和转化校验的版本生成 09-FINAL.md。保留标题、正文、必要的来源注释、自然转化段和图片占位符;移除评分表、审稿报告、SEO 报告、内容角色字段和内部元数据。不要执行公众号排版或发布;用户需要时将下一步交给 wechat-article-typeset。
交付前对 09-FINAL.md 运行最终字数门禁。默认 1300 <= visible_chars <= 1800;未通过时不得交付或进入排版。
通用门禁
- 写完每个文件后检查存在且非空;失败时只重做当前阶段。
- 不删除既有中间产物;重跑当前阶段时覆盖对应文件。
- 不把未核验线索写成事实,不虚构用户体验,不为标题或 SEO 改写事实。
- 不为转粉虚构历史文章、更新频率、系列计划、工具体验或账号能力。
- 不把账号上下文当作事实来源;账号定位决定表达与取舍,外部事实仍须单独核验。
- 不虚构
source_materials 中没有的亲测、读者原话、运营成绩或作者经历。
- 上游包装与事实冲突时以事实为准,记录收窄或改角度的原因,不静默保留错误承诺。
- 增长目标不得覆盖事实核验、合规判断、作者立场或用户明确要求。
- 上游产物缺失或不合约时先修复上游,不在下游暗中补造。
- 编排链选题未提供已锁定文章简报时停止;探索卡、临时包装和用户仅选择编号都不等于成稿授权。
- 用户提供现成大纲、标题或初稿时,可从对应下一阶段继续,但先补齐必要的事实基座和作者素材。
- 默认所有公众号正文以 1500 个可见字符为目标,1300–1700 均视为正常且不触发长度修复;只接受用户对当前文章的明确长度覆盖。低于下限时只能依据事实基座补充解释、因果、边界和实用信息,不得为凑字数新增未经核验的事实。
完成汇报
简要报告:终稿路径、所用写作类型、内容角色、实用增量、转化校验结果、已核验事实数、引用覆盖率、SEO 是否执行、仍需人工确认的风险。不要声称已发布。