把博客 Skill 从提示词模板改造成一键端到端工作流
把博客 Skill 从提示词模板改造成一键端到端工作流
摘要:把博客 Skill 从「复制提示词模板」重写为「一句话触发、一次产出三份文件、确认后推送」的端到端流程,拆解三文件结构、50-80 字摘要规范与只 add 指定文件的推送脚本设计。
0. 结论先行
Skill 不该是一段需要手动复制的提示词模板,而该是一段内建了完整工作流的可执行指令。
改造前,我的博客 Skill 把「生成博客」做成了「复制 references/blog-prompt.md 提示词模板发给 Agent」;改造后,我只说一句「把刚才这段对话整理成博客」,它就会自动完成提炼、产出三份文件、等我确认后 git push 到 Netlify。
1. 前置准备
| 项 | 说明 |
|---|---|
| CodeBuddy Skill 机制 | 会读 SKILL.md 作为技能入口,触发即执行 |
| Python 3 | 跑推送脚本 publish_blog.py,需健康解释器 |
| Git | D:\Blog 仓库,远程 github、分支 main |
环境坑:本机系统默认 Python(3.13.3)损坏,跑脚本报
SRE module mismatch,必须用 uv 管理的 3.12.13 解释器。
2. 问题:提示词模板为什么不够
之前的博客产出流程是:Skill 检测到「整理成博客」意图 → 让用户复制 blog-prompt.md 里的提示词 → 用户把模板粘给 Agent → Agent 按模板生成。
这个流程有三个毛病:
| 毛病 | 具体表现 |
|---|---|
| 多一步手动操作 | 用户要自己复制、粘贴模板,不是「一句话触发」 |
| 模板与 Skill 脱节 | 模板放在 references 里,Skill 主流程不直接执行 |
| 产物不完整 | 只出 Obsidian 博客 + 发布清单,没有 Hexo 个人博客,也没有自动推送 |
核心矛盾:模板是给「人」看的,Skill 是要「机器」直接执行的。 把给机器执行的流程写成给模板,等于把工作推回给了用户。
3. 目标:一次产出三份文件
改造后的博客 Skill,一次运行产出三份文件:
| # | 文件 | 路径 | 用途 | front-matter |
|---|---|---|---|---|
| 1 | Obsidian 正式博客 | 08-博客/001-博文/NN.标题.md |
CSDN 等平台发布 | tags/created/updated,正文保留 wikilink |
| 2 | 发布清单 | 08-博客/001-博文/NN.标题.发布清单.md |
发布前核对 | 无,含标签 + 摘要 + 封面图 |
| 3 | Hexo 个人博客 | source/_posts/NN.标题.md |
个人网站 | title/tags/categories/date/description,去 wikilink |
两个版本的 front-matter 差异是踩过的坑:Obsidian 版用 created/updated 且保留 wikilink,Hexo 版用 title/date/description 且必须去掉 wikilink,否则 Hexo 渲染会出错。
4. 三个关键设计决策
4.1 摘要长度:50-80 字
发布清单和 front-matter 里的摘要,统一为 50-80 字、不超过 100 字。旧规范写的是 100-150 字,太长——CSDN 摘要栏放不下,读者也没耐心看。于是把 templates.md、writing-rules.md、blog-prompt.md 里的旧描述全部改成 50-80 字。
4.2 推送时机:确认后才执行
推送是不可逆操作,所以做成硬性规则:三份文件生成后必须停下,展示路径和推送预览,等用户说「确认」才执行 git commit + push。绝不自动 push。
4.3 序号续接:两边独立
Obsidian 目录和 Hexo 目录的博客序号不同步(Obsidian 现在最大 9、Hexo 最大 8),所以序号要各自数、各自 +1。这个细节容易出错——如果共用一个序号,下一篇就会撞号。
5. 实现:把工作流写进 SKILL.md
核心改动是在 SKILL.md 里新增「博客一键工作流」专节,四步:
1 | 第 1 步:提炼 —— 从对话提取知识点、代码、踩坑、结论 |
同时删掉了旧的「博客生成提示词」小节——它正是「让用户复制模板」的根源。
6. 推送脚本 publish_blog.py 的设计
推送脚本只做三件事:git add 指定文件 → git commit → git push origin main。
关键设计是只 add 指定的那篇博客文件,绝不 git add .。因为 D:\Blog 仓库里混着 db.json、日志、public/ 等未跟踪文件,git add . 会把它们一起提交上去。
1 | # 核心逻辑:只提交指定的博客文件 |
7. 验证与收尾
改造完成后做了两层验证:
- 两个脚本
ast.parse语法检查通过、lint 0 错误。 - 用健康 Python 解释器(uv 的 3.12.13)跑通,避开本机损坏的系统 Python。
整次改造动了 7 个文件:SKILL.md、templates.md、writing-rules.md、blog-prompt.md、publish_blog.py(新建)、blog_publisher.py、README.md。