如何从 Notion 批量导出 Markdown?

没有导出的后顾之忧时,Notion 就变得更可爱了。

如何从 Notion 批量导出 Markdown?_第1张图片

Photo by Kaleidico on Unsplash

痛点

介绍了 Roam Research 后,有小伙伴问我是否用过 Notion。

用过。

刚才找了找,还有来自于 2017 年 5 月的 Notion 笔记记录。

如何从 Notion 批量导出 Markdown?_第2张图片

简单看了一下,这三年多以来,我用 Notion 写了不少笔记,也采集了很多网页内容。

如何从 Notion 批量导出 Markdown?_第3张图片

但是,我算不上 Notion 的重度用户。因为有个痛点,我从来也没有解决。就是导出

我用笔记工具,很多时候都需要输出成文章发布。发布的时候,我得用 Markdown。

很不幸,在 Notion 上,这个过程,从来就没有痛快过。

虽然 Notion 从很早就提供 Markdown 导出,还包括子页面。但是导出来的结果,总是无法令我满意。

如何从 Notion 批量导出 Markdown?_第4张图片

例如子页面仅仅是指实质的上下层级关系,而链接的页面不包含在导出结果中。

如何从 Notion 批量导出 Markdown?_第5张图片

因为喜欢卡片式笔记,拼接移动,我是希望 notion 能够像 Scrivener 一样,输出的时候把这些卡片拼完整输出的。

但是,这基本上做不到。

导出的标题,只要是中文,就都是“无标题”(Untitled)。

如何从 Notion 批量导出 Markdown?_第6张图片

内嵌照片,要么因为是链接,导出过程根本就没有下载。

如何从 Notion 批量导出 Markdown?_第7张图片

要么下载之后,也无法正常在 Markdown 编辑器里面显示。

如何从 Notion 批量导出 Markdown?_第8张图片

有的就没有按照图片来对待:

而即便是被下载下来的图片,有的也没有合适的扩展名。

如何从 Notion 批量导出 Markdown?_第9张图片

但是如果预览,你会发现它就是张图啊!

如何从 Notion 批量导出 Markdown?_第10张图片

由于不能在输出的时候,保持完整性和可用性,我就不敢再把更多的笔记迁移进来,同时也不愿意在 Notion 上写更多的文章了。

解决

前些日子,我因为写研究报告的需要,从 Notion 里批量导出一些笔记,放入「第二大脑」里面进行处理。

上网查资料的时候,我突然发现了这个 Github 项目,叫做 notion2md

如何从 Notion 批量导出 Markdown?_第11张图片

它已经做成了 Python 的软件包,可以调用 Notion 的 API,帮助用户导出为更妥帖的 markdown 格式。

你只需要使用:

pip install notion2md

安装之后,就能执行:

python -m notion2md

你需要指定输出文件名称,自己的 token_v2 身份验证信息,以及来源 notion 链接,就能在本地输出导出的 Markdown 结果了。

如何从 Notion 批量导出 Markdown?_第12张图片

但是,这个工具,有以下几个问题:

首先,你需要安装 Python 和依赖模块;

其次,对于每一个要导出的单元,你都需要重新执行一遍。作为单一文章输出,这还好。但是如果你是打算进行数据备份或者迁移,那就太麻烦了;

另外,你需要在后期手动进行图片路径的处理,删去多余层级。这应该是一个 bug。

正因为如此有上述的问题,所以目前该工具的 Github 页面上,只有寥寥 4 颗 star,其中一颗还是我打上去的。

如何从 Notion 批量导出 Markdown?_第13张图片

我希望的是,把上述问题解决,而且最好做成 Web App ,这样大家都可以直接拿来即用。

改进

经过半天的折腾,我终于用 Python 和 Streamlit 完成了这个制作过程。然后又花时间做了个使用说明出来。

如何从 Notion 批量导出 Markdown?_第14张图片

这个项目的 Github 页面在这里(https://github.com/wshuyi/demo-notion-markdown-exporter)。

你只需要按照上面列出的步骤,一步步来就行。考虑到部分同学阅读英文不是很流畅,我这里翻译了一份中文步骤给你。

步骤

请按照以下简单步骤操作。

第一步,打开这个链接(http://notion-to-markdown.herokuapp.com/),你会看到 App 界面。

如何从 Notion 批量导出 Markdown?_第15张图片

第二步,获取你的token_v2(你的身份认证码),并将其输入到第一个文本框中。你可以通过阅读这个图文教程(https://www.redgregory.com/notion/2020/6/15/9zuzav95gwzwewdu1dspweqbv481s5)来学习如何取得你的token。

第三步,将所有要导出的页面都移动或者链接到一个新页面。例如我这里新建了一个「准备输出」。

如何从 Notion 批量导出 Markdown?_第16张图片

第4步,复制新页面的链接,粘贴到第二个文本框中,然后按回车键。

如何从 Notion 批量导出 Markdown?_第17张图片

第五步,你会看到一个名为 "export" 的新按钮出现。点击它。

如何从 Notion 批量导出 Markdown?_第18张图片

第6步,运行一会儿(视你要导出的内容多少,尤其是图片大小等因素而定),当你看到网页上显示了一个名为「点击下载」的新链接,点击它并下载压缩文件。解压后,你会发现所有的Markdown文件以及图片。

如何从 Notion 批量导出 Markdown?_第19张图片

这是子文件夹下面的图片:

如何从 Notion 批量导出 Markdown?_第20张图片

第七步(可选),将解压后的文件夹拖到 Obsidian 或者 Zettlr 的根目录下,然后正常浏览图文。

如何从 Notion 批量导出 Markdown?_第21张图片

所有页面的标题,都被保留为 Markdown 文件的名称,对中文同样支持。这样你在后面依照标题建立双向链接,就会变得非常容易。

另外说明一下,因为 API 的功能限制,目前该 App 尚不能准确处理 Notion 的 database (数据库),而只能对普通的页面(Page)进行导出。

不过各种 Media 类型都是可以处理的。只不过只有图片进行了本地化输出,其余的类型,例如视频、pdf 等都保留了原先的链接。你可以通过链接跳转访问。

对于我来说,主要是写论文和图文类教程,因此这些其他类型的多媒体数据,本来也是不需要输出的,所以刚好合适。

感受

有了这个比较靠谱的批量导出功能以后,我觉得 Notion 变得更加可爱了。

至少,我写东西的时候,可以不用考虑将来导出之后一通检查、调整、修改名称等等繁琐问题了。

没有了后顾之忧,用起来感觉更加轻松愉快。

我可以更加随心所欲在 Notion 里面采集和进行快速记录,并且进行卡片笔记的撰写和整合。

已知问题

经过多位来自于全球各地的小伙伴帮我测试后,发现运行起来功能比较正常。

如何从 Notion 批量导出 Markdown?_第22张图片

目前主要反馈得来的问题,是连接可能不稳定。

没办法,咱们用的是 Heroku 免费托管,没交钱。人一多,并发就会是个问题。而且不同电信运营商的连接可靠性也无法保障。

好在源代码我在前面的 Github 链接那里都给了你,所以你可以利用它在本机或者自己的私有服务器上搭建服务。

如果你要尝试自己运行服务,可以参考我的这份教程快速了解 Streamlit 的使用方法。

祝使用愉快!

感觉有用的话,请点“在看”,并且把它转发给你身边有需要的朋友。

我的视频号已经上线,发布了教程和经验分享视频,欢迎关注。

如何从 Notion 批量导出 Markdown?_第23张图片

订阅我的微信公众号“玉树芝兰”,第一时间免费收到文章更新。别忘了加星标,以免错过新推送提示。

如何从 Notion 批量导出 Markdown?_第24张图片

如果你希望能与其他热爱学习的小伙伴一起讨论切磋,答疑解惑,欢迎加入知识星球。

如何从 Notion 批量导出 Markdown?_第25张图片

延伸阅读

你可能也会对以下话题感兴趣。点击链接就可以查看。

  • 如何快速写作论文初稿?

  • 如何用卡片法写论文?

  • 如何高效实践卡片式写作?

  • Roam Reserach 到底好在哪儿?

  • 如何交互可视化你的卡片式笔记网络?

你可能感兴趣的:(编程语言,人工智能,github,数据可视化,python)