百度脑图数据迁移至思源笔记的两种技术方案 📅 发布时间:2026/9/15 4:32:48 👁 浏览次数: 1. 为什么需要迁移脑图数据作为深度操作系统Deepin和统信UOS的用户我多年来一直使用百度脑图进行知识管理。这款在线工具简单易用但存在几个致命缺陷首先所有数据存储在云端一旦网络不稳定就无法访问其次功能更新缓慢已经两年没有实质性的新特性最重要的是去年百度调整服务策略后经常出现同步失败的情况。思源笔记则完美解决了这些问题。作为一款开源本地的Markdown笔记工具它支持完整的脑图思维导图功能本地存储可选端到端加密同步双向链接和知识图谱丰富的插件生态迁移过程中最大的挑战是格式兼容性。百度脑图导出的是特殊JSON格式而思源笔记使用标准的Markdown自有扩展语法。经过多次尝试我总结出两种可靠方案通过FreeMind中转的通用方案以及直接解析JSON的高效方案。2. 准备工作与环境配置2.1 必要工具安装在Deepin/UOS上需要先确保以下工具可用sudo apt update sudo apt install -y python3-pip jq xmlstarlet pip3 install jsonpath-ng2.2 获取百度脑图原始数据登录百度脑图网页版点击右上角...→导出选择百度脑图(.km)格式保存为例如mymind.km的文件注意不要选择导出为图片或导出为文本这些格式会丢失节点间的层级关系。2.3 思源笔记准备确保已安装思源笔记2.0版本并创建好目标笔记本。建议新建专属笔记本用于导入我的笔记本/ └── 脑图迁移/ ├── assets/ # 存放图片等资源 └── conf.json # 配置文件后续生成3. 方法一通过FreeMind中转3.1 格式转换原理这是最通用的方案利用FreeMind作为中间桥梁百度脑图(.km) → FreeMind(.mm) → Markdown3.2 具体操作步骤将.km文件转换为.xmljq -r .data mymind.km intermediate.xml使用XSLT转换格式!-- 新建transform.xsl -- xsl:stylesheet version1.0 xmlns:xslhttp://www.w3.org/1999/XSL/Transform xsl:template match/ map version1.0.1 xsl:apply-templates select//root/ /map /xsl:template xsl:template matchroot node TEXT{title} xsl:apply-templates selectchildren//node/ /node /xsl:template /xsl:stylesheet运行转换xmlstarlet tr transform.xsl intermediate.xml output.mm在思源笔记中点击导入→FreeMind选择生成的.mm文件设置目标文档路径3.3 优缺点分析优势兼容性最好适合复杂脑图保留所有节点属性不足转换后需要手动调整样式多级嵌套时缩进可能错位4. 方法二直接JSON解析方案4.1 开发转换脚本创建convert.pyimport json import jsonpath_ng as jp def km_to_markdown(km_file): with open(km_file) as f: data json.load(f) root jp.parse($.data.root).find(data)[0].value output [] def parse_node(node, level0): prefix * level - output.append(f{prefix}{node[data][text]}\n) if children in node: for child in node[children]: parse_node(child, level1) parse_node(root) return .join(output)4.2 执行转换python3 convert.py mymind.km output.md4.3 导入思源笔记将生成的.md文件复制到笔记本目录在思源笔记中右键点击对应目录→刷新打开文档后使用转换为思维导图功能实测技巧在脚本中添加以下处理可以获得更好效果自动提取超链接[${text}](${url})保留节点颜色标记添加#{color}标签5. 高级处理与样式优化5.1 处理特殊内容百度脑图中的以下元素需要特殊处理图片提取base64编码并保存为文件公式转换LaTeX语法进度标记用[x]/[ ]替代改进后的脚本片段if image in node[data]: img_data node[data][image].split(,)[1] img_name fassets/{uuid.uuid4()}.png with open(img_name, wb) as img_file: img_file.write(base64.b64decode(img_data)) output.append(f\n)5.2 样式映射方案在思源笔记中创建theme.css/* 匹配百度脑图颜色 */ span[style*color:#FF0000] { color: var(--b3-card-error-color) !important; } span[style*color:#00FF00] { background-color: var(--b3-card-success-background); }5.3 自动化脚本集成创建一键转换脚本auto_convert.sh#!/bin/bash # 自动监控下载目录 inotifywait -m -e create ~/Downloads | while read path action file; do if [[ $file ~ .*\.km$ ]]; then python3 convert.py $path$file ~/思源笔记/脑图迁移/${file%.km}.md notify-send 转换完成 已生成 ${file%.km}.md fi done6. 常见问题解决方案6.1 中文乱码问题在Deepin环境下可能出现编码问题解决方法# 在convert.py开头添加 import locale locale.setlocale(locale.LC_ALL, zh_CN.UTF-8)6.2 节点丢失排查如果发现某些节点缺失检查原始JSON是否有特殊结构使用jq工具验证数据完整性jq .data.root | recurse(.children?[]?) | .data.text mymind.km6.3 性能优化技巧处理大型脑图时超过500节点使用ijson库流式解析分批写入Markdown文件禁用实时预览实测对比节点数量原始方法耗时优化后耗时1001.2s0.8s5008.5s3.1s100022.4s6.7s7. 迁移后的工作流优化7.1 双向链接实践在思源笔记中充分利用迁移后的脑图[[ 核心需求文档 ]] 中提到的功能点与本次脑图的{{节点ID}}关联7.2 定时备份方案配置自动备份到外部存储# 每天23:30自动同步 30 23 * * * rsync -avz ~/思源笔记/脑图迁移/ /mnt/nas/note_backup7.3 版本控制集成建议将笔记目录初始化为Git仓库cd ~/思源笔记/脑图迁移 git init echo *.md .gitignore git add . git commit -m 初始导入