
こちらの記事について、内容・翻訳・視点・長さなど、皆様のご意見をお送りください。今後の記事製作の参考にしたいと思います。

Thank you! Your feedback has been received.

There was a problem submitting your feedback, please try again later.

こちらの記事の感想をお聞かせください。
部品リスト
Qty | Product | 品番 | |
---|---|---|---|
1 | OKdo Raspberry Pi 4 B スターターキット 4 GB | 202-0644 | |
Twitterボット(自動ツイートとも)は、スパムに利用されることから、悪いイメージで語られる事も多いですが、中には有用なものも存在します。もちろん、Twitterは便利で、実用的なボットを作るよう奨励しています。たとえば、私は@UKmfgを使って、#UKmfgに関するツイートや、イギリスにおける製造業についてのツイートを自動的にリツイートしています。このボットを運営するにあたり、悪口や、乗っ取られたハッシュタグが自動的にリツイートされないようにするために、いくつかの対策を講じる必要がありました。
Twitterの自動化に関するルールについては、こちらをご覧ください。@AndyPiperさん、 ボットを機能させるために協力していただき、本当にありがとうございました!
このプロジェクトでは、Raspberry PiとNode-REDソフトウェアを使用して、Twitterボットを作成する方法を解説します。
以前は非常に簡単に作成できましたが、現在は、多くの乗り越えるべき壁があります。
注: これは2020年11月17日の時点で機能していますが、Twitterの更新により動作しなくなる可能性があります。
準備 その1
1) Twitterで開発者アカウントを取得し、キーとトークンを見つけます。
手順とその他情報はこちらから: https://developer.twitter.com/en/apply-for-access
注: 必要な開発者アカウントは1つだけです。アカウントに適切な権限がある限り、これを使用してキーとトークンを取得し、別のアカウントからツイートすることができます。
2) 開発者ポータルに移動します: https://developer.twitter.com/en/portal/dashboard
アプリを追加し([概要(overview)]タブの下部)、APIキー、APIシークレットキー、Bearerトークンを安全な場所に保管します。手で書き写さず、コピーして貼り付けましょう。
次に、ページの下部にある[アプリの設定(App Settings)]をクリックします。
3) 以下を設定します。
- アプリの許可(App permissions): 読み書き(Read and write)
- 3者間のOAuth (3-legged OAuth)を有効にする
- コールバックURL: 任意のWebサイトアドレス(私はhttps://twitter.comを使用しています)
- ウェブサイトのURL: 任意のウェブサイト(同じく、https://twitter.com)
4) キーとトークン
ページの上部にある[キーとトークン(Keys and Tokens)]タブをクリックします。
APIキーやAPI秘密鍵、Bearerトークンは 手順2) で既に保存されているはずです。
「アクセストークンとシークレット(Access Token and Secret)」を生成し、安全な場所にコピーします。
「Twitter開発者アカウント」からツイートしたいときに必要なのが、これらのキーとトークンです。ただし、別のアカウントからツイートする場合は、次の段階を経る必要があります。
[注:GOを使用してこれらのキーを取得することもできます。(詳細はこちら: https://github.com/smaeda-ks/tw-oob-oauth-cli)]
これをPi上で行う必要はありませんが、Piを使用する場合、最初に以下のコマンドを使用して、RubyGemsをインストールする必要があります。
sudo apt install ruby-full
詳細はこちら: https://www.raspberrypi.org/documentation/linux/software/ruby.md
次に、以下のコマンドを使用してTwurlをインストールします。
sudo gem install twurl
情報はここにあります: https://developer.twitter.com/en/docs/tutorials/using-twurl
次に、以下のコマンドを入力します。
twurl authorize --consumer-key ABC123 --consumer-secret ZYX789
「ABC123」は以前に保存したAPIキーです。(なぜ別の名前になっているのかわかりませんが。)
そして、「ZYX789」はAPI秘密鍵です。
画面の指示に従い、https://api.twitter などの、リストアップされているWebサイトにアクセスします。 (Twitterからログアウトしているか、または、ツイートしたいアカウントにログインしているかを確認してください)。その後、提供されたPINをターミナルに入力します。
お疲れさまでした。これで、アクセスキーとトークンが生成されました。ただ、これからそれらを見つけないといけないんですが...
5) キーとトークンを見つけよう!
次に、.twurlrcファイルを見つける必要があります。
「. files」は非表示のファイルになっているため、Piで非表示のファイルを表示する設定に変更する必要があります。この設定項目は、ファイルマネージャーの[表示]タブにあり、[非表示を表示]にチェックマークを付けることで変更可能です。
.twurlrcファイルはpiディレクトリにあります。
Macではhome/USERディレクトリに、PCではc:Users\USERNAME\APPData\Local\ディレクトリにあるはずです。
ファイルを開くと、consumer_keyとconsumer_secretがあります。それらをコピーして安全な場所に貼り付けます。
準備 その2
1) 最新のRaspberry PiオペレーティングシステムをPiにインストール
詳細はこちら: https://www.raspberrypi.org/software/
画面の指示に従って、セットアップを完了します。(このプロジェクトでは、Raspberry Pi 4とRaspbian Pi OS(32ビット)2020-08-20を使用しています。)
2) Node-REDのインストール
注: Piメニューの「推奨プログラム(RECOMMENDED PROGRAMS)」を使用し、インストールしないでください。代わりに、 https://nodered.org/docs/getting-started/raspberrypiの「Piで実行(Running on a Pi)」セクションに移動して、そこの指示に従ってください(次のコマンドを使用してください)。
bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)
そして、Piノードのインストールにて、「はい(Yes)」を選択します。
しばらくの間待ちます。
インストールが完了したら、次のコマンドを実行しましょう。
sudo systemctl enable nodered.service
これにより、Piが起動するたびにNode-REDが自動的に起動します。
次に、ブラウザに移動してlocalhost:1880と入力し、Node-REDにアクセスします。
3) TwitterノードをNode-REDにインストール
シートの右上にあるハンバーガーメニュー(3本の水平線)をクリックします。
[パレットの管理(Manage Palette)]を選択し、[インストール(Install)]タブをクリックします。
「node-red-node-twitter」を検索し、「インストール(install)」をクリックします。
Twitterの入力ノードと出力ノードは、「ソーシャル(Social)」領域の左側の列に表示されます。
フローの作成
injectノードをtwitter outノードに接続します。
Injectノード「msg.payload」を 「HelloWorld」に変更し、Twitterの出力ノードをダブルクリックします。
次に、「新しいTwitter資格情報を追加... (add new twitter-credentials ...)」の横にあるペンのアイコンをクリックします。
以下のプロパティを完成させます。
- Twitter ID: TwitterツイートしたいTwitterアカウント
- APIキー(API Key):.twurlファイルのconsumer_key
- API秘密鍵(API Secret Key):consumer_secret
- アクセストークン(Access Token):.twurlファイルのトークン
- アクセストークンシークレット(Access Token secret):.twurlファイルのシークレット
保存し、デプロイしましょう!
次に、挿入ノードをクリックすると、ツイートが公開されます。
(同じツイートを再度投稿することはできないので、テスト目的であれば、タイムスタンプを入力するとわかりやすいかもしれませんね!)
これで、Injectノードが機能するようになりました。また、任意のフローでTwitterノードを使用するための基礎となる部分が完成しました。設定は、Twitter入力ノードでも同様です。
では、楽しいツイートを!