动手实践
[跨域协同] elog+notion实现md优雅备份
00 min
Oct 11, 2023
Feb 25, 2024
type
status
date
slug
summary
tags
category
icon
password

前言


前几天吃午饭的时候,突然想到一件事情,就是关于博客备份的事情。 之前为了对高数18讲进行全部重新CDN加速,一直用的都是notion自带的导出为markdown的功能,但是如果数据一多,速度就很慢,而且一个一个导出很费时间。 昨天晚上和今天尝试并使用了elog,实现了notion文章自动批量下载到本地,并根据自定义的数据库属性进行合适的归档。 首先非常感谢这个想法的启蒙博主:某中二的黑科技研究中心 文章标题及链接: 备份 Notion 文档到 Github

正文


实践的过程并不顺利,甚至还有些小艰难,作为纯技术小白,以下记录我的一些踩坑经历。
首先从阅读技术文档开始。
 

一、备份文件夹及环境配置


导航到技术文档的快速开始,使用vscode创建备份文件夹并开始环境配置。
⚠️请注意环境需要正确安装,理论上安装环境的时间在2-3分钟左右。
然后对项目进行初始化配置,生成elog.config.js以及.elog.env两个文件,接下来就是进入配置详情,配置相应的参数。   ⚠️请注意,将您的.elog.env文件列入git的忽略跟踪
 

二、正确进行参数配置


我希望对notion的数据库的文章进行批量导出,那么在配置elog.config.js就需要注意平台的选择。
⚠️在最开始的时候,我忽视了平台的选择,导致报错:未知的写作平台
然后是notion相关的配置,首先要关注自己的数据库的属性。 作者大大也提供了数据库的模板,可以参考配置流程
我采用的数据库是notionnext的数据库格式,并且elog也支持自定义数据库的字段。
另外如果想要正确输出到指定目录,还需要注意该问题:
notion image
notion image
如果要做针对自己数据库的属性更改,请参照Notion API 文档 - Filter database entries
接下来就是正确获取notion的Integration Token和DatabaseId,按照配置流程走就可以。
notion image
notion image
 

三、合适的网络条件


在正确配置notion的集成和id之后,可以开始执行
⚠️注意,由于notion api的延时问题,校园网条件下,notion api会经常超时,所以推荐使用手机流量。 如果一切顺利,那么您将可以看到文章被正常输入到本地目录。
 

四、进阶操作,自动备份


阅读技术文档持续集成
notion的自动化流程有一定的起手难度。

原理介绍


通过slack捕捉notion数据库字段的变化,比如“status”从“Draft”变为“Published”,那么就可以推送到slack的频道中,然后开始触发pipedream,调用github actions的api进行部署。

关联slack+notion


首先,需要进行slack注册,授权给notion进行关联。
notion image
notion image

pipedream配置


如果一切顺利,那么接下来进入pipedream的部署,将slack与pipedream进行关联,最困难的是如何配置https请求。
notion image
在这里我要特别感谢DC's博主,他的文章给了我启发 : 定期备份notion
同时参考1874博主的文档,正确配置该请求。
在这个步骤中,您还要获取GitHub的token
如果这一步正确,并且serverless api返回sussess!,那么恭喜你,已经成功了一半了。

安装打包环境


接下来让我们回到vscode的文件夹,进行打包环境的安装
package.json加上如下脚本

调试github自动化脚本


接下来到了困难的阶段,配置GitHub的actions,首先配置环境变量,主要是notion的token和id,填入在第二步获得的参数。
路径如下:设置-Secrets and variables-Actions-Secrets
notion image
接下来创建GitHub的工作流:.github/workflows/main.yaml
最主要的是这一步,配置完成之后,在vscode拉取仓库内容,进行本地和远程的同步。
⚠️请注意,接下来不要随意在本地和远程双向修改,不然会导致冲突。

放开actions的写入权限


⚠️同时注意放开actions的写入权限,在该仓库的设置,工作流里找到该选项。
notion image

脚本触发


如果一切顺利,当您在notion中将文章的状态变为“Published”时候,将会自动触发工作流,进行备份,如果遇到错误,请排查工作流的报错信息。
notion image
最后当您二次修改文章之后再次触发,文章会进行增量更新。

总结


elog的项目非常具有实践价值,通过该项目,不仅可以实现博客文档的整洁有序自动化的归档,而且可以兼容多平台,实现数据的自由迁移。
在我遇到困难的时候,离不开群主和群友的耐心解答和帮助!
 

小彩蛋


介绍一下slack
actions的权限不够
 
actions的本地远程冲突
解决环境变量可见性问题
如何删除git的历史痕迹

Comments