はじめに

どんな人向け?

  • Notionでブログ記事を書いて、GitHubActionからHugoを使ってビルドしている人
     ⇒記事

問題

Notionでブログ記事を書いているとGitHubにコミットするわけではないので、
GitHubの草が生えない。。。
けど、Notionだとブログ記事を書きやすいから引き続き使いたい。

解決案

  • ビルドしたブログ記事をGItHubAction中でGitHubにコミット
  • コミット対象のブログ記事にはdraft状態(下書き状態)も含む
    → モチベーション維持のため、下書きでもコミットしてGitHubの草生やしたい笑
  • ただし、draft状態のブログ記事は非公開にしたい → Hugoのデフォルトだとdraft状態でも公開されてしまう

STEP1. GitHubに自動コミットする

1. GitHubActionsのワークフロー設定

GitHubActionsのワークフローファイルで、
Hugoのビルドが終わった後の処理に以下を追加する。
本ブログ記事の設定は以下設定ファイルを参考にしてください。 https://github.com/ykitaaa/tech-blog/blob/main/.github/workflows/cd.yml

図1. ワークフローのyml

1
2
      - name: Backup
        uses: stefanzweifel/git-auto-commit-action@v5

※ 注意:mainブランチにコミットしないと草生えないです

2. コミット対象から画像ファイルを除外する

Notionから取得した画像のURLがAWS S3になっていて、
毎回違うファイル名で取得される(?)ようなので、 とりあえず画像ファイルを除外する。
以下の例はpublic配下のjpgおよびpngを除外する設定。
試していないが、他のファイルも同じと思われる。

図2. .gitignore

1
2
 public/*.jpg
 public/*.png

STEP2. draft状態のブログ記事を隠す

プログ記事(posts)のMarkdownに以下設定の追加。
たいていは、どのテーマであっても以下設定でRSSやsitemapからも隠せるので簡単にできる。

図3. ブログ記事のMarkdown設定

1
2
3
draft: true
hidden: true
nositemap: true

draft:ドラフト状態
hidden:記事を隠す(一覧に出ないだけなので、直接遷移は可能)
nositemap:sitemap.xmlから除外する(検索エンジンからの検索対策)

Notionのページでhiddenプロパティを追加することで設定できる。
Notionで新規記事を作る際に上記の設定がデフォルトになるように設定しておけば使いやすい。

図4. Notion側のプロパティ(隠す場合)

参考URL

https://zwbetz.com/discreet-drafts-in-hugo/