Slack のチャンネルを毎朝 AI で自動要約する方法|読める範囲と通知先

投稿の多いチャンネルを朝に読み返すだけで、始業後の時間がなくなることがあります。この記事では、前日の投稿を AI に要約させて、決まった時刻に別のチャンネルへ届ける手順を説明します。

結論

  • Samurai App のワークフローを定期実行で動かし、3 つのステップをつなぎます。 Slack の履歴を読む操作、「AI で生成」での要約、「通知先へ送る」の順です。
  • 読めるのは、接続したアカウントが読めるチャンネルの、読める分だけです。スレッドの返信は履歴の操作に含まれません。
  • 要約はモデルを使うので、実行のたびにクレジットを使います。投稿がない日も同じです。
  • 定期実行は最短 1 時間に 1 回で、時刻は日本時間です。

できること・できないこと

できること:

  • 決まった時刻に、1 つのチャンネルの最新の投稿をまとめて要約すること
  • oldest を指定して、読む範囲を時刻で区切ること
  • 要約を、元のチャンネルとは別のチャンネルに送ること

読む範囲の制約:

  • 参加していないチャンネルは避けてください。 プライベートチャンネルと DM は、接続したアカウントがメンバーでないと読めません。Slack はボットのトークンに対しても、参加していないチャンネルは not_in_channel で断ります。
  • スレッドの返信は取得されません。 履歴の操作 SLACK_FETCH_CONVERSATION_HISTORY が返すのは、チャンネルの本流の投稿です。議論がスレッドで進むチャンネルでは、要約が親の投稿だけになります。スレッドは別の操作 SLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATION で読みますが、スレッドごとに読むことになります。
  • 取得件数は 1 回 100 件が既定です。 指定できるのは 1,000 件までですが、Slack は 2025 年 5 月から、Marketplace 外で配布される商用アプリの新規インストールについて、conversations.history を 1 分 1 回、1 回 15 件までに制限しています。社内で作ったアプリは対象外です。15 件しか取れないときは、「コネクタ」で「自社の OAuth クライアントで追加」に切り替えます。
  • 投稿者は名前ではなく ID で届きます。 履歴の user は U で始まる ID です。本文中のメンションも ID の形になるので、「誰が言ったか」を名前で要約させるには、ID と名前の対応を別に用意する必要があります。

用意するもの

  • 読むチャンネルに参加している Slack のアカウント
  • 要約を投稿するチャンネルの Incoming Webhook の URL
  • Samurai App で定期実行を作る権限(作成者とマネージャー以上)
  • クレジットの残り(利用上限に達していると AI のステップは動きません)

手順

1. Slack を接続する

「コネクタ」画面の「コネクタ」タブで Slack を「追加」し、読むチャンネルに参加しているアカウントで「連携」します。

2. 要約の届け先を登録する

Slack の Incoming Webhook を、要約を投稿するチャンネル向けに作ります。URL を「設定」→「通知」の「通知先」に登録し、「テスト送信」で確認します。

3. 履歴を読むステップを作る

「ワークフロー」で新しく作り、「ステップを追加」から Slack の SLACK_FETCH_CONVERSATION_HISTORY を選びます。

  • channel にチャンネル ID を入れます。ID が分からなければ、同じ Slack の SLACK_FIND_CHANNELS で調べられます。
  • limit に件数を入れます。

「テスト」タブの「このステップを試す」で、投稿が返ることを確認します。読み取りなので試しても Slack 側は変わりません。

前日分に区切る場合: oldest は Unix 時刻の文字列です。その前に「コード」のステップ(「隔離」)を足し、次のように返します。

return { oldest: String(Math.floor(Date.now() / 1000) - 86400) };

oldest にはこのステップの結果を「変数」で選びます。区切らない場合は最新から limit 件を読むので、投稿の少ない日は前日より前も混ざります。

4. 要約のステップを作る

「ステップを追加」で「AI で生成」を足します。頼み方の例です。「/」か「変数」で履歴の結果を差し込みます。

次の Slack の投稿を、決定事項、未解決の質問、今日の対応の 3 つに分けて要約してください。
投稿にないことは書かないでください。投稿がなければ「投稿はありませんでした」とだけ返してください。
書式は Slack に合わせ、太字は *文字* で書き、# の見出しは使わないでください。
全体を 2,000 字以内に収めてください。

{{履歴のステップの結果}}

Slack の書式は Markdown と規則が異なるので、書式を指定します。投稿本文は <@U…> の形のメンションを含みます。

5. 送信のステップを作る

「ステップを追加」の「つなぐ」から「通知先へ送る」を足し、手順 2 の通知先を選びます。「本文」には要約のステップの text を選びます。

6. 公開して定期実行を付ける

「バージョン」タブで「バージョン N を公開」を押します。「トリガー」タブの「定期実行を追加」を押し、「いつ動くか」の「cron(分 時 日 月 曜)」に、たとえば平日の朝 8 時なら 0 8 * * 1-5 と入れます。

チャットで作るなら、「毎朝 8 時に Slack の #営業 の投稿を要約して通知先へ送るワークフローを作って」と頼めます。出来上がりは下書きなので、公開前に中身を確認してください。

無人の実行と承認

Slack の履歴の読み取りと「AI で生成」「通知先へ送る」には、カードを出す操作がありません。定期実行でそのまま動きます。例外は、管理者がその操作を「毎回確認」か「禁止」にしているときで、承認する人がいないので断られます。

既定では、起動した人のアカウントで動きます。定期実行は登録者のアカウントで読むので、登録者が読めるチャンネルの内容が、要約を通じて投稿先の全員に伝わります。 プライベートチャンネルを広いチャンネルへ要約するときは、この点を確認してください。担当者が替わる場合は、ステップの「実行に使う認証情報」で「このワークフローに貸す」を使えます。

動かないとき

  • 件数が少ない。 取得件数の制限にかかっている可能性があります。「実行」タブの出力で実際の件数を確認し、15 件で止まるなら自社の OAuth クライアントを試してください。
  • not_in_channel や権限のエラーが出る。 接続したアカウントがそのチャンネルのメンバーか確認します。
  • 要約が薄い、話が抜ける。 スレッドでのやり取りは入っていません。議論がスレッドに集まるチャンネルは、この形に向いていません。
  • 実行そのものが動かない。 下書きのままか、利用上限に達している可能性があります。「実行」タブの「最近の実行」を見てください。

よくある質問

複数のチャンネルをまとめて要約できますか

チャンネルごとに履歴のステップを足し、要約のステップにすべて差し込めば、1 通にまとめられます。件数が増えるほどクレジットを多く使います。

投稿がない日は通知を止められますか

「AI で生成」の「出力の項目」に、投稿があったかどうかを はい / いいえ で返す項目を足し、「条件分岐」でその値を見て「通知先へ送る」を分ければ止められます。AI のステップは動くので、その回のクレジットは使います。

要約を元のチャンネルに返信できますか

通知先の投稿先は Incoming Webhook の URL ごとに固定されるので、そのチャンネルへの新しい投稿になります。スレッドへの返信は「通知先へ送る」ではできません。

関連する使い方

出典

関連する機能AIでワークフロー自動化 —— 定型業務を決めた順にSamurai App のワークフローは、書いたとおりの順に必ず動くステップの並びです。AI の判断、承認待ち、外部サービスの操作を 1 本にまとめ、定期実行や外部からの起動で定型業務を自動化します。

ほかの自動化の例

Slack の連携と自動化の方法をすべて見る

活用術の記事一覧へ

日々の仕事が集まり、つながり、会社の力になる。

資料請求Samurai App を開く

デモを見る資料請求