mcpField
B
blog-post-writer

blog-post-writer

github.com/nicknisi创意与媒体11466 次安装11 周前更新
代码仓库

关于 blog-post-writer

Nick Nisi Blog Writer 是为 Nick Nisi 准备博客初稿的 Skill,负责整理素材、研究和组织结构,而不代写可直接发布的第一人称文章。它要求为事实标注来源,并把未经本人确认的内心陈述留给作者处理。

主要功能

  1. 01从零散素材中整理事实
  2. 02通过定向提问收集作者想法
  3. 03参考近期文章安排结构
  4. 04用脚本检查结构偏差
  5. 05交付初稿、疑问和检查结果

适用场景

  1. 01把日志和代码整理成博客素材
  2. 02访谈作者以补充个人观点
  3. 03为作者准备待修改的平实初稿
  4. 04核查博客中的事实来源和第一人称陈述

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/nicknisi/claude-plugins --skill blog-post-writer

安装后在 Claude Code 中输入/blog-post-writer确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
catch-22.md
comedians-set.md
compare-contrast.md
converging-ideas.md
existential-awakening.md
frameworks.md
freytags-pyramid.md
in-medias-res.md
kafkaesque-labyrinth.md
kishotenketsu.md
nested-loops.md
post-mortem.md
post-template.md
problem-agitation-solution.md
progressive-disclosure.md
reverse-chronology.md
scqa.md
sisyphean-arc.md
socratic-path.md
story-circle.md
strangers-report.md
the-false-start.md
the-metamorphosis.md
the-petal.md
the-rashomon.md
the-sparkline.md
the-spiral.md
the-waiting.md
three-act.md
voice-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. 移交,不要发布

交付以下内容:

  1. 平实初稿
  2. 内心活动清单——每个描述他内心世界的句子,供他改写或删去
  3. 检查关卡输出
  4. 未解决的问题

不要发布 Nick 尚未读过并批准第一人称句子的文章。 这份材料的编辑不是他。他是其中一半内容的唯一信息来源。

输出格式

frontmatter 架构和文件约定请参阅 references/post-template.md。

捆绑资源

  • references/voice-tone.md — 风格上限和禁忌,以及根据其语料统计出的比率
  • references/post-template.md — frontmatter 架构和结构骨架
  • references/frameworks.md — 用于点评成稿的诊断词汇
  • scripts/slopcheck.py — 根据语料校准的结构检测器

评论

支持 Markdown