别让 AI 写得像 AI:用自己的 83 篇博客训练专属写作助手,顺手做成了一个 Skill - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zp872571679
V2EX    Claude Code

别让 AI 写得像 AI:用自己的 83 篇博客训练专属写作助手,顺手做成了一个 Skill

  •  
  •   zp872571679 3 小时 53 分钟前 157 次点击

    用 AI 辅助写文章这件事,我折腾了挺长时间,一直有一个问题没解决:写出来的东西读着不像我写的。

    语气对,结构对,就是有点"飘"像一个模仿我的人写的,而不是我自己写的。

    后来意识到问题在哪:AI 不知道我怎么写东西。我没把自己的内容喂给它,光靠对话里几句描述,它当然摸不准。

    解决这个问题花了我一段时间,最后跑通的方案是:把博客历史文章全部导入 Obsidian 作为知识库,用 Claude Code 分析提炼出风格档案,再把整套工作流封装成一个可复用的 Skill


    Obsidian:不只是笔记工具,是知识库底座

    这件事的关键前提是:Obsidian 存的是本地 Markdown 文件。

    这意味着 Claude Code 可以直接读它。不需要 API 对接,不需要导出,直接在终端打开 Vault 目录,Claude Code 就能访问里面的所有内容。

    这和把文章发给 AI 让它"记住"有本质区别后者每次对话结束就清零了,前者是真正持久化的知识库,每次调用都能读到完整的历史内容。

    把 83 篇已发布文章放进去之后,它就有了训练材料。

    如果想学习 Obsidian 可以看:Obsidian 写作环境搭建:这 6 款插件让我的博客管理效率翻倍


    支撑这套流程的几个插件

    不是所有插件都和 Claude Code 有关,但有几个直接影响了知识库的可用性。

    Git:Vault 接入 GitHub ,每 30 分钟自动 commit 一次。Claude Code 在终端工作,知道哪些文件是新的、哪些改过,版本追踪自然就有了。

    Custom Attachment Location:图片按文章名归类到 assets/文章名/ 子目录。Claude Code 读文章的时候结构清晰,不会被一堆散落的图片文件干扰。

    Templater:新建文章自动写入 Front Matter ,包括状态字段(草稿 / 已发布)。这是后面 Dataview 能查询写作进度的基础。

    Dataview:用类 SQL 语法查 Vault 里的文章。我用它列出所有草稿、按分类汇总文章数量,也方便 Claude Code 快速定位需要参考的内容。

    Local Images Plus:历史文章里的外链图片自动下载本地化。做完这步,整个 Vault 完全离线独立,不依赖任何服务器。

    image


    第一步:把历史文章变成结构化知识库

    历史文章导入之后,先做两件事让知识库更好用。

    一是统一目录结构。我按文章类型分了三个目录:VPS 测评/VPS 小白教程/金融/,草稿放 草稿/,灵感放 灵感收集/。结构清晰,Claude Code 在扫描文件的时候能更快定位。

    二是给每篇文章加 Front Matter 标记状态。已发布的统一标 status: 已发布,方便后续只分析已发布内容,排除草稿干扰。

    image


    第二步:用 Claude Code 提炼风格档案

    知识库搭好之后,让 Claude Code 读所有已发布文章,从几个维度做分析:

    • 语气和人称:用不用「我」,怎么称呼读者
    • 句式习惯:短句还是长句,有没有标志性的开头方式
    • 结构偏好:怎么起头,怎么收尾,用不用步骤编号
    • 内容特征:高频关键词,倾向用数据还是个人经历说话
    • 文章长度:不同类型文章的字数范围

    分析结果写入 Vault 根目录的 风格档案.md。这个文件之后每次写文章都会被引用相当于一份给 AI 的写作说明书,告诉它我习惯怎么写,不习惯怎么写。

    有了这个文件,「用我的风格写一篇关于 X 的文章」这类需求才真正可靠。

    风格档案不是一次性的,写的文章越多,回来更新一次,准确度就越高。


    第三步:把工作流固化成 Skill

    分析风格、生成选题、写大纲、写文章这套流程每次都一样,很适合封装成可复用的 Skill 。

    Skill 对 Claude Code 来说,是一个带触发条件的操作说明。当我说「帮我写一篇文章」或者「给我出几个选题」,Claude Code 自动加载这个 Skill ,按照里面定义的步骤走,不需要每次重新解释流程。

    整套流程分六步:

    Step 1 分析风格 → Step 2 生成灵感 → Step 3 用户选题 → Step 4 生成大纲 → Step 5 用户确认 → Step 6 生成文章 

    每步都需要我确认才进入下一步。全自动跑完再给我看,不如每步都能介入调整最后写出来的文章才真的是我想要的方向,不是 AI 自己发挥的版本。

    Skill 里还有一个细节:每次生成文章之前,强制重新读取 风格档案.md,不依赖上下文记忆。这样即使对话轮数很多,风格也不会漂移。


    现在实际的工作流

    跑通之后,写一篇文章大概是这样:

    在 Claude Code 里说「我想写一篇文章」,Skill 自动触发。先问有没有现成选题,没有的话读现有文章列表,生成 10 条候选,我挑一个。

    然后它读 风格档案.md,按我的结构偏好生成大纲。我确认方向,说可以,它写正文,存到 草稿/ 目录。

    我打开文件润色,改掉感觉不对的地方,发布。

    花时间的部分只剩两件事:确认方向、最后润色。选题、大纲、正文初稿这些环节基本不用从头想了。


    总结

    这套方案的核心逻辑只有一句话:用自己的内容训练 AI ,而不是让 AI 猜你的风格。

    Obsidian 提供结构化的本地知识库,Claude Code 能直接读写本地文件,两者结合正好。风格档案是关键产物,Skill 是让它反复复用的最后一步。

    如果你也在用 Obsidian 写博客,而且有一定数量的历史文章,这套方案可以直接复制。文章越多,训练出来的风格档案越准,生成的文章就越像你自己写的。

    但是我最后想说的只是想介绍怎么搭建中的工作流,利用好手里的工具协助自己创作,节约自己的时间让自己可以把时间花费到其他地区。

    leejaen
        1
    leejaen  
       2 小时 52 分钟前
    求分享,我要伪装你来糊弄老板
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     987 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 19:13 PVG 03:13 LAX 12:13 JFK 15:13
    Do have faith in what you're doing.
    script src="http://www.v2ex.com/b/i/EtVbQ_a6-ARK2zM1wZph092VWf0QxYG9Fu31LO8LYItZMXBMLgccZVfXItxwf_bkNel9UsU8GzhieQWbn7TqyKQPSgfVn0uIaDhewhMoeiOGjP3tU8bB_wMl0O-lmiG-dbXFgYYXVLzk05ACabPQpR8iviKuPijO5PqSV-o-mG0="> ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86