ブログの埋もれた記事を自動でランダムにTwitterに投稿出来るようにする
管理しているメインサイトの記事が300本を超えてきた。
サイトのコンテンツが増えてくると悩ましいのが、過去の記事の掘り起こし。
ブログ運営術を教えてくれるサイトを見てみると、古い記事はリライトするなり順位を下げるだけの不人気記事なら削除するようにとおススメされることもしばしば。
なるほど、検索順位を上げていくためならそれもいい。
でもね
自分で読み返してみてもこのままの内容でいいんじゃないかと思えるものもあるわけで。なにより専業でブログを運営しているわけではないのでリライトとかしている時間はほとんどない。
そうなると考えるのが、とりあえずこういった過去の埋もれた記事をランダムでピックアップしてTwitterやFacebookなどのSNSに投稿して読者を呼び込むこと。人数はそこまで大きくなくてもいい。とりあえず、こんな記事があるんだよ、と世の中に伝えたい。
ただ、時間がない。これが問題。
以前はSocialdogの予約投稿に1記事ずつ登録したりもしてみたけれど、そもそも記事を探すのが面倒。ピックアップする記事をなるべく時系列的にばらつかせようとすると、ひたすら面倒。これを自動化したくて仕方なくなった。
調べてみると、いくつか方法がある。簡単そうなのはWordpressのプラグインを入れてしまうこと。今回の目標は、過去の記事をランダムにかつ定期的にTwitterに投稿すること。Facebookはとりあえず、横に置いておく。
この条件だと、良さそうに思えたのがRevie Old Postsというプラグイン。
搭載されているすべての機能を使うには有料の登録が必要になるようだが、無料でもそれなりに使えそうだったので早速試してみた。
結果、即アンインストールした。
使い勝手がそこまで悪かったわけではなく、動作もそこまで悪くはなさそうだった。WPの現行バージョンでの動作確認が取れていなかったが、問題なく使えてもいた。では、なぜすぐに使用をやめたのか。
このプラグイン、ピックアップできる過去記事の範囲に制限があった。
この画像が実際の設定画面の一部。問題なのが上から3つ目の項目、「Maximum Post Age」が有料プランのみの設定に指定されていること。これ、要はどれだけ過去の記事までピックアップの対象にするのか、という設定なわけだが、無料プランでは365日、つまり1年以内の公開記事に限定されてしまう。
これでは意味がない。
有料プランを考えてもみたが、年間75ドル、もしくは買いきりで225ドルとちょっとお高い。
そこで別の方法を考えてみた。
そして思い出したのが、Twitterに自動で投稿しているBotの存在。過去の記事を自動で投稿させるのだってやっていることはBotと同じ。なら、出来るのではないだろうか。
さっそく調べてみたらやり方は簡単に分かった。実行する手順もそこまで面倒ではなく、お金もかからず出来るようだ。
なら、やってみるしかないだろう。
という思い付きだけでGoogleスプレッドシートを使って運用可能なTwitter Botを作ってみた。
やり方はこちらのサイトを参考にさせていただいた。このサイトの通りにやれば困ることはほぼないので、もうここでは説明はしなくていいだろう。コピペすればそれで8割がた終わる。
今回実際にやってみて困ったのは、こちらの記事に説明のなかったTwitter Developer Portalへの登録。登録自体は英語であること以外は特に問題なかったのだが、最初に分からなかったのがTweet Bot用アプリケーションのパーミッション設定(App permissions)を「Read and Write」に変更する方法。いくらプロジェクトの内容を見てみても最初の時点では変更する方法が分からなかった。
実はこれ、上記の記事の内容を先に進めてOAuth1の設定まで終わらせてからTwitter Developer Portalに戻って、コールバックURLの設定に進む時点で変更できるようになる。
ちなみに2022年3月8日時点では上記の記事に書かれている「Enable 3-legged OAuth」の設定はない。OAuth1かOAuth2の選択をするだけになっているので、ここは素直にOAuth1を選んで作業を進めればほぼ、上の参考記事に沿って進んでいける。
次に引っかかったのが、作ったTweet Botを走らせた時に出てきたGoogleからの認証に関する警告。認証の説明に関するボタンをクリックして出てくるポップアップウィンドウの左下にある、安全性の無視して認証する手順を踏めば問題なく出来るようになるのだけれど、最初はそこに気が付かずしばらくウロウロした。
そうしたすったもんだを踏んで、とりあえずスクリプトの準備はできた。次に必要なのが、Botに使うリストの作成。
最初の発想が手間をかけずに過去の記事をSNSに流したい、だったのでここでリスト作りに手間はかけたくない。300記事もいちいちタイトルとURLをとってきてリスト化していてはいつ終わるのか分からない。
てか、それをするなら今まで通りSocialdogで運用する。
とうことでここでも作業を簡単にしてみた。
まず使ったのが、Export all URLsというプラグイン。これを使ってWP中に公開されている任意の記事のタイトルとそのURLをcsvとして抽出してきた。
ただこのままだとGoogleスプレッドシートにコピペをしてもタイトルとURLが別々の列に入ってしまって具合が悪い。そこで一度、この2列をまとめてコピーして適当なテキストエディタにペースト。そうするとタイトルとURLが一列に並ぶようになる。
もっともこのままGoogleスプレッドシート側にコピペしてもまた2列に分かれて張り付かれてしまうので、まずはタイトルとURLの間にあるタブをテキストエディタの置換機能を使って半角スペースに一括で置き換える。
ちなみに自分は安定のVS-Codeで処理した。
あとはテキストエディタ内のすべての文字列を一括選択してGoogleスプレッドシートの1列目にコピペしてやれば狙い通りにタイトルとURLが1セル内にまとめて入ってくれる。一応、文字数を管理するためにウェイトを決めた列の右横に文字数管理列を作ることにした。
こちらは”LEN”関数を使ってタイトルとURLの入っているセルを指定すればそれで完了。仮に140字を超えているところがあれば、修正しておけばいいだろう。
この後は新しい記事を公開したらGoogleスプレッドシート側のリストに新しく追加するなり、一定期間ごとにExport all URLsを使って新しいリストを取得してリストを上書きするなりすればいい。
定期処理はApps Scriptのプロジェクトページの右メニューにある [トリガー] で設定すればいい。自分は今のところ、あまり頻繁に過去の記事がTwitterに投稿されてもどうかと思うので、曜日を指定したトリガーを2つ作って週に2回投稿される設定にして様子を見ている。
TwitterのBot、思ったよりも簡単に出来ることに軽く驚いた。たぶんこのやり方を説明しているのであろうと思われる有料noteなんてものまであるのに。
これならわざわざプラグインをサイトに入れるよりも、有料サービスを利用するよりも、自分でサクッとやってしまった方がいいように思える。
まぁ、しばらく走らせてみて安定した動作が出来るようであれば、だけれど。