ブログを書きたいと思うことは多いが、はてなブログなどのサービスは自由度が低い。webページまで書きに行くのが手間がかかる。加えて手元で書いたものをコピペするのは冗長だと感じてしまう。
別の方法として、hugoや以前使用していたhexoなどの静的サイトジェネレータを github pages にデプロイする方法がある。しかしこれではファイルに記事の内容を書き出してコマンドを実行して github pages にデプロイする必要がある。
obsidian-gitを使用したHexoの自動デプロイ
そこで、日頃から使用している obsidian の git 同期の機能とgithub actions の機能を組み合わせることで自動デプロイされるようにする。
hexoの環境構築
手始めにHexo公式の通りに npm からインストールし、流れに沿ってhexo server
で localhost:4000 にてwebページが表示されるようにする。
Github Pages にデプロイしてみる
ローカル環境でhexo clean && hexo deploy
などのコマンドにて、そもそも手動でデプロイができることを確認すると安心。 方法はHexo公式や参考にした記事に詳しく記載されているため、そちらを参照してほしい。
Github Actions にて自動デプロイするようにする
Hexo公式のGithub Pagesの設定に設定の中身も記載してある。 Actionsを設定する際の注意点として、以下がある。
- github Actionsの設定を変更する必要がある
- 4の In your GitHub repo’s setting, navigate to Settings > Pages > Source. Change the source to GitHub Actions and save の指示
- github Actions の permission の設定をしないといけない
- read / write の権限を与える
- ここの記事を参考にしました
あとはpushをして Actions が設定できることと、Pagesにデプロイされていることを確認する。
(オプション)テーマの設定
hexoの公式がテーマ一覧を提供してくれている。 (リンク切れになっているページが多いので、その際は手元で動かして確認するしかない)
今回は良さそうと思ったviviaを使用している。 決め手はカテゴリの階層構造がちゃんとしていることと、UIが整っていると感じたため。
Obsidianの設定
これはHexoのリポジトリのsorce/_postをObsidianのvaltとして登録する。 その後 community plugin から Obsidian Git を追加し、commitやpushのタイミングを設定するだけである。
まとめ
この方法で、
- Obsidianに記事の内容を書く
- Git プラグインにより自動で Githubにpushされる
- pushされたことによりGitHub Actionが実行される
- GitHub Pagesに書いた記事が追加される
という流れを作ることができた。 そしてブログの記者は1のみをするだけでよい(やったね)
書きかけの途中の記事が自動pushにより公開されるというのが嫌な場合は、hexoのfront-matterにpublished
という設定がある。これがfalseの際はその記事は公開されない。そのため記事の記述が終わった際にtrueに直すと公開されるようになる。