自动化 Notion 备份 - Artur Burtsev - Medium
多年来,我一直在使用 Gitlab (opens new window) 管理我的笔记。它是免费、安全、弹性的,并得到了成千上万家公司的信任。GitLab 基于 git (opens new window),意味着可以轻松与任何基于 git 的服务或您的本地副本进行同步。
最近,我发现了 Notion (opens new window),它使编辑内容如此愉快。而让我舒适地将所有笔记迁移到 Notion 的原因是它具有“导出所有工作区内容”的功能,可以生成高质量的 Markdown。
我唯一缺少的是定期自动备份。我对 Notion 的备份功能进行了一些调查,并设置了每天将备份导出到 GitLab。在过去的两周里,它一直运行良好, ## 1. 注册GitLab账号
前往https://gitlab.com/ (opens new window)注册一个免费账号,如果你还没有一个账号,这个账号应该足够备份高达10GB的数据。
可选。如果你想要额外的安全性,可以设置双因素认证 (opens new window)。
2. 提取Notion的令牌和空间ID #
这可能是最复杂的一步。由于Notion目前还没有API,我们需要在我们的备份脚本中模拟Notion的行为。为此,我们需要从“导出所有工作区内容”请求中提取_token_v2和_spaceId。
我将解释如何在Google Chrome中完成:
- 打开http://notion.so/ (opens new window),进入“设置和成员”→“设置”
- 打开Chrome DevTools (opens new window) 通过按下Command+Option+J(Mac)或Control+Shift+J(Windows、Linux、Chrome OS),将以下Markdown翻译成中文,并删除第一级标题:
- 转到网络选项卡,如下图所示
- 启用“XHR”筛选器(1),清除控制台(2),开始导出(3),选择“enqueueTask”(4)
在打开的“Headers”选项卡中,您需要向下滚动,直到看到“cookie:”和大量文本,在这段文本中,您需要找到一个类似于(5)的部分:
token_v2=xxx;
其中xxx是一个非常长的字母和数字序列,可以跨多行。将“token_v2=”和“;”之间的所有内容复制并保存在某个地方。将其标记为NOTION_TOKEN_V2,我们稍后会用到。
现在向底部滚动,在“Request Payload”部分下,您将看到类似于(6)的内容:
spaceId: “4489c211-09d6-4069-ae3b-1665e25d6c03”
保存引号内的值,将其标记为NOTION_SPACE_ID。
3. 在GitLab中创建推送令牌 #
为了允许脚本更新您的备份,我们需要生成一个具有适当权限的令牌。在GitLab上执行以下操作 请前往设置 → 访问令牌 (opens new window)并按照截图上的示例填写表格。
点击“创建个人访问令牌”后,您将只能看到一次“您的新个人访问令牌”,请复制并保存它,将其标记为CI_PUSH_TOKEN,我们稍后会用到。
- 创建一个GitLab存储备份的仓库
创建新项目 (opens new window),选择您喜欢的“项目名称”,确保勾选了“私有”框,这样只有您可以访问您的备份,点击“创建项目”。
- 设置CI/CD脚本
创建项目后,您将被重定向到空白项目页面。点击“设置CI/CD”按钮。
它将打开一个用于.gitlab-ci.yml文件的编辑器。粘贴我为您准备的脚本:https://gitlab.com/aburtsev/notion-backup-script/-/raw/master/.gitlab-ci.yml (opens new window)
该脚本模拟了Notion备份功能的行为, 但是不要将zip文件下载到您的计算机上,而是将其上传到您的GitLab项目。
点击“提交更改”
6. 安排备份作业 #
脚本准备好后,从左侧菜单中选择“CI / CD” → “计划”。
点击“新计划”
这将打开“安排新的流水线”表单,让我们逐个字段进行设置。
- 描述:你喜欢的任何内容(例如Notion备份)
- 时间间隔模式:你想要运行备份的时间。例如,我的每天凌晨4点运行一次。请选择从0到59的随机分钟和从0到23的小时,你想要运行备份的时间。例如,如果你想要在上午5:42运行它,你应该输入“42 5 * * *”。请不要只是复制粘贴这个值,以确保不会同时访问Notion服务器。您可能会发现这个计划编辑器 (opens new window)有用。
- Cron时区:只需选择您的时区
- 目标分支:保留主分支
- 变量:这是我们迄今收集到的值, 以下是一些常量:
NOTION_TOKEN_V2 从步骤2中粘贴token_v2
NOTION_SPACE_ID 从步骤2中粘贴spaceId
CI_PUSH_TOKEN 从步骤3中粘贴token
EXPORT_FILENAME /tmp/export.zip
PYTHONUNBUFFERED 1
TZ 从https://en.wikipedia.org/wiki/List_of_tz_database_time_zones选择你的时区("TZ database name"列)
就这样,现在你可以“保存管道计划”了,新的管道将出现在列表中。
现在按下“播放”按钮手动运行它并确保它正常工作。等待几分钟,直到进度圆圈变为绿色。
可选。如果你想查看日志,可以点击“最后一个管道”列中的链接,然后选择一个正在运行的任务。
一旦备份任务完成,你可以转到项目主页并注意到一个备份文件夹,你可以进入那里并浏览通过Notion生成的内容。
如果你已经到达这一点 - 恭喜!你已经设置好了自动备份,并且它们将在选择的时间每天运行。希望这对你有帮助。 如果这对您的项目有足够的帮助,欢迎 给我买杯咖啡 (opens new window),祝您好运!