专栏首页玉树芝兰如何从 Notion 批量导出 Markdown?

如何从 Notion 批量导出 Markdown?

Photo by Kaleidico on Unsplash

痛点

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

用过。

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

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

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

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

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

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

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

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

但是,这基本上做不到。

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

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

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

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

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

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

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

解决

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

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

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

你只需要使用:

pip install notion2md

安装之后,就能执行:

python -m notion2md

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

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

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

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

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

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

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

改进

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

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

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

步骤

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

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

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

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

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

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

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

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

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

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

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

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

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

感受

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

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

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

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

已知问题

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

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

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

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

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

祝使用愉快!

本文分享自微信公众号 - 玉树芝兰(nkwangshuyi),作者:王树义老师

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-07-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 作为软件工程师,如何进行知识管理

    在 Twitter、Medium、RSS feeds、Hacker News 等专业网站和社区上浏览几分钟,就足以从论文、案例研究、教程、代码片段、新应用程序等...

    Iris_jay
  • BuJo | 使用Notion进行个人账目管理、投资管理

    Notion 是一款国人开发,依托于AWS的云笔记软件,以功能强大、兼容Markdown而著称。自从接触了Notion,笔者就预感这款软件有着无限可能。

    宋天伦
  • notion一种极简主义风的管理工具

    支持Board视图,同时可以添加任意数量的其他类型视图并自定义相关的过滤条件(表格和日历)。

    A梦多啦A
  • Notion 编辑器原理分析

    notion 是我一直用的日常知识管理工具,让我生活与工作的所的资料汇聚在一起。他的使用体验非常棒,各种快捷键可丢掉鼠标行云流水式的进行文字编辑,block 之...

    lucifer210
  • 如何更好地组织你生活和工作中的知识

    这些年来,我一直探索和尝试解决的一个重大问题是:在这样一个信息爆炸的时代,如何更好地将每天获取的信息组织成知识,然后再将这些知识消化,经过自己的思考,变成自己的...

    tyrchen
  • 探索 Notion 的实现

    一个好的技术一定是其核心思想处处透着简单。大道至简。erlang 的世界观可以用 6 个函数涵盖,这六个函数像乐高积木一样,衍生出一个个的复杂但精美的软件系统;...

    tyrchen
  • Notion为什么能让我放弃手账

    今天在逛今日热榜[1]的时候,看到了一篇知乎的文章“我的最后一款笔记应用-Notion”[2],是种草notion的。

    scarsu
  • 如何把 Markdown 文件批量转换为 pdf?

    有个朋友提出,希望把目录中的许多 markdown 文件,批量转换为对应名称的 pdf 格式文件。我于是编写了一个 Python 脚本,并且分享给你。如果你有类...

    王树义
  • Excel大批量数据的导入和导出,如何做优化?

    Java对Excel的操作一般都是用POI,但是数据量大的话可能会导致频繁的FGC或OOM,这篇文章跟大家说下如果避免踩POI的坑,以及分别对于xls和xlsx...

    趣学程序-shaofeer

扫码关注云+社区

领取腾讯云代金券