てなわけで、
n8nでGmailに来るTwitchでフォローしている人の配信開始通知をMastodonに転送するためのメモです。

Gmailの設定

まず、Gmailの設定が必要です。
やり方についてはn8nのドキュメントに書いてあるので、そちらを参照してください。

IMAP Using Gmail

簡単に説明すると、
2段階認証が必須です。
Gmailのセキュリティ強化で2段階認証していない場合には脆弱としてブロックされます・・(というか22年の5月末でパスワード認証でのログインできなくなるっぽい?)

2段階認証後、アプリログイン用のパスワードを発行してあげて、それを使うって感じになります。

そして、Gmail側でIMAPを許可してあげてください。

あと、通常だと全メールを見に行くことになってしまうので私は読みたいメールにラベルをつけるようにフィルターして、この後設定するIMAPトリガーノードはそのフィルターを読むようにしてます。

Credentialsの設定

n8nでCredentialsを開いたら、Add Newで追加していきます。

  • Userにメールアドレス
  • Passwordに先程発行したアプリ用のログインパス
  • Hostはimap.gmail.com
  • Portは993
  • SSL/TLSはオン

詳細はこちらにも書かれています。

他のメール プラットフォームで Gmail のメールをチェックする

ノードの配置

完成形はこんな感じになります。

IMAP Emailノード

  • Credential for IMAP は 先程設定したCredentialsを選択
  • Mailbox Nameは 読みたいメールボックスまたはGmailのラベル名を指定
  • Actionは Mark as read にします (じゃないと既読にならないので・・)
  • FormatはResolvedが無難みたいです、テキストメールならSimpleでも良さそう
  • Add OptionでIgnore SSL Issuesはオンにします

HTML Extractノード

このノードではHTMLメールのHTMLをCSS Selectorで取り出すことができるノードで、いちいちコードを書いたりする必要が無いのでめちゃ便利です

今回はTwitchの配信開始通知を例に書いていきます。

  • Source Dataは JSONです、基本的にノードの出力はJSONです
  • JSON Propertyは html です、IMAP Emailで出力されるJSONのhtmlプロパティを使います
  • Extraction Valuesは取りたい要素をCSS Selectorで指定します、Keyは出力されるJSONのキーになります。

HTTP Requestノード

このノードではその名の通りHTTPリクエストを送れるので、これを利用してMastodonに投稿します。

今回はモロヘイヤWebhookを例にしていますが、APIも一応叩けますし、Discordなら後述するDiscordノードを使うのでもっと楽です。

  • Request Methodを POSTにします
  • URLは自身のWebhookURLを書きましょう
  • Body Parametersは本文をtextに入れて渡すのでValueを好きな感じにします。
    このように他のノードや直前のノードの値を指定することもできます。

Discordノード

おまけです、多分普通の人はDiscordに送ると思うのでこっちですねw

  • Webhook URLにDiscordのWebhookURLを
  • Contentに内容を書きます

ちなみに、改行は|です
(Edit Expressionで改行してあげると自動で入ります)


今回はTwitchという例でやりましたが、HTMLなメールでも簡単に切り抜いてMastodonやDiscordに投稿できました。

GmailじゃなくてもIMAP使えるなら何でもできますし、他のノードを使って別の処理をしたりとかもできるので非常に便利です。

あと、複数メール受信した場合とかもちゃんとその分動いてくれます(大量に受信しない事が前提ですが、件数を抑えたい場合はそのように処理することも可能です)