type
status
date
slug
summary
tags
category
icon
password
前言
前几天吃午饭的时候,突然想到一件事情,就是关于博客备份的事情。
之前为了对高数18讲进行全部重新CDN加速,一直用的都是notion自带的导出为markdown的功能,但是如果数据一多,速度就很慢,而且一个一个导出很费时间。
昨天晚上和今天尝试并使用了elog,实现了notion文章自动批量下载到本地,并根据自定义的数据库属性进行合适的归档。
首先非常感谢这个想法的启蒙博主:某中二的黑科技研究中心
文章标题及链接: 备份 Notion 文档到 Github
正文
实践的过程并不顺利,甚至还有些小艰难,作为纯技术小白,以下记录我的一些踩坑经历。
首先从阅读技术文档开始。
一、备份文件夹及环境配置
导航到技术文档的快速开始,使用vscode创建备份文件夹并开始环境配置。
⚠️请注意环境需要正确安装,理论上安装环境的时间在2-3分钟左右。
二、正确进行参数配置
我希望对notion的数据库的文章进行批量导出,那么在配置
elog.config.js
就需要注意平台的选择。⚠️在最开始的时候,我忽视了平台的选择,导致报错:
未知的写作平台
然后是notion相关的配置,首先要关注自己的数据库的属性。
作者大大也提供了数据库的模板,可以参考配置流程。
我采用的数据库是notionnext的数据库格式,并且elog也支持自定义数据库的字段。
另外如果想要正确输出到指定目录,还需要注意该问题:
如果要做针对自己数据库的属性更改,请参照Notion API 文档 - Filter database entries。
接下来就是正确获取notion的Integration Token和DatabaseId,按照配置流程走就可以。
三、合适的网络条件
在正确配置notion的集成和id之后,可以开始执行
⚠️注意,由于notion api的延时问题,校园网条件下,notion api会经常超时,所以推荐使用手机流量。
如果一切顺利,那么您将可以看到文章被正常输入到本地目录。
四、进阶操作,自动备份
阅读技术文档持续集成
notion的自动化流程有一定的起手难度。
原理介绍
通过slack捕捉notion数据库字段的变化,比如“status”从“Draft”变为“Published”,那么就可以推送到slack的频道中,然后开始触发pipedream,调用github actions的api进行部署。
关联slack+notion
首先,需要进行slack注册,授权给notion进行关联。
pipedream配置
如果一切顺利,那么接下来进入pipedream的部署,将slack与pipedream进行关联,最困难的是如何配置https请求。
在这里我要特别感谢DC's博主,他的文章给了我启发 : 定期备份notion
同时参考1874博主的文档,正确配置该请求。
在这个步骤中,您还要获取GitHub的token
如果这一步正确,并且serverless api返回
sussess!
,那么恭喜你,已经成功了一半了。安装打包环境
接下来让我们回到vscode的文件夹,进行打包环境的安装
在
package.json
加上如下脚本调试github自动化脚本
接下来到了困难的阶段,配置GitHub的actions,首先配置环境变量,主要是notion的token和id,填入在第二步获得的参数。
路径如下:
设置-Secrets and variables-Actions-Secrets
接下来创建GitHub的工作流:
.github/workflows/main.yaml
最主要的是这一步,配置完成之后,在vscode拉取仓库内容,进行本地和远程的同步。
⚠️请注意,接下来不要随意在本地和远程双向修改,不然会导致冲突。
放开actions的写入权限
⚠️同时注意放开actions的写入权限,在该仓库的设置,工作流里找到该选项。
脚本触发
如果一切顺利,当您在notion中将文章的状态变为“Published”时候,将会自动触发工作流,进行备份,如果遇到错误,请排查工作流的报错信息。
最后当您二次修改文章之后再次触发,文章会进行增量更新。
总结
elog的项目非常具有实践价值,通过该项目,不仅可以实现博客文档的整洁有序自动化的归档,而且可以兼容多平台,实现数据的自由迁移。
在我遇到困难的时候,离不开群主和群友的耐心解答和帮助!
小彩蛋
介绍一下slack
actions的权限不够
actions的本地远程冲突
解决环境变量可见性问题
如何删除git的历史痕迹
- Author:非常6+1
- URL:https://matrixcore.love/article/elog
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!