迁移指南
📦 从其他笔记软件迁移到 Obsidian 的完整指南,支持 Notion、Logseq、Roam Research、Evernote、OneNote、Apple Notes 等主流工具。
概述
Obsidian 支持标准 Markdown 格式,大多数笔记软件的数据都可以迁移。本文介绍:
- 迁移前的准备工作
- 各平台的迁移方法
- 格式转换技巧
- 迁移后的整理工作
迁移前准备
评估现有数据
迁移前先评估:
yaml
需要了解:
数据量:
- 笔记总数
- 附件大小
- 特殊格式数量
特殊功能:
- 数据库/表格
- 嵌入内容
- 外部链接
- 标签系统
使用习惯:
- 笔记结构
- 标签方式
- 链接习惯备份数据
迁移前务必备份:
- 导出原平台数据
- 保存到安全位置
- 验证备份完整性
规划迁移策略
yaml
迁移策略:
方式一: 一次性全量迁移
优点: 快速完成
缺点: 可能需要大量后续整理
适合: 数据量较小
方式二: 渐进式迁移
优点: 边迁移边优化
缺点: 耗时较长
适合: 数据量大、结构复杂
方式三: 新旧并行
优点: 平滑过渡
缺点: 维护成本高
适合: 需要长期过渡从 Notion 迁移
Notion 是最常见的迁移来源。以下是详细步骤。
导出 Notion 数据
单页面导出
yaml
步骤:
1. 打开要导出的页面
2. 点击右上角「...」菜单
3. 选择「Export」
4. 选择格式: Markdown & CSV
5. 勾选「Include subpages」
6. 勾选「Create folders for subpages」
7. 点击「Export」批量导出
yaml
步骤:
1. 进入 Settings & Members
2. 选择「Settings」→「Export」
3. 选择导出格式
4. 等待导出完成
5. 下载 ZIP 文件使用转换工具
方法一:Obsidian Importer 插件
推荐工具:Obsidian Importer
- 在 Obsidian 安装「Importer」插件
- 打开命令面板,搜索
Importer: Import from Notion - 选择导出的 ZIP 文件
- 配置转换选项
方法二:Notion to Obsidian Converter
yaml
功能:
- 自动转换 Callout
- 处理数据库
- 修复链接格式
- 转换标签
安装:
npm install -g notion-to-obsidian
使用:
notion2obsidian ./notion-export ./obsidian-vaultNotion 格式转换
| Notion 元素 | Obsidian 对应 |
|---|---|
| 数据库 | Markdown 表格或 Dataview |
| Callout | > [!note] 格式 |
| Toggle | 折叠列表 |
| Gallery | 无直接对应,可用卡片视图 |
| Bookmark | 外部链接 |
| Embed | iframe 或链接 |
| 公式块 | $...$ 或 $$...$$ |
数据库迁移方案
简单数据库 → Markdown 表格:
markdown
| 任务 | 状态 | 截止日期 |
|------|------|----------|
| 任务1 | 进行中 | 2024-02-01 |
| 任务2 | 待办 | 2024-02-15 |复杂数据库 → Dataview:
markdown
---
type: task
status: in-progress
due: 2024-02-01
---
# 任务1
任务描述...dataview
TABLE status, due
FROM "tasks"
WHERE status = "in-progress"处理 Notion 特有元素
markdown
<!-- Notion Callout -->
> 💡 **提示**
> 这是 Notion 风格的 Callout
<!-- 转换为 Obsidian Callout -->
::: tip 提示
这是 Obsidian 风格的 Callout
:::markdown
<!-- Notion Toggle -->
- <details>
<summary>点击展开</summary>
隐藏内容
</details>
<!-- 转换为 Obsidian 折叠 -->
- 点击展开
- 隐藏内容标签迁移
yaml
Notion 标签格式: #Tag
Obsidian 标签格式: #tag
转换建议:
- 统一使用小写
- 使用连字符代替空格
- 建立标签层级结构链接迁移
markdown
Notion 链接: [[页面名]]
Obsidian 链接: [[笔记名]]
自动修复:
- 使用插件 "Migrate to Obsidian"
- 批量替换链接格式从 Logseq 迁移
Logseq 特点
- 使用 Org-mode 或 Markdown 格式
- 大纲式笔记结构
- 每日笔记为主
迁移步骤
- 打开 Logseq 设置
- 导出为 Markdown
- 将文件复制到 Obsidian 仓库
格式转换
大纲转标题:
markdown
<!-- Logseq 格式 -->
- 主题
- 子主题
- 内容
<!-- 转换为 Markdown -->
## 主题
### 子主题
内容块引用:
markdown
<!-- Logseq -->
((block-id))
<!-- Obsidian -->
![[笔记#段落]]TODO:
markdown
<!-- Logseq -->
DONE 已完成任务
TODO 待办任务
DOING 进行中
LATER 稍后
<!-- Obsidian -->
- [x] 已完成任务
- [ ] 待办任务
- [ ] 进行中
- [ ] 稍后使用脚本转换
python
# logseq_to_obsidian.py
import re
import os
def convert_logseq_to_obsidian(content):
# 转换 TODO 状态
content = re.sub(r'^DONE ', '- [x] ', content, flags=re.MULTILINE)
content = re.sub(r'^TODO ', '- [ ] ', content, flags=re.MULTILINE)
content = re.sub(r'^DOING ', '- [ ] ', content, flags=re.MULTILINE)
content = re.sub(r'^LATER ', '- [ ] ', content, flags=re.MULTILINE)
# 转换块引用
content = re.sub(r'\(\(([a-z0-9-]+)\)\)', r'[[#\1]]', content)
return content
# 批量处理
for file in os.listdir('logseq-notes'):
if file.endswith('.md'):
with open(f'logseq-notes/{file}', 'r') as f:
content = f.read()
converted = convert_logseq_to_obsidian(content)
with open(f'obsidian-notes/{file}', 'w') as f:
f.write(converted)从 Roam Research 迁移
Roam Research 使用大纲式笔记,迁移需要特别处理。
导出数据
yaml
步骤:
1. 点击右上角「...」
2. 选择「Export All」
3. 选择格式: Markdown
4. 勾选「Include embeds」
5. 点击「Export All」格式转换
双向链接:
markdown
<!-- Roam -->
[[笔记名称]]
<!-- Obsidian(相同) -->
[[笔记名称]]块引用:
markdown
<!-- Roam -->
((block-id))
<!-- Obsidian -->
![[笔记#段落]]大纲结构:
markdown
Roam 格式:
- 主节点
- 子节点
- 孙节点
Obsidian 建议:
- 主节点
- 子节点
- 孙节点
或使用标题:
# 主节点
## 子节点
### 孙节点日期页面:
yaml
Roam 日期格式: February 15th, 2024
Obsidian 日期格式: 2024-02-15
转换建议:
- 使用日记插件
- 重命名日期笔记
- 使用 Templater 格式化属性:
markdown
<!-- Roam -->
Author:: 张三
Date:: 2024-01-15
<!-- Obsidian -->
---
author: 张三
date: 2024-01-15
---使用转换工具
- 安装 Obsidian Importer 插件
- 选择 Roam Research JSON 导出文件
- 配置转换选项
从 Evernote 迁移
Evernote 是老牌笔记软件,数据迁移相对简单。
导出数据
yaml
步骤:
1. 打开 Evernote 客户端
2. 选择要导出的笔记本
3. 右键 →「导出笔记」
4. 选择格式: .enex
5. 保存文件使用工具转换
推荐:Yarle
bash
# 安装 Yarle
npm install -g yarle-evernote2md
# 转换
yarle --configFile config.json配置文件示例:
json
{
"source": "./evernote.enex",
"outputDir": "./obsidian-notes",
"skipWebClips": true,
"useHashTags": true,
"skipCreationTime": false,
"skipUpdateTime": false,
"keepOriginalHtml": false
}格式处理
| Evernote 元素 | Obsidian 对应 |
|---|---|
| 笔记本 | 文件夹 |
| 标签 | YAML 属性 / 标签 |
| 附件 | 独立文件 |
| 图片 | 本地图片 |
| Web 剪藏 | Markdown 链接 |
从 OneNote 迁移
OneNote 迁移相对复杂,建议使用专门工具。
导出数据
yaml
步骤:
1. 打开 OneNote
2. 选择要导出的笔记本
3. 文件 → 导出
4. 选择格式: PDF 或 Word
5. 保存文件使用工具
OneNoteMdExporter
bash
# 安装工具
dotnet tool install --global OneNoteMdExporter
# 导出
onemd export -f "笔记本名称" -o ./obsidian-notes中转方案
yaml
方法: OneNote → Joplin → Markdown
1. OneNote 导入到 Joplin
2. Joplin 导出为 Markdown格式转换
| OneNote 元素 | Obsidian 对应 |
|---|---|
| 分区 | 文件夹 |
| 页面 | Markdown 文件 |
| 标签 | #标签 |
| 表格 | Markdown 表格 |
| 图片 | 附件 |
注意事项
- OneNote 手写内容需要 OCR
- 嵌入对象可能丢失
- 表格格式需要调整
从 Apple Notes 迁移
macOS 导出
- 打开 Apple Notes
- 选择要导出的笔记
文件→导出为 PDF或拖拽到 Finder
使用工具
- 安装 Obsidian Importer 插件
- 选择
Import from Apple Notes - 选择要导入的笔记
手动迁移
bash
# Apple Notes 存储位置
~/Library/Group Containers/group.com.apple.notes/
# 可使用脚本提取处理特殊内容
| 内容 | 处理方法 |
|---|---|
| 图片 | 另存后重新链接 |
| 手写 | 需要转录或保留图片 |
| 扫描件 | 可能需要 OCR |
| 嵌入链接 | 转换为 Markdown 链接 |
从其他软件迁移
Bear
yaml
导出: 文件 → 导出笔记 → Markdown
转换: 基本兼容,注意处理标签格式
标签: Bear 使用 #tag#,需要改为 #tagUlysses
yaml
导出: 文件 → 导出 → Markdown
转换: 注意处理图片链接
附件: 需要重新组织附件文件夹Typora
yaml
迁移: 直接复制 .md 文件
处理: 检查图片链接是否正确
配置: 调整相对路径设置迁移后整理
1. 整理文件结构
建议的文件夹结构:
text
📁 Obsidian 库
├── 📁 00 收集箱
├── 📁 01 项目
├── 📁 02 领域
├── 📁 03 资源
├── 📁 04 归档
├── 📁 附件
├── 📁 模板
└── 📁 日记或者:
text
迁移后的仓库/
├── inbox/ # 临时存放待整理笔记
├── archive/ # 存放不再活跃的笔记
├── templates/ # 模板文件
└── notes/ # 整理后的笔记
├── projects/
├── knowledge/
└── daily/2. 统一命名规范
bash
# 使用脚本批量重命名
for file in *.md; do
# 移除特殊字符
newname=$(echo "$file" | sed 's/[[:space:]]/_/g' | sed 's/[^a-zA-Z0-9._-]//g')
mv "$file" "$newname"
doneyaml
命名规范:
- 使用日期前缀: 2024-01-15-笔记标题
- 或使用序号: 001-项目名称
- 避免特殊字符
批量重命名工具:
- Obsidian 插件: File Cleaner
- 外部工具: PowerRename (Windows)3. 添加 Front Matter
使用 Templater 批量添加:
markdown
---
title: {{title}}
created: {{date}}
tags: []
source: "从 Notion 迁移"
---
{{content}}或者为笔记添加统一属性:
yaml
---
created: 2024-01-15
modified: 2024-01-15
tags: [标签1, 标签2]
source: Notion
status: active
---4. 统一标签系统
yaml
标签规范化:
- 使用小写
- 用连字符分隔
- 建立层级结构
- 避免过度标签
示例:
#项目/进行中
#阅读/书籍
#领域/工作5. 修复损坏链接
使用插件检查和修复链接:
yaml
推荐插件:
- Find unlinked files
- Broken links checker
- Link indexer
修复步骤:
1. 运行链接检查
2. 找出断链
3. 手动修复或重命名文件python
# 修复损坏的链接
import re
def fix_links(content):
# 修复 Notion 风格链接
content = re.sub(r'\[([^\]]+)\]\(([^)]+)\.md\)', r'[[\2|\1]]', content)
# 修复空格问题
content = content.replace('%20', ' ')
return content6. 重建标签系统
dataview
# 查看所有标签
LIST
FROM ""
WHERE length(file.tags) > 0
GROUP BY file.tags📋 迁移检查清单
markdown
## 迁移前
- [ ] 备份原始数据
- [ ] 记录现有组织结构
- [ ] 列出需要保留的功能
- [ ] 确定目标仓库结构
- [ ] 记录特殊格式
## 迁移中
- [ ] 导出原始数据
- [ ] 运行转换工具
- [ ] 复制到 Obsidian 仓库
- [ ] 检查格式转换结果
- [ ] 验证数据完整性
## 迁移后
- [ ] 修复损坏的链接
- [ ] 整理文件结构
- [ ] 统一命名规范
- [ ] 添加标签和属性
- [ ] 验证图片附件
- [ ] 测试搜索功能
- [ ] 设置模板
- [ ] 配置插件和工作流
- [ ] 建立新的笔记习惯⚠️ 常见问题
链接失效
问题:迁移后内部链接无法跳转
解决:
- 检查文件名是否变化
- 使用「修复链接」插件
- 手动修复关键链接
图片丢失
问题:图片无法显示
解决:
- 确保图片文件夹正确复制
- 检查图片引用路径
- 使用相对路径或绝对路径
- 使用插件修复链接
格式错乱
问题:Markdown 格式显示异常
解决:
- 检查编码是否为 UTF-8
- 修复不兼容的语法
- 使用 Linter 插件格式化
数据库丢失
问题:Notion 数据库无法正确迁移
解决:
- 导出为 CSV 格式
- 手动重建表格
- 使用 Dataview 替代
中文文件名乱码
解决:
- 确保系统编码为 UTF-8
- 重新导出时指定编码
- 批量重命名文件
🔗 推荐工具汇总
| 工具 | 用途 | 支持来源 |
|---|---|---|
| Obsidian Importer | 官方导入插件 | Notion, Roam, Apple Notes 等 |
| Yarle | ENEX 转换 | Evernote |
| notion2obsidian | 格式转换 | Notion |
| OneNoteMdExporter | 笔记导出 | OneNote |
| Joplin | 中转平台 | 多种 |