Notion 导出器 🛫
一个简单的命令行工具和 TypeScript 库,用于从任何 Notion.so 页面导出 Markdown 和 CSV 文件。该工具依赖于 Notion 网页应用的导出功能,因此您获得的 Markdown 和 CSV 与点击以下操作得到的完全相同:••• > 导出 > Markdown 和 CSV,无子页面,确定。
命令行界面
命令行界面让您可以作为任何脚本、构建步骤或内容管道的一部分下载页面。例如,您可以使用 Notion 作为内容管理系统来编写博客,在 Github 操作中导出 Markdown,并构建静态 Hugo 页面。🎉
npm install -g notion-exporter
notion-exporter 3af0a1e347dd40c5ba0a2c91e234b2a5 -t csv > list.csv
有关更多选项,请尝试 notion-exporter --help
并阅读所需 Cookie 相关信息。
库
使用该库,您可以执行更复杂的操作,如直接解析和使用 CSV,将 Markdown 注入任何 React/Next.js/Vue 页面,或与底层的 AdmZip
对象交互。
import NotionExporter from "notion-exporter"
const tokenV2 = ...
const fileToken = ...
const blockId = "3af0a1e347dd40c5ba0a2c91e234b2a5"
await new NotionExporter(tokenV2, fileToken).getMdString(blockId)
API
查看 NotionExporter.ts
中的文档注释以获取最准确的信息。
构造函数
提供所需的 Cookie 作为身份验证,以创建新的导出器客户端。有关配置选项,请参考定义。
const exporter = new NotionExporter(tokenV2: string, fileToken: string, config?: Config)
方法
下载并提取所请求类型的第一个文件,并将其作为字符串返回。
exporter.getCsvString(blockIdOrUrl: string): Promise<string>
exporter.getMdString(blockIdOrUrl: string): Promise<string>
开始导出给定的块并获取导出的压缩包 URL。第二个方法还会下载 ZIP 文件并提供对 AdmZip
对象的完全访问权限。
exporter.getZipUrl(blockIdOrUrl: string): Promise<string>
exporter.getZip(blockIdOrUrl: string): Promise<AdmZip>
要获取导出的 zip 中的所有文件,请使用:
exporter.getMdFiles(blockIdOrUrl: string, folderPath: string): Promise<void>
所需 Cookie
要从 Notion 导出任何内容,需要使用一些 Cookie(如浏览器所做的那样)进行身份验证。这些 cookie 称为 token_v2
和 file_token
。在使用 Notion 网页应用时,已登录用户的所有请求都会设置这些 cookie。
如何检索 Cookie?
- 转到 notion.so。
- 使用您的账户登录。
- 打开浏览器的开发者工具,打开应用程序 > 存储 > Cookie(Chrome);存储选项卡(Firefox)。
- 复制名为
token_v2
和file_token
的 Cookie 值,并将它们粘贴到安全的地方。
如何获取页面的块 ID?
要下载页面或表格,您需要其块 ID。块 ID 通常是其 URL 的最后一部分。例如,在此页面上,URL 为:
https://www.notion.so/Notion-Official-83715d7703ee4b8699b5e659a4712dd8
ID 为 83715d7703ee4b8699b5e659a4712dd8
。因此,您可以通过执行 notion-exporter 83715d7703ee4b8699b5e659a4712dd8
来获取页面的 Markdown。
对于表格,ID 是两个长十六进制字符串中的第一个。以这个画廊为例,URL 为:
https://www.notion.so/228eea9d563a47f09fc594d0a89a2e18?v=d5bcf2644d2940b1b18a9ba9cc11c9b6
ID 为 228eea9d563a47f09fc594d0a89a2e18
。因此,您可以通过执行 notion-exporter 228eea9d563a47f09fc594d0a89a2e18 -t csv
来获取表格的 CSV。
关于稳定性的说明
该工具完全依赖于官方但内部的 Notion.so API 的导出/下载功能。优点是我们不会自己生成任何标记,只是下载和提取一些 ZIP 文件。虽然下载功能似乎相当稳定,但请记住它仍然是一个内部 API,所以可能随时中断。
贡献
想要帮助改进这个工具,发现了错误或者需要添加新的用例?请在 Github 上提交问题和拉取请求。
贡献者
- Yann Bolliger, @yannbolliger
- Guillermo C. Martínez, @telekosmos