近期因为一些笔记软件的服务崩溃导致大家都在说要Local first,但Notion确实有一些令人无法割舍的功能,所以这里提供了一种折中的方案,通过设置GitHub Action,定期自动备份Notion数据至GitHub仓库。这种做法不仅提高了数据安全性,也实现了有效的容灾措施,降低了因依赖单一服务而导致数据丢失的风险。(其实Notion本身的可用性还是可以的, 详见Notion Status)
1. 获取相关Token
我们想要备份Notion,肯定是需要一些token来获取到Notion文章和相关权限的,我们需要3个token
1.1 token_v2
![利用GitHub Action自动备份Notion数据到仓库](https://blog.biekanle.com/wp-content/uploads/2024/06/9c1ee6cf27ad077918614e3ced6552f9.webp)
1.2 space_id
还是
getSpaces
这个请求,查看他的请求返回值,我们要的space_id
是space
对象里面的一个属性名,注意要的是属性名不是属性值, 复制属性名备用![利用GitHub Action自动备份Notion数据到仓库](https://blog.biekanle.com/wp-content/uploads/2024/06/d2bfc7d00f5f86c2b1613cdf32c6b2d8.webp)
1.3 file_token
-
- 随便打开一篇文章,点右上角三个点,然后点Export
![利用GitHub Action自动备份Notion数据到仓库](https://blog.biekanle.com/wp-content/uploads/2024/06/e7b7d779764a5b5ca1ca44c54f42b7ae.webp)
点击Export后浏览器应该会开始下载压缩包
-
- 打开浏览器的下载管理,右键复制他的下载链接
![利用GitHub Action自动备份Notion数据到仓库](https://blog.biekanle.com/wp-content/uploads/2024/06/bbdefd57e989848a74df80cba8a1511e.webp)
- 先打开F12控制台,再在浏览器的地址栏中粘贴这个下载链接,回车进行访问
-
- 此时你的浏览器会再次下载这个文件,你会在控制台看见下方这个请求,点开这个请求的Cookie,找到
file_token
,三击它的值,全选复制备用
- 此时你的浏览器会再次下载这个文件,你会在控制台看见下方这个请求,点开这个请求的Cookie,找到
![利用GitHub Action自动备份Notion数据到仓库](https://blog.biekanle.com/wp-content/uploads/2024/06/b474f5a467ac654bc27565c27540dd1c.webp)
2. 使用 Github Actions 自动备份
2.1 在Github创建一个新仓库
新建仓库要选Private, 不然你的Notion内容将会公开
2.2 配置权限
在新建的仓库中点击 Setting ⇒ Actions ⇒ General, 如图所示的修改Workflow permissions
![利用GitHub Action自动备份Notion数据到仓库](https://blog.biekanle.com/wp-content/uploads/2024/06/265df5acacf071b1b53a4ab57248bb5c.webp)
2.3 配置secrets
还是在Settings页面里,点击Secrets and variables ⇒ Actions, 添加三个secrets
NOTION_TOKEN
填token_v2
NOTION_SPACE_ID
填space_id
NOTION_FILE_TOKEN
填file_token
![利用GitHub Action自动备份Notion数据到仓库](https://blog.biekanle.com/wp-content/uploads/2024/06/08fd85e073ac477148ca02cf2c0d2435.webp)
2.4 创建自动任务
打开 Actions 标签页, 点击 Simple workflow 的 Configure 按钮创建一个任务
![利用GitHub Action自动备份Notion数据到仓库](https://blog.biekanle.com/wp-content/uploads/2024/06/6f8a47e415dd188c7b54c34a45e0dc80.webp)
将默认代码全部删除,粘贴以下代码,然后点击右上角的Commit Changes按钮
点击提交就可以了,这个任务会在每天的UTC 0点触发,也就是北京时间8:00 AM触发,如果你想更改执行时间/间隔,可以自行修改代码中的
cron
2.5 手动触发
我们可以按图里的步骤尝试着手动触发一下这个任务,运行整个任务大约需要2-3分钟
![利用GitHub Action自动备份Notion数据到仓库](https://blog.biekanle.com/wp-content/uploads/2024/06/ec9171a69234b238c81883140bd5ffcf.webp)
注意: Notion 的 token 大概 90 天左右会失效, 到时候需要重新用上面的方式获取 token, 再到 Secrets 中修改