核心理念

  • 本地优先:无论何时都需要在本地的一个文件夹中保存日志的所有内容,包括附件的完整性。无数历史都教育我们任何一个运营商从长时间(5年、10年甚至更长时间)都是不可靠的。
  • 网络备份同步:本地的硬盘是不可靠的,而且也有从不同设备记录写作的需求,所有内容至少要有一份异地网络备份。
  • 简化创作和发布流程:指望每次写作都开终端敲一堆命令也不是不行,但可能会破坏创作动机。最好通过GUI点击按钮全部搞定。

工具介绍

本篇将使用如下工具组合完成Blog写作:

  • Obsidian及插件系统:
    • 社区插件:Custom Attachment Location
    • 社区插件:Obsidian Git
    • 核心插件:日记
    • 核心插件:模板
  • GitHub
  • Hugo

当按照本文进行所有的设定后,只需要操作Obsidian就能完成静态Blog的创作、管理、发布,无需操作其他软件。

搭建流程

  • 在本地安装Hugo环境,选择改造模板,添加插件等,可在本地发布测试,这个流程已经有很多教程,不再赘述;
  • 在GitHub上创建存储库,通过Git同步;
  • 在GitHub上配置Action,用于同步后的自动化发布,以下配置供参考,记得替换external_repository为你自己的仓库名:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
name: github pages

on:
  push:
    branches:
      - master  # Set a branch to deploy

jobs:
  deploy:
    runs-on: ubuntu-18.04
    steps:
      - uses: actions/checkout@v2
        with:
          submodules: true  # Fetch Hugo themes (true OR recursive)
          fetch-depth: 0    # Fetch all history for .GitInfo and .Lastmod

      - name: Setup Hugo
        uses: peaceiris/actions-hugo@v2
        with:
          hugo-version: 'latest'
          # extended: true

      - name: Build
        run: hugo --minify

      - name: Deploy
        uses: peaceiris/actions-gh-pages@v3
        with:
          deploy_key: ${{ secrets.ACTIONS_DEPLOY_KEY }}
          external_repository: p3p3pp3/p3p3pp3.github.io
          publish_branch: master  # default: gh-pages
          publish_dir: ./public
  • 使用Obsidian建立新的存储库,将存储库的路径设置为Hugo的Post路径;
  • 安装 Obsidian Git 插件,后续操作可摆脱命令行操作。

Obsidian设置

  • 为了使Obsidian与Hugo的日志格式兼容,开启核心插件模板,并创建Template目录新建内容如下的模板文件:
1
2
3
4
5
6
7
8
---
title: "标题"  
date: {{date:YYYY-MM-DD}}T{{time:HH:mm:ss}}+08:00  
# tags: [tsg1,tag2]  
# keywords: [keyword1,keyword2]  
# draft: true
# slug: "slugstring"
---
  • 为方便写作新Blog,开启核心插件日记,并设置日记模板为以上模板
  • 为清晰管理每篇Blog的附件,安装并开启社区插件Custom Attachment Location,设置Location for new Attachment./${filename}.assets,并开启Auto Rename选项
  • 编辑器开启严格换行显示front-matter
  • 文件与链接中,内部链接类型设置为插入基于当前笔记的相对路径,并关闭使用wiki链接

Hugo设置

日常使用

进行了以上设置后,只打开Obsidian,就可以:

  • 通过点击左侧图标,就可创建一篇新的Blog;
  • 通过粘贴的图片附件,自动归入对应同级目录下得Blog文件名.assets文件夹;
  • 写完Blog后,使用右侧面板检视、提交、推送变更;
  • Github的Action会触发,自动化使用Hugo生成静态博客并发布。

极大的降低了静态博客的管理、使用负担,真正实现配置一次,后续的创作无负担。

高级使用

  • 可灵活利用front matter,加上draft: true就是草稿,加上slug: "slugstring"就可指定发布时的文章路径,加上keywords: [keyword1,keyword2]就能改变meta中的keywords做SEO,加上tags: [tsg1,tag2]就能方便的在博客和Obsidian中以主题组织检索内容;
  • 配置Hugo的config.toml文件,打开mathjax = true支持公式显示,设置disqusShortname使用disques作为评论版;

结语

  • Obsidian强大的Live Preview使复杂格式的Markdown写作非常便利;强大的文档库功能包括对front matter的支持,可以方便管理、检索所有历史文档;
  • 通过与Git工作流的组合,做到本地优先、清晰版本管理、自动化发布,实现了长期内容创作与管理的的便利性、安全性、自主性兼得;
  • Github是此方案唯一依赖的平台,即使未来有不测,服务无法持续,我们还有本地的完整存档可以便利的在其他类似平台部署发布;
  • 目前来看这是一套近乎完美的解决方案, 不足之处就是配置略显繁琐,不过绝对值得投资点精力,一次搭建,永久收益!