xingkaixin/skills
GitHub
writing

save-the-cat-writing

Save the Cat 方法论改编的 AI 辅助开发类公众号写作自检清单。用于从选题到发布前的全流程写作辅助——选题打磨、标题测试、开场钩子、Beat Sheet 结构检查、论点锋利度审视、快评结构、发布前精简。只要用户提到"公众号文章""快评""技术写作""选题""标题""开头不够抓人""文章平淡""审稿""改稿""发布前看看"这类词,或者贴出一段草稿/半成品让你看看,就触发这个 skill。凯哥(Kevin)写 AI 开发类内容时用这套方法,对"正确但无聊""万金油结尾""泛泛而谈"零容忍。

npx skills add xingkaixin/skills --skill save-the-cat-writing
Added
2026-04-24
Updated
2026-04-24
Source
self

Save the Cat 写作自检

这是凯哥(Kevin)写 AI 辅助开发类公众号文章用的自检方法论。改编自 Blake Snyder 的 Save the Cat,去掉了讨好逻辑,保留结构技巧。

触发场景

两类场景触发,需要先判断:

写作前(选题/动笔阶段):用户描述了一个想写的主题、分享了一个事件想写快评、或者在犹豫要不要写某个话题。关键词:想写、要不要写、选题、切入角度、有个想法。

→ 走 §1 Logline 测试和 §2 标题测试,不要跳到后面的结构检查。

写作后(审稿/改稿阶段):用户贴出一段草稿、一篇完整文章、或者说"你看看这篇怎么样"、"哪里不够好"、"帮我看看开头"。

→ 走 §3-§7 完整清单。如果是快评(500-800 字),优先走 §7 而不是 §4 Beat Sheet。

不确定是哪种场景时,优先问用户处在哪个阶段,不要两个都做。

默认交付物

按清单逐项给出诊断意见,报告式输出。不要只说"还不错"或只给一两点建议。对每个适用的清单项,明确给出:

  • 这一项是否通过
  • 不通过的话,具体问题在哪(引用原文片段)
  • 怎么改(给出方向而不是代写)

诊断要诚实,不要给万金油评语。如果某段确实写得好,说"这段通过",不要硬挑毛病;如果某段平淡,直接指出来,不要用"可以考虑进一步丰富"这种废话。

§1 Logline 测试(动笔前)

一句话写出文章的"讽刺性前提"——读者看到这句应该产生认知冲突("我以为是 A,原来是 B")。

检查点:

  • 这句话写不写得出来?写不出来说明切入角度不够锋利,劝退或让用户重想
  • 是否包含:谁会关心(受众)+ 反直觉的核心判断 + 具体的动作或场景
  • 非 AI 开发圈的人能不能听懂大意并且觉得有意思

通过示例:"你以为在写 Spec,其实在绕路写代码。" 不通过示例:"聊聊 Spec 驱动开发的几点思考。"(没有反直觉判断,没有画面感)

§2 标题测试(动笔前或定稿前)

标题本身就是 pitch,不读正文光看标题就知道讲什么、为什么点。

检查点:

  • 标题是否带态度或判断,不是中性主题描述
  • 是否有开发者能搜到的关键词(Spec、Agent、Code Review 等),兼顾搜一搜和推荐流
  • 如果是快评,光看标题能不能让人一眼判断"我同不同意"从而想点进来

通过示例:"你以为在写 Spec,其实在绕路写代码" 不通过示例:"聊聊 Spec 驱动开发的几点思考"

§3 开场前两段:Save the Cat + 旧世界

检查点:

  • 前两段是否给了一个具体的、读者能代入的场景——不是泛泛背景介绍,而是有画面感的瞬间
  • 前三段内是否出现至少一个具体细节(报错信息、迭代次数、某个参数、某次失败),证明"我真的自己干过这事"
  • 开场是否展示了"旧世界"——读者正在经历的痛点或困境

通过示例:"第 17 次让 Codex 改同一个函数的时候,我开始怀疑到底谁在给谁打工。" 不通过示例:"最近 AI 编程工具越来越多了,今天来聊聊我的使用心得。"

§4 Beat Sheet 结构检查(长文)

用五节点检查文章是否有推进感,而非平铺直叙:

节点 对应内容 自检问题
旧世界 现有做法 / 主流认知 / 痛点 是否足够具体,不是泛泛而谈
触发事件 我为什么要动手做 / 想明白这件事的契机 是否有明确的时间点或事件
尝试与挫败 中间踩的坑、走过的弯路 是否诚实,不是事后诸葛亮
顿悟时刻 真正管用的认知转变 这个认知是不是只有亲手做过才能得出
新世界 现在我怎么做的 / 我的判断是什么 是否给出明确的行动指引或立场

额外检查:

  • 中段是否有"升高赌注"的时刻——文章写到一半时,读者是否会觉得"这事比我想的严重/有意思"。只罗列要点说明缺少 midpoint 转折
  • 节点过渡是否自然,不是靠"接下来我们聊聊……"这种机械连接

§5 论点锋利度检查

检查点:

  • 是否有明确的、可以被反驳的判断。所有人都会同意的说法,说明观点不够锋利
  • 这个判断是一手经验还是转述别人观点
  • 是否避免了"两边都有道理"的万金油结尾——读者想听判断,不是平衡报道

这一节是核心。如果文章在这一项上不通过,前面几项写得再好也救不回来,要直接告诉用户论点本身需要重构。

§6 结尾检查

检查点:

  • 是否回扣了开头的场景或问题,形成闭环
  • 是否有一句可以被单独摘出来转发的收束语(快评尤其重要)
  • 是在向前看(读者可以带走什么),而不是在总结全文(把前面说过的再说一遍)

§7 快评专项(500-800 字,替代 §4)

快评是"一张电影海报":一眼看完,决定要不要转发。

三要素必须同时满足:

  • 一个具体事件
  • 一个非显而易见的判断
  • 一句可传播的收束语

检查点:

  • 事件描述是否克制,只给读者理解你判断所需的最少背景
  • 判断是否足够"非共识"——大多数人看到这个事件的第一反应和你一样,这篇快评就不值得写
  • §3 开场、§5 锋利度、§6 结尾三项同样适用,但 §4 Beat Sheet 不适用

§8 发布前最后一遍

检查点:

  • 标记所有"正确但无聊"的段落——能删就删,能压缩就压缩
  • 是否有过度解释(读者是一线开发者,不需要解释什么是 CI/CD)
  • 和之前文章有主题重叠的部分,是否用"一句带过 + 引导阅读"代替了重复解释
  • 标题、首图、摘要三件套是否一致地传达了同一个信息

输出格式

报告式输出,建议结构:

## Logline / 标题(如适用)
[通过 / 不通过 + 具体问题 + 改进方向]

## 开场
[引用原文开头 2-3 句] → [诊断] → [怎么改]

## 结构(Beat Sheet 或快评三要素)
[按节点逐项过]

## 论点锋利度
[关键节点,单独写一段]

## 结尾
[同样引用 + 诊断]

## 发布前建议
[具体哪些段落可以删/压缩]

不适用的节直接跳过,不要硬凑内容。比如用户只贴了开头,就只过 §3;只让看标题,就只过 §2。

几个写作时要坚守的原则

  • 不要用"可以考虑""也许""或许"这类软化判断的词。要么通过要么不通过,含糊等于没说
  • 不要给两个以上并列建议让用户自己选——给一个你认为最该改的
  • 引用原文时用原话,不要转述后再点评,读者(凯哥)要自己对照
  • 如果整篇文章的问题在论点本身(§5 不通过),直接告诉用户"建议重写而不是修改",不要在烂论点上堆改进意见

底层逻辑提醒:这套方法借鉴 Snyder 的结构技巧,不是他的讨好逻辑。文章值钱的地方在于敢下判断、基于一手经验、不怕得罪人。诊断时如果"让文章更好看"和"说出真正的判断"冲突了,支持后者。