Hugo on Obsidian
ブログを再び Hugo-based に戻した はいいが、以前に増して書く敷居があがってしまった。なんとかしたい。最近 Obsidian を使い始めたので Markdown は Obsidian で書き、それを Hugo 経由で公開できないかと試すと、できた。
要素技術:
- Hugo Mounts: 任意のディレクトリを Hugo の要求するディレクトリ構造にマップする Hugo の設定。
- Obsidian dot folders: Obsidian は “.” から始まるフォルダは vault ビューから隠してくれる。
- Obsidian Unique note creator core plugin: 日付のタイムスタンプがついたファイルを指定したフォルダに一撃でつくる標準プラグイン。
- SilentVoid13/Templater: A template plugin for obsidian Obsidian 標準よりちょっと強力なテンプレートプラグイン
やりかた:
- 書く側の準備
- Obsidian vault の適当なフォルダを blog のコンテンツ置き場にする、と決める (
/contents/posts
とか相当)。 - “Unique note creator” の設定で、新しい unique note はこのフォルダ以下に作られるようにする。(設定として日付ベースのサブティレクトリもパターンとして指定できる。)
- このディレクトリ以下のファイルに対し Templater plugin の Folder Templates を設定し、front matter の stub を適用する。こうすると command palette から unique note を作った瞬間に blog の stub が現れる。
- Obsidian vault の適当なフォルダを blog のコンテンツ置き場にする、と決める (
- 読ませる側の準備
.hugo
というディレクトリを vault の中につくり、そのなかに hugo で必要になるファイルを揃える。ただしコンテンツは “Mounts” 機能を使って、親フォルダになる Obsidian vault 内の所定のフォルダを指定する。- そんだけです. There is no step two!
世の中の人にとって意味があると思われる tips は以上ですが、細々したこと:
- preview とか deploy は頻繁にやるので shell script を用意しておく。
- デプロイは Cloudflare Pages を使ってみた。Direct upload 方式。以前は Netlify を使っていたが, Obsidian vault の git repo は Obsidian Git の sync を使っているため更新頻度が高すぎて CI-based の deploy には向かない。あと手元の preview に使っている hugo と CI の hugo でバージョンがズレてトラブルになることもあった。direct upload は手元のファイルを Cloudflare にアップロードするだけなので素朴で堅牢な気がする。
Obsidian + static site generator は Obsidian の中の人もやっている らしいので、そこそこ筋のいい方法なんじゃないでしょうか。Hugo の shortcode とかを使い出すとどうなるのかよくわからないけれど。