IFTTTを使ってRSS feedをMastodonへPOSTする備忘録

IFTTTを使ってWordpressのRSS feedをMastodonへPOSTすることがようやくできるようになったので、備忘録として記述する。

自分が管理運営している「コンサデコンサ」の投稿記事のRSSを参照し、Mastodonへお知らせを(IFTTTにより)自動でPOSTしたい。昔チャレンジした際はどうしてもうまくいかず、あきらめていた。最近になって対話型AIの回答ではできることになっていたので、あーでもない、こーでもないとかなり苦労しながらもなんとかうまくいった。

なお、一連の作業は、有料の「Pro」アカウントでないとできない。

以下の2ステップを踏む。

  • Mastodon側でアクセストークンを生成
  • IFTTT側でアプレットを作成

【Mastodon側の処理】

・「ユーザー設定」から入り、さらに「開発」に入る。

・アプリの名前:好きな名前を入れる(必須)。とりあえず「IFTTT POST」と入れた。

・アプリのウェブサイト:任意のURLを入れる(空欄でもいい)。とりあえず、Feedを参照する自分のホームページのURLを入れた。

・リダイレクトURI:すでに何かが記載されている(いじらない)

・アクセス権:「write:statuses」だけをチェック。その他のチェックは全てはずす。POST以外のことをするのであれば、その部分の機能をチェックする必要あり。今回は、RSS側からMastodonへPOSTするのが目的なので、「write:statuses」の部分だけをチェック。

・「送信」を押す。

・「クライアントキー」、「クライアントシークレット」、「アクセストークン」の3つが新しく作成される。これらはセキュリティ項目なので、他人には見せない。

・「アクセストークン」を、このあとのIFTTT側で使うことになる。

【IFTTT側】

・アプレットを新規作成「Create」する。

・「If This」を「Add」する。「RSS Feed」を選ぶ。

・「New Feed item」を選ぶ。

・「Feed URL」に、参照するサイトのRSS feedのURLを入力して、「Create trigger」を押す。

・「Then That」を「Add」する。「Webhooks」を選ぶ。

・「Make a web request」を選ぶ。

・それぞれの入力欄に、必要項目を入力する。

・URL:Mastodonサーバー側の窓口になるURLを入力。自分は、「mstdn.jp」のユーザなので、「https://mstdn.jp/api/v1/statuses」と入力。

・Method:「POST」を選択。

・Content Type:「application/x-www-form-urlencoded」を選択。

・Additional Headers:必要項目を入力。

「Authorization」に、先に作成したMastodonのアクセストークン値を入力する。アクセストークン値は他人には見せないこと。「Bearer」の前後には半角スペースは必要。こんな感じ「Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXXX」。「XXXXXXXXXXXXXXXXXXXXXXX」にアクセストークン値。

IFTTTからMastodonに投稿するには、「Authorization」に加え、なぜなのか「User-Agent」の情報が必要。これがないと、「Timeout」エラーがでてPOSTしてくれない。「User-Agent」の内容はなんでもよく、今回は「User-Agent:RSStoMstdn/1.0」と入力した。「User-Agent」がないとなぜだめなかは不明だが、とりあえずこれでうまく行った。

・Body:POSTしたい内容を入力。

自分は、「status=記事を更新しました→<<<{{EntryTitle}}>>> {{EntryUrl}} #consadole #コンサドーレ&visibility=unlisted」と入力。

「POST」の本体部分は、「status=記事を更新しました→<<<{{EntryTitle}}>>> {{EntryUrl}} 」。「#consadole #コンサドーレ」の部分はハッシュタグ。「&visibility=unlisted」の部分は、POSTにunlistedの限定を付加。指定しないとPublicになり、関係ない人のタイムラインにまで表示されるので、フォローしている人だけに表示されるunlistedしている。「&visibility=unlisted」の部分は、なくてもいいかも。Botと間違われてBANされるのも嫌なので、入れてみた。

visibilityには、MastodonのPOSTに対する制限の種類が入る。以下の4種類。

  • public(公開):「ローカル」タイムラインと「連合」タイムラインにすべてに公開される。
  • unlisted(未収録):「ローカル」と「連合」のタイムラインには公開されず。「ハッシュタグ」と「フォローワー」のタイムラインにのみ表示。
  • Private(非公開):「フォロワー」のタイムラインにのみ表示。
  • Direct(ダイレクト):「自分」のホームタイムラインと「送信先」の通知カラムにのみ表示。

Bodyのstatus=の内容に特殊文字が含まれていると、うまく投稿できない。自分が経験した例では、POST分が途中で切れてしまい、特殊文字以降の文章が表示されなかった。これを避けるには、IFTTT側で特殊文字の処理をしてもらうために、三重カギ括弧「<<<POSTしたい文章>>>」で囲むとよい。上の例では、投稿記事のタイトル「{{EntryTitle}}」を三重カギ括弧で囲み、特殊文字が含まれていても、POSTできるようにしている。

・全部入力したら「Create action」を押す。

・これで完了。Wordpress側で記事が投稿されれば、Webhooksにより、MastodonにPOSTされる。

こんな感じ

昔は、こうしたノウハウは、誰かのサイトの解説記事とかがないと同仕様もなかったが、対話型AIでも回答してくれる時代になった。対話型AIは本当にすごい。例えば「IFTTTからMastodonにPOSTする方法と設定項目を教えて」なんて感じでGoogleのGemini聞くと回答してくれる。

記事の共有:

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です