跳转到主要内容

使用Python将notion页面导出为markdown

项目描述

notion2markdown

将notion页面和数据库导出为markdown。

Screenshot 2022-12-30 at 6 48 22 PM

零安装演示

  1. 查看上面的 示例Notion页面
  2. 导航到 示例脚本,托管在replit上,并点击“运行”按钮。
  3. 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

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分发

notion2markdown-0.2.0.tar.gz (11.7 kB 查看哈希)

上传时间

构建分发

notion2markdown-0.2.0-py3-none-any.whl (10.8 kB 查看哈希)

上传时间 Python 3

由以下组织支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面