拙见
工具应用
前端技术
AI技术
其他知识
编程知识
利用GitHub Action自动备份Notion数据到仓库
type
status
date
slug
summary
tags
category
icon
password
近期因为一些笔记软件的服务崩溃导致大家都在说要Local first,但Notion确实有一些令人无法割舍的功能,所以这里提供了一种折中的方案,通过设置GitHub Action,定期自动备份Notion数据至GitHub仓库。这种做法不仅提高了数据安全性,也实现了有效的容灾措施,降低了因依赖单一服务而导致数据丢失的风险。(其实Notion本身的可用性还是可以的, 详见Notion Status)
1. 获取相关Token
我们想要备份Notion,肯定是需要一些token来获取到Notion文章和相关权限的,我们需要3个token
1.1 token_v2
![notion image](https://i0.hdslb.com/bfs/article/f7eb1ab880b8001e22abe5353ae397cd30109107.png?t=4a841e80-e6c3-439e-8a8c-3fee46e5ac2c)
1.2 space_id
还是
getSpaces
这个请求,查看他的请求返回值,我们要的space_id
是space
对象里面的一个属性名,注意要的是属性名不是属性值, 复制属性名备用![notion image](https://i0.hdslb.com/bfs/article/293f9b17a8616f275d98508b891f66ca30109107.png?t=590c18df-3cf9-4965-8035-83e5ee062def)
1.3 file_token
- 随便打开一篇文章,点右上角三个点,然后点Export
![notion image](https://i0.hdslb.com/bfs/article/2f6c636a8b86e1ab68440e82d7aef17e30109107.png?t=24658494-9538-4787-9711-cfa6f2495a36)
![notion image](https://i0.hdslb.com/bfs/article/cd91e9450cccc7061acacb8b91f88ebc30109107.png?t=12077933-faa9-4654-8fb2-c9ff24b236f6)
点击Export后浏览器应该会开始下载压缩包
- 打开浏览器的下载管理,右键复制他的下载链接
![notion image](https://i0.hdslb.com/bfs/article/5d68d798f70197a3e6cd49bd48686ad430109107.png?t=01eb6993-8fbc-4db2-80ae-239ac0637c01)
- 先打开F12控制台,再在浏览器的地址栏中粘贴这个下载链接,回车进行访问
- 此时你的浏览器会再次下载这个文件,你会在控制台看见下方这个请求,点开这个请求的Cookie,找到
file_token
,三击它的值,全选复制备用
![notion image](https://i0.hdslb.com/bfs/article/da47fc70fae21969dbbf60adcc10c74830109107.png?t=9d292aef-05da-4e61-96c0-be4725447606)
2. 使用 Github Actions 自动备份
2.1 在Github创建一个新仓库
新建仓库要选Private, 不然你的Notion内容将会公开
2.2 配置权限
在新建的仓库中点击 Setting ⇒ Actions ⇒ General, 如图所示的修改Workflow permissions
![notion image](https://i0.hdslb.com/bfs/article/357373e4ca4b19009454bf03b508b4d630109107.png?t=e46c4ef7-77f6-48e1-8a85-4429c645e881)
2.3 配置secrets
还是在Settings页面里,点击Secrets and variables ⇒ Actions, 添加三个secrets
NOTION_TOKEN
填token_v2
NOTION_SPACE_ID
填space_id
NOTION_FILE_TOKEN
填file_token
![notion image](https://i0.hdslb.com/bfs/article/96c3559d6cfb9cdb037eb82094819f3130109107.png?t=fbe31d89-d7eb-424b-bab9-4949242929dd)
2.4 创建自动任务
打开 Actions 标签页, 点击 Simple workflow 的 Configure 按钮创建一个任务
![notion image](https://i0.hdslb.com/bfs/article/b3ec7178073cb106e27cced193f8182530109107.png?t=66e2dea1-c5ee-4275-a5f7-9c81e4ae3eae)
将默认代码全部删除,粘贴以下代码,然后点击右上角的Commit Changes按钮
点击提交就可以了,这个任务会在每天的UTC 0点触发,也就是北京时间8:00 AM触发,如果你想更改执行时间/间隔,可以自行修改代码中的
cron
2.5 手动触发
我们可以按图里的步骤尝试着手动触发一下这个任务,运行整个任务大约需要2-3分钟
![notion image](https://i0.hdslb.com/bfs/article/7886543d8c43deb08d90b2581e63ef0630109107.png?t=6cfd0760-c32a-4ca0-a590-254c6a1d7cdf)
执行成功后,仓库中有两个文件夹, 分别是html和markdown两个格式的导出文件
注意: Notion 的 token 大概 90 天左右会失效, 到时候需要重新用上面的方式获取 token, 再到 Secrets 中修改
Last update: 2023-12-11