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
細かいノードについてはこんな感じ。
Credential for Twitch APIで事前にとってきていたClient ID、Client Secretを設定しておきます。
EventはStream Onlineで、Channelは自分のチャンネル名を。
ここでは配信が開始された旨とそのユーザのIDを取得できます。
これはアクセストークを保存しておくためだけのやつです
この後アクセストークンの取得を行うんですが、毎回取得するよりは保存しておいて・・・みたいにしたほうが良いかなって思ったんですが、頻繁に動かないのでこれいらない説もあります。。
保存されているアクセストークンの有無で処理を分けます。
なければ取得(True)、あればそのまま実行(False)になっています。
2回目の実行であればありになります。
IFノードでトークンがなかったときに取得するノードです。
https://id.twitch.tv/oauth2/token
を叩いています。
ここは直でClientIDを指定してしまっているので改善予定です。
取得したアクセストークンを保存するためだけのノードです
ここではhttps://api.twitch.tv/helix/channels
を実行してストリームのタイトルを取得します。
GET ChannelDataが認証エラーしていないかをチェックしています。
認証エラーの場合はGetTokenに移ります
なお、GET ChannelData2は認証エラーでも再実行させないようにしてます。
最後にDiscordにタイトルとURLを送っています
これはモロヘイヤのWebhookにポストすることでMastodonに投稿しています。
内容はDiscordと同様です
以前はTwitchノードがなかったのでこのサイトのようにやる必要がありました。
Automate Tweets for your Twitch Live Stream using n8n
(試したけどこれはだるい)
まだ改善点はありますが、とりあえず動いているので満足しました。
せっかくn8n導入しているので他もなにかできないか模索中です。
最小構成
他の人の配信通知をIMAP Emailを使ってMastodonに送ってる図