返回
Featured image of post OpenClaw + Obsidian 构建个人知识管理系统

OpenClaw + Obsidian 构建个人知识管理系统

记录使用 OpenClaw 管理笔记仓库的完整实践,包括 fast-note-sync 部署、ngrok 远程访问和 knowledge-pipeline 技能开发.

本文记录了使用 OpenClaw 管理笔记仓库的完整实践,包括工具配置、部署方案、远程访问和技能开发。通过这套方案,可以实现:

  • 自动化记录 — 通过 Memo 命令快速保存临时想法
  • 结构化整理 — 自动分类到 Inbox/Tasks/Notes/Resources
  • 远程访问 — 配合 ngrok 实现外网访问
  • 技能扩展 — 基于 OpenClaw AgentSkills 规范开发自定义技能

一、工具配置

客户端:Obsidian

  • 跨平台笔记客户端,支持 Markdown
  • 本地存储,数据完全掌控
  • 丰富的插件生态
  • 官网:https://obsidian.md

服务端:fast-note-sync

API 配置

{
  "api": "http://127.0.0.1:9000",
  "apiToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "vault": "图拉国营噄茶馆"
}

目录结构

图拉国营喫茶茶馆/
├── Inbox/          # 随手记录,还没整理的
├── Tasks/          # 待办任务
├── Notes/          # 整理好的笔记
└── Resources/      # 链接和资源收藏

二、fast-note-sync 部署方案

方案一:Docker 部署(推荐)

# 1. 创建数据目录
mkdir -p ~/fast-note-sync/data

# 2. 启动容器
docker run -d \
  --name fast-note-sync \
  -p 9000:9000 \
  -v ~/fast-note-sync/data:/app/data \
  -e JWT_SECRET='your-secret-key' \
  -e VAULT_NAME='图拉国营噄茶馆' \
  llmredteam/fast-note-sync:latest

# 3. 检查状态
docker logs -f fast-note-sync

方案二:源码部署

# 1. 克隆项目
git clone https://github.com/llm-red-team/fast-note-sync.git
cd fast-note-sync

# 2. 安装依赖
npm install

# 3. 配置环境变量
cp .env.example .env
# 编辑 .env 文件,设置 JWT_SECRET、VAULT_NAME 等

# 4. 启动服务
npm start
# 或使用 PM2
pm2 start npm --name fast-note-sync -- start

配置文件示例 (.env)

# 服务配置
PORT=9000
HOST=0.0.0.0

# JWT 配置
JWT_SECRET=your-secret-key-here
JWT_EXPIRES_IN=365d

# Vault 配置
VAULT_NAME=图拉国营噄茶馆
VAULT_PATH=/path/to/your/vault

# 安全配置
ALLOWED_ORIGINS=http://localhost:3000,http://127.0.0.1:3000

三、远程访问:ngrok 内网穿透

什么是 ngrok?

ngrok 是一款开源的内网穿透工具,通过反向代理在公共端点和本地服务之间建立安全隧道。

核心功能:

  • 将本地/内网服务暴露到公网
  • 自动生成临时公网域名
  • 支持 HTTP/HTTPS/TCP 协议
  • 加密传输,安全可靠

适用场景:

  • 开发调试:让外部访问本地开发环境
  • 远程演示:无需部署服务器即可展示项目
  • 临时 API 服务:快速搭建可公网访问的接口
  • 移动/远程办公:在外访问家中/公司内网服务

ngrok 配合 fast-note-sync 使用

1. 注册 ngrok 账号

访问 https://ngrok.com 注册免费账号,获取 Authtoken。

2. 安装 ngrok

# Linux
curl -s https://ngrok-agent.s3.amazonaws.com/ngrok.asc \
  | sudo tee /etc/apt/trusted.gpg.d/ngrok.asc >/dev/null \
  && echo "deb https://ngrok-agent.s3.amazonaws.com buster main" \
  | sudo tee /etc/apt/sources.list.d/ngrok.list \
  && sudo apt update \
  && sudo apt install ngrok

# macOS
brew install ngrok/ngrok/ngrok

3. 配置 Authtoken

ngrok config add-authtoken <your-authtoken>

4. 启动隧道

# 方式一:暴露 fast-note-sync 的 9000 端口
ngrok http 9000

# 方式二:指定域名(付费功能)
ngrok http 9000 --domain=your-domain.ngrok.io

启动后会显示:

Forwarding: https://abc123.ngrok.io -> http://localhost:9000

5. 更新 API 配置

将 API 地址改为 ngrok 提供的公网地址:

{
  "api": "https://abc123.ngrok.io",
  "apiToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "vault": "图拉国营噄茶馆"
}

6. ngrok 配置文件示例 (ngrok.yml)

version: 2
authtoken: your-authtoken-here

tunnels:
  fast-note-sync:
    proto: http
    addr: 9000
    domain: your-domain.ngrok.io  # 可选,付费功能

注意事项

  1. 免费限制:ngrok 免费版每次重启会变更域名,适合临时使用
  2. 稳定性:生产环境建议使用固定域名或自建 frp/nps 等方案
  3. 安全性
    • 确保 fast-note-sync 的 JWT_SECRET 足够复杂
    • 考虑配置 IP 白名单
    • 定期更新 API Token
  4. 替代方案
    • frp:开源可自建,适合长期使用
    • Cloudflare Tunnel:免费,安全性高
    • Tailscale:组网方案,适合私人访问

四、knowledge-pipeline 技能开发

技能概述

名称: knowledge-pipeline
描述: 当用户说 Memo:开头的话,或需要保存信息到笔记库时使用。支持实时记录、知识入库、待办管理。
类型: 工具型技能
核心功能: 将用户的临时记录、待办事项、知识片段自动保存到 Obsidian 笔记库

技能结构

knowledge-pipeline/
├── SKILL.md              # 技能定义文件(必需)
├── scripts/
│   ├── save_memo.py      # 核心脚本:保存笔记到 Obsidian
│   └── quanzhou_trip.md  # 示例笔记(演示输出格式)
└── references/           # 参考资料(可选)

SKILL.md 编写规范

1. Front Matter(必需)

---
name: knowledge-pipeline
description: 当用户说 Memo:开头的话,或需要保存信息到笔记库时使用。支持实时记录、知识入库、待办管理。
---

2. 触发条件

## 触发条件

使用此技能当用户:
1. 发送以 `Memo:` 开头的消息
2. 明确要求保存信息到笔记库
3. 需要创建待办任务或整理笔记

3. 处理流程

## 实时记录规则

当用户说 `Memo:` 开头的消息时:

1. **提取关键信息** — 识别核心内容、标签、分类
2. **选择目录** — 根据内容类型决定放入 Inbox/Tasks/Notes/Resources
3. **写入文件** — 调用 `scripts/save_memo.py` 脚本
4. **回复确认** — 告知用户已保存的位置和摘要

4. 文件命名规范

## 文件命名规范

- **Inbox**: `Inbox/YYYY-MM-DD.md`(按日期归档,同一天多条则追加内容)
- **Tasks**: `Tasks/任务名称.md``Tasks/YYYY-MM-DD-任务.md`
- **Notes**: `Notes/主题名称.md`
- **Resources**: `Resources/资源名称.md`

核心脚本:save_memo.py

功能:通过 Fast Note Sync Service API 将笔记保存到 Obsidian Vault。

命令行参数:

python scripts/save_memo.py --folder Inbox --content "内容" --title "标题" --append
参数 必需 说明
--folder 目标文件夹 (Inbox/Tasks/Notes/Resources)
--content Markdown 格式的内容
--title 笔记标题,默认使用日期
--append 是否追加到现有文件

API 调用

保存笔记

payload = {
    "vault": VAULT,
    "path": path,
    "content": full_content
}

response = requests.post(f"{API_BASE}/api/note", headers=HEADERS, json=payload)

读取现有笔记(追加模式)

payload = {
    "vault": VAULT,
    "path": path
}

response = requests.post(f"{API_BASE}/api/note/get", headers=HEADERS, json=payload)

五、使用示例

示例 1:保存临时记录(Memo)

python scripts/save_memo.py --folder Inbox --content "今天学习了 OpenClaw 技能开发"

输出:

✅ Saved to Inbox/2026-04-01.md

示例 2:创建待办任务

python scripts/save_memo.py --folder Tasks --title "完成技能开发" --content "- [ ] 编写 SKILL.md\n- [ ] 测试 API 调用"

输出:

✅ Saved to Tasks/完成技能开发.md

示例 3:整理知识笔记

python scripts/save_memo.py --folder Notes --title "OpenClaw 技能规范" --content "## 技能结构\n\n技能目录包含..."

示例 4:追加内容到现有笔记

python scripts/save_memo.py --folder Inbox --content "补充内容" --append

示例 5:旅行规划(完整笔记)

# 泉州四日游行程规划 (2026.4.3-4.6)

## 行程概览

- **到达**: 4 月 3 日 16:00 泉州站
- **离开**: 4 月 6 日 16:00 泉州站
- **住宿建议**: 西街附近(鲤城区)

---

## Day 1 - 4 月 3 日 (周五) 到达日

### 下午
- **16:00** 到达泉州站
- **16:30-17:30** 前往酒店办理入住

### 晚上
- **19:00-20:30** 西街晚餐

---

## 实用信息

### 交通
- 泉州站 → 西街:打车约 30 分钟

### 美食推荐
| 类型 | 推荐 |
|------|------|
| 早餐 | 面线糊、花生汤 |
| 正餐 | 姜母鸭、牛排馆 |

---

*Created: 2026-03-18*

六、开发技巧

1. 内容格式化

  • 使用 Markdown 语法
  • 自动添加时间戳
  • 支持追加模式更新

2. 错误处理

if result.get("status"):
    print(f"✅ Saved to {result['data']['path']}")
else:
    print(f"❌ Failed: {result.get('message', 'Unknown error')}")
    exit(1)

3. 路径处理

# 确保标题有.md 后缀
if not title.endswith(".md"):
    title = f"{title}.md"

# 构建完整路径
path = f"{folder}/{title}"

4. 时间戳管理

today = datetime.now().strftime("%Y-%m-%d")
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")

full_content = f"# {title}\n\n{content}\n\n---\n*Created: {timestamp}*\n"

七、扩展方向

可能的改进

  1. 标签系统 — 自动提取和添加标签
  2. 双向链接 — 识别并创建笔记间的链接
  3. 模板系统 — 为不同类型的笔记提供模板
  4. 批量导入 — 支持从其他工具导入笔记
  5. 智能分类 — 使用 AI 自动判断笔记类型

与其他技能集成

  • calendar — 将日程自动保存为任务
  • web-search — 保存搜索结果到 Resources
  • tavily — 将研究结果整理为 Notes

八、注意事项

  1. API Token 安全 — 不要将 Token 提交到公开仓库
  2. Vault 路径 — 确保 fast-note-sync 有读写权限
  3. 编码问题 — 使用 UTF-8 编码,避免中文乱码
  4. 网络依赖 — 确保 fast-note-sync 服务运行正常
  5. 并发写入 — 同一文件避免同时写入
  6. JWT Token 有效期 — 默认 365 天,过期需重新获取
  7. ngrok 限制 — 免费版域名会变更,生产环境建议自建 frp

九、参考资料


本文整合了 OpenClaw 笔记管理的完整实践

comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy