GithubActionsでmicroCMSの新規記事をツイートする
はじめに
ここではmicroCMSで記事が投稿された際にTwitter(新X)上で記事のツイートを自動で行う方法について解説します。また、読者がmicroCMS、GitHubおよびGitHub Actions、Twitter API、Pythonについて基本的なことを理解していることを前提にしています。
⚠️ これらの技術について何も知らない場合は...
もしこれらについて何も知らないのであれば以下のドキュメントを読むことをおすすめします。
microCMSブログではmicroCMSを用いた様々な利用用途を確認できます。microCMSドキュメントとともに読むことでmicroCMSの使い方を理解することができます。GitHub CI/CD実践ガイドは優れた書籍です。CI/CD初心者に向けてGitHub Actionsの使い方について詳しく解説しています。また簡単な概要であればxkilinによるGitHub Actions入門:初心者向けガイドで確認することもできます。Twitter APIに関する日本語のドキュメントは少ないです。本記事で利用する各種API認証情報の取得情報はneru-devによるTwitter API v2(X API Free)の使い方・移行(2024年)【GAS】を読むことで理解できます。
自動ツイートの仕組みの概観
microCMSで記事の公開の通知をGitHub Actionsで受け取り、Pythonを起動してツイートを行います🕊️📮。
自動ツイートの仕組みの概観
使用するソースコード
以下のリポジトリに使用するソースコードが公開されています✨。
事前準備
事前準備としてツイートしたいアカウントのTwitter APIのダッシュボードから以下の認証情報を取得します。APIのApp PermissionsはRead and writeにしてください。Twitter APIへの登録や認証情報の取得方法がわからない場合はneru-devによるTwitter API v2(X API Free)の使い方・移行(2024年)【GAS】を読むことで理解できます。
- Bearer Token
- API Key (Consumer Key)
- API Secret (Consumer Secret)
- Access Token
- Access Token Secret
App Permissionは Read and write にする
GitHub Actionsを行うための新規のリポジトリとブログ用のmicroCMSのAPI(すでにブログの投稿などで使っているもの)を用意すれば事前準備は完了です👍✨。
microCMSの設定
新規記事のツイートを行いたいmicroCMSのAPIにGitHub用のWebhookを設定します。設定の仕方がわからない場合はコンテンツのWebhookを設定が非常にわかりやすく参考になります。トリガーイベント名はGitHub上での設定に使用するため控えておいてください。以降この記事ではトリガーイベント名をblog_posted
としたものとして解説します。また、通知タイミングの設定はコンテンツの公開のみにチェックを入れてください。これにより記事を公開したタイミングでのみ自動ツイートが行われます。
GitHubの設定で用いるため控えておく
コンテンツの公開のみにチェックを入れる
GitHubの設定
GitHub上ではmicroCMSから最新の記事を取得しTwitterにツイートをするPythonスクリプトをmicroCMSからWebhookによってトリガーされたGitHub Actionsにより起動します。
GitHub Actionsの設定
新規に作成したリポジトリ内の.github/workflows
ディレクトリ内にGitHub Actionsの設定のためのYAMLファイルを作成します。YAMLのワークフロー構文がわからない方はGitHub Acitonsのワークフロー構文が参考になります。
Secretsの設定
GitHub ActionsのSecrets設定ページにてmicroCMS APIのエンドポイントと認証情報、Twitter APIの認証情報、microCMSを使用しているブログのURLをSecretsに設定します。
認証情報のSecretsの設定を行う
イベントの設定
ワークフローのイベントにrepository_dispatch
というイベントを設定します。このとき、イベントのtype
をmicroCMSの設定で指定したトリガーイベント名blog_posted
にしてください。
ジョブの設定
Github Actionsのワークフロー内でリポジトリにチェックアウトします。
Pythonを使用するためPython環境のセットアップを行います。 ライブラリの依存関係を解決します。GitHub ActionsのSecretsを環境変数に設定します。
Pythonスクリプトを起動します。お疲れさまでした🍵。以上でGitHub Actionsの設定の解説は終わりです。次の節では起動するPythonスクリプトの解説を行います。
ℹ️コードの全文を見る👀
Pythonスクリプトを作成する
PythonスクリプトではmicroCMSから最新記事の情報を取得するためにrequests
を、ツイートを行うためにtweepy
を用いています。
microCMSから最新の記事を取得する
APIに対するリクエストに必要な情報を用意します。config
には環境変数から得られた情報が入っています。
ツイートを行う
tweepy
を用いて、ツイート用のクライアントを作成します。
ツイートする内容を作成します。ブログサイトの仕様等に応じて変更して下さい。私のサイトではブログのURLの末尾にmicroCMSのコンテンツIDを指定する仕様です。
tweepy
によってTwitter APIにツイートするリクエストを送信します。
お疲れさまでした🍵。以上で自動ツイートの解説は終わりです。次の節ではよくあるトラブルについて解決策を説明します。
ℹ️コードの全文を見る👀
トラブルシューティング
環境変数がPython側から取得できない
GitHub ActionsのSecretsの設定が適切に行われていない可能性があります。また、ワークフローのYAMLファイルで環境変数の設定が適切に行われていない可能性があります。確認してみましょう。
microCMSからデータを取得できない
X-MICROCMS-API-KEY
の値がエンドポイントに対応した適切な値が設定されていない可能性があります。コンテンツの種類ごとにエンドポイントやX-MICROCMS-API-KEY
の値は異なるためツイートしたいコンテンツに対応した値を設定できているか確認してみましょう。
ツイートができない
Twitter APIのApp Permissionsは初期設定ではRead and writeになっていないので変更したかどうか確認しましょう。また、同一内容で連続してツイートすることはできないので、直近のツイートと同じ内容のツイートをしようとしていないか確認してみましょう。API Key等の認証情報の適切な値がSecretsに設定されているか確認してみましょう。
おわりに
この記事の内容はこれで終わりです。お疲れさまでした🎉✨。
質問がありましたらDiscussionにお願いします。
以下のリポジトリに使用するソースコードが公開されています✨。
Discussion