手把手教你创建 OpenClaw Skill:子弹笔记(bujo)实战
2026/6/1 16:35:55 网站建设 项目流程

## 前言

今天花了一小时,创建一个可以把自然语言秒变子弹笔记格式的 OpenClaw Skill——`bujo`。

效果长这样:

```

bujo:下班前给领导回电话

→ • 下班前给领导回电话

bujo:今天上午要给孪生体项目开早会

→ ○ 主持孪生体项目早会(10:00)

```

一行指令,直接出结果,不废话。

## 一、背景与需求

### 1.1 为什么需要这个 Skill?

做子弹笔记(Bullet Journal)是很好的习惯,但每次都要手动想符号、调整格式,挺烦的。尤其是工作一忙,根本懒得开 Notion 或者手写。其实还有本人写东西比较啰嗦,在本上写,一写写一大段,特别没有子弹笔记的感觉。因此还是很需要这个功能的。

**核心需求**:说一句话,自动吐出标准格式的子弹笔记。

### 1.2 技术挑战

- **纯提示词驱动**:不想写脚本,希望 Skill 完全靠 AI 理解规则来工作

- **触发词设计**:如何让 OpenClaw 准确识别「这句话是子弹笔记转换」而不是「普通聊天」

- **极致精简**:输出要短、一行一条,不能 AI 味太重

## 二、解决方案设计

### 2.1 整体思路

做纯提示词 Skill,不依赖任何外部脚本或 API。OpenClaw 识别到触发词后加载 Skill 规则,直接输出改写结果。

### 2.2 触发词设计

第一版用了「记一笔」作为触发词,但 OpenClaw 的描述匹配不够精准,改成了更明确的关键词:

```

bujo、/bujo、BuJo、bullet journal、子弹笔记格式化、整理成子弹笔记

```

## 三、核心代码实现

### 3.1 SKILL.md(核心提示词)

```markdown

---

name: bullet-journal

description: |

子弹笔记(Bullet Journal)格式转换。将自然语言句子改写成标准子弹笔记格式。

触发场景:用户说 bujo、/bujo、BuJo、bullet journal、子弹笔记格式化、整理成子弹笔记 时激活。

---

# Bullet Journal

## 符号规则

| 符号 | 含义 | 示例 |

|------|------|------|

| `•` | 待办任务 | • 开发后端接口 |

| `○` | 行程事件 | ○ 主持孪生体项目早会(10:00) |

| `—` | 纯笔记 | — 发现并发锁 bug |

| `*` | 优先级 | * 【重要】周五前提交测试报告 |

| `✕` | 已完成 | ✕ 修复登录接口 bug |

## 改写规则

1. **极致精简**:省略主语、虚词、冗余修饰,一行一条

2. **保留核心语义**,贴合工作场景

3. **时间处理**:自然语言时间 → HH:MM 格式

4. **仅输出改写结果**,不额外解释

```

## 四、遇到的问题与解决方案

### 4.1 问题:PowerShell 路径含版本号导致字符串解析失败

**现象**:

OpenClaw skill creator 的 `package_skill.py` 路径包含 `v0.2.23.532`,PowerShell 和 Python `-c` 参数都对含反斜杠+版本号的路径字符串解析报错:非法字符、字符串截断等。

**原因**:

PowerShell 对 `D:\LEO\bin\QClaw\v0.2.23.532\...` 路径中的 `.` 数字版本号和反斜杠组合存在解析歧义。

**解决方案**:

把打包脚本内容读出来,用 Python 写到干净路径(`C:\Users\...\AppData\Local\Temp\_tw_pkg.py`),再执行,绕过所有 PowerShell 转义问题。

### 4.2 问题:Windows GBK 编码导致 emoji 输出报错

**现象**:

`package_skill.py` 中含有 `📦` 等 emoji,`print()` 在 Windows GBK 环境下报 `UnicodeEncodeError`。

**原因**:

Windows 默认控制台编码是 GBK,不支持 emoji 字符。

**解决方案**:

在 Python 脚本开头强制重定向 stdout 编码:

```python

import sys, io

sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace')

sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8', errors='replace')

```

## 五、Skill 创建完整流程

### 5.1 目录结构

```

bullet-journal/

├── SKILL.md # Skill 定义文件(核心)

├── README.md # 用户使用文档

└── LICENSE # MIT 许可证

```

### 5.2 SKILL.md 编写要点

`description` 字段是 OpenClaw 判断是否调用 Skill 的唯一依据,**必须包含所有触发场景**,格式越具体越好。

### 5.3 打包安装

直接压缩为 `.skill` 文件即可:

```python

import zipfile

with zipfile.ZipFile('bullet-journal.skill', 'w') as zf:

for root, dirs, files in os.walk('bullet-journal'):

for file in files:

fp = os.path.join(root, file)

zf.write(fp, os.path.relpath(fp, 'bullet-journal'))

```

## 六、开源仓库

🎉 **GitHub 仓库地址**:https://github.com/zhangle231/bullet-journal-skill

### 6.1 安装方法

**方法一:通过 OpenClaw**

```bash

skills install https://github.com/zhangle231/bullet-journal-skill

```

**方法二:手动安装**

下载 `.skill` 文件,拖入 OpenClaw 窗口即可。

### 6.2 使用示例

```

bujo:下班前给曹总回电话

→ • 下班前给曹总回电话

bujo:【重要】周五前要提交测试报告

→ * 【重要】周五前提交测试报告

bujo:刚才修好了登录接口的一个 bug

→ ✕ 修复登录接口 bug

```

## 七、总结与展望

### 7.1 技术要点回顾

1. **纯提示词 Skill 是可行的**:不需要写脚本,SKILL.md 就是全部

2. **触发词要具体**:`description` 字段决定 AI 是否识别,这是核心

3. **Windows 环境做好 UTF-8 适配**:GBK 编码问题很常见,提前处理

4. **打包用 zipfile 最稳**:不依赖外部工具

### 7.2 可以改进的地方

- [ ] 支持多行批量输入

- [ ] 输出加日期前缀(如 `2024-06-01 •`)

- [ ] 支持导出到本地 markdown 文件

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询