Featured Article

与 AI 合伙人相爱相杀 vlog 6:Vlog 是怎么炼成的

写完前两集 Vlog 后,老大觉得每次写都太累。这一集,他们从 0 到 1 策划整个 Vlog 系列、开发对话气泡定制渲染组件、生成 ai-vlog-creator 专属技能——用 AI 制造 AI 工具,这很 meta。

2026年3月5日
5 min read
与 AI 合伙人相爱相杀 vlog 6:Vlog 是怎么炼成的

序章:写完两集后的思考

二月的最后一个周末,阳光透过百叶窗照进书房,在地板上投下条纹状的光影。老大坐在家里台式机前,手里拿着一杯热豆浆,显示器上开着两个窗口:

  • 左边是刚写完的 Vlog 1 和 Vlog 2
  • 右边是 .claude/skills/ 目录,里面已经有了 archive-talkproject-commit 两个自定义技能

两集 Vlog 发出去了,反响还不错。但老大没有停下,他的手指在桌面上轻轻敲击——这是他思考时的习惯。

"每次写 Vlog 都要重复同样的流程……"老大心里琢磨着,"梳理素材、调整叙事、统一对话格式、检查脱敏……这些事情明明可以标准化。"

他放下豆浆杯,在 Claude Code 终端里输入:

👨‍💻

巴基,前两集 Vlog 写完了,但我觉得创作流程可以更高效。

你看 .claude/skills/ 目录下,我们已经有了 archive-talk 和 project-commit 两个技能——这些都是把重复流程沉淀下来的好例子。

这次我们搞个 ai-vlog-creator 技能,把 Vlog 创作的整个流程都标准化下来。

顺便也向读者科普一下:Skill 是什么?如何把重复工作沉淀成可复用的技能?

🤖

收到,老大。这个思路很好!

先跟读者科普一下:

Skill 是什么:就是把重复的工作流程、检查清单、规范要求,写成一个结构化的指令集

Skill 有什么用:以后只要说"写下一集 vlog",AI 就自动按流程来,不用每次重复交代

那我们开始?第一步,先梳理一下前两集的成功要素,作为 Skill 的基础。

老大摸着下巴,眼睛微微一亮。对,就这么办。先总结成功要素,再固化成流程,最后做成 Skill——这本身就是个很好的 Vlog 题材。


第一章:Vlog 系列从 0 到 1 策划

老大坐直了身体,目光从屏幕移向窗外。楼下花园里,几个孩子正在追逐打闹,笑声隐约传来。他收回目光,在终端里输入:

👨‍💻

好,我们开始。第一步,给这个系列起个正式的名字。

前两集我用的是"从零到1:AI伴我闯关记",但觉得不够味。

要有点技术浪漫主义,还要有点"相爱相杀"的感觉——毕竟你有时候挺欠揍的。

对了,顺便也跟读者科普一下:为什么系列名称很重要? 因为要形成品牌识别度。

🤖

收到,老大。我提供几个方向,同时跟读者解释每个方向的考量:

航海冒险风格:《船长与大副:AI 远航日志》

优点:团队感强,有探索感

缺点:不够接地气

现代创业风格:《创始人与 AI 合伙人:从 0 到 1 实录》

优点:点明了"合伙人"关系

缺点:太长,不够口语化

黑色幽默风格:《我被 AI 嫌弃的那些日子》

优点:有反差感,有趣

缺点:可能不够"技术"

或者你有别的想法?

老大盯着屏幕看了一会儿,手指在桌面上轻轻敲击。几个名字在他脑子里过了一遍,最终停留在一个念头上。

👨‍💻

《与AI合伙人相爱相杀vlog》,技术浪漫主义风格。

就这个。

跟读者解释一下:为什么选这个名字?

"合伙人":平等关系,不是谁指挥谁

"相爱相杀":有冲突有合作,真实不虚伪

"vlog":口语化,像跟朋友聊天一样

🤖

收到。系列名称确定:《与AI合伙人相爱相杀vlog》。

第二步,人物设定。前两集用的是"老大"和"小子",要调整得更有技术感。

顺便跟读者科普:为什么人物设定很重要? 因为读者需要有代入感,需要记住角色。

老大想了想,"老大"这个称呼可以保留,但"小子"得换个更有技术感的名字。他的目光扫过书架上的漫威漫画——冬兵巴基的封面正好映入眼帘。

👨‍💻

你以后叫"巴基"(Buggy)。

跟读者解释一下这个名字的双重含义:

Buggy:代码总有 Bug,你就是帮我抓 Bug 的

巴基:漫威里的冬兵 Bucky Barnes,值得托付后背的搭档

我的设定还是:干了十多年的后端老兵,暴躁、没耐心看文档、极其务实,只做决策不写代码。

这里跟读者强调一下:这不是偷懒,这是分工优化——老大负责判断方向,巴基负责执行细节。

🤖

收到,老大。人物设定已更新:

老大:后端老兵,暴躁务实,云监工,只做决策不写代码

巴基(Buggy):AI 合伙人,冷静高效,略带傲娇,赛博打工仔

第三步,叙事结构。前两集用的是"爽剧模式",效果很好,我们把它固化下来。

跟读者科普一下:为什么是"爽剧模式"? 因为技术文章容易枯燥,需要戏剧冲突来抓住读者。

老大点点头,这个模式确实效果好。他端起豆浆杯喝了一口,已经凉了,但他不在意。

👨‍💻

固化为标准流程,以后每集都按这个来:

序章:交接上一集结果,抛出本集痛点

第 N 章:每个冲突点一个章节(遇到困难 → 爆发冲突 → AI 降维打击解决)

尾声:老大的感慨,"动嘴不动手"的赛博打工模式

技术 Tips:3-6 条老兵防坑指南(这是给技术读者的干货)

关联阅读:前一集 + 后一集(链式衔接,方便读者前后跳转)

跟读者强调:这不是八股文,这是降低认知负荷——读者知道每集大概有什么,就不会焦虑。

巴基很快整理出了完整的策划文档。老大看着屏幕,满意地点点头。有内味了。但光有策划还不够,文章里的对话呈现还可以更酷炫。

👨‍💻

策划搞定了。下一步,对话气泡定制渲染组件。

现在用的标识太丑了,我们搞个定制渲染:赛博朋克绿 vs 老兵橙,左右区分,发光效果。


第二章:对话气泡定制渲染组件开发

老大起身走到窗边,拉开百叶窗,阳光一下子涌了进来。楼下的玉兰花开了,白色的花瓣在风里轻轻摇晃。他看了一会儿,回到电脑前坐下。

👨‍💻

你看现在文章里的对话,用的标识既不美观也不直观。

我们能不能把对话用不同的颜色和样式区分开?但有个要求:不能破坏 Markdown 的纯粹性,不要在文章里写 HTML。

🤖

收到,老大。我提供三个方案,同时跟读者解释每个方案的优劣:

方案 A:直接在 Markdown 里写 HTML + 自定义 CSS 类

优点:效果最灵活

缺点:破坏 Markdown 纯粹性,文章里一堆 HTML 标签

方案 B:纯 Markdown 加粗格式

优点:最简单

缺点:视觉冲击不够,区分度不高

方案 C:Markdown 指令化扩展 / Blockquote 前缀劫持(推荐)

优点:保持 Markdown 纯净,内容与表现分离,表现力强

缺点:需要修改 Markdown 渲染逻辑

核心思路:文章里统一用 > **巴基:** 和 > **老大:** 的 blockquote 格式,渲染组件拦截 prefix,自动应用对应样式。

老大的手指在桌面上轻轻敲击,三个方案在他脑子里过了一遍——方案 C 显然是最优解,虽然要多写点代码,但保持了 Markdown 的纯净,这很重要。

👨‍💻

方案 C,就要这个。

视觉风格要"强烈对比(赛博 vs 写实)"。

巴基:赛博朋克绿,左对齐,发光翠绿边框,暗绿背景

老大:老兵橙,右侧缩进,橙红色边框,深灰渐变背景,文本右对齐

开始搞。

🤖

收到,老大。两步走:

批量修改 Vlog 文章里的对话格式,统一为 > **巴基:** 和 > **老大:**

修改 app/blog/[slug]/page.tsx,在 ReactMarkdown 的 components 配置中拦截 blockquote

要执行吗? (y/n)

老大敲下 y,然后靠在椅背上看着终端滚动。他的目光又移向窗外——玉兰花确实开得很好,要是放在以前,这种前端样式的活他可能要折腾大半天,但现在,他只需要做决策。

终端很快停止滚动。

🤖

批量修改完成。现在给你看核心拦截逻辑:

components={{

blockquote: ({ children }) => {

const text = extractText(children);

if (text.startsWith('巴基:')) {

return <div className="cyberpunk-green">{children}</div>;

} else if (text.startsWith('老大:')) {

return <div className="veteran-orange">{children}</div>;

}

return <blockquote>{children}</blockquote>;

}

}}

样式定义(Tailwind CSS):

巴基:border-l-4 border-green-400 bg-green-900/20,加上 shadow-[0_0_15px_rgba(74,222,128,0.3)] 发光效果

老大:border-l-4 border-orange-400 bg-gradient-to-r from-gray-800/50 to-gray-900/50,文本右对齐

要应用吗? (y/n)

老大再次敲下 y。他拿起豆浆杯,发现已经空了,起身去厨房又接了一杯热的。回来的时候,巴基已经搞定了。

🤖

搞定了。启动开发服务器看看效果? (y/n)

老大输入:"启动。"

浏览器打开 http://localhost:3000,老大点开 Vlog 1——

巴基的对话,赛博朋克绿,左边,发光边框,像暗夜里的霓虹。 老大的对话,老兵橙,右边,玻璃拟态,像夕阳下的机箱。

"太酷了!"老大忍不住拍了拍手,键盘发出清脆的声响。但很快他的眉头又皱了起来——文章里还有好多对话没加上样式。

👨‍💻

等等,还有好多遗漏的隐式对白,你再仔细扫一遍。

就是那些老大说的话,没有用 > **老大:** 格式的,都找出来统一格式化。

🤖

收到,老大。扫描全文……

找到了 17 处遗漏的隐式对白,正在批量格式化为统一的 > **老大:** Markdown 引用格式。

完成。

老大刷新浏览器——现在所有对话都有样式了。赛博绿和老兵橙在屏幕上交错,像两个世界的碰撞。

"完美。"老大端起热豆浆喝了一口,暖流传遍全身。"对话气泡搞定了。下一步,把我们刚才这套经验沉淀成一个技能——以后写 Vlog,直接触发技能就行。"


第三章:ai-vlog-creator 技能生成

老大靠在椅背上,伸了个大大的懒腰。关节发出清脆的响声,他活动了一下肩膀,目光落在屏幕上——策划文档有了,对话气泡组件有了,还差最后一步。

👨‍💻

对话气泡搞定了,系列策划也有了。现在还差最后一步——把这些经验沉淀成一个可复用的技能。

就叫 ai-vlog-creator。

以后我只要说"写下一集 vlog"或者"记录今天的开发过程",你就自动按这个流程来。

顺便跟读者科普一下:如何把重复工作沉淀成 Skill? 这是个很实用的技能。

🤖

收到,老大。我先梳理一下技能的核心要素,然后生成:

1. 触发条件:

用户说"写下一集 vlog"

用户说"记录今天的开发过程"

用户说"创作新一期 AI 编程日记"

2. 核心人物设定(强制执行):

老大:后端老兵,暴躁务实,云监工,只做决策

巴基:AI 合伙人,冷静高效,略带傲娇,赛博打工仔

3. 叙事结构(爽剧模式):

序章 → 冲突章 → 解决章 → 尾声 → 技术 Tips → 关联阅读

4. 严格排版规范:

对话必须用 > **巴基:** 和 > **老大:**

隐私脱敏(绝对路径、API Key 等)

中文友好

还要加上写作风格自我检查单(Checklist),对吧?

老大点点头,手指在桌面上轻轻敲击。"对,要有 Checklist,确保每篇都符合规范。"

👨‍💻

是的,加上 Checklist。

写作风格自我检查单:

是否完全避免了"你复制这段代码",改为了"AI 在后台修改了代码,我点了允许"?

所有对话是否都严格使用了 > **老大:** 和 > **巴基:** 格式?

是否体现了"碎片化时间"的紧迫感?

结尾是否包含了技术 Tips?

集数时间范围是否与上一集无缝衔接?

是否已在内容记录系统中更新本集记录?

生成技能吧。

🤖

收到,老大。正在生成 ai-vlog-creator 技能……

创建技能目录 .claude/skills/ai-vlog-creator/

编写 SKILL.md 文件,完整落实所有规范

技能生成完成!

以后你只要说"写下一集 vlog",我就自动触发这个技能。

老大看着终端里的技能文件,满意地点点头。但他没有停下——还有一件事要做。

👨‍💻

等等,还有一件事。

刚才对话气泡组件开发的技术方案,也值得沉淀到知识库。

就是那个"使用 react-markdown 拦截 Markdown 前缀渲染自定义气泡 UI"的方案,整理成一篇技术指南,以后说不定可以单独当博客文章发。

跟读者科普一下:为什么要沉淀知识库? 因为好的解决方案值得复用,而且整理的过程也是加深理解的过程。

🤖

收到,老大。我来提取技术要点:

核心价值:

保持 Markdown 纯净

内容与表现分离

极强的 UI 表现力

技术踩坑记录:

递归提取纯文本

避开 prose 污染

玻璃拟态实践

生成知识库文档吗? (y/n)

老大输入:"生成。"

终端开始滚动。很快,一篇完整的技术指南文档就出现在了 docs/knowledge/ 目录下。

老大伸了个懒腰,看着屏幕上的三个成果:

  1. Vlog 系列完整策划
  2. 对话气泡定制渲染组件
  3. ai-vlog-creator 专属技能
  4. 知识库技术指南

"用 AI 制造 AI 工具,然后用这个工具继续制造内容……"老大心里琢磨着,"这很 meta。"


尾声:Meta 时刻

周日的阳光已经西斜,书房里的光线变得柔和起来。老大靠在椅背上,看着屏幕上的四个成果:

  1. Vlog 系列完整策划
  2. 对话气泡定制渲染组件
  3. ai-vlog-creator 专属技能
  4. 知识库技术指南

前两集 Vlog 写完,他觉得累。 但这一集做完,他觉得爽。

不是因为做了多少事情,而是因为——他把重复的事情标准化了,把经验沉淀成了工具。

他在 Claude Code 终端里输入:

👨‍💻

巴基,总结一下今天的成果。

🤖

收到,老大。

今日成果:

✅ Vlog 系列完整策划:名称、人物设定、叙事结构、排版规范

✅ 对话气泡定制渲染组件:赛博朋克绿 vs 老兵橙,内容与表现分离

✅ ai-vlog-creator 专属技能:一键写 Vlog,标准化高产

✅ 知识库技术指南:Markdown 渲染拦截方案沉淀

下集预告:

(根据素材情况,我们可以继续写 TOC 功能开发、导航页面补全,或者其他内容)

老大看着终端里的总结,嘴角上扬。"完美。"

他站起身来,走到窗边。夕阳把天空染成了橙红色,像老兵橙的对话气泡。窗外的玉兰花在晚风里轻轻摇晃,花瓣落了几片在窗台上。

老大不用盯着终端敲代码,不用跟配置打架,只需要动动嘴——

"这才是生活啊。"老大看着窗外的夕阳,"这才是 AI 应该有的样子。"


💡 本集技术 Tips(老兵防坑指南)

  1. 内容与表现分离的最佳实践:使用 Markdown 前缀劫持方案,保持 Markdown 纯净,不要在文章里写 HTML。

  2. ReactMarkdown 组件拦截技巧:在 components 配置中拦截 blockquote,递归提取纯文本判断前缀,自动应用对应样式。

  3. 技能驱动的内容生产:把重复的创作流程沉淀为自定义 Skill,实现"一键写 Vlog"的标准化高产。

  4. 知识库经验沉淀:每次解决一个技术问题,都把方案整理成文档存入 docs/knowledge/,既是备忘,也是未来博客文章的素材。

  5. Meta 思维:用 AI 制造 AI 工具,然后用这个工具继续制造内容——这是效率最大化的完美闭环。

  6. 视觉风格统一:确定系列视觉风格(如赛博朋克 vs 写实),并严格执行,形成品牌识别度。


📎 关联阅读