近期因为一些笔记软件的服务崩溃导致大家都在说要Local first,但Notion确实有一些令人无法割舍的功能,所以这里提供了一种折中的方案,通过设置GitHub Action,定期自动备份Notion数据至GitHub仓库。这种做法不仅提高了数据安全性,也实现了有效的容灾措施,降低了因依赖单一服务而导致数据丢失的风险。(其实Notion本身的可用性还是可以的, 详见Notion Status)
1. 获取相关Token
我们想要备份Notion,肯定是需要一些token来获取到Notion文章和相关权限的,我们需要3个token
1.1 token_v2
1.2 space_id
还是
getSpaces
这个请求,查看他的请求返回值,我们要的space_id
是space
对象里面的一个属性名,注意要的是属性名不是属性值, 复制属性名备用1.3 file_token
-
- 随便打开一篇文章,点右上角三个点,然后点Export
点击Export后浏览器应该会开始下载压缩包
-
- 打开浏览器的下载管理,右键复制他的下载链接
- 先打开F12控制台,再在浏览器的地址栏中粘贴这个下载链接,回车进行访问
-
- 此时你的浏览器会再次下载这个文件,你会在控制台看见下方这个请求,点开这个请求的Cookie,找到
file_token
,三击它的值,全选复制备用
- 此时你的浏览器会再次下载这个文件,你会在控制台看见下方这个请求,点开这个请求的Cookie,找到
2. 使用 Github Actions 自动备份
2.1 在Github创建一个新仓库
新建仓库要选Private, 不然你的Notion内容将会公开
2.2 配置权限
在新建的仓库中点击 Setting ⇒ Actions ⇒ General, 如图所示的修改Workflow permissions
2.3 配置secrets
还是在Settings页面里,点击Secrets and variables ⇒ Actions, 添加三个secrets
NOTION_TOKEN
填token_v2
NOTION_SPACE_ID
填space_id
NOTION_FILE_TOKEN
填file_token
2.4 创建自动任务
打开 Actions 标签页, 点击 Simple workflow 的 Configure 按钮创建一个任务
将默认代码全部删除,粘贴以下代码,然后点击右上角的Commit Changes按钮
点击提交就可以了,这个任务会在每天的UTC 0点触发,也就是北京时间8:00 AM触发,如果你想更改执行时间/间隔,可以自行修改代码中的
cron
2.5 手动触发
我们可以按图里的步骤尝试着手动触发一下这个任务,运行整个任务大约需要2-3分钟
执行成功后,仓库中有两个文件夹, 分别是html和markdown两个格式的导出文件
注意: Notion 的 token 大概 90 天左右会失效, 到时候需要重新用上面的方式获取 token, 再到 Secrets 中修改
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。