有料化でTwitter APIが停止したので、IFTTTを使ってみる(curl編)

このページでは、Twitter APIの有料化に伴い、Webhook経由でIFTTTより自動ツイートを行う方法を、まずはcurlを使った手法で試してみます。

昨今のTwitter有料化ですが、とうとう私も、締め出されたようです。

目次

TwitterのAPIが止まってしまった

2023/05/24のお昼すぎに、自作のBOTで、

Could not authenticate you.

というメッセージが表示され、API経由でTwitterにツイートできなくなってしまいました。

過去にはAPIのバージョンアップにて、過去のバージョンが使用できないといったケースにも表示されたようですが、検索すると、ああ、例の有料化で締め出されたんだろうな…と。

ということで、APIが使用できなくなったので、BOTはとりあえず一旦終了する旨、手動でツイートしました。

Mastodonにもトゥートするようにしていたので、そちらをご参照してください。Twitterの方は、改善策が見つかるまで停止いたします。場合によっては再開しないかもしれません。

すると、あるフォロワーから…

「もし、RSSがあるのらば、有料化したIFTTTでツイートできますよ。試してみてはいかがでしょう?」

とのレスが…

うーん…自作のBOTは、RSS出力してないんだけど…と思ったのですが、もしやと思い、IFTTTを調べみることにします。

すると…

IFTTTはプラガー(Plagger)っぽい

私が持っていたIFTTTの勝手なイメージは、単にRSSからTwitterをPOSTする程度サービス…といった認識でしたが、サイトを訪れると、RSSからSlackに投げたりメールに飛ばしたりと、さらにRSSだけではなく、Googleのスプレッドシートだったりと、実に多彩。

でも、これってなんとなくPlaggerっぽいですね。

Wikipedia:Plagger

でも、GUIベースなので、設定はかなり楽です。

RSSはブログやニュースサイトの更新情報をXMLで配信するサービスなので、TwitterのBOTとはまた違う手段なのですが、IFTTTに直接データを渡すような手段があれば、まだまだ、ゲームセットにはならなそうですね。

さらに調べてみます。

すると…

IFTTTでWebhookが使えることが分かった

直接データを渡すような手段の一つとして(APIの他に)Webhookがあるのですが、IFTTTにはWebhookがありました!

Webhookについては、下記を参照。

Webhookって何?を子どもでもわかるように描いてみた

IFTTTはIf(入力側)とThen(出力側)のサービスをパイプ処理のように結ぶサービスですが、WebhookにするとIf側をIFTTT自身にすることができます。

ということで、IFTTTのWebhookにJSONを渡せば、Tweetできそうですね。

IFTTT+curlで、テスト実行

以下の参考サイトをもとに、curlでテストをPOSTすることができました。

IFTTTでTwitter投稿APIをつくる

手順が若干異なってしまったのか、「https://maker.ifttt.com/use/~」にあるキーコードの取得はやや手間取りました。

If側の設定をWebhookに設定際に、URLが表示されなかった場合の手順は下記のとおり。

  1. IFTTTの右端にあるTwitterアイコン(Twitter提携している場合)から「My services」を選択
  2. 一覧表示される中にある「Webhooks」をクリック
  3. 「Webhooks integrations」画面が表示されたら、右上の「Settings」をクリック
  4. 「Webhooks Settings」画面にある、URLの「https://maker.ifttt.com/use/~」の~がキー

Twitterが複数アカウントであっても、KEYは変わりません。
(Appletの区別はEvent Nameで表現します。)

その後、Thenで、Twitterを設定し、BOTのアカウントをサービスの連携させます。
参考サイトのとおり、Post a Tweetは、{{Value1}}だけで良いと思います。

Appletsを作成したら、curlで以下を実行します。

curl -X POST -H "Content-Type: application/json" -d '{"value1":"test用のテキスト"}' https://maker.ifttt.com/trigger/(Event Name)/with/key/(Key)

※(Event Name)および(key)は実際の値に差し替えてください。

すると、以下のようなメッセージが表示され、TwitterにPOSTされていることを確認すればOKです。

Congratulations! You've fired the send_tweet event

もし、ツイートできない場合は、仮登録のままであることを確認してください。
(Congratulations!はツイートに失敗しても表示されます。)
本登録とすることでツイートできます。

Twitter有料化に伴い、IFTTTもPro、つまり有料でなければTweetできません。
さらに、BOT用のTwitterアカウントが複数ある場合は、Pro+になります。

ここまでできれば、BOTを出力している言語に、Twitter APIの代わりに、POSTでIFTTTのURLにアクセスするだけです。

プログラム実装について

プログラムへの実装については、続編をご参照ください。

IFTTTにはIFTTTなりの癖があります。
そのあたりも含め、解説しております。

私はRubyで実装していますが、BODYにJSONを挿入しMIMEを指定してPOSTするだけですので、そこまで難しくはないでしょう。

それでは、また。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA

目次