1. 为什么需要将有道云笔记迁移到Obsidian
作为一个长期使用有道云笔记的用户,我最近发现Obsidian在知识管理方面有着独特的优势。Obsidian采用本地Markdown文件存储,完全掌控自己的数据,而且通过双向链接和知识图谱功能,能够建立更强大的知识网络。相比之下,有道云笔记虽然云同步方便,但存在以下痛点:
- 数据被锁定在厂商服务器,无法完全掌控
- 富文本编辑导致内容格式复杂,难以迁移
- 缺乏有效的知识关联功能
- 高级功能需要订阅会员
迁移到Obsidian后,我获得了:
- 完全本地的数据存储,不用担心服务关闭风险
- 纯Markdown格式,兼容性极强
- 强大的插件生态,可自由扩展功能
- 双向链接和知识图谱,构建个人知识体系
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 迁移前的准备工作
2.1 环境准备
在开始迁移前,需要确保以下环境就绪:
- 安装最新版Obsidian(官网下载)
- 保持有道云笔记客户端登录状态
- 准备一个干净的文件夹作为Obsidian库
- 安装Python环境(用于运行转换脚本)
提示:建议在迁移前先备份有道云笔记中的所有数据,以防意外情况发生。
2.2 有道云笔记数据导出
有道云笔记官方没有提供直接的Markdown导出功能,但我们可以通过以下步骤获取数据:
- 登录有道云笔记网页版
- 打开开发者工具(F12)
- 进入Network面板,筛选XHR请求
- 浏览笔记列表,找到获取笔记内容的API请求
- 复制请求信息,准备编写爬虫脚本
或者更简单的方法是使用第三方工具"youdaonote-pull",这是一个专门用于导出有道云笔记的开源工具。
3. 使用youdaonote-pull工具导出数据
3.1 工具安装与配置
youdaonote-pull是一个Python脚本,可以批量导出有道云笔记内容。安装步骤如下:
bash复制git clone https://github.com/DeppWang/youdaonote-pull.git
cd youdaonote-pull
pip install -r requirements.txt
然后编辑config.json文件,配置你的有道云笔记账号信息:
json复制{
"username": "your_email@example.com",
"password": "your_password",
"local_dir": "./output"
}
3.2 执行导出操作
运行以下命令开始导出:
bash复制python pull.py
导出过程可能会持续较长时间,取决于笔记数量。工具会将笔记导出为HTML格式,并保留原始目录结构。
4. HTML转Markdown处理
4.1 转换工具选择
Obsidian使用Markdown格式存储笔记,我们需要将HTML转换为Markdown。推荐使用以下工具:
- Pandoc:功能强大的文档转换工具
- html2text.py:轻量级Python脚本
- Typora:支持HTML粘贴自动转换
4.2 使用Pandoc批量转换
安装Pandoc后,可以使用以下命令批量转换:
bash复制find ./output -name "*.html" -exec pandoc -f html -t markdown -o {}.md {} \;
这个命令会遍历output目录下的所有HTML文件,转换为同名的.md文件。
4.3 处理转换后的Markdown
转换后的Markdown可能需要一些手动调整:
- 检查图片链接是否正确
- 修复表格格式
- 处理代码块语法高亮
- 清理多余的换行符
5. 导入Obsidian及后续优化
5.1 创建Obsidian库并导入
- 打开Obsidian,选择"创建新库"
- 选择之前准备好的文件夹
- Obsidian会自动加载所有Markdown文件
5.2 优化知识库结构
导入后,建议进行以下优化:
- 使用[[双括号]]创建内部链接
- 添加标签(#tag)进行分类
- 设置笔记模板统一格式
- 安装常用插件(如Dataview、Templates等)
5.3 处理迁移中的常见问题
在实际迁移过程中,我遇到了几个典型问题:
- 图片无法显示:需要手动下载图片并更新链接
- 复杂表格格式错乱:建议在Obsidian中重新编辑
- 数学公式不兼容:安装MathJax插件
- 附件文件丢失:需要单独导出并重新链接
6. 自动化迁移方案进阶
对于技术用户,可以考虑更自动化的迁移方案:
6.1 编写完整迁移脚本
结合Python脚本实现端到端迁移:
python复制import os
import requests
from bs4 import BeautifulSoup
import html2text
# 模拟有道云笔记登录
session = requests.Session()
login_data = {
'username': 'your_email',
'password': 'your_password'
}
session.post('https://note.youdao.com/login', data=login_data)
# 获取笔记列表
notes = session.get('https://note.youdao.com/api/notes').json()
# 下载并转换每篇笔记
for note in notes:
content = session.get(f'https://note.youdao.com/api/note/{note["id"]}').text
markdown = html2text.html2text(content)
with open(f'output/{note["title"]}.md', 'w') as f:
f.write(markdown)
6.2 使用Obsidian API直接导入
Obsidian提供插件开发接口,可以开发自定义导入插件:
javascript复制module.exports = async function(app) {
// 读取有道云笔记导出文件
const files = app.vault.getMarkdownFiles()
files.forEach(file => {
// 处理每篇笔记内容
const content = await app.vault.read(file)
// 转换逻辑...
await app.vault.modify(file, newContent)
})
}
7. 迁移后的工作流调整
成功迁移到Obsidian后,建议调整日常工作流:
- 建立定期备份机制(如Git版本控制)
- 制定笔记命名规范
- 设置合理的文件夹结构
- 利用插件增强功能(如日历、看板等)
- 开发自动化脚本处理重复任务
我在迁移后发现Obsidian的本地存储特性反而促使我养成了更好的备份习惯,通过Git仓库管理笔记历史版本,既安全又方便回溯。
