GitHub Actionsでブログを自動更新!Notion連携ブログを自動デプロイする
はじめに
ブログの更新って、意外と手間がかかりますよね。特に、Notionで記事を書いて、それをブログに反映させるとなると、手動でデプロイする必要があって、ちょっと面倒です。そこで今回は、GitHub Actionsを使って、Notion連携ブログを自動で更新する方法を試してみました。
私は現在、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_EMAIL
とUSER_NAME
という名前で環境変数を設定する必要があります。
Read and write permissions
を有効にしておかないと、書き込み権限がなくエラーになります。
この仕組みを使うと、毎日0時に自動でコミットが実行されます。これにより、Notionで記事を更新していれば、その変更が自動的に反映されるようになります。(デプロイの仕組みが別途必要です。)
上手に動けば下記のようになります。
うん!しっかりcloudflareでも再デプロイされてますね!!
まとめ
GitHub Actionsを使った自動コミットによって、Notion連携ブログを自動更新できる可能性を探りました。自動化することで、ブログ更新の手間を減らすことができるため、よりコンテンツ作成に集中できるはずです。すごいね~