🗒️Elog+notion持续集成导出MD文件
00 分钟
2023-11-16
2024-2-1
type
status
date
slug
summary
tags
category
icon
password

前言

截止到现在,已经持续使用了Notion近两年,也基本上将之前在Typora上写的Markdown文章搬运过来了。但是,有个问题,极端一点思考,如果Notion突然不维护了,那么我的这些数据该怎么办?
尽管,Notion 也提供了导出Markdown格式的功能,但是,只能一个一个导出,后期文档数量上去的话,导出都挺折腾时间的。
于是,寻求一种能够批量、快速、自动化导出Notion文章的方法就成了最近关心的事情。好在,在Matrixcore 的帮助下,发现一件神器 —— Elog
使用 Notion+Elog+Slack+Pipedream 这一套组合拳就解决了持续集成的方式来自动化更新Notion文档。

本地实践开始

因为我的主要目的是能够使用 Elog 定时备份 NotionNext下的文档,并且定期归档,所以实践这块以完成持续集成部署为结果展开流程。

安装依赖

前置依赖,需要安装好 node

配置Elog

在本地目录执行初始化,我这边是在云服务器上,地址为: /data/server/Myblog_backup
根据提示初始化成功后,会在根目录生成一份 elog.config.js 配置文件和本地调试用的.elog.env环境变量配置文件。
其中 elog.config.js 是关键的配置文件,而 .elog.env 是用于保存本地关键配置的文件。
主要关注以下三个字段的内容:
  • write 写作平台详细配置
  • deploy 博客平台详细配置
  • image 图床平台详情配置
我本地的配置是:
我这边就是需要将 notion 数据库中的 type 字段 为 Post 的文章导出到 ./docs目录下,Markdown名称以 title 字段作为名称,按照 catalog 进行文件夹归类。文章的图片下载到本地 ./docs/images 目录下,并使用相对路径替换掉原始的图片。

同步

本地效果【左边为Notion数据库部分截图,右边为生成的MD文档】:
notion image
notion image

持续集成部署

🎈
说了这么多,一直都是本地在操作,如何实现自动化持续集成呢?
需要借助Notion+Slack+Pipedream+GitHub了
notion ⇒ slack ⇒ pipedream ⇒ github action
 

slack 设置

1、注册好之后,创建频道(channel)

notion image

2、添加应用 Notion

notion image
notion image
 

notion 设置

1、创建 automation

在数据库页面点击闪电按钮,可以创建 automation ,增加触发器以及执行器
notion image
触发器设置为 状态变为 Published 触发。因为在slack上设置添加了应用Notion,所以可以在执行器中看到 推送消息至频道,选择好在Slack中创建的频道,这里是 notion
notion image

pipedream 设置

1、注册

2、创建 project

notion image

3、在 project 下创建 workflow

notion image

4、设置 workflow

trigger 触发器选择 Slack
notion image
选择 New Message In Channels
notion image
按照如下设置
notion image
增加一个Step Python
notion image
按照如下编写即可:
配置环境变量,用于 code 中使用,在环境中通过 os.environ['your_token']来使用
notion image
至此,已完成一半的设置。
注意:
以下三个变量需要在 GitHub 获取 github_username: 你的github账户名称 github_repo:你需要同步的 github 仓库,后续会将生成的markdown推送到这个仓库 token:github token

github设置

在Github上新建一个仓库,将本地与远程仓库链接上。
.github/workflows/main.yaml 添加如下
添加环境变量
notion image
增加执行权限:
SettingActions Tab 的 Workflow permissions 需要选中 Read and write permissions,否则会报错,没有权限更新。
notion image

执行效果:

当在Notion数据库中,将文章的状态从 Draft 转为 Published ,随即触发执行
Slack:
notion image
Pipedream:
notion image
Github:
notion image
notion image

关于Elog

什么是Elog

Elog名为 Easy Blogging,简单、轻松的书写&部署博客 它是一种开放式跨端博客解决方案,随意组合写作平台(语雀/飞书/Notion/FlowUs)和博客平台(Hexo/Vitepress/Confluence/WordPress)等
用我的话来说,就是Elog支持从多个写作平台中导出Markdown文件格式,然后生成不同博客平台的静态博客文件部署。就是方便不懂技术的小伙伴也能在不同的写作平台以及博客平台自由切换,体验一条龙服务。
💡
Elog支持的写作平台与博客平台
写作平台:
  • Notion
  • 语雀
  • FlowUs
  • 飞书云文档
博客平台:
  • Hexo
  • Vitepress
  • HuGo
  • Docusaurus
  • Docz
  • Confluence
  • WordPress
支持图床
  • 本地
  • 腾讯云COS
  • 阿里云OSS
  • Github图床
  • 七牛云
  • 又拍云
 

注意事项:

【github】如何将本地仓库与远程仓库建立连接
  • 空仓库】创建完空仓库就将本地项目关联到远程
      1. 如果本地项目已经通过git管理:
        1. 本地项目未通过git管理:
      • 非空仓库】创建完非空仓库就将本地项目关联到远程
          1. 远程非空仓库的关联,就要涉及到2个不同项目的关联了;得先将远程的代码合并下来,才能提交;我们先假设项目已经通过git管理了。缺少关联push远程仓库的步骤讲:
        【github】如何获取 github token
        notion image
        notion image

        参考:


        评论
        • Twikoo
        • Giscus
        • Cusdis