python主张利用开源代码_这个开源的 Python 项目,让你从 Notion 批量导出 Markdown...

18f30fa462c9307b406fef01b80bf267.png

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

痛点

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

用过。

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

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

18f30fa462c9307b406fef01b80bf267.png

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

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

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

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

gif;base64,R0lGODlhAQABAIAAAP

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

gif;base64,R0lGODlhAQABAIAAAP

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

但是,这基本上做不到。

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

gif;base64,R0lGODlhAQABAIAAAP

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

gif;base64,R0lGODlhAQABAIAAAP

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

gif;base64,R0lGODlhAQABAIAAAP

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

gif;base64,R0lGODlhAQABAIAAAP

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

gif;base64,R0lGODlhAQABAIAAAP

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

gif;base64,R0lGODlhAQABAIAAAP

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

解决

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

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

gif;base64,R0lGODlhAQABAIAAAP

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

你只需要使用:

pip install notion2md

安装之后,就能执行:

python -m notion2md

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

gif;base64,R0lGODlhAQABAIAAAP

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

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

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

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

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

gif;base64,R0lGODlhAQABAIAAAP

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

改进

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

gif;base64,R0lGODlhAQABAIAAAP

这个项目的 Github 页面在这里。

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

步骤

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

第一步,打开这个链接,你会看到 App 界面。

gif;base64,R0lGODlhAQABAIAAAP

第二步,获取你的token_v2(你的身份认证码),并将其输入到第一个文本框中。你可以通过阅读这个图文教程来学习如何取得你的token。

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

gif;base64,R0lGODlhAQABAIAAAP

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

gif;base64,R0lGODlhAQABAIAAAP

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

gif;base64,R0lGODlhAQABAIAAAP

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

gif;base64,R0lGODlhAQABAIAAAP

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

gif;base64,R0lGODlhAQABAIAAAP

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

gif;base64,R0lGODlhAQABAIAAAP

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

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

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

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

感受

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

至少,我写东西的时候,可以不用考虑将来导出之后一通检查、调整、修改名称等等繁琐问题了。没有了后顾之忧,用起来感觉更加轻松愉快。

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

已知问题

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

gif;base64,R0lGODlhAQABAIAAAP

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

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

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

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

祝使用愉快!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值