Notion最近在技术人士中逐渐流行,但你是否怕这种云笔记某天突然跑路?若不想手动定期备份,这个工具可以帮你。
参考文献
- Automated Notion backups
- Notion Guardian
- notion-backup
工具介绍
Notion Guardian 提供了一种在私有存储库中设置数据安全备份的快速方法——允许您跟踪笔记随时间的变化并了解您的数据是否安全。
这个 repo 包含一个每天运行的 GitHub 工作流,每次推送到这个 repo。工作流将执行向 Notion 发出导出请求的脚本,等待它完成并将工作区内容下载到临时目录。然后,工作流会将这个目录提交到 repo secrets 中配置的存储库。
简单点就是:每天自动将你的notion导出到一个github私人仓库中,让鸡蛋不在一个篮子里。
用法
- 为您的备份创建一个单独的私有存储库(例如“my-notion-backup”)。确保您创建了一个
main
分支——例如,在创建 repo 时单击“Add a README file”。 - fork存储库(见参考文献2),或者本人的修改版本https://github.com/qq849012418/Keenster-notion-guardian(修改了中文时区并默认为子页面创建文件夹,方便管理)。
- 点击github右上角个人头像,进入settings。在左侧找到developer settings,选择新页面左侧的personal access tokens,创建勾选了“repo”范围的个人访问令牌( docs 可参考) 。复制这个令牌, 回到刚刚fork的repo中,进入settings选项卡并在左侧找到Secrets-》Actions。点击New repository secret,创建一个密钥名称为
REPO_PERSONAL_ACCESS_TOKEN
,粘贴到value中。 - 同理,将您的 GitHub 用户名存储在
REPO_USERNAME
密钥中。 - 同理,将新创建的私有仓库的名称存储在
REPO_NAME
密钥中(在本例中为“my-notion-backup”)。 - 将用于提交更改的电子邮件(通常是您的 GitHub 帐户电子邮件)存储在
REPO_EMAIL
密钥中。 - 获取您的 Notion space ID 和token。将其存储在
NOTION_SPACE_ID
和NOTION_TOKEN
密钥中。获取过程需要用到浏览器。以谷歌浏览器为例(其他浏览器请参考文献1),在网页端打开你的notion space,点击space左侧settings&members,找到导出按钮,点击导出,此时会看到一个对话框。接着,先使用ctrl+shift+j快捷键,呼出浏览器的debugger,切换到network页面,选择过滤XHR,并清空窗口。点击对话框中的导出按钮,可以看到debugger中多出了一个enqueueTask,在它的Header选项卡中,找到一个很长串的cookie,里面的token_v2后面的字符串就是notion token,而spaceid(格式为xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)则在最下面的Request Payload项中。 - 您还需要以相同的方式获取
notion_user_id
(在cookie中)并将其存储在一个NOTION_USER_ID
密钥中。经过3-8步,你的actions界面应该是下面这样的。 - 单击fork repo上的“Actions”选项卡,然后通过单击按钮启用操作。
- 在左侧边栏上单击“Backup Notion Workspace”工作流程。通知将告诉您“计划的操作”已禁用,因此请继续并单击按钮以启用它们。
- 等到操作第一次运行或将提交推送到存储库以触发第一次备份。
- 检查您的私人存储库以查看您的 Notion 工作区数据是否已自动提交。完毕🌸
2022.10.23更新:
网友阿_鑫反映了一个使用一段时间(一个月以上)后无法同步的问题(Backup线程报401错误),参考解决方法如下,感谢反馈!
- 确认workspace里没有视频等大文件,以防同步超时导致报错;
- 重新执行正文步骤7,但只需把
NOTION_TOKEN
密钥更新,以防原始cookie过期; - 进入keenster_notion_guardian库的action选项卡,点开最近失败的同步任务,点击右上角的rerun all job,理论这次应该能同步成功了;
- 查看设置里action状态是否开启(有些人的action会60天自动停),若为disabled请手动开启,以保证持续同步;
- 其他情况导致的同步失败,请关注error log。
版权归原作者 Keenster 所有, 如有侵权,请联系我们删除。