コラム

2025年6月9日

Power AutomateとCopilotがSlackスレッドを無料で要約する方法を伝えたい

はじめに

私はクラウド型RPAサービス「Coopel」のカスタマーサクセスディレクターです。

Slackには有料プランで使える「要約機能」がありますが、個人や小規模チームにとっては少し高価。

「これを無料で自動化できないか?」

この課題を解決するため、Power Automate for Desktop(PAD)とWindows Copilot アプリを組み合わせて、Slackのチャット履歴を自動で取得・整形・要約する仕組みを作りました。

結果:

こんな形で要約することができました!

この記事でできること

使用ツール

ツール用途
Power Automate for Desktop自動化フローの作成
Slack APIスレッド履歴取得
Windows Copilot アプリテキストファイルをようやく(ファイルアップロード)

事前準備(初回のみ)

Slackの履歴をAPI経由で取得するには、以下の2ステップを行っておきます。

1. Slack APIアプリを作成してUser Tokenを取得

手順:

  1. Slack API Apps にアクセス
  2. 「Create New App」→「From scratch」を選択
  3. 任意のアプリ名(例:Slackログ取得Bot)とワークスペースを選択 → Create
  4. 左メニュー「OAuth & Permissions」をクリック
  5. 「Bot Token Scopes」の下の「Add an OAuth Scope」をクリックし下記のOAuth Scopeを追加

channels:history
アプリ (この例ではSlackログ取得Bot) が追加されているパブリックチャンネル内のメッセージやその他のコンテンツを閲覧する権限

channels:read
ワークスペース内のパブリックチャンネルに関する基本情報を閲覧する権限

groups:read
アプリ (この例ではSlackログ取得Bot) が追加されているプライベートチャンネルに関する基本情報を閲覧する権限

mpim:history
アプリ (この例ではSlackログ取得Bot) が追加されているグループダイレクトメッセージのメッセージやその他のコンテンツを閲覧する権限

users:read
ワークスペース内のユーザー(メンバー)に関する情報を閲覧する権限

groups:history
アプリ (この例ではSlackログ取得Bot) が追加されているプライベートチャンネルのメッセージやその他のコンテンツを閲覧する権限

トークン発行手順:

  1. 左メニュー「OAuth & Permissions」から「Install to Workspace」
  2. 「許可する(Allow)」をクリック
  3. 表示された User OAuth Token(xoxp-... をコピーして控える

2. 作成したBotをチャンネルに招待する

手順:

  1. Slackで対象チャンネルを開く
  2. メッセージ入力欄で以下を入力して送信:

/invite @アプリ名 
例: /invite @Slackログ取得Bot

正しく追加されると「@Bot名 がこのチャンネルに参加しました」と表示されます

全体の流れ

  1. Power Automate for Desktop の入力ダイアログにて Slack スレッドのリンクを受け取る
  2. Slack スレッドのリンクからチャネルID とスレッドID を抜き取る
  3. Slack API を実行し、スレッド内のコメント一覧を取得する
  4. メッセージ部分のみを抜き取り、Unicode形式を整形してファイルに保存する
  5. Copilotアプリを起動する(Alt + Space)
  6. ファイルをアップロードし要約依頼する

自動化の手順(ステップバイステップ)

実際のフロー(全体)

  1. Power Automate for Desktop の入力ダイアログから Slack スレッドのリンクを受け取る

Slack スレッドのリンクは https://YOURWORKSPACE.slack.com/archives/チャネルID/pスレッドID であり、Slack の該当スレッド上で右クリックし、リンクをコピーを選択することにより入手できます。

このアクションを実行すると、下記のようにダイアログが表示されるので、実行者は、要約したいスレッドのリンクをこのダイアログに貼り付けます。

2. Slack スレッドのリンクからチャネルID とスレッドID を抜き取る

実行する PowerShell コード:

コピー用PowerShell コード:

$numericThreadIdWithP = “%ChannelAndThread[1]%”
$numericThreadId = $numericThreadIdWithP.Substring(1)
$seconds = [int]($numericThreadId / 1000000)
$microseconds = $numericThreadId %% 1000000
$formattedThreadId = “$seconds.” + $microseconds.ToString(‘000000’)
$formattedThreadId

3. Slack APIを実行し、スレッド内のコメント一覧を取得

実行するPowerShellコード:

コピー用PowerShell コード:

# JSONファイルを読み込み
$json = Get-Content “手順1-cで指定したファイルパス (例: C:\temp\slack_texts.json)” -Raw | ConvertFrom-Json

# messages[].text を抽出して結合
$texts = $json.messages | ForEach-Object { $_.text }

# 改行区切りで保存
$texts -join “rn” | Set-Content “手順1-cで指定したファイルパス (例: C:\temp\slack_texts.json)” -Encoding UTF8

↑コピー用PowerShellコード

5. Copilotアプリ(Alt + Space)で起動する

6. ファイルをアップロード → 要約依頼

フロー実行

フロー実行前に、Slack 上の要約対象となるスレッドの一番最初のコメントの上で右クリックをし、リンクをコピーしてそのスレッドへのリンクをコピーしておきます。

Power Automate for Desktop でフローを実行すると、下記のダイアログが表示され、要約対象のスレッドへのリンクの入力が求められますので、コピーしたスレッドへのリンクを貼り付け、OK ボタンをクリックします。

Copilot が自動的に起動し、そのスレッドでの会話が Copilot で要約されます。

やってみた感想

そこで、PowerShellで変換してファイル化 → Copilotにアップロードという手順に切り替えることで安定して要約できるようになりました

まとめ

Slackの「要約」機能を無料で再現できたことに加え、指定したスレッドの内容を生成AIに任せて整理できるのはかなり便利です。

といった場合には、是非お試しください!

最後に宣伝

私の所属するCoopel でも、全く同じフローを作成することはできませんが、類似のフローを作成することは可能です。ただし、デスクトップ版 Copilot の操作ができないため、要約する部分を例えば Gemini や ChatGPT の API (有料)を使用する形となります。また、要約結果を画面上に表示する代わりに、例えば Slack に結果を貼り付けるなどの工夫が必要です。

みなさまの業務の一助になれば幸いです!