OpenClaw + Obsidian 搭建个人知识库完整指南:从Lattics迁移到格式统一的最佳实践

2026-03-02 16:33
59

前言:为什么要写这篇文章?

在数字化时代,个人知识库已成为提升工作效率和学习能力的重要工具。然而,很多用户在搭建过程中遇到了一个共同的痛点:格式不统一

笔者在将Lattics笔记迁移到Obsidian的过程中,经历了手动转换、格式混乱、编号不一致等一系列问题。处理148个新闻文件、217个读书笔记、统一153个文件的格式,原本是一件极其繁琐耗时的工作。
这篇文章将分享如何使用OpenClaw自动化工具 + Obsidian知识库,快速搭建统一的个人知识库,以及我们在实践中遇到的真实问题和解决方案。

一、为什么选择 OpenClaw + Obsidian?

1.1 Obsidian:本地优先的双链笔记工具

Obsidian 是目前最受欢迎的个人知识管理工具之一,优势包括:
  • 本地存储:数据完全掌控在自己手中
  • 双向链接:通过 [[ ]] 实现知识关联
  • Markdown格式:通用格式,便于迁移
  • 丰富的插件生态:满足各种知识管理需求
  • 图谱视图:可视化知识网络

1.2 OpenClaw:AI 驱动的自动化助手

OpenClaw 是一款开源的 AI 代理框架,在知识库搭建中的价值:
  • 批量文件处理:自动转换格式、重命名、排序
  • 智能内容处理:文本提取、格式统一、内容分类
  • 代码执行能力:运行脚本解决重复性工作
  • 24/7 在线:持续自动化任务

1.3 组合优势

功能
Lattics
OpenClaw+Obsidian
数据所有权
云端
本地完全掌控
格式通用性
专有格式
标准Markdown
批量处理
手动导出
自动化脚本
知识关联
有限
双链无限关联
扩展性
封闭
插件+脚本无限扩展

二、实战:从 Lattics 迁移到 Obsidian

2.1 迁移前的痛点

在迁移前,我们的Lattics笔记存在以下问题:
📁 Lattics笔记
├── 新闻 (148个文件,格式混乱)
│ ├── 7.10.md (无编号)
│ ├── 7.11.md (### 标题)
│ ├── 7.14.md (1. **标题**)
│ └── ... (各种格式混杂)
├── 读书笔记 (217个文件)
├── Prompt Manual (12个文件)
├── 我和大模型的对话 (1个文件)
└── 产品哲学 (1个文件)
主要问题
  • ❌ 文件名无排序前缀
  • ❌ 新闻条目格式不统一
  • ❌ 有的有编号,有的没有
  • ❌ 有的用 ### 标题,有的用 标题
  • ❌ 手动处理380个文件几乎不可能

2.2 使用 OpenClaw 自动化迁移

步骤1:提取Lattics数据

Lattics数据存储在:
~/Library/Containers/com.auramarker.lattics/Data/Library/Application Support/Lattics/lat_db/
通过OpenClaw读取项目结构和笔记内容:
// 读取项目数据
const projects = ['新闻', '读书笔记', 'Prompt Manual', '我和大模型的对话', '产品哲学'];

// 解析ProseMirror JSON格式
function convertLatticsToMarkdown(jsonContent) {
// 处理段落、标题、列表等
return markdownContent;
}

步骤2:批量格式转换

使用Node.js脚本统一处理:
// 统一新闻格式
function unifyNewsFormat(content) {
// 移除 ### 标记
content = content.replace(/^###\s*/gm, '');
// 统一为 **N.** **标题** 格式
const lines = content.split('\n');
let result = '';
let counter = 1;
for (const line of lines) {
if (line.match(/^\d+\.\s+(.+)$/)) {
const title = line.replace(/^\d+\.\s*/, '');
result += `**${counter}.** **${title}**\n`;
counter++;
}
}
return result;
}

步骤3:文件重命名和排序

# 添加序号前缀,确保Obsidian中正确排序
01-新闻
├── 001-7.10.md
├── 002-7.11.md
├── 003-7.14.md
└── ...
关键转换
  • 原始文件名:7.10.md → 新文件名:001-7.10.md
  • 按时间顺序排序(7月→8月→9月→...→2月)
  • 统一编号格式

2.3 导入Obsidian

将处理好的文件放入Obsidian库:
📁 Obsidian库
├── 01-新闻 (148个文件,格式统一)
├── 02-读书笔记 (217个文件)
├── 03-我和大模型的对话 (1个文件)
├── 04-Prompt Manual (12个文件)
└── 05-产品哲学 (1个文件)

三、实践中遇到的7大问题及解决方案

问题1:Lattics ProseMirror格式转换

现象:Lattics使用ProseMirror JSON格式存储,直接复制得到的是JSON而非Markdown。
解决
// 解析ProseMirror节点
function proseMirrorToMarkdown(node) {
switch(node.type) {
case 'paragraph':
return convertParagraph(node);
case 'heading':
return convertHeading(node);
case 'bullet_list':
return convertList(node);
// ... 其他类型
}
}

问题2:文件名排序混乱

现象:Obsidian按字母排序,导致12.1.md排在1.4.md之前。
解决
// 添加序号前缀
const sortedFiles = files.sort((a, b) => {
const [monthA, dayA] = a.split('.').map(Number);
const [monthB, dayB] = b.split('.').map(Number);
if (monthA !== monthB) return monthA - monthB;
return dayA - dayB;
});

// 重命名:7.10.md → 001-7.10.md
sortedFiles.forEach((file, index) => {
const newName = `${String(index + 1).padStart(3, '0')}-${file}`;
fs.renameSync(file, newName);
});

问题3:新闻条目格式不统一

现象:同一文件夹内存在多种格式:
  • ### 1. **标题**
  • 1. **标题**
  • **1. 标题**
  • **标题**(无编号)
解决
function normalizeNewsEntry(content) {
// 统一所有变体为标准格式
return content
.replace(/^###\s*\d*\.?\s*/gm, '') // 移除###
.replace(/^(\d+)\.\s+\*\*(.+?)\*\*$/gm, '**$1.** **$2**') // 统一编号
.replace(/^\*\*(\d+)\.\s+(.+?)\*\*$/gm, '**$1.** **$2**') // 修复空格
.replace(/^\*\*([^*]+)\*\*$/gm, (match, title, offset, string) => {
// 为无编号的标题添加编号
const counter = (string.slice(0, offset).match(/\*\*\d+\.\*\*/g) || []).length + 1;
return `**${counter}.** **${title}**`;
});
}

问题4:日期标题行残留

现象:有些文件开头有# 7.107.10的标题行,需要移除。
解决
// 移除开头的日期标题
content = content.replace(/^#?\s*\d+\.\d+\s*\n+/, '');

问题5:特殊空格字符

现象:复制过程中出现非标准空格(\u00a0),导致正则匹配失败。
解决
// 清理特殊空格
content = content.replace(/\u00a0/g, ' ');
content = content.replace(/\r/g, '');

问题6:内容合并错误

现象:原本分开的标题和内容被合并成一行。
解决
// 确保标题和内容分行
content = content.replace(
/\*\*(\d+)\.\*\* \*\*([^*]+)\*\*\s*(.+?)(?=\*\*\d+\.\*\*|$)/gs,
'**$1.** **$2**\n$3\n\n'
);

问题7:连续空行过多

现象:处理后出现3个以上连续空行,影响阅读。
解决
// 合并连续空行
content = content.replace(/\n{3,}/g, '\n\n');

四、最终成果展示

4.1 文件夹结构

📁 笔记 (Obsidian库)
├── 📰 01-新闻
│ ├── 001-7.10.md
│ ├── 002-7.11.md
│ ├── ... (148个文件)
│ └── 153-3.1.md
├── 📚 02-读书笔记
├── 💬 03-我和大模型的对话
├── 🤖 04-Prompt Manual
└── 🧠 05-产品哲学

4.2 统一的文件格式

所有新闻文件现在使用统一格式:
**1.** **OpenAI发布GPT-5.3模型**
OpenAI发布首款基于Cerebras芯片的AI模型,推理速度超1000 tokens/s...

**2.** **谷歌Gemini 3重大升级**
谷歌发布Gemini 3 Deep Think,在ARC-AGI-2基准测试中以84.6%准确率创下新纪录...

**3.** **MiniMax发布M2.5编程模型**
MiniMax正式发布旗舰编程模型M2.5,性能对标Claude Opus 4.6...

4.3 数据统计

项目
处理前
处理后
总文件数
380个
380个
格式不一致文件
73个
0个
手动处理时间
约20小时
约30分钟
自动化程度
0%
95%

五、给读者的建议

5.1 如果你正在考虑迁移

  1. 评估现有数据量:少量文件可手动处理,大量文件建议自动化
  1. 备份原始数据:迁移前务必备份Lattics导出文件
  1. 先小批量测试:选择10-20个文件测试脚本,确认无误后再批量处理
  1. 保留原始文件:转换完成后保留原始文件一段时间,以防需要回滚

5.2 推荐的Obsidian插件

  • Dataview:数据库查询,按标签/日期筛选笔记
  • Templater:模板自动化,统一新笔记格式
  • Periodic Notes:周期性笔记(日记/周报/月报)
  • Graph Analysis:知识图谱可视化

5.3 持续维护建议

  • 定期归档:每月整理一次新笔记,保持库整洁
  • 统一命名规范:建立文件命名规则(如:YYYY-MM-DD-主题.md
  • 使用标签系统:用 #标签 替代文件夹过度分类
  • 双链笔记:养成用 [[ ]] 关联相关笔记的习惯

5.4 在网页上快速保存内容到 Obsidian

搭建好知识库后,如何将网页上有价值的内容快速保存到 Obsidian?推荐使用 Obsidian Web Clipper 浏览器扩展。

安装与配置

Step 1:安装扩展
  1. Chrome/Edge 商店搜索 "Obsidian Web Clipper"
  1. 点击安装官方扩展(黑色宝石图标)
Step 2:打开设置
方法1:点击 Chrome 右上角 🧩 → 找到 Obsidian Web Clipper → 右键"选项"
方法2:地址栏输入 chrome://extensions/ → 找到扩展 → 点击"详情" → "扩展程序选项"
Step 3:配置保存位置
General-Vault: 笔记
default-Note location: 02-读书笔记/
Step 4:配置模板(与读书笔记格式保持一致)
点击"编辑模板",粘贴以下内容:
**【{{title}}】**

a)核心摘要
{{selection}}

b)完整内容
{{content}}

---
来源:{{url}}
日期:{{date:YYYY-MM-DD HH:mm}}

使用方法

方式1:快速选中保存
  1. 在网页上选中要保存的文字
  1. 右键 → "Add to Obsidian"
  1. 内容自动保存到 02-读书笔记/ 文件夹
方式2:快捷键保存
  • Windows: Ctrl + Shift + O
  • Mac: Cmd + Shift + O
方式3:整页保存
  1. 点击工具栏上的 Obsidian Web Clipper 图标
  1. 选择保存模式:
  • {{selection}} - 只保存选中的文字
  • {{content}} - 保存整页主要内容
  • {{fullPage}} - 保存完整页面

变量说明

模板中可用的变量:
变量
说明
示例
{{title}}
网页标题
OpenClaw GitHub
{{url}}
网页链接
{{date}}
当前日期
2026-03-02
{{selection}}
选中的文字
选中的段落...
{{content}}
页面主要内容
文章正文...
{{author}}
作者(如有)
John Doe

与其他工具对比

工具
优点
缺点
Obsidian Web Clipper
官方出品,格式干净,支持模板
需要配置
MarkDownload
免费,自动下载图片
需要手动导入
Readwise
支持高亮同步,稍后读
付费,有延迟
简悦
功能丰富,支持标注
学习成本高
推荐:日常使用选择 Obsidian Web Clipper,与我们的读书笔记格式完美兼容。

六、总结

通过 OpenClaw + Obsidian 的组合,我们成功地将380个Lattics笔记转换为统一的Obsidian知识库,解决了格式混乱、排序错误、内容不一致等难题。
核心价值
  • ✅ 从20小时手动工作 → 30分钟自动化
  • ✅ 从73个格式问题 → 0个问题
  • ✅ 从封闭格式 → 开放Markdown
  • ✅ 从孤立笔记 → 双向链接知识网络
如果你也在考虑搭建个人知识库或迁移现有笔记,希望这篇文章能为你提供实用的参考。
0
好文章,需要你的鼓励