【自動化】ブログページの週間ランキングをXに自動投稿する方法

今回はブログページの週間ランキングをXに自動投稿する方法を紹介していきます。今回扱うブログページは「https://blog.since2020.jp/」です。
はじめに
今回はブログページの週間ランキングをXに自動投稿する方法を紹介していきます。今回扱うブログページは「https://blog.since2020.jp/」です。WordPress上でブログが管理されており、様々な記事が投稿されています。今サイト上の週間アクセスランキングを作成し、Xに投稿するフローを作成していきます。週間アクセスランキングに含める情報は
- 日付
- ブログのタイトル
- アクセス数
- url
です。
前提
今回作成する箇所は投稿までのフローです。したがってアクセス数のテーブルやブログのテーブルは事前に準備してあるとします。
1,Google Search Console
今回はブログのページを「Google Search Console」でパフォーマンスを事前に監視しているとします。
「Google Search Console」とはGoogle検索でのwebサイトのパフォーマンスを分析できるツールのことです。
ここでは詳しく説明しませんが、このようにリンクと、そのリンクに対するクリック数などを記録してくれます。
2,BigQuery
「Google Search Console」では各urlごとの情報を保持してくれますが、ブログのタイトルをレコードの中に含んではくれません。そこで、のちにタイトルを抽出する際に作成するテーブルを用意します。今回はスクレイピングで取得した情報をBigQueryに保存します。
以下は保存してある情報の一部です。
htmlのタグにより情報を抜き出しています。ここでタイトルが「h2」に該当し、「url」がブログのurlに対応します。
スクレイピングの詳細は割愛しますがタイトルとurlを保持するテーブルが準備できれば問題ありません。
自動化フローの作成
さて、テーブルの準備が完了したら本題である自動化フローの作成を行っていきましょう。
今回は、自動化ツール「Make」を使用します。「Make」とは様々なサービス同士を連携させて自動化ツールを作成できるツールのことです。
ここでは、「Make」上で
1,Google Search Consoleから必要なデータを抽出する
2,抽出したデータから適合する情報をbig queryから抽出する
3,データを加工する
4,Xに投稿する
というフローを作成します。各フローに沿って解説します。
1,Google Search Consoleから必要なデータを抽出する
では、「Make」でアカウント登録をし、新しいシナリオを作成してください。これで事前準備が完了です。では早速、+から「Google Search Console」の「run a report」を選択してください。
「connection」からGoogle Search Consoleとの接続を終えたら画像のような設定を行います。
Site URLは監視しているサイトを選択し、「Start Date」「End Date」で監視する期間を選択します。「Make」では独自の関数を使用します。画像のフォーマットで今日の日付から過去1週間に関する情報を抜き出すことが出来ます。最後に「limit」を5にすることで5つのレコードを抽出します。なお、Google Search Console上では「クリック数」の降順に並んでいるため、上から5つのレコードを算出することで「クリック数」の多い5番目までのレコードを抽出することが出来ます。
2,抽出したデータから適合する情報をbig queryから抽出する
では、続いてGoogle Search Consoleから抜き出した「url」に一致するブログのタイトルをbig queryから抽出していきます。
同様に+から「big query」の「run a query」を選択した後、connectionより接続を行ってください。その後、画像のような設定を行います。なお、「Project ID」から
「Table ID」は接続したいテーブル(今回はブログの情報が記載されているテーブル)を選択します。
さらに「Query」の部分で必要な情報を抜き出します。
where句以下で条件を記載しますがこの条件は
LOWER(bigqueryのurl) = LOWER(google search consoleから抽出したurl)
となっています。なお、LOWERは大文字をすべて小文字に変換する関数です。urlは大文字と小文字の区別がないため、異なる形で保存される場合があります。こちらにも対応できるようにLOWERを使用しました。
データを加工する
ここまでで必要なデータを「Make」上に抜き出すことは完了しました。しかしながら「Make」上でGoogle Search Consoleからデータを抜き出した際、1つ1つのデータが配列のように抜き出され、後続の処理がバラバラになってしまいます。すなわちこのままXに投稿しようとすると、各データに対応するツイートが分けられてしまい、1ツイートにまとめることが出来ません。
「Make」ではこのように配列上のデータを一つにまとめる「Array aggregator」というモジュールが用意されています。前回同様にbig queryの後続に+から「Array aggregator」を接続します。
ここで「Source Module」に「Google Search Console」を選択(1つにまとめたいoutputの選択)をさらに「Aggregated fields」に「Mappable Rows」「Clicks」「Page」を選択します。
これで抽出した情報を1つにまとめることが出来ます。
ここまでで作成したモジュールを一度動かしてみましょう。
左下の「run」から動かすと次のような結果が出るはずです。
inputの部分でBundleが5つあるのがoutputの部分で1つにまとまっていることが分かるかと思います。なお、このbundle 1の中に必要な情報が保持されています。
Xに投稿する
最後にXへと投稿していきます。Xへ投稿するにはapiキーなどが必要です。Xの開発者ポータルから必要なキーを発行してconnectionを確立させます。
その後、text contentに以下のように記載します。
なお、画像は1位まで。
少し複雑ですが、このように記載することで内部の情報を抜き出してtext contentに含めることが出来ます。
ここまで作成したフローは以下のようになっています。
実際に投稿してみる
最後にrunから処理を実行してみましょう。完了すると画像のように投稿されるはずです。
「Make」上で実行間隔を週1回とすると週次ごとにランキングを自動で投稿してくれるようになります。
終わりに
今回は「Make」を使用してXへの週間アクセスランキングを自動投稿する仕組みを作成しました。省略してしまった部分も多いですが、後々解説する予定なので待っていてください!