やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

IFTTTでツイートAPIを作る

 curlで実行してTweetできることを確認した!

成果物

情報源

前回まで

 Twitter APIは必要なものが多すぎて断念した。

  1. Twitterはじめました
  2. ツイッターAPIを使おうとしたが電話番号を求められたので諦めた
  3. ツイートURL引数でデフォルト値をセットする
  4. ツイートを半自動化するスクリプトを書く1
  5. IFTTTではてなブログが公開されたらマストドンでtootする

 自動化はマスト。なのにTwitterはそれを容易に許さない。あまりの時代遅れさに失望。

今回

 IFTTTTweetするAPIがあった! 救世主よ!

🔗 目次

  1. ゴール
  2. 前提
  3. 作る
  4. 叩く

1. ゴール

  1. IFTTTで2つのAPIを作る
  2. curlAPIを実行する
  3. Tweetされたことを確認する

 IFTTTで以下2つのAPIを作る。

  1. テキストをTweetするAPI
  2. テキストと画像URLをTweetするAPI

 以下のような完成画面になる。

 APIを実行するコマンドは以下。

curl -X POST -H "Content-Type: application/json" -d '{"value1":"'"$MESSAGE"'"}' https://maker.ifttt.com/trigger/$IFTTT_EVENT/with/key/$IFTTT_KEY
curl -X POST -H "Content-Type: application/json" -d '{"value1":"'"$MESSAGE"'", "value2":"'"$IMAGE_URL"'"}' https://maker.ifttt.com/trigger/$IFTTT_EVENT/with/key/$IFTTT_KEY
変数 内容
$MESSAGE Tweetしたいテキスト
$IMAGE_URL Tweetしたい画像のURL
$IFTTT_EVENT Recieve a web requestで作成したときのEvent Name
$IFTTT_KEY IFTTTが発行するKEY(たぶんユーザごとに割り当てられている)

2. 前提

 アカウントを作成しておくこと。

  1. Twitter
  2. IFTTT

3. 作る

3-1. APIを作る

 IFTTTによるAPI作成はUIをマウスでポチったりキーワード検索が必要なので面倒。

 要点は以下。

項目 検索名 種類
1 If this webhooks Recieve a web request send_tweet
2 Then that tweet Post a tweet {{Value1}}
項目 検索名 種類
1 If this webhooks Recieve a web request send_tweet_with_image
2 Then that tweet Post a tweet with image {{Value1}}, {{Value2}}

 IFTTTの右上にあるCreateボタンを押したら以下の画面になる。

 If thisThen thatにはそれぞれ上記で示したとおりのものを当てはめていく。

 要素を検索するキーワードはそれぞれwebhooks, tweetである。

 Twitterは最初だけアカウントを紐付ける操作があるが省略する。画面に従えばわかるはず。

 以下のようにする。

 それぞれの細かい値は以下のとおり。Add ingredientボタンを押すと候補が出るので、Value1, Value2を選べばよい。テキスト入力するときは{{Value1}}{{Value2}}とする。この{{}}で囲むのはIFTTTがもつAPIの変数である。あとでcurlで引数として渡す。

 If thisにあてるWebhooksもといReceive a web requestEvent Nameは、APIを発行するときのURLの一部になる。なのでよく考えること。私は先述のとおりsend_tweetsend_tweet_with_imageにした。

 Then thatにあてるPost a tweet

 あとの画面もあるが省略する。適当に画面に従えばいい。とくに変更する必要はないはず。

 次は画像URLをツイートするAPIを新たに作る。画面右上のCreateボタンを押して、If thisWebhooksをあてる。Event Namesend_tweet_with_imageにする。

 Then thatにあてるPost a tweet with image。以下のようにそれぞれ{{Value1}}{{Value2}}をセットする。

3-2. KEYを調べる

 APIを叩くためにはキーを知る必要がある。IFTTTの画面構成が変わっておりネットで調べても手順が違った。たぶん私が今ここで書く手順も変わるのではないだろうか。やめてほしい。

  1. IFTTThomeにアクセスする
  2. 画面上メニューのExploreをクリックする
  3. webhooksで検索してWebhooksをクリックする
  4. Documentationをクリックする
  5. Your key is: xxxxxxxxxxxと書かれているのがキーである

 キーはあとで使うのでコピペしておくこと。

 ⚠ キーは他人に公開しちゃダメ! 勝手に使われてしまうから。

4. 叩く

 ターミナルで以下コマンドを叩く。Tweetされたら成功。

curl -X POST -H "Content-Type: application/json" -d '{"value1":"'"$MESSAGE"'"}' https://maker.ifttt.com/trigger/$IFTTT_EVENT/with/key/$IFTTT_KEY
curl -X POST -H "Content-Type: application/json" -d '{"value1":"'"$MESSAGE"'", "value2":"'"$IMAGE_URL"'"}' https://maker.ifttt.com/trigger/$IFTTT_EVENT/with/key/$IFTTT_KEY
変数 内容
$MESSAGE Tweetしたいテキスト
$IMAGE_URL Tweetしたい画像のURL
$IFTTT_EVENT Recieve a web requestで作成したときのEvent Name
$IFTTT_KEY IFTTTが発行するKEY(たぶんユーザごとに割り当てられている)

 たとえば以下のようにする。

MESSAGE='#IFTTT でツイートAPIを作った!'
IFTTT_EVENT=send_tweet
IFTTT_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxx
curl -X POST -H "Content-Type: application/json" -d '{"value1":"'"$MESSAGE"'"}' https://maker.ifttt.com/trigger/$IFTTT_EVENT/with/key/$IFTTT_KEY

 画像ツイートのときは以下。まず画像をどこかへアップロードせねばならないのでは? まーた別のサービス使わないとダメじゃんか。依存関係地獄だよ。

MESSAGE="#IFTTT でツイートAPIを作った!\n画像もあるよ。"
IMAGE_URL=https://...some.jpg
IFTTT_EVENT=send_tweet_with_image
IFTTT_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxx
curl -X POST -H "Content-Type: application/json" -d '{"value1":"'"$MESSAGE"'", "value2":"'"$IMAGE_URL"'"}' https://maker.ifttt.com/trigger/$IFTTT_EVENT/with/key/$IFTTT_KEY

🔗 所感

 IFTTTのおかげでTweetAPIが作れた。圧倒的感謝!

 でも本当は公式がもっと簡単に使えるよう提供してくれたほうが嬉しいのになぁ。

🔗 対象環境

$ uname -a
Linux raspberrypi 5.10.52-v7l+ #1441 SMP Tue Aug 3 18:11:56 BST 2021 armv7l GNU/Linux