背景 #
之前介绍过,目前博客是使用Hugo搭建的(Hugo使用 ),只支持PC端使用,写博客工具只能用Github VSCode在线版本或者IDEA等编辑软件
有两个问题,一个是写起来不舒服,第二个就是不方便,我想实现手机和电脑都可以写,之前在 业务开发如何成长中写过成长的关键是多看多思考,但是人脑容量是有限的,一个知识库能很好的帮你把你的脑容量逐步放大
之前我使用了飞书作为我的知识库,飞书比较方便,但是有个致命弱点,慢且不灵活,作为一个在线知识库,假如你的知识多,网络不好,电脑又卡的时候,每次查找和加载都要耗费好几十秒,每次在等结果出来的时候,我都感觉度日如年,而且查到的结果不是我想要的,我更失望,而且也没法安装插件啥的,虽然功能很多,但是其实大部分都不是我必须要的
Obsidian介绍 #
其实作为一个知识库,第一个就是要快,第二个才是网络同步啥的,飞书反而是将网络同步放到第一个,Obsidian 作为一款离线的 md编辑器,数据都在本地,速度自然飞起,加上一个同步插件 Remotely Save
, win&mac&android&ios 都无缝同步,推荐使用坚果云 来同步,免费流量一个月上传一G,下载3G够用,就是文件多了,同步的时候少点几下(有限流😏)
Obsidian 作为一款著名的开源软件,最出名的就属于他的双链了,双链其实就是一种思考链接,我们知识库最重要的就是把我们的知识和知识直接的关系给理清
你看这个像不像我们大脑神经元的连接,这个就是双链产生的关系图谱
Obsidian 作为一款编辑器,最强大的地方就是丰富的三方插件系统,通过三方插件系统,能定制化满足你个人的需求
对于我来说,我需要一个
- 让我的知识库包含我的博客,兼具隐私和公开性
- 博客能够自定义域名,并且需要支持双链
- 支持Hugo(我之前博客模板使用的blowfish)
官方有一个付费的发布功能,但是不支持自定义域名,如何使用一套免费方案轻松实现我的需求呢
如何实现 #
- 使用 cloudflare 发布 Github Page页面
- 使用 Envelope 将代码传入github仓库
当你发布博客的时候自动部署博客网站,几秒钟就可以拿到最新的博客,而且自带CDN加速
搭建步骤 #
一: 准备步骤 #
- 复制一个Hugo 模板到你的github仓库,或者你喜欢我的博客模板,可以导入我的 Hugo 项目模板
你可以选择把你的git仓库公开或者私密,私密就是会影响你图床的图片15分钟后不可见
-
在Github中申请该项目的 token(在 github 的 setting > Developer settings )下面申请,推荐用最新的 fine-graned tokens,可以针对项目,最重要的权限是(Contents,Pull requests ,Deployments)
-
假如你想把你的博客发布到其他平台,你可以选择安装 图床
推荐安装 PicList ,推荐使用 Github 做图床,使用你上面申请的仓库作为Github仓库,并且存储路径设置为static/images/
在 Obsidian 中 安装Image Auto Upload
插件,打开复制上传开关,即可享受丝滑上传图片到你的github仓库中
二: 发布网站 #
- 注册cloudflare, 点击计算创建Page页面,导入你的github账户,选择你的博客仓库,架构预设选择Hugo,保存部署即可完成发布,是不是很快
PS: 假如部署失败,可能现在的Hugo版本已经太高了,可以在环境变量中添加:HUGO_VERSION,值为 0.143.1
三:配置发布插件 #
obsidian 安装 Envelope 插件,预设选择 hugo(右上角presets 按钮)
配置Github Config: 填入你的github仓库,可以点击按钮验证一下
- 支持双链(强烈推荐配置)
file path
- File tree in repository: 设置成
obsidian path
- Root folder: 设置
content
- Set the key where to get the value of the filename : 关闭
content:
- Internal links :打开
[[Wikilinks]] to [MDlinks](links)
: 打开
Text replacer:(删除预设)
添加一条将去除生成的连接中的 md
/\(([^\)]+)\.md\)/g
($1)
箭头向上
假如你增加了图床,可以添加下面的,将你的发布地址修改为你的CDN地址
/!\[([^[\]]+)\]\(https:\/\/raw\.githubusercontent\.com\/username\/github_rep\/master\/static/([^)]+)\)/g

箭头向上
username 为你的github 用户名,github_rep 为你的仓库名,将 https://zhanglun.work 替换成你自己的发布域名
假如你想使用 mermaid 图表,可以添加下面配置,来替换你markdown 中
例如:
会被替换成
graph LR;
A[Lemons]-->B[Lemonade];
B-->C[Profit]
规则为:
/
([\s\S]*?)
/g
《《 mermaid >》》$1《《< /mermaid >》》
箭头向上
选择在code中执行(<> 图标)
由于我的博客自动将 上面的解析错误,所以需要把 ({ 使用 《 替换,} 使用 》 替换)
下面是我的完整配置,你可以导入到你的仓库中
{
"github": {
"branch": "main",
"automaticallyMergePR": true,
"dryRun": {
"enable": false,
"folderName": "enveloppe"
},
"api": {
"tiersForApi": "Github Free/Pro/Team (default)",
"hostname": ""
},
"workflow": {
"commitMessage": "[PUBLISHER] MERGE",
"name": ""
},
"verifiedRepo": true
},
"upload": {
"behavior": "obsidian",
"defaultName": "content",
"rootFolder": "",
"yamlFolderKey": "",
"frontmatterTitle": {
"enable": false,
"key": "title"
},
"replaceTitle": [],
"replacePath": [],
"autoclean": {
"includeAttachments": true,
"enable": false,
"excluded": [
"docs/assets/js",
"docs/assets/meta",
"docs/assets/css",
"tags.md",
"graph.md"
]
},
"folderNote": {
"enable": true,
"rename": "index.md",
"addTitle": {
"enable": false,
"key": "title"
}
},
"metadataExtractorPath": "",
"subFolder": ""
},
"conversion": {
"hardbreak": true,
"dataview": true,
"censorText": [
{
"entry": "/\\(([^\\)]+)\\.md\\)/g",
"replace": "($1)",
"flags": "",
"after": true
},
{
"entry": "/!\\[([^[\\]]+)\\]\\(https:\\/\\/raw\\.githubusercontent\\.com\\/username\\/github_rep\\/main\\/static/([^)]+)\\)/g",
"replace": "",
"flags": "",
"after": false
},
{
"entry": "/
([\\s\\S]*?)
/g",
"replace": "《《< mermaid >》》$1《《< /mermaid >》》",
"flags": "",
"after": false,
"inCodeBlocks": true
}
],
"tags": {
"inline": false,
"exclude": [],
"fields": []
},
"links": {
"internal": true,
"unshared": false,
"wiki": true,
"slugify": "disable",
"unlink": true
}
},
"embed": {
"attachments": true,
"overrideAttachments": [],
"keySendFile": [],
"notes": true,
"folder": "content/images",
"convertEmbedToLinks": "keep",
"charConvert": "->",
"unHandledObsidianExt": [],
"sendSimpleLinks": true,
"forcePush": true
},
"plugin": {
"shareKey": "share",
"excludedFolder": [],
"copyLink": {
"enable": false,
"links": "",
"removePart": [],
"addCmd": false,
"transform": {
"toUri": true,
"slugify": "lower",
"applyRegex": []
}
},
"setFrontmatterKey": "Set"
}
}
(需要将配置中的《 替换成 {, 》 替换成})
四:发布新博客 #
建立一个posts 文件夹,随便新建一个md,在头部假设
---
share: true
---
随便输入文章,点击发布,即可将你的文章发布到你的博客了,而且你知识库的其他内容会保留在你的本地,不会上传到github,兼顾了隐私和公开