- 写作平台:Notion
- 博客平台:Halo
- 博客文档同步:Elog
点击 Fork 该模板仓库到个人 Github 账号仓库下并 clone 到本地
在项目根目录下运行命令安装依赖
npm install
在项目根目录中复制.elog.example.env
文件并改名为.elog.env
,此文件将用于本地同步Notion 文档
- 参考示例数据表格,选择或新建 Notion 数据库
- 按照文档提示配置 Notion 并获取
token
和databaseId
- 按照文档提示配置 Halo 并获取
endpoint token policyName
- 将上面步骤获取的变量写入
.elog.env
# Notion配置
NOTION_TOKEN=获取的token
NOTION_DATABASE_ID=获取的databaseId
# Halo 站点信息
HALO_ENDPOINT=Halo 站点地址
HALO_TOKEN=获取的 Halo 个人令牌
HALO_POLICY_NAME=获取的存储策略
仓库中有两个 elog 配置文件:
elog.config.js
:同步到 Halo 时的配置文件,用于同步 Notion 文档到 Haloelog.config.local.js
:同步到本地时的配置文件,用于备份 Notion 文档到本地
在正式上传到 Halo 站点前,建议先运行本地同步命令,从 Notion 拉取文档到本地
npm run dev:local
拉取到本地测试没问题时,再运行同步到 Halo 命令
npm run dev:halo
配置你的Halo 站点直到满意为止,可适当安装一些主题、插件
- 代码高亮插件
- markdown 编辑器
halo 站点访问没问题直接提交所有文件到 Github 仓库即可
当在 Notion 中改动文档后,手动/自动触发 Github Actions流水线,会重新从 Notion 增量拉取文档,并自动部署到 Halo 站点,如此就实现了自动化部署博客。
整个流程的关键点就在于:如何手动/自动触发 Github Actions。
在项目.github/workflows/sync.yaml
中已经配置了外部 API 触发 Github Actions 事件,所以只需要调用 API 触发流水线即可。
为了方便,这里提供一个部署在 Vercel 的免费公用的 ServerlessAPI,按照文档配置好 URL 参数并浏览器访问即可触发流水线
https://serverless-api-elog.vercel.app/api/github?user=xxx&repo=xxx&event_type=deploy&token=xxx
可在 Notion 中结合 Slack 触发,参考教程,这里就不做进一步演示了
如果想自定义 Elog 配置,可访问 Elog 文档
Halo 站点示例:https://halo.1874.cool