Twitchの配信をしていて配信開始をMastodonに一々書いたりするのはめんどくさい。

特に私のWin10環境はバグっているのかChromeを開いていると著しくゲームの動作が遅くなるので、先に閉じてしまうので余計に。

ってことで、配信開始通知をn8nを利用してMastodonに投稿できないかなぁとか言う話になります。

どうやってやるか考える

Twitchの配信開始通知といえば、
定期的にAPIを叩いて配信していないかチェックする方法。
EventSubを利用して受け取る方法。
大体この2つかなって思っています。

で、n8nなんですが残念ながらTwitchと連携するトリガーノードはありません。

以前なら自力で色々やる必要があったんですが、ちょっと前にTwitchのトリガーノードを作ってくれた方がいたので、今回はそれを使います。

トリガーから受け取ったらそのままMastodonに。
うん。言葉だけなら簡単そうです。

やってみた

で、完成図ですがこんな感じ。

Twitchのノードはカスタムノードなので事前にこちらを導入しておく必要があります。

私はDockerを使っているのでビルドし直す方法を取りました。(と言うか今はそれしか無いらしい)

Dockerfileはこんな感じ。(フォーラムで公式も勧めてた)

FROM n8nio/n8n:latest

RUN cd /usr/local/lib/node_modules/n8n && npm install n8n-nodes-twitch

細かいノードについてはこんな感じ。

Twitchノード

Credential for Twitch APIで事前にとってきていたClient ID、Client Secretを設定しておきます。

EventはStream Onlineで、Channelは自分のチャンネル名を。

ここでは配信が開始された旨とそのユーザのIDを取得できます。

Functionノード

これはアクセストークを保存しておくためだけのやつです
この後アクセストークンの取得を行うんですが、毎回取得するよりは保存しておいて・・・みたいにしたほうが良いかなって思ったんですが、頻繁に動かないのでこれいらない説もあります。。

IFノード

保存されているアクセストークンの有無で処理を分けます。

なければ取得(True)、あればそのまま実行(False)になっています。

2回目の実行であればありになります。

GET Token(HTTP Request)ノード

IFノードでトークンがなかったときに取得するノードです。

https://id.twitch.tv/oauth2/tokenを叩いています。

ここは直でClientIDを指定してしまっているので改善予定です。

Function1ノード

取得したアクセストークンを保存するためだけのノードです

GET ChannelData (HTTP Request)ノード

ここではhttps://api.twitch.tv/helix/channelsを実行してストリームのタイトルを取得します。

IF2ノード

GET ChannelDataが認証エラーしていないかをチェックしています。

認証エラーの場合はGetTokenに移ります

なお、GET ChannelData2は認証エラーでも再実行させないようにしてます。

Discordノード

最後にDiscordにタイトルとURLを送っています

POST Mulukhiya

これはモロヘイヤのWebhookにポストすることでMastodonに投稿しています。
内容はDiscordと同様です

余談

以前はTwitchノードがなかったのでこのサイトのようにやる必要がありました。

Automate Tweets for your Twitch Live Stream using n8n

(試したけどこれはだるい)


まだ改善点はありますが、とりあえず動いているので満足しました。
せっかくn8n導入しているので他もなにかできないか模索中です。

おまけ。

最小構成

他の人の配信通知をIMAP Emailを使ってMastodonに送ってる図

鴉河が個人的に何か書くところです。
大体はギャグか戯言として受け止めてくださいな。

  • 0 users online
  • 1 user / day
  • 1 user / week
  • 2 users / month
  • 3 users / 6 months
  • 6 subscribers
  • 45 Posts
  • 10 Comments
  • Modlog