使用Python将notion页面导出为markdown
项目描述
notion2markdown
将notion页面和数据库导出为markdown。
零安装演示
- 查看上面的 示例Notion页面。
- 导航到 示例脚本,托管在replit上,并点击“运行”按钮。
- Notion页面将作为markdown导出到
./md/f8deb4d042034c6c8d03b6de37a99498.md
。您可以通过点击嵌入编辑器左上角的“显示文件”来查看此文件。
安装
pip install notion2markdown
命令行界面
开始之前,请按照此 notion集成教程 的前两个步骤来创建一个令牌并授权访问notion页面。
将以下内容放入您的 ~/.zshrc
,并启动一个新的终端会话。
export NOTION_TOKEN=my_notion_token
然后,导出notion页面或数据库。
notion2markdown my_notion_url
如果您遇到以下错误,
notion_client.errors.APIResponseError: Could not find block with ID
,请按照提供的建议操作:确保相关页面和数据库已与您的集成共享。
点击此处查看教程,了解如何授权您的集成访问数据库或页面。
默认情况下,markdown将导出到名为./md
的目录。您也可以使用n2md
别名
n2md my_notion_url
库
您还可以编写一个脚本来编程导出。请参阅 example.py
。
from notion2markdown import NotionExporter
import os
exporter = NotionExporter(token=os.environ["NOTION_TOKEN"])
exporter.export_url(url='my_notion_url')
您可以选择下载JSON,然后单独将其转换为markdown。如果您想要缓存下载,这可能很有用。您可以分别使用导出器的下载器和转换器,如下所示
exporter.downloader.download_url(url) # Download json
exporter.converter.convert() # Convert json to md
您还可以将内容导出到您选择的任何目录。
exporter.export_url(url, json_dir='./my_md_directory')
为什么使用这个库?
首先,Notion 的官方 Markdown 导出(1)仅通过 UI 提供,并且(2)存在错误。
1. 修复随机星号
假设我们有以下文本。结果是,将其正确导出为 Markdown 格式在 Notion 的块数据结构中很麻烦。
这是一句被加粗 然后 输入的句子。
Notion 随机添加大量星号。 这在任何时候编辑加粗或斜体文本时都会发生。要重现:在 Notion 中加粗一行,然后 输入该行。当你导出时,你会得到如下所示的内容,带有随机的首尾星号。
************************Here is a sentence that was bolded ****then**** typed.**
notion2md
生成无法解析的 Markdown。 notion2md
部分解决了上述问题。没有多余的引导星号,但它将带有不同注释的每一块文本单独处理。这意味着它将上述句子分成三部分,先是加粗文本,然后是加粗斜体文本,最后是加粗文本。这导致以下内容,这在技术上正确但无法被 Markdown 解析器解析
**Here is a sentence that was bolded *****then***** typed.**
将上述任何 Markdown 输入到 Markdown 转换工具中会导致您的文本中出现多余的星号。相比之下,notion2markdown
会渲染以下内容,它可以与任何标准 Markdown 引擎正确渲染
**Here is a sentence that was bolded *then* typed.**
值得注意的是,notion2md
和 Notion 的 Markdown 导出都生成有效的 Markdown。这个令人烦恼的边缘案例足以让我编写这个库。
2. 导出数据库,包括元数据
Notion 的官方 Markdown 导出包括标题以及与页面关联的任何属性。
此库 notion2markdown
也这样做,添加属性和标题。然而,与官方的 Notion 导出不同,属性作为 YAML 前置元数据包含在内,这在 现代 Markdown 味道 中得到支持。相比之下,notion2md
排除了元数据和页面属性,仅导出页面内容。
此外,notion2markdown
可以导出整个数据库,就像 Notion 的官方导出一样。另一方面,notion2md
被设计为导出单个页面。当然,它可以扩展以导出整个数据库。
开发
git clone git@github.com:alvinwan/notion2markdown.git
pip install --editable .
运行测试
pytest notion2markdown --doctest-modules
项目详情
下载文件
下载您平台上的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。