てなわけで、
n8nでGmailに来るTwitchでフォローしている人の配信開始通知をMastodonに転送するためのメモです。
Gmailの設定
まず、Gmailの設定が必要です。
やり方についてはn8nのドキュメントに書いてあるので、そちらを参照してください。
簡単に説明すると、
2段階認証が必須です。
Gmailのセキュリティ強化で2段階認証していない場合には脆弱としてブロックされます・・(というか22年の5月末でパスワード認証でのログインできなくなるっぽい?)
2段階認証後、アプリログイン用のパスワードを発行してあげて、それを使うって感じになります。
そして、Gmail側でIMAPを許可してあげてください。
あと、通常だと全メールを見に行くことになってしまうので私は読みたいメールにラベルをつけるようにフィルターして、この後設定するIMAPトリガーノードはそのフィルターを読むようにしてます。
Credentialsの設定
n8nでCredentialsを開いたら、Add Newで追加していきます。
- Userにメールアドレス
- Passwordに先程発行したアプリ用のログインパス
- Hostは
imap.gmail.com
- Portは993
- SSL/TLSはオン
詳細はこちらにも書かれています。
ノードの配置
完成形はこんな感じになります。
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使えるなら何でもできますし、他のノードを使って別の処理をしたりとかもできるので非常に便利です。
あと、複数メール受信した場合とかもちゃんとその分動いてくれます(大量に受信しない事が前提ですが、件数を抑えたい場合はそのように処理することも可能です)