利用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,F12打开控制台,随便进入一个自己的文章页面,找到getSpaces 这个请求,在Cookie里面找到token_v2 复制备用
notion image

1.2 space_id

还是getSpaces 这个请求,查看他的请求返回值,我们要的space_idspace 对象里面的一个属性名,注意要的是属性不是属性值, 复制属性名备用
notion image

1.3 file_token

  1. 随便打开一篇文章,点右上角三个点,然后点Export
    1. notion image
       
      notion image
      点击Export后浏览器应该会开始下载压缩包
       
 
 
  1. 打开浏览器的下载管理,右键复制他的下载链接
    1. notion image
  1. 先打开F12控制台,再在浏览器的地址栏中粘贴这个下载链接,回车进行访问
  1. 此时你的浏览器会再次下载这个文件,你会在控制台看见下方这个请求,点开这个请求的Cookie,找到file_token ,三击它的值,全选复制备用
    1. notion image

2. 使用 Github Actions 自动备份

2.1 在Github创建一个新仓库

新建仓库要选Private, 不然你的Notion内容将会公开

2.2 配置权限

在新建的仓库中点击 Setting ⇒ Actions ⇒ General, 如图所示的修改Workflow permissions
notion image

2.3 配置secrets

还是在Settings页面里,点击Secrets and variables ⇒ Actions, 添加三个secrets
  • NOTION_TOKENtoken_v2
  • NOTION_SPACE_IDspace_id
  • NOTION_FILE_TOKENfile_token
notion image

2.4 创建自动任务

打开 Actions 标签页, 点击 Simple workflowConfigure 按钮创建一个任务
notion image
将默认代码全部删除,粘贴以下代码,然后点击右上角的Commit Changes按钮
点击提交就可以了,这个任务会在每天的UTC 0点触发,也就是北京时间8:00 AM触发,如果你想更改执行时间/间隔,可以自行修改代码中的cron

2.5 手动触发

我们可以按图里的步骤尝试着手动触发一下这个任务,运行整个任务大约需要2-3分钟
notion image
执行成功后,仓库中有两个文件夹, 分别是html和markdown两个格式的导出文件
注意: Notion 的 token 大概 90 天左右会失效, 到时候需要重新用上面的方式获取 token, 再到 Secrets 中修改
《富爸爸,穷爸爸》TL;DRChat GPT最佳实践 [译]
前端技术
AI技术
拙见
工具应用
其他知识
编程知识