野良ジニアのスクラップブック

野良エンジニアによる雑記帳。技術、本、便利グッズなどを気の向くままに。

【コピペで簡単】はてなブログ用 過去記事TweetBot を導入しよう!【全自動Bot】

 あとで読む

こんにちわ、野良ジニアです。

Twitter をチェックしてると、たまに見かけるこんなツイート。

どうやら、ワードプレスだとプラグインで簡単に過去の記事をつぶやけるみたいです。

「同じことがはてなブログでもやりたいなー」と思い、先人が既にいるだろうと検索。軽くググッた感じだと、 半自動でのやり方は見つかったのですが、全自動なやり方は見つからず… (検索のやり方が悪いだけかも

「無いなら作っちゃえ」 と思ってカッとなってやりました。こちらが完成イメージです。

以下、画像満載で手順を解説していきます。

ググって見つけた記事

はてなブログ 過去記事 bot で検索。見つかった(僕がチラ見した)のは以下の記事たち。

以下のサイトとか知らんかったので、大変勉強にはなったのですが手作業が入るのは個人的に納得いかず…

twittbot.net

Screaming Frog SEO Spider

てな訳で、 全自動でやれるやつを作りました! 色々と参考にしたページがあるのですが、それは最後にまとめて書いておきます。

使い方

「こんなとこで苦労したぜー、頑張ったぜー」 って話を先に書きたいけど、大多数の人は 「そんなんどうでも良いから使い方書けや」 って感じだと思うので、先に使い方書いておきます。

使うために必要なもの

設定手順

2018/01/19 10:13, 22:38 追記

id:shidoma (@shidoma2622) さんが導入してくれました!

いくつかハマった箇所があるとのことなので、手順を再確認中です。確認取れた箇所から随時、追記/更新 していきます。

  • Twitter アプリ認証で、Google アカウントとの連携許可が必要 : 確認/追記 完了!
  • ツイート(postOldEntry)がエラーになる : 確認/追記 完了!
    • AccessTokenReadOnly になる場合があるようです。 検証してたら、Twitter アプリ作成の Rate Limit に引っかかってしまいました。制限解除待ち(たぶん24時間後)中…
    • 上記Consumer Key を再生成すればいけるみたいでした。手順更新済です。




空のスプレッドシートを作成する

以下にアクセス。ログインしてない場合はログイン。

docs.google.com

空のシートを作成して、名前を適当に入力。例では「過去記事Bot」としています。

f:id:ryota-17:20180118165109p:plain

f:id:ryota-17:20180118165110p:plain

f:id:ryota-17:20180118165111p:plain




GAS を作成する

「ツール」 → 「 スクリプト エディタ」をクリック。別ウィンドウ(タブ)が開くと思います。

f:id:ryota-17:20180118165112p:plain




プロジェクト名、ファイル名を変更する

プロジェクト名、ファイル名を変更しておきます。例では、プロジェクト名「過去記事Bot」、ファイル名「postOldEntryBot.gs」としています。

f:id:ryota-17:20180118165113p:plain

f:id:ryota-17:20180118165114p:plain

f:id:ryota-17:20180118165115p:plain




Twitter用ライブラリを読み込む

GAS の画面で「リソース」→「ライブラリ」をクリック。

f:id:ryota-17:20180118165122p:plain




ライブラリを追加の入力欄に 1rgo8rXsxi1DxI_5Xgo_t3irTw1Y5cxl2mGSkbozKsSXf2E_KBBPC3xTF と記入して「追加」をクリック。

f:id:ryota-17:20180118165123p:plain




追加できたら、バージョンを最新にして「保存」をクリック。

f:id:ryota-17:20180118165124p:plain


コードをコピペする

こちらのコードをコピーして、先ほどのファイルに上書きします。[Ctrl] + [a] (or [Cmd] + [a])で全選択してコピーしたい、という方はこちらのリンクを開いてください。

はてなブログの過去記事を定期的にGASでツイート




コピペしたら、こんな感じ。 CONSUMER_KEY, CONSUMER_SECRET, BLOG_URL(, PROMOTE_OK) は後で書き換えます。

f:id:ryota-17:20180203145424p:plain




Twitter アプリを作成する

apps.twitter.com

上記にアクセス。ログインしてなければログインします。

アクセス後、「Create New APP」をクリック。

f:id:ryota-17:20180118165117p:plain




必要事項を入力する

必要事項を入力していき、チェックボックスをチェックして「Create your Twitter application」をクリックします。

f:id:ryota-17:20180118165119p:plain




必要事項は以下の通りです。

  • Name*:適当で良いです。例では「HatenaOldEntryPost」にしています。
  • Description*:適当で良いです。例では「Random pickup and hatena blog old entry.」にしています。
  • Website*:自分のブログURLを入力します。
  • Callback URL:先ほど作成した GAS の URL の edit?... より手前部分をコピペします。以下の写真を参照。

f:id:ryota-17:20180118165118p:plain




2018/01/19 10:41, 22:40 追記

【Skipしてください】Access Token を発行する(検証 済。誤り)

このセクションは 未検証です。推測で書いています。検証後、更新予定です。 推測が外れてました_(:3」∠)_ この手順はやらなくて良いです!

アプリ作成後、 Access Token を事前に発行しておくことで、以下のエラーが回避できる気がします。(アプリ作成が制限されており確認できず…制限解除され次第確認します。)




アプリケーション作成後、「Keys and Access Tokens」タブをクリックし、下の方にある「Create Access Token」(的なやつ)をクリックします。Access Token が発行されて、権限が「Read and Write」になっている事を確認できれば OK です。




Consumer Key/Secret を再生成する

アプリケーション作成直後だと、上手く動作しないケースがあるみたいなので、一度 Consumer Key/Secret を再生成します。

「Keys and Access Tokens」タブをクリック、Access Level が「Read and write」になっていることを確認します。「Read and write」になっていることが確認できたら、「Regenerate Consumer Key and Secret」をクリックします。「Read-only」となっている場合は、次の手順で設定変更を行います。

f:id:ryota-17:20180119232703p:plain




「Read-only」となっていなかった方は次手順にスキップしてください。「Read-only」となっている場合は、隣にある「Permissions」タブ、もしくは「modify app permissions」の表示をクリック。

「Read and Write」を選択して、「Update Settings」をクリックします。画面が更新されたら、「Keys and Access Tokens」タブに戻って、「Regenerate Consumer Key and Secret」をクリックします。

f:id:ryota-17:20180119232704p:plain




「本当に再生成する?」と聞かれるので、「Regenerate Consumer Key and Secret」をクリックします。

f:id:ryota-17:20180119232705p:plain




画面が更新されて、Consumer Key/Secret が変わっていることが確認できれば OK です。

f:id:ryota-17:20180119232706p:plain

2018/01/19 10:41, 22:40 追記終わり




Consumer Key/Secret をコピーする

Consumer Key/Secret 再生成後、「Keys and Access Tokens」タブに表示される Consumer Key (API Key)Consumer Secret (API Secret) をコピーします。 他人に漏らさないように注意してください。

f:id:ryota-17:20180118165120p:plain




コピーした Key, Secret を GAS の先頭行に入力します。あわせて、 BLOG_URL も設定します。

f:id:ryota-17:20180118165121p:plain




2018/02/03 15:08 追記

PROMOTE_OK を設定する

過去記事ツイート時に、この記事の宣伝にご協力いただける方は PROMOTE_OK = true に、そうでない方は PROMOTE_OK = false に変更してください。

f:id:ryota-17:20180203145533p:plain




PROMOTE_OK = true の場合は、過去記事ツイートのリプライとして、この記事へのリンクがくっつきます。もっと色んな人に使って欲しいです_(:3」∠)_

f:id:ryota-17:20180203150520p:plain

2018/02/03 15:08 おわり




アプリケーションを認証する

認証を行う

「関数を選択」→「authorize」をクリック。

f:id:ryota-17:20180118165125p:plain




「authorize」が選択されていることを確認したら、再生マークをクリック。

f:id:ryota-17:20180118165126p:plain




2018/01/19 10:18 追記

Google の認証が必要(needs your permission to access your data on Google)と表示されたら「許可を確認」をクリック。

f:id:ryota-17:20180119102049p:plain




スプレッドシートを作成した Google アカウントを選択(or ログイン)

f:id:ryota-17:20180119102050p:plain




「このアプリは確認されていません」と表示されたら、「詳細」→「"アプリ名"(安全ではないページ)に移動」をクリック。

f:id:ryota-17:20180119102051p:plain

f:id:ryota-17:20180119102052p:plain




Google のアクセス許可(アプリ連携)画面が表示されたら、「許可」をクリック。

f:id:ryota-17:20180119102053p:plain

2018/01/19 10:18 追記終わり




エラーが表示されなければ実行完了です。1〜2秒程度で実行完了すると思うので、「表示」→「ログ」をクリック。表示される URL をコピーして、別ウィンドウ(or 別タブ)で開きます。

f:id:ryota-17:20180118165127p:plain f:id:ryota-17:20180118165128p:plain




Twitter のアプリケーション連携設定画面が出たら、「ツイートする。」ができること側にあるのを確認します。問題なければ「連携アプリを認証」をクリック。 Success と表示されれば認証完了です。

f:id:ryota-17:20180119232708p:plain f:id:ryota-17:20180118165130p:plain




2018/01/19 23:51 追記

「ツイートする。」ができないこと側にある場合、「キャンセル」をクリック。この手順からやり直してみてください。

f:id:ryota-17:20180119232707p:plain

2018/01/19 23:51 追記終わり




スクリプトの動作確認を行う

記事情報を抽出する

ブログの記事情報を抽出できるか確認しておきます。「scrapingHatenaBlog」を選択して、再生マークをクリック。

f:id:ryota-17:20180118165131p:plain




スプレッドシートに記事情報が出力されれば成功です。念のため、漏れなど無いかざっと確認してください。

f:id:ryota-17:20180118165132p:plain




記事情報をクリアする

Bot は常に最新の記事情報を保持しておくために、一度シートをクリアしてから最新情報を取得するように設定します。シートのクリアが動作するか確認しておきます。「clearSheet」を選択して、再生マークをクリック。スプレッドシートが空っぽになっていれば成功です。

f:id:ryota-17:20180118165133p:plain




過去記事をツイートする

過去記事ツイートを動作確認します。「scrapingHatenaBlog」を実行して、記事情報が抽出された状態にしておいてください。

記事情報がスプレッドシートに抽出された状態で、「postOldEntry」を選択して再生マークをクリック。

f:id:ryota-17:20180118165134p:plain




以下のようにツイートがされていれば成功です。

f:id:ryota-17:20180118165135p:plain




自動実行を設定する

ここまでで GAS が正常に動作して、過去記事をツイートできることまで確認できました。あとは定期的に実行するよう設定したら終了です。

時計マークをクリック、「今すぐ追加するには〜」をクリックしてトリガーを追加していきます。

f:id:ryota-17:20180118165136p:plain

f:id:ryota-17:20180118165137p:plain




以下の写真では、

  • AM3〜4時にスプレッドシートを空にして
  • AM4〜5時に記事情報を抽出して
  • 6時間おきに過去記事をツイートする

という設定にしています。お好みのタイミングや間隔を設定されてください。

f:id:ryota-17:20180118165138p:plain




「通知」をクリックすると、GAS が起動失敗した時に通知を受け取れるように設定できます。必要に応じて設定してください。

f:id:ryota-17:20180118165139p:plain




これで全ての設定が完了です、お疲れ様でした。心配症な方は、起動タイミングを1分や5分にして定期実行の動作確認も行っておくと良いでしょう。

ツイート内容をカスタマイズしたい

コードの100行目あたりを変更してください。具体的には以下のコード。

  var tweetStr = ""
  tweetStr += "🤖<カコキジ!! "
  tweetStr += "#過去記事bot #はてなブログ \n"
  tweetStr += url + "\n"
  tweetStr += "🕘" + published + " 投稿\n"
  tweetStr += "🔃" + updated + " 更新\n"
  tweetStr += "📰" + title + "\n"

動作確認してもらったら分かる通り、デフォルトでは以下の内容をセットにしてツイートしてます。絵文字を変更するなり、不要な情報は削除するなりご自由にどうぞ。

ポイントとか苦労した点とか

参考にしたページ

まとめ

広告を非表示にする