关于 blog-post-writer
Nick Nisi Blog Writer 是为 Nick Nisi 准备博客初稿的 Skill,负责整理素材、研究和组织结构,而不代写可直接发布的第一人称文章。它要求为事实标注来源,并把未经本人确认的内心陈述留给作者处理。
主要功能
- 01从零散素材中整理事实
- 02通过定向提问收集作者想法
- 03参考近期文章安排结构
- 04用脚本检查结构偏差
- 05交付初稿、疑问和检查结果
适用场景
- 01把日志和代码整理成博客素材
- 02访谈作者以补充个人观点
- 03为作者准备待修改的平实初稿
- 04核查博客中的事实来源和第一人称陈述
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ nicknisi/ claude-plugins --skill blog-post-writer安装后在 Claude Code 中输入/blog-post-writer确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/catch-22.mdcomedians-set.mdcompare-contrast.mdconverging-ideas.mdexistential-awakening.mdframeworks.mdfreytags-pyramid.mdin-medias-res.mdkafkaesque-labyrinth.mdkishotenketsu.mdnested-loops.mdpost-mortem.mdpost-template.mdproblem-agitation-solution.mdprogressive-disclosure.mdreverse-chronology.mdscqa.mdsisyphean-arc.mdsocratic-path.mdstory-circle.mdstrangers-report.mdthe-false-start.mdthe-metamorphosis.mdthe-petal.mdthe-rashomon.mdthe-sparkline.mdthe-spiral.mdthe-waiting.mdthree-act.mdvoice-tone.md详细介绍
Nick Nisi 博客写作助手
将原始素材转化为一份由 Nick 完成的草稿。此技能负责调研、结构安排和衔接文字,不会生成可直接发布的第一人称文章。
此技能要贯彻的原则
事实可以来自日志。感受不可以。
此技能的早期版本曾发布过一篇文章,读者称之为 AI 垃圾文。事实无懈可击——有真实时间戳、真实提交统计、真实 Slack 引言。问题在于,它还编造了 Nick 的内心活动:他想了什么、原先的假设是什么、什么打动了他。这样的说法有九处,只有一处有来源。读者未必总能说清问题在哪,但他们能感觉到,之后就不再信任文章。
量化结果是:那篇文章每 1,000 个词声称 Nick 的内心状态出现 5.84 次,而 Nick 的语料平均值是 0.97。是他平时水平的六倍。他写的主要是自己做了什么,而草稿写的却是他对自己所做之事有何感受。
以下所有内容都由此而来。
流程
1. 收集原始素材
接受杂乱的素材:零散想法、代码、命令、结论、链接。不要要求整理。
如果素材太少,就从会话日志、Slack、git 历史记录和代码仓库本身挖掘。这是整个流程真正擅长的地方,没有理由藏着掖着。为每条事实记录来源。 用一份「主张 → 来源」的工作文件,可以让草稿保持真实,也能让第 5 步变成机械流程。
2. 采访那些无法从素材中挖掘的内容
这是此技能中价值最高的一步。不要跳过。
日志记录了 Nick 做了什么,却从不记录他想了什么。通过 ask_user_question 或直接提问,提出 8–15 个有针对性的问题,并将回答逐字记录:
- 「X 发生时,你实际在想什么?」
- 「你真正停止做 Y 的原因是什么?不是那个体面的理由,而是真正的原因。」
- 「这件事中,有什么是你会和别人争论的?」
- 「有什么是你做错了,但宁愿不写进去的?」
告诉他尽快打字,不要润色。他未经润色的回答,是文章中每一句承载声音的句子的原始素材。这些回答会平实、带有保留,而且具体——这种平实就是他的声音。 不要把它修饰得更流畅。
如果他拒绝接受采访,就在文章中他的内心活动应该出现的地方保留 [NICK: ...] 标记。这是正确的结果,不是失败。
3. 阅读语料,而不是语料的描述
完整阅读 src/content/posts/ 中最近发布的 2–3 篇文章——先读最新的,再读任何主题相近的文章。衔接文字应与这些文章保持一致,而不是与它们的摘要一致。
然后阅读 references/voice-tone.md。它现在列的是上限和禁令,而不是需要刻意体现的特征。要求模型体现某种特征,会让它每次遇到适用场景时都执行;八节文章里出现八句格言,正是由此造成的。只有约束是安全的指示。
4. 根据素材组织结构
从事实中找出已有的时间线或论点,并沿着它展开。
不要选择叙事框架。 references/frameworks.md 是用来描述已有草稿的诊断词汇,绝不是要填充的模板。选择框架,就意味着选择事件代表什么;这是 Nick 的决定,不是工具的决定。完美套用故事圈,是此技能最容易被识别的产物,因为没有人会在凭记忆写作时写出这样的结构。
唯一的结构指示是:找出这篇文章要完成的唯一转折,安排事实让它自然落地,其余部分都保持平实。
章节标题应当直述内容——点明主题(「什么是 Fleet」「三个信号,单独来看都不可信」)。暗示叙事转折的标题(「漂移」「回家」)读起来像章节名;大量出现时,就会露出破绽。
5. 撰写朴素初稿
信息完整,修辞克制。力求平实。
Nick 擅长为平淡的文字增添风格,却不擅长从巧妙的文字中删去仿作痕迹。把一份已经听起来像成稿的东西交给他,是最糟糕的选择——他得先跟它较劲。给他一份一看就需要他出手的稿子。
起草时的硬性规则:
| 规则 | 原因 |
|---|---|
每个描述心理状态的句子,都必须是步骤 2 中的逐字引文,或是 [NICK: what were you actually thinking here?] 标记 | 这是核心问题。未标记的虚构内心活动一律不合格。 |
| 各节以信息收尾——一个事实、一个数字、一条命令,或者直接结束 | 八个警句式结尾就是这个模板的典型轮廓 |
| 每个数字都必须有来源可查 | “十二分钟的好奇心”是凭空捏造的精确说法,把人生写成了故事 |
| 每篇文章最多使用一个贯穿始终的比喻 | 一个比喻在 3 个或更多章节反复出现,就是框架的指纹 |
| 不要加入旁白式舞台指示 | “现在看看接下来发生了什么”是 Nick 在主持一篇他绝不会这样主持的文章 |
想用修辞手法的地方,改写成平实的句子,让 Nick 决定是否值得进一步润色。
6. 运行结构检查关卡——在 Nick 阅读之前
python3 scripts/slopcheck.py \
--corpus '/Users/nicknisi/Developer/nicknisi.com/src/content/posts/*.md*' \
--draft path/to/draft.mdx
它会根据 Nick 的真实文章进行校准,并标记两个方向上的异常——过度克制和过度使用一样可疑。 刻意规避某项指标的初稿,和从未考虑过该指标的初稿,看起来并不一样。
检查关卡的任务是生成 Nick 的改写清单,而不是为初稿背书。修复它标记的问题,然后交给他。
内心活动部分始终会输出,且不会与语料进行评分比较——只要有任何说法尚未确认,程序就会以非零状态码退出。结构上干净、第一人称说法却未经确认的初稿,不能算通过。这些句子应该交给 Nick,而不是你。
词汇检查(tighten-prose 技能)最后运行,也最不重要。它们会扫描“delve”和“leverage”这类 2024 年风格特征,即使初稿满是劣质文字也会放行——导致这次改写的那篇文章,当时就是如此通过的。
7. 移交,不要发布
交付以下内容:
- 平实初稿
- 内心活动清单——每个描述他内心世界的句子,供他改写或删去
- 检查关卡输出
- 未解决的问题
不要发布 Nick 尚未读过并批准第一人称句子的文章。 这份材料的编辑不是他。他是其中一半内容的唯一信息来源。
输出格式
frontmatter 架构和文件约定请参阅 references/post-template.md。
捆绑资源
references/voice-tone.md— 风格上限和禁忌,以及根据其语料统计出的比率references/post-template.md— frontmatter 架构和结构骨架references/frameworks.md— 用于点评成稿的诊断词汇scripts/slopcheck.py— 根据语料校准的结构检测器