しとちゃぶろぐ

しとちゃぶろぐ

しとちゃのぶろぐなん~!

🤔GitHub Actionsでブログを自動更新!Notion連携ブログを自動デプロイする

GitHub Actionsでブログを自動更新!Notion連携ブログを自動デプロイする

はじめに

ブログの更新って、意外と手間がかかりますよね。特に、Notionで記事を書いて、それをブログに反映させるとなると、手動でデプロイする必要があって、ちょっと面倒です。そこで今回は、GitHub Actionsを使って、Notion連携ブログを自動で更新する方法を試してみました。

Image in a image block

私は現在、AstroとNotionを連携させたブログ(astro-notion-blog)を使っています。Notionで記事を更新しても、そのままではブログに反映されません。デプロイしたタイミングで初めてNotionのデータが反映される仕組みです。

そこで考えたのが、GitHub Actionsを使った自動コミットです。指定した時間になると、自動でコミット処理が実行され、それがデプロイのトリガーになる、という魂胆です。

自動コミットの仕組み

GitHub Actionsを使って、以下のスクリプトを実行します。(.github/workflows/auto-commit.yml)

name: auto-commit

on:
  workflow_dispatch:

  schedule:
    - cron:  "0 0 * * *"

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3

      - name: Set current datetime as env variable
        env:
          TZ: 'Asia/Tokyo'
        run: echo "CURRENT_DATETIME=$(date +'%Y-%m-%d %H:%M:%S')" >> $GITHUB_ENV

      - name: Commit
        run: |
          git config --global user.email ${{ secrets.USER_EMAIL }}
          git config --global user.name ${{ secrets.USER_NAME }}
          echo -e ${{ env.CURRENT_DATETIME }} >> commit_log.txt
          git add commit_log.txt
          git commit -m "[add] 自動コミット:${{ env.CURRENT_DATETIME }}"
          git push origin main

※参考:https://dimzakki.com/github-actions-autocommit/

このスクリプトのポイントは以下の通りです。

  • on.schedule: 毎日0時0分(UTC)に自動実行されるように設定
  • steps:
    • actions/checkout@v3: リポジトリをチェックアウト
    • Set current datetime as env variable: 現在日時を取得し、環境変数に設定
    • Commit: gitのユーザー設定を行い、日時を追記した上でコミット&プッシュ

注意点:

  • GitHubリポジトリにUSER_EMAILUSER_NAMEという名前で環境変数を設定する必要があります。
Image in a image block

  • Read and write permissionsを有効にしておかないと、書き込み権限がなくエラーになります。
Image in a image block

この仕組みを使うと、毎日0時に自動でコミットが実行されます。これにより、Notionで記事を更新していれば、その変更が自動的に反映されるようになります。(デプロイの仕組みが別途必要です。)

上手に動けば下記のようになります。

Image in a image block

うん!しっかりcloudflareでも再デプロイされてますね!!

Image in a image block

まとめ

GitHub Actionsを使った自動コミットによって、Notion連携ブログを自動更新できる可能性を探りました。自動化することで、ブログ更新の手間を減らすことができるため、よりコンテンツ作成に集中できるはずです。すごいね~