news 2026/8/15 22:07:11

OneNote转Markdown完整迁移指南:用 onenote-md-exporter 本地无损导出全部笔记

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
OneNote转Markdown完整迁移指南:用 onenote-md-exporter 本地无损导出全部笔记

OneNote转Markdown完整迁移指南:用 onenote-md-exporter 本地无损导出全部笔记

【免费下载链接】onenote-md-exporterConsoleApp to export OneNote notebooks to Markdown formats项目地址: https://gitcode.com/gh_mirrors/on/onenote-md-exporter

很多人的 OneNote 里,躺着五六年甚至更久的笔记:工作总结、读书笔记、项目文档、随手截图……一旦想换个工具,最大的阻力不是操作麻烦,而是"搬过去会不会全乱套"的担忧。onenote-md-exporter 正是冲着这个问题来的:一款运行在 Windows 上的开源命令行工具,能在本地直接把 OneNote 笔记本转换为 Markdown,供 Obsidian、Joplin 等平台使用,全程不经过任何云端,格式还原度在同类方案里属于第一梯队。本文不打算罗列全部参数,而是从三个最让用户纠结的问题出发,带你走完一次完整的笔记迁移流程。

问题一:搬完家,层级和格式还完整吗?

症状:用"另存为"或在线工具导出后,原本"笔记本→分区→子分区→页面→子页面"的多级结构被拍扁成一张清单;表格错位、彩色文字消失、折叠段落全部展开。

原因:OneNote 把内容存在私有格式里,普通导出手段只能捞到"看得见的文本",结构关系和样式细节基本带不走。

解法:onenote-md-exporter 采用一条特殊的转换链路——先用 OneNote 官方接口把每个页面读出来转成 DocX,再借助 Pandoc 把 DocX 翻译成 Markdown,前后还各有一道 XML 预处理和正则后处理来修复格式。在 Markdown 格式下,分区和分区组默认导出为文件夹层级,页面层级则给你两种选择:

  • HierarchyAsFolderTree(默认):父页面成为子页面的文件夹,例如Section1/父页面/子页面.md
  • HierarchyAsPageTitlePrefix:把父页面名作为子页面文件名前缀,例如Section1/父页面_子页面.md

至于内容本身能保到什么程度,项目文档里有一张支持矩阵,摘录几个关键项:

内容类型转换结果
文本100% 保留
简单表格转成 Markdown 表格
复杂表格以 HTML 表格保留
图片与附件原样保存
文本标签(任务、星标等)转为对应表情符号
手写笔迹无法保留
密码保护分区需先在 OneNote 中解锁

也就是说,常规内容基本都能完好带走;手写内容是目前唯一确定会丢失的类型,迁移前最好先截图留档。

问题二:笔记之间的链接,换平台还点得通吗?

症状:在 OneNote 里精心维护的互链关系,导出后全部变成onenote://开头的死链接,点一下毫无反应。

原因:OneNote 内部链接走的是私有协议,任何第三方编辑器都识别不了。

解法:设置项OneNoteLinksHandling直接决定链接的归宿,共四种策略:

策略效果适合谁
KeepOriginal保留原始 onenote:// 链接以后还可能回到 OneNote
ConvertToMarkdown转成文字标准链接Joplin
ConvertToWikilink(默认)转成[[页面标题|显示文字]]双链Obsidian 等支持双链的软件
Remove只保留链接文字,删掉链接本身链接已无意义时

需要提醒的是:无论选哪种,跨笔记本的链接和指向分区页的链接都会被移除,这是格式本身的限制,别等导出完才发现。

问题三:图片和附件,会不会丢在迁移路上?

症状:导出目录里图片缺了一大半,或者引用路径全部失效。

原因:多数时候不是工具的问题,而是 OneNote 云端根本没把图片下载到本地;另外资源文件的存放方式也会影响 Markdown 里的引用路径。

解法:两步走。第一步,打开 OneNote 的 文件→选项→同步,勾选"下载所有文件和图像",强制同步一次再导出。第二步,用ResourceFolderLocation决定资源放哪:

  • RootFolder(默认):所有图片和附件集中到导出根目录的 resources 文件夹,适合图片多的笔记本,也方便整体拷贝
  • PageParentFolder:资源放在各自 md 文件旁边,结构最直观,适合把单篇笔记单独分享的场景

第一次导出:从环境准备到出结果,不到十分钟

两步完成环境准备

  1. 备齐三样软件:Windows 10 及以上、OneNote 2013 及以上(Windows 商店版不支持)、Word 2013 及以上。项目基于 .NET 10 自包含发布,通常不需要额外安装运行时。
  2. 获取程序:克隆仓库后,把src/OneNoteMdExporter/pandoc/目录下的 pandoc 压缩包解开,确保pandoc.exe就位:
git clone https://gitcode.com/gh_mirrors/on/onenote-md-exporter

交互式导出,跟着提示走

启动OneNoteMdExporter.exe,它会依次问你:选哪个笔记本(输 0 可全部导出)、选哪种格式(1 是 Markdown,2 是 Joplin)、要不要顺手改一下高级配置。确认后导出开始,这段时间你可以去冲杯咖啡 ☕,结束后程序会自动打开导出文件夹。

命令行方式,适合批量与自动化

交互之外,程序支持完整的命令行参数,跑一次--help就能全部掌握。常用的几个:

# 导出指定笔记本为 Markdown(格式 1) OneNoteMdExporter.exe --notebook "工作笔记" --format 1 # 导出全部笔记本,不等待任何输入 OneNoteMdExporter.exe --all-notebooks --no-input # 只导出某个分区下的某个页面 OneNoteMdExporter.exe --notebook "工作笔记" --section "项目A" --page "需求文档"

配合--ignore-errors,可以在个别页面出错时继续导出剩余内容,适合无人值守跑批。

真实场景:1200 篇技术笔记搬进 Obsidian

一位后端工程师的笔记本里有 1200 篇技术笔记,目标是整体迁入 Obsidian。他的做法是:

  1. 保持默认的HierarchyAsFolderTree,让"笔记本→分区→子页面"的层级原样落地成文件夹
  2. 开启AddFrontMatterHeader,让每篇笔记带上前言元数据(标题、创建与修改时间),方便按日期检索
  3. 链接策略选ConvertToWikilink,笔记间的互链直接变成 Obsidian 双链,反向链接面板立刻可用
  4. PanDocMarkdownFormat保持gfm,语法与 Obsidian 完全兼容

导出后按三件事验收:文件夹层级是否与原笔记本一一对应、随机抽 10% 的页面核对表格与图片、再随便点开几条双链确认跳转正常。整个迁移都在本地完成,没有任何内容经过网络,这在处理含客户信息的笔记时格外重要。

结合你的目标软件,把配置调到最佳

不同平台的"脾气"不一样,这里给三套经过验证的组合:

目标平台关键配置
ObsidianOneNoteLinksHandling=ConvertToWikilinkAddFrontMatterHeader=truePanDocMarkdownFormat=gfm
Joplin直接选 Joplin 格式导出,再通过 文件→导入→"RAW - Joplin Export Directory" 导入;若用 Markdown 格式,链接选ConvertToMarkdown
通用 Markdown 编辑器若编辑器不支持 HTML,把UseHtmlStyling关掉,避免复杂表格和颜色样式渲染异常

其他几个值得认识的参数:PageTitleMaxLengthMdMaxFileLength控制文件名长度上限,遇到路径过长报错时把它们调小即可;IndentingStyle决定 OneNote 的缩进在 Markdown 里如何呈现,默认保持原样,也可以转成项目符号列表。

三个常见的坑,帮你提前避开

坑一:启动即报 COMException。这类错误通常是本机 Office 安装异常导致的。可以先尝试重装 Office;更省事的办法是把笔记本导出为 .onepkg 文件(见项目里的 doc/notebook-onepkg-export.md),换一台干净的电脑导入后再导出。

坑二:导出后图片缺失。回到前面的问题三,先确认 OneNote 已开启"下载所有文件和图像"并强制同步,再重跑一遍导出。

坑三:文件名带特殊字符导致路径错误。用命令行时记得给笔记本名加引号;如果报路径过长,把MdMaxFileLength从 50 往下调。

另外,项目以 GPL v3 协议发布,作者明确声明导出过程中存在丢失数据的可能,动手前务必给 OneNote 笔记留一份备份——这比任何配置都重要。

给迁移留个稳妥的节奏

知识迁移不该是"一天搬完"的豪赌,而是一次可以分步验证的过程。建议先用仓库里的sample/TestNotebook.onepkg试跑一遍,把配置和流程跑通,再挑一个你最看重的笔记本正式导出,确认效果后逐步扩大范围。如果你用下来发现问题,或者想帮忙完善多语言翻译(中文本地化文件就在src/OneNoteMdExporter/Resources/目录下),项目的 doc/contribute.md 写清了贡献方式。从第一本笔记本开始,你的知识资产就离"可检索、可迁移、不过期"的 Markdown 更近一步了。

【免费下载链接】onenote-md-exporterConsoleApp to export OneNote notebooks to Markdown formats项目地址: https://gitcode.com/gh_mirrors/on/onenote-md-exporter

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/15 22:03:27

C++时间处理实战:从time_t到localtime,掌握时间戳与日期转换

1. 项目概述:为什么获取当前时间是个“技术活”?在C项目里,处理时间戳和日期时间,几乎是每个开发者都绕不开的基础操作。无论是给日志文件打上精确的时间戳,还是计算某个操作的耗时,甚至是实现一个简单的定…

作者头像 李华
网站建设 2026/8/15 22:03:10

图解大语言模型:从Transformer到RAG与Agent的认知图谱构建

1. 项目概述:为什么我们需要“图”解LLM?如果你最近在关注AI,尤其是大语言模型,可能会被各种术语淹没:Transformer架构、注意力机制、微调、RAG、Agent……这些概念单独理解已经不易,更别说理清它们之间千丝…

作者头像 李华
网站建设 2026/8/15 22:02:48

Day14 unitree_G1人形机器人BVH/MocapApi实际输出少于Axis排查

明确目标:解决“Axis内部有帧,但BVH/MocapApi交给程序的真实帧更少”,不插值、不复制上一帧、不修改GMR和机器人控制。每一个送入FIFO的帧都必须来自真实的Axis输出。 先说结论:最值得优先验证的不是继续优化FIFO,而是…

作者头像 李华
网站建设 2026/8/15 22:00:55

Git代码上传全流程解析:从add/commit/push到常见报错排查指南

1. 项目概述:从“git add .”到“git push”的完整通关手册每次看到新手同事在终端里敲下git push后,面对满屏的红色错误信息手足无措时,我就想起自己刚接触版本控制时的样子。Git,这个被誉为程序员必备的技能,其核心操…

作者头像 李华
网站建设 2026/8/15 21:59:28

[人工智能]CleanRL:简洁可复现的强化学习实现

CleanRL:简洁可复现的强化学习实现本文从工程与科研结合的视角介绍CleanRL项目,其核心目标是在单文件脚本中提供简洁、可复现的深度强化学习实现。CleanRL强调代码布局与算法伪代码高度一致,通过明确的参数管理和日志机制,帮助研究…

作者头像 李华