跳过正文
  1. 博客/
  2. 后端/
  3. 软件/

用Obsidian和Hugo来搭建你的知识库和博客

·5 分钟· ·
后端 软件 Obsidian
目录
111 - 这篇文章属于一个选集。

背景
#

之前介绍过,目前博客是使用Hugo搭建的(Hugo使用 ),只支持PC端使用,写博客工具只能用Github VSCode在线版本或者IDEA等编辑软件

有两个问题,一个是写起来不舒服,第二个就是不方便,我想实现手机和电脑都可以写,之前在 业务开发如何成长中写过成长的关键是多看多思考,但是人脑容量是有限的,一个知识库能很好的帮你把你的脑容量逐步放大

之前我使用了飞书作为我的知识库,飞书比较方便,但是有个致命弱点,慢且不灵活,作为一个在线知识库,假如你的知识多,网络不好,电脑又卡的时候,每次查找和加载都要耗费好几十秒,每次在等结果出来的时候,我都感觉度日如年,而且查到的结果不是我想要的,我更失望,而且也没法安装插件啥的,虽然功能很多,但是其实大部分都不是我必须要的

Obsidian介绍
#

其实作为一个知识库,第一个就是要快,第二个才是网络同步啥的,飞书反而是将网络同步放到第一个,Obsidian 作为一款离线的 md编辑器,数据都在本地,速度自然飞起,加上一个同步插件 Remotely Save , win&mac&android&ios 都无缝同步,推荐使用坚果云 来同步,免费流量一个月上传一G,下载3G够用,就是文件多了,同步的时候少点几下(有限流😏)

Obsidian 作为一款著名的开源软件,最出名的就属于他的双链了,双链其实就是一种思考链接,我们知识库最重要的就是把我们的知识和知识直接的关系给理清

image.png

你看这个像不像我们大脑神经元的连接,这个就是双链产生的关系图谱

Obsidian 作为一款编辑器,最强大的地方就是丰富的三方插件系统,通过三方插件系统,能定制化满足你个人的需求

对于我来说,我需要一个

  • 让我的知识库包含我的博客,兼具隐私和公开性
  • 博客能够自定义域名,并且需要支持双链
  • 支持Hugo(我之前博客模板使用的blowfish)

官方有一个付费的发布功能,但是不支持自定义域名,如何使用一套免费方案轻松实现我的需求呢

如何实现
#

  1. 使用 cloudflare 发布 Github Page页面
  2. 使用 Envelope 将代码传入github仓库

当你发布博客的时候自动部署博客网站,几秒钟就可以拿到最新的博客,而且自带CDN加速

搭建步骤
#

一: 准备步骤
#

  1. 复制一个Hugo 模板到你的github仓库,或者你喜欢我的博客模板,可以导入我的 Hugo 项目模板

你可以选择把你的git仓库公开或者私密,私密就是会影响你图床的图片15分钟后不可见

  1. 在Github中申请该项目的 token(在 github 的 setting > Developer settings )下面申请,推荐用最新的 fine-graned tokens,可以针对项目,最重要的权限是(ContentsPull requestsDeployments

  2. 假如你想把你的博客发布到其他平台,你可以选择安装 图床
    推荐安装 PicList ,推荐使用 Github 做图床,使用你上面申请的仓库作为Github仓库,并且存储路径设置为 static/images/

在 Obsidian 中 安装Image Auto Upload 插件,打开复制上传开关,即可享受丝滑上传图片到你的github仓库中

二: 发布网站
#

  1. 注册cloudflare, 点击计算创建Page页面,导入你的github账户,选择你的博客仓库,架构预设选择Hugo,保存部署即可完成发布,是不是很快

PS: 假如部署失败,可能现在的Hugo版本已经太高了,可以在环境变量中添加:HUGO_VERSION,值为 0.143.1

三:配置发布插件
#

obsidian 安装 Envelope 插件,预设选择 hugo(右上角presets 按钮)

配置Github Config: 填入你的github仓库,可以点击按钮验证一下

  1. 支持双链(强烈推荐配置)
    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  
  
![$1](https://zhanglun.work/$2)  
  
箭头向上  

username 为你的github 用户名,github_rep 为你的仓库名,将 https://zhanglun.work 替换成你自己的发布域名

假如你想使用 mermaid 图表,可以添加下面配置,来替换你markdown 中
例如:

graph LR; A[Lemons]-->B[Lemonade]; B-->C[Profit]

会被替换成

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": "![$1](https://zhanglun.work/$2)",  
        "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,兼顾了隐私和公开

111 - 这篇文章属于一个选集。

相关文章

Hugo 使用教程
·3 分钟
后端 软件
Hugo 使用教程
UML最佳实践
·2 分钟
后端 软件
最近面试的时候一个面试官指出了我对系统架构没有固定的认知,推荐我去好好学习一下UML这个语言,我花了几个小时在B站上看了UML这门课,下面是我对UML最佳实践的一点心得
Flink批和流处理的思考
·3 分钟
后端 软件
随着2019年8月份,Flink1.9.0正式发布,Flink并入Blink代码,开始同时支持批和流的处理,于此同时,批量同时处理所遇到的问题也就产生了
Apache Atlas 2.0.0部署实践
·6 分钟
后端 软件
Atlas 是一个可扩展和可扩展的核心基础治理服务集 - 使企业能够有效地和高效地满足 Hadoop 中的合规性要求,并允许与整个企业数据生态系统的集成。[来自百科]
FlinkSQL Client实战
·2 分钟
后端 软件
Flink SQL Client 是一个帮助用户直接运行SQL,而不要进行编译运行的工具,首先他支持多个数据源,在Flink1.9.0开始支持了Hive,并且在Flink 1.10.0时候发布了企业级Hive支持,这样就把批处理和流计算结合了起来,这篇博客详解了Hive在Flink SQL Client中的安装和使用,以及探索在上面做的一些复杂开发实践
Build Hadoop Cluster in One Computer
·4 分钟
后端 软件
If you are hadoop novice, I strongly suggest you beginning your study from single node building,you can learn from this website, after you having finshed build one single node, then you can reading my blog to learn how to run a N-node clusters just in your computer.