文章质量终检(article-quality-check)
文章定稿前的最后一道质量收口。触发时机:blog-writing 第 8 步(验证)——机检跑 make article-check slug=<slug>,编辑终检按本 skill 六组清单过。产出是问题清单,不自动改稿;修稿由写作会话执行后复跑。
定位与分工(先读,防止越界)
本 skill 是编排者 + 补位,四个既有权威不动:
| 权威归谁 | 内容 | 本 skill 做什么 |
|---|---|---|
| de-ai-smell | AI 味词表与阻断语义 | 调用 make check-ai-smell path=<md>,只复判机检不全的句式变体 |
| platform-compliance | 违禁词与平台红线 | 调用 make check-compliance path=<md> |
| talkshow | 梗规则与六维口径 | 趣味向文章按其六维复检(本 skill 引用不重写) |
| metadata-optimizer | 标题流程 | 不碰(标题在写作期已定稿) |
机检门禁(一键,❌ 阻断发布)
make article-check slug=<slug>
# 等价:py -3.11 .skills/skills/article-quality-check/scripts/check_article.py --slug <slug>
九项 ERROR + 三项 WARN(口径见 openspec article-quality-gate design):
| # | 检查 | 级别 | 说明 |
|---|---|---|---|
| 1 | relref 目标存在 | ❌ | {{< relref "posts/x.md" >}} 指向的文件必须在 content/posts/ |
| 2 | 段落 ≤4 行 | ❌ | front matter/代码块/表格/列表/图片行不计 |
| 3 | 标题数字在正文出现 | ❌ | title 里的数字(5 个瞬间/30 倍)正文必须兑现 |
| 4 | 代码块 ≤15 行 | ❌ | 手机可读性 |
| 5 | 结尾段不是列表 | ❌ | 结论式散文收尾,禁 checklist 收尾 |
| 6 | SVG 存在 | ❌ | <img src="/svg/..."> 文件在 static/svg/ |
| 7 | 时间完整格式 | ❌ | 禁「N 月 N 日/昨天/前天」简写(教学示例代码块内除外) |
| 8 | 同段冒号 ≥3 | ⚠️ | 对照修辞排比合法(人工判),滥用则减 |
| 9 | ≥10 字重复片段 ≥2 次 | ❌ | 跨全文重复句 |
| W1 | 破折号 >2 | ⚠️ | 与 de-ai-smell 口径一致的复检 |
| W2 | 配图配额不足 | ⚠️ | max(2, 字数÷1800),blog-writing 口径 |
| W3 | 零 relref | ⚠️ | 提示孤立文章,首篇合法 |
机检全绿 ≠ 终检通过——下面六组是机检管不了的判断。
六大编辑终检组(LLM/人工逐组过)
A 润色复查
精简(删冗余修饰、口头禅、被动转主动)、准确(术语到版本、数字具体、禁「很多/大幅」)、生动(动词>名词、场景>概念)。重点盯修改轮引入的新问题:多轮补丁后,新句子常与上下文不合身——重复表述、突然的书面腔、与全文口吻不接。
B AI 味复判(机检之后的变体层)
L1 归零后仍需人工看三类机检不全的:顿悟句式短形式(「不是A,是B」「不在X,在Y」)、补丁式总结段残留(章节标题带「回到本质/核心是」类)、三连对仗(连续两个对仗即拆)。判断口诀沿用 de-ai-smell:这个词换掉意思变吗?不变就改。
C 趣味检查(仅趣味/脱口秀向文章触发)
判断标准:文章写作时挂过 talkshow 或自称趣味/口语风格。检查:逐梗六维打分(真实/清晰/惊奇/声音/可演/密度,0-3 分)先修最低维;禁区核对(数据陈述句/结论段/CTA 零玩笑);每梗驮知识点(梗完必有干货收);密度按写作时定的档位复核。非趣味文章跳过本组。
D 流畅性
- 重复问句/重复表述:同一问题或同一论断出现两次以上(第二处改引用式带过)
- 顿挫:破折号/双冒号超量(机检已拦同段双冒号,这里看跨段滥用)
- 转场:节间过渡指向具体内容(「下一节会看到 X」),禁「但是/然而」空垫词、禁自问自答
- 扫读测试:只读小标题+段首句+加粗,逻辑仍成立
- 指代:「上一节说过」类引用能对上实际章节
E 合理性
- 逻辑链闭合:主张-论据-结论无断环;开头钩子的承诺正文有回收
- 表述准确:主语不错位(「没人逼它做影响分析」→ 实为流程缺失不是逼不逼)、因果不倒置
- 边界自洽:适用边界的表述与正文主张不打架(「小项目不需要」与「为什么大项目需要」不矛盾)
- 案例因果通顺:时间线、状态流转、模块依赖方向正确
F 技术深度
- 断言准确性(最高优先):计费/版本/行为类时效断言逐一核对。高危清单:推理型模型思维链按输出价计费、缓存按前缀严格匹配、上下文压缩保代码不保约定、工具协议握手时序——这类断言写错比少写严重
- 落地性:每个核心概念有「怎么落地」;只有「是什么」没有「怎么做」的段,补操作或删概念
- 代码/示例正确:语法、依赖方向、示例值逻辑自洽;教学示例标注为示例,不冒充真实事故
- 深挖机会:对照素材源(逐字稿/引文)是否漏掉高价值技术点——漏的判断「补进本文」还是「留给续篇」
G 补充项
- 数字一致性人工半:正文↔图注↔表格同事实数字一致(机检只覆盖标题↔正文)
- 事实边界:示例日期/编号/数据可溯源;「17 处调用」这类演示值须在示例语境内
- 术语一致性:同一概念全文同一名(会话 vs 对话、模块 vs 组件、层 vs 层级——混用即统一)
- 钩子兑现终核:开头每个承诺逐节有回收点
- 配图 alt 与图内容一致(图重画后 alt 常忘同步——2026-08-31 实例)
多篇隔离检查(同批 ≥2 篇时必跑)
一次会话产出多篇(双选题仿写、系列拆批量产)时:
- 比喻体系词表不相交:每篇提取核心比喻词(如 A 篇「员工/入职/试用期/述职」vs B 篇「收音机/CPU/插座/保险丝」),交叉出现即报(图 alt 文字也算)
- relref 集合不相交:两篇互链对象无交集(共享同一篇时评估是否真必要)
- 核心梗不重复:同款包袱/金句只允许出现在一篇
- 叙事框架不重复:都是「四层/五个」式清单文时,检查节结构模板是否雷同到流水线感
H 组:公众号适配检查(--wechat 模式,同步公众号前必跑)
make article-check slug=<slug> wechat=1
规则权威在 blog-writing references/wechat-retention.md(本组只机检其可自动化子集 + 引导人工项)。分层:
ERROR(判废级/硬规)
- 转化段泄漏:源稿出现「点个在看/在看让我知道/点个关注/关注我/后台回复/分享到朋友圈/转发抽奖」——转化段只许 draft-only 后台补(wechat-retention §6)
/posts/死路径:正文出现 relref 短码以外的/posts/字面路径(2026-08-31 判废级定规;文末「接着读/往期/延伸阅读」+ 路径的导览散文段同报)- wechat_title:自身 >25 字;或缺失且主标题 >25 字(回退必超折叠线)
- cover.png 缺失:
static/images/<slug>/cover.png(打开层转化件,禁视频封面直搬/架构图兜底)
WARN(留存层)
5. wechat_digest 缺失(回退 description,核对前 40 字)或 digest/description 前 40 字无痛点词/硬数字
6. wechat_title 前 13 字无钩子信号(数字/痛点/反差词)
7. 封面图出现在正文(2026-09-05 定规:正文不展示封面,公众号封面由 prepare.py 从 static/images/<slug>/cover.png 直取)
8. 首屏无图(第一个 <img> 在 800 字之后)
9. 二级标题间隔 >1200 字(列出超长区间,拆节给滚动锚点)
10. 无可收藏资产(表格/清单型代码块一处都没有——收藏是完读外最强质量信号)
11. 无「往期关联」节,或条数不在 2-3(样板 = codex-auto-video-editing 文末:钩子问句 + relref 列表)
信息级输出
- 长度档位判定:≤2500 直发 / 2500-4000 压缩变体 / >4000 默认压缩变体(直发是例外,需 link-map 记豁免理由——2026-08-29 收紧定规)
人工项(机检管不了,逐条过 wechat-retention §8 清单):90 秒规则(前 600 字能否复述核心判断)、前 150 字问题定义+钩子、首屏手机预览、关注引导带持续价值理由、标题含可搜关键词、发布配置四查(作者/合集/原创声明/广告开关)、定时 20:00-21:00 窗口、48h 回看排期。
标准动线(写进 blog-writing 第 8 步)
文章定稿(第 1-7 步完成)
↓ make article-check slug=<slug> 机检,❌ 阻断
↓ 六组终检(C 组按文章风格跳过/执行) 产出问题清单
↓ 修稿 → 复跑机检
↓ 全绿 → 进第 9 步发布前清单
工程约束
- 脚本 Windows 显式
encoding='utf-8',输出对齐 check-ai-smell 风格(路径:行号 [标签]) - 机检只定位不修改;ERROR 必须处置(修稿或给出保留理由),WARN 逐条人工判
- 本 skill 不进 CI、不挂定时——由写作会话在第 8 步触发