通知が手に負えない
Discord、Slack、Gmail など、相手に合わせて色々なメッセージアプリを併用しており、ついつい通知を見逃してお返事が遅くなってしまうことがありました。
そこで今回は、Discord や Gmail など複数のメッセージアプリからの通知を Slack に集約してみました。
ただ集約するだけでは物足りない
そこで、各ツールの使い方に合わせた「キャラクター(Bot)」を作ることにしました。
例えば、
- Gmail からの通知は、要点を整理してくれる「秘書」っぽい役割
- Discord からの通知は、ログや状況を端的に伝える「テック寄り」な雰囲気で
ちょっと無駄かもと思いつつ、Slack への通知も加工して Slack に再通知させてみましたが、これはこれでよかったです。
全体像
Make を使って、複数のメッセージアプリからの通知を Slack に集約しました。各メッセージアプリごとにシナリオをつくります。疲れた...。
ポイントは以下です。
- Slack 側では サービスごとに Bot を分ける
- 通知内容は ツールの雰囲気に合わせて文体を変える
通知はこんな感じ
最後は Discord に集約させてもよいですが、検索性や情報の振り分けがやりやすいと感じたので Slack にしました。
残念ながら連携できなかったアプリもある...
| アプリ | Slackへの自動転送 | 可能な範囲 | 実現方法や条件 |
|---|---|---|---|
| Discord | 条件付きで可能 | サーバー/チャンネル内のメッセージ、Webhook経由の受信 | Incoming Webhook |
| Gmail | 可能 | メール全般 | Incoming Webhook |
| Slack | 可能 | Slack内イベント(チャンネル/メンション等) | Incoming Webhook |
| LINE(個人) | 不可 | 仕事用の公式アカウントをつくれば、Webhook 受信が可能 | Messaging APIのWebhook (LINE Developers) |
| Facebook Messenger | いけそう | Facebookページ宛てのMessengerメッセージ(ページ受信箱)で連携可能 | Messenger Platform+Webhook (Facebook Messenger) |
| 個人DMは不可っぽい | プロアカウント(Business/Creator)宛ての DM は連携可能 | Instagram Messaging+Webhookで受信 (Facebook Developers) | |
| X | 個人DMはほぼ不可 | 有料のアクセス権が必要 | アカウントアクティビティAPIなどが必要 |
Messewngerはいけそうでしたので、またの機会に挑戦します。
全体アーキテクチャ
今回の構成はシンプルです。
- 各メッセージアプリ → Make
- Make で正規化・振り分け
- Slack に Bot 経由で通知
Make のシナリオは アプリごとに分けて管理しています。
事前準備
Slack 側の構成
チャンネル設計
通知は用途別にチャンネルを分けています。
-
#inbox-urgent:すぐ対応したいもの -
#inbox-today:今日中に見ればよいもの -
#inbox-log:ログ用途(通知オフ)
Bot 設計(キャラクター)
Slack にはサービスごとに Bot を用意しました。
| Bot | 役割 | 口調 |
|---|---|---|
| Discord | Discord 通知 | テック寄りで簡潔 |
| Gmail | Gmail 通知 | 秘書のように要点を整理する |
| Slack | Slack 内通知 | カジュアルで絵文字つき |
1. Discord → Slack
シナリオはこちらです。
Watch Channel Messages で取得したいサーバーを選びます。
「サーバー」とは Slack で言うワークスペースです。
Discord は Webhook 経由で Make に送信しています。
動作イメージ
フィルター
- 自分へのメンションのみ検知。OpenAI にやたらに入力しないために関係ないメッセージは弾きましょう
- キーワード検知なども可
プロンプト
OpenAI のモジュールでの設定は以下の通り
- Model: Chat-GPT-5-nano
- Prompt
あなたは技術チーム向けの通知Botです。
以下のDiscordメッセージを、Slackに送る通知として整形してください。
条件:
- 技術ログ・ステータス報告のような簡潔な文体
- 感情表現や丁寧語は使わない
- 必要なら箇条書き
- 1〜3行程度
入力:
- 投稿者: {{2.author.username}}
- 内容: {{2.content}}
Slack 側には Discord のメッセージリンクも添付します。リンクは各 ID の階層になっています。
こちらがドキュメントです:
2. Gmail → Slack
シナリオはこちらです。
Gmail は Make の Watch Emails モジュールを使っています。
つくったもの
返事を急ぐ/急がないメール
Gmail は即レスを想定していない内容のメールも多く来るので内容によって、送信するSlackチャンネルを分けています。
- 急がない:
#inbox-today - 即レス:
#inbox-urgent
分け方はやや強引に、プロンプトに出力として「即レス」を入れさせ、それがあるかどうかで条件分岐させています。
プロンプト
OpenAI のモジュールでの設定は以下の通り
- Model: Chat-GPT-5-nano
- Prompt
あなたは業務メールを正確かつ簡潔に整理してSlackに伝える秘書役の通知Botです。
以下のGmailの内容を、Slackに送る通知用メッセージとして整形してください。
出力ルール:
- 絵文字は使用しない
- 丁寧で事務的な文体を使用する
- 推測や補足説明は行わない
- 判断・提案・対応案は書かない
- メール本文が長くても、要点のみを簡潔にまとめる
- 全体で2〜4行程度に収める
- 改行など視認性をよくする
必ず含める情報:
- 送信元の会社名(分かる場合)
- 担当者名(分かる場合)
- メールの主題(何についての連絡か)
- 期限・日付・金額などの重要情報(本文に記載がある場合)
構成:
- 1行目: 【会社名/担当者】からのメール概要を1文でまとめる
- 2〜3行目: 重要な事実・依頼内容・条件を箇条書きまたは短文で記載
入力:
- 差出人名: {{1.fromName}}
- 差出人メール: {{1.fromEmail}}
- 件名: {{1.subject}}
- 本文: {{1.fullTextBody}}
3. Slack → Slack
Watch Public Messages で取得したいサーバーを選びます。
Private Channel や Direct Messages も OK です。
プロンプト
OpenAI のモジュールでの設定は以下の通り。Slack はすぐ返事をすることが多いのでレスポンス案を出します。
- Model: Chat-GPT-5-nano
- Prompt
あなたはSlack内の情報を整理して再通知する、少しカジュアルな通知Botです。
以下のSlackメッセージを、Slackに再通知するためのメッセージとして整形してください。
出力ルール:
- 先頭に絵文字を1つだけ付ける(👀 / 👍 / ⏰ のいずれか)
- 1行目: 要点を1文でまとめる(短く)
- 2行目: 「返信案:」として、すぐ送れるクイックレスポンス案を1つ提示する
- 丁寧すぎずフラットでカジュアル
- 全体で1〜3行
クイックレスポンス案の条件:
- すぐコピペできる自然な日本語
- 相手に確認したい点があれば1つだけ質問する
- 不確実な情報は断定しない(推測しない)
- 外部リンクや長文は避ける
入力:
- 投稿者: {{5.username}}
- 内容: {{5.text}}
落とし穴
Discord 同様メッセージリンクも添付しますが、ここに変なつまずきポイントがありました。
直でメッセージリンクを取ることができないので、Message IDを使ってURLをつくります。
以下が構造です。{{5.ts}}が Message ID です。
https://XXXXXXXXX.slack.com/archives/X0X3XX6X9XX/p{{5.ts}}
※X0X3XX6X9XX:チャンネルID
ここで落とし穴が!Message IDそのまま使うことができません
画像のMessage IDをよく見てください。途中に.(ピリオド)が...。これがあるせいでリンクが成立しません。
replace 関数を使って、ピリオドを除外するようにしましょう。
{{replace(5.ts; "."; "")}}
つくってみて
メッセージリンクの取得に少し癖がありました。一つ一つ設定するのは大変でした...。
特に、最近は Gmail をあまり見る頻度が少なくなってきたので、すぐ確認が必要なものとそうでないものの振り分けができると便利ですね。
補足
以下2つの実装は別記事で紹介します。
- メッセージ送信 Bot のアイコンと名前をそれぞれのツールに合わせて変える
- Slack 上でリアクションすることで Notion でタスク登録にする












