一、资料
Notion:notion.so
Elog: elog.1874.cool
Halo:halo.run
📃 帮助文档
Notion API:developers.notion.com
Elog Docs:elog.1874.cool/notion/start
Halo Docs:docs.halo.run
二、简介
🍭 notion
Notion是一款功能强大的协作工具,结合了笔记、项目管理、数据库和文档编辑等多种功能。用户可以在Notion中创建各种类型的内容,如文本、表格、嵌入式多媒体等,并进行组织和共享。Notion的灵活性和强大的自定义功能使得团队可以根据自己的工作流程和需求来创建和管理项目、文档和知识库,成为许多团队和个人喜爱使用的协作工具。
🍭 halo
Halo是一款开源的内容管理系统(CMS),专注于创建个人博客和小型网站。它提供了简洁的用户界面和易于使用的编辑工具,使用户能够快速搭建和管理自己的网站内容。Halo支持主题定制和插件扩展,用户可以根据自己的需求进行个性化定制。Halo还注重安全性和性能优化,为用户提供稳定可靠的网站运行环境。由于其简洁易用和灵活性,Halo受到许多个人博客作者和小型网站运营者的青睐。
🍭 elog
开放式跨端博客解决方案,随意组合写作平台(语雀/飞书/Notion/FlowUs)和博客平台(Hexo/Vitepress/Confluence/WordPress)等。解决博客的编写,管理,分享问题。实现一端编写,多端同步的功能。
三、信息获取或安装
大致流程:
- 申请notion 秘钥,获取模板数据库id
- 申请halo token
- 安装elog
第一步:Notion
notion申请网站:https://www.notion.so/my-integrations
Token
-
点击
New Integration
创建Integration -
填写必要信息
注意:选择工作区之后这个秘钥就只能使用选择工作区的页面!!!
-
复制
Secrets
(点击Show即可查看秘钥)秘钥前面一部分也是需要使用的!
Database ID
-
获取数据库模板
模板地址:Elog - Notion模板
官方教程:Elog官网教程- 点击
Duplicate
将数据库模板复制到上面秘钥选择的工作区中,工作区必须保持一致!!! - 模板中的数据库字段请不要随意删除,会造成无法恢复!!!(增减字段是没有问题的)
- 点击
-
授权数据库给秘钥!!!
有些教程省略了这一步,缺少这一步创建的秘钥任然无法访问数据库!!!
-
获取数据库ID
- 复制浏览器地址栏数据库的id即可
- 数据库ID为最有一个斜杠之后到?之前的部分,完全由字母和数字组成的uuid
总结:
- 获取了工作区权限的秘钥
- 获取了从模板拷贝,并且给秘钥授权的数据库ID
第二步:Halo
官网教程:Elog官网教程
endpoint
halo网站的地址,例如 http://halo.1874.orb.local
,区分 http/https
。
token
-
打开halo控制台,找到 用户→点击管理员用户→个人令牌→创建令牌。
所需权限:
- 附件管理
- 文章管理
policyName
可以将图片上传到halo设定的存储中去,默认本地,也可存储到OSS
Halo 的存储策略,可前往附件管理中,F12 打开浏览器开发者控制台,刷新后查看/apis/storage.halo.run/v1alpha1/policies
接口,找到返回的metadata.name
字段值,默认请设置default-policy
。
总结
- 网站地址:endpoint
- 秘钥:token
- 存储策略:policyName
第三步:Elog
官网教程:Elog官网教程
环境准备
Node 环境(>=12.0.0),尽量使用stable版本,即稳定版。
全局安装elog
使用一下一种方法安装可以
若出现网络问题可以上网寻求帮助,改用pnpm。
# 使用 npm 安装 CLI
npm install @elog/cli -g
# 使用 yarn 安装 CLI
yarn global add @elog/cli
# 使用 pnpm 安装 CLI
pnpm install @elog/cli -g
# 安装指定版本
npm install @elog/cli@0.9.0 -g
四、基础使用
初始化
在本地创建一个用来同步的文件夹,进入文件夹,打开终端或cmd,执行以下命令,初始化工作区。
elog init
初始化过后会增加以下两个文件
elog.config.js
:配置文件,通过配置此文件指定elog的博客编辑站点与发布站点。.elog.env
:环境变量,elog.config.js
文件可以读取此文件中的信息。如果使用github等同步时需要将此文件加入.gitignore
,防止信息泄露!!!
.elog.env 环境变量
这里填写我们之前获取的 Notion 和 Halo 信息
# .elog.env
# Notion
NOTION_TOKEN=
NOTION_DATABASE_ID=
# Halo
HALO_ENDPOINT=
HALO_TOKEN=
HALO_POLICY_NAME=
elog.config.js 配置文件
// elog.config.js
module.exports = {
write: {
platform: "notion",// 选择下面的notion配置
notion: {
token: process.env.NOTION_TOKEN,
databaseId: process.env.NOTION_DATABASE_ID,
filter: {
property: "status",
select: {
equals: "待发布",
},
},
},
},
deploy: {
platform: "halo",// 选择以下的halo配置,切换成local则可下载到本地
local: {
outputDir: "./docs",
filename: "title",
format: "markdown",
},
halo: {
endpoint: process.env.HALO_ENDPOINT,
token: process.env.HALO_TOKEN,
policyName: process.env.HALO_POLICY_NAME,
rowType: "html",
needUploadImage: true,
},
}
},
};
第五步:同步
执行以下命令进行同步
# 同步文章/发布文章
elog sync -e .elog.env
# 清除本地缓存,如果想要重新发布则清除缓存后重新同步即可。
elog clean
恭喜你完成了博客的发布😉,更多教程请参考官网。