
- slackgptとはSlack上でAIの機能を利用し、業務の効率化を図る仕組みのこと
- 公式アプリの導入やAPI連携により、メッセージの要約や文章作成が可能
- 自社のセキュリティ基準や目的に合わせて、最適な連携方法を選ぶことが重要
毎日使っているSlackに、最近話題のChatGPTを連携させると、仕事がぐっと楽になるのをご存知でしょうか。
「長いスレッドを追いかけるのがしんどい」「取引先へのメール作成で手が止まってしまう」「ちょっとしたエラーの原因をサクッと調べたい」…そんなよくある悩みも、Slack上でChatGPTに聞けるようにしておけば、いちいち画面を切り替える手間なく解決できます。
この記事では、SlackとChatGPTをつなぐ具体的な手順や、実際の業務でどう使えるかといったアイデア、運用時のちょっとしたコツをご紹介します。数分でサクッと設定できる方法もあるので、システム周りが苦手な方でも大丈夫です。
ぜひ、いつものチャットツールにAIを組み込んで、新しい働き方を試してみてください。
\生成AIを活用して業務プロセスを自動化/
ChatGPTとSlackは連携できる!
SlackとChatGPTは、公式アプリやAPIを使ってつなぐことができます。Slackの画面からそのままAIに質問したり、文章の作成を頼んだりできるので、わざわざブラウザでChatGPTを開く必要がなくなります。
連携の方法はひとつではなく、プログラミングなしで使える公式アプリから、細かくカスタマイズできるAPI連携まで、いくつかの選択肢があります。チームの規模や使い方に応じて選べるため、少人数のチームでも大きな組織でも取り入れやすいのが特徴です。毎日の業務の流れにAIをさりげなく組み込めるのが、この連携の面白いところです。
ChatGPTとSlackを連携してできることは?
連携によって実現できる機能は多岐にわたります。代表的な機能をいくつか紹介します。
メッセージやスレッドの要約
顧客への返信メールの下書きや、社内向けのお知らせ文などをAIに任せることができます。自分で書いた文章のトーンを変えたり、もう少し自然な表現に整えたりする際にも使えます。「フォーマルな言い回しにして」「箇条書きをひとつの文にまとめて」といった一言を添えるだけで、用途に合った文章に仕上がります。
文章を考える時間がかなり減るので、普段あまり文章を書き慣れていない方にも試してみてほしい使い方です。
文章の作成と校正サポート
顧客への返信メールの下書きや、社内向けのアナウンス文などをAIに作成させることができます。また、自分が書いた文章のトーンを変更したり、より適切な表現に修正したりするライティングの補助としても役立ちます。「フォーマルな表現に直して」「箇条書きをまとめて」といった指示を追加するだけで、目的に合った文章へ素早く仕上げることができます。
文章作成にかかる時間を大幅に短縮できるため、非エンジニアの方にも特におすすめの活用法です。
社内情報の迅速な検索
Slack内に溜まった過去のメッセージやファイルを、AIを使って手軽に探し出せます。単純なキーワード検索だけでなく、文脈や意味をある程度くみ取った検索ができるので、目当ての情報にたどり着きやすくなります。
「先月の〇〇プロジェクトで決まったことって何だっけ?」といった話しかけるような聞き方でも検索できるのが便利なところで、情報が流れてしまいがちな人数の多いチームで重宝します。過去のやりとりや共有ファイルを掘り起こす手間が減るのも、地味ながら助かるポイントです。
※検索には特定の上位プラン(Slack Business+以上)が必要になります。
SlackとChatGPTを連携させる方法
SlackとChatGPTを連携させる方法は主に2つあります。
- 公式のChatGPT app for Slackを使って導入する
- APIを使ってSlackとChatGPTを連携させる
①公式のChatGPT app for Slackを使って連携する
OpenAIから公式の「ChatGPT app for Slack」が出ており、これを使えばとくに難しい設定なく連携できます。以前はベータ版やウェイトリスト形式での提供でしたが、今は正式版として誰でも使える状態になっています。
このアプリを入れると、SlackのサイドバーでChatGPTと1対1でやりとりできるほか、チャンネル内のメッセージ要約や文章作成の手伝いもしてもらえます。
公式アプリを使うには、下記の条件を満たしている必要があります。
②SlackとChatGPTをAPIで連携する
ChatGPTのAPIを使い、Slackアプリを作成する方法について説明します。
連携すると、以下のようなことが利用可能に。
- チャンネルの内容を要約
- 疑問などを質問 など
弊社では、実際にチャンネル内の会話を要約するために、ChatGPT APIを活用したSlackアプリを作りました。
API連携して作った要約アプリについて
まずは、作ったSlackアプリの概要は以下のとおりです。
- (弊社環境では)times チャンネルに、対象チャンネルの要約がリストされる
- 対象になるチャンネルは25時間以内に会話があったパブリック/プライベートチャンネル
実際に、以下のように、timesチャンネルへ複数チャンネルの要約が表示されています。
Slackアプリの実行手順
Slackアプリの実行には、定期実行と都度実行の2パターンがあり、今回は、都度実行するための手順を紹介します。
実行する前準備として、以下3つの変数に格納している値を書き換えます。
- openai.api_key
- TOKEN
- CHANNEL_ID
後述するプログラムでは以下のように記述しています。
クリックで表示
#以下の3つはご自身の環境で取得し書き換える必要があります。
openai.api_key = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
# APIトークンとチャンネルIDを設定する
TOKEN = "xoxb-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
CHANNEL_ID = "XXXXXXXXX"こちらは、みなさんの環境独自のデータですので、それぞれ取得していきましょう。
openai.api_key は、OpenAI API キーを格納する変数です。まずはOpenAI の Web サイトにアクセスします。適宜、Sign Inして、自身のアカウントアイコン→View API Keysをクリック

「Create new secret key」をクリックする

赤枠内にあるシークレットキーをコピー

OpenAI APIキーの取得手順は以上です。
tokenは、Slack APIキーを格納している変数です。まずは、Slack API の Web サイトにアクセス。ログインし「Create an app」をクリック。

「From an app manifest 」をクリック

アプリを追加したいワークスペースを選ぶ

以下のjsonを貼り付けて「Next」をクリック
{"display_information":{"name":"Summary","description":"Public channelのサマリーを作る","background_color":"#d45f00"},"features":{"bot_user":{"display_name":"Summary","always_online":false}},"oauth_config":{"scopes":{"bot":["channels:history","channels:join","channels:read","chat:write","users:read"]}},"settings":{"org_deploy_enabled":true,"socket_mode_enabled":false,"token_rotation_enabled":false}}

「Install to Workspace」をクリック

「許可する」をクリックし、画面遷移するまで待つ

左側の「OAuth & Permissions 」をクリックすると、「xoxb-」から始まるAPI キーが取得できる。

Slack APIキーの取得手順は以上です。
CHANNEL IDは、アプリを追加したいチャンネルIDを格納している変数です。チャンネル名をクリックすると、下に表示されます。

これで準備完了です。プログラムの該当部分を書き換えてプログラムを保存してください。今回は、summariser.pyというファイル名にしました。
クリックで表示
#!/usr/bin/env python3
# https://github.com/masuidrive/slack-summarizer
# by [masuidrive](https://twitter.com/masuidrive) @ [Bloom&Co., Inc.](https://www.bloom-and-co.com/) 2023- [APACHE LICENSE, 2.0](https://www.apache.org/licenses/LICENSE-2.0)
import os
import re
import time
import pytz
from slack_sdk.errors import SlackApiError
from slack_sdk import WebClient
from datetime import datetime, timedelta
import openai
from openai.error import InvalidRequestError
#以下の3つはご自身の環境で取得し書き換える必要があります。
openai.api_key = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
# APIトークンとチャンネルIDを設定する
TOKEN = "xoxb-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
CHANNEL_ID = "XXXXXXXXX"
# OpenAIのAPIを使って要約を行う
def summarize(text):
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
temperature=0.5,
messages=[
{"role": "system", "content": "チャットログのフォーマットは発言者: 本文\\nになっている。\\nは改行を表しています。これを踏まえて指示に従います"},
{"role": "user", "content": f"下記のチャットログを箇条書きで要約してください。1行ずつの説明ではありません。全体として短く。\n\n{text}"}
]
)
return response["choices"][0]["message"]['content']
# 取得する期間を計算する
HOURS_BACK = 25
JST = pytz.timezone('Asia/Tokyo')
now = datetime.now(JST)
yesterday = now - timedelta(hours=HOURS_BACK)
start_time = datetime(yesterday.year, yesterday.month, yesterday.day,
yesterday.hour, yesterday.minute, yesterday.second)
end_time = datetime(now.year, now.month, now.day,
now.hour, now.minute, now.second)
# Slack APIクライアントを初期化する
client = WebClient(token=TOKEN)
# ユーザーIDからユーザー名に変換するために、ユーザー情報を取得する
try:
users_info = client.users_list()
users = users_info['members']
except SlackApiError as e:
print("Error : {}".format(e))
exit(1)
# チャンネルIDからチャンネル名に変換するために、チャンネル情報を取得する
try:
channels_info = client.conversations_list(
types="public_channel,private_channel",
exclude_archived=False,
limit=200
)
channels = [channel for channel in channels_info['channels']
if not channel["is_archived"] and channel["is_channel"]]
channels = sorted(channels, key=lambda x: int(re.findall(
r'\d+', x["name"])[0]) if re.findall(r'\d+', x["name"]) else float('inf'))
except SlackApiError as e:
print("Error : {}".format(e))
exit(1)
# 指定したチャンネルの履歴を取得する
def load_messages(channel_id, ts):
result = None
result = client.conversations_replies(ts=ts,
channel=channel_id,
oldest=start_time.timestamp(),
latest=end_time.timestamp()
)
# messages = result["messages"]
messages = list(filter(lambda m: "subtype" not in m, result["messages"]))
if len(messages) < 1:
return None
messages_text = []
while result["has_more"]:
result = client.conversations_replies(ts=ts,
channel=channel_id,
oldest=start_time.timestamp(),
latest=end_time.timestamp(),
cursor=result["response_metadata"]["next_cursor"]
)
messages.extend(result["messages"])
for message in messages[::-1]:
if "bot_id" in message:
continue
if message["text"].strip() == '':
continue
# ユーザーIDからユーザー名に変換する
user_id = message['user']
sender_name = None
for user in users:
if user['id'] == user_id:
sender_name = user['name']
break
if sender_name is None:
sender_name = user_id
# テキスト取り出し
text = message["text"].replace("\n", "\\n")
# メッセージ中に含まれるユーザーIDやチャンネルIDを名前やチャンネル名に展開する
matches = re.findall(r"<@[A-Z0-9]+>", text)
for match in matches:
user_id = match[2:-1]
user_name = None
for user in users:
if user['id'] == user_id:
user_name = user['name']
break
if user_name is None:
user_name = user_id
text = text.replace(match, f"@{user_name} ")
matches = re.findall(r"<#[A-Z0-9]+>", text)
for match in matches:
channel_id = match[2:-1]
channel_name = None
for channel in channels:
if channel['id'] == channel_id:
channel_name = channel['name']
break
if channel_name is None:
channel_name = channel_id
text = text.replace(match, f"#{channel_name} ")
messages_text.append(f"{sender_name}: {text}")
if len(messages_text) == 0:
return None
else:
return messages_text
result_text = []
for channel in channels:
try:
threads = client.conversations_history(channel=channel["id"],
oldest=start_time.timestamp(),
latest=end_time.timestamp())
except SlackApiError as e:
if e.response['error'] == 'not_in_channel':
response = client.conversations_join(
channel=channel["id"]
)
if not response["ok"]:
raise SlackApiError("conversations_join() failed")
time.sleep(5) # チャンネルにjoinした後、少し待つ
threads = client.conversations_history(
channel=channel["id"],
oldest=start_time.timestamp(),
latest=end_time.timestamp()
)
else:
print("Error : {}".format(e))
continue
messages_in_channel = []
if not threads["messages"]:
continue
result_text.append(f"----\n<#{channel['id']}>\n")
for thread in threads["messages"]:
if thread:
messages = load_messages(channel["id"], thread["ts"])
if messages:
messages_in_channel.extend(messages[::-1])
try:
result_text.append(summarize(messages_in_channel))
except InvalidRequestError as e:
result_text.append('4096tokenを超えたため生成に失敗しました')
title = (f"{yesterday.strftime('%Y-%m-%d')}の要約")
text = title+"\n\n"+"\n\n".join(result_text)
response = client.chat_postMessage(
channel=CHANNEL_ID,
text=text
)
print("Message posted: ", response["ts"])
「アプリを追加する」 から「timesチャンネル」にSummaryアプリを召喚。

これで準備は完了です。
ChatGPTとExcelを連携させる方法について詳しく知りたい方は、下記の記事を合わせてご確認ください。

SlackとChatGPTを実際に連携して使ってみた
「SlackGPT」、「SlackとChatGPTのAPI連携」の順番で確認していきます。
SlackGPT
以下のタスクを実行しました。
- メールの返信を考えてもらう
- プログラムを考えてもらう
- 社員の交流会を企画してもらう
プロンプトもあるので、ぜひご自身でお試しください。
1.メールの返信を考えてもらう
次のようなプロンプトを使って、メールの返信文を考えてもらいました。書いてほしい内容が書かれていたので、問題ないと思います!
#instruction:
あなたは優秀なビジネスマンです。
最高な返信を考えてください。
#input:
{返信したい文章}
#ouput:
2.プログラムの考案
今回は、フィボナッチ数列を返すプログラムを次のプロンプトで作ってもらいました。
#役割:
あなたは優秀なエンジニアです
#制約条件:
フィボナッチ数列を作成するプログラミングを書いてください
数列の長さを指定できるようにしてください
#出力:
実行してみたところ、問題なく動いてました!業務で使うようなプログラムも今度書いてもらおう!

3.社員の交流会を企画してもらう
次のようなプロンプトで、社員の交流会を企画してもらいました。
大枠を考えるときにすごく便利そう。
#役割:
あなたは優秀なイベントプランナーです
#制約条件:
社員の交流会を企画してください
#指示:
・開催地は東京都に絞る
・下記「出力」の条件に合わせる
・参加人数は20名
・予算は50万円以内とし、想定費用の詳細を算出してください
#出力:
{開催地}
{内容詳細}
{想定費用}
{開催日時}
ちなみに想定費用の算出根拠について質問してみました。各項目毎にしっかりソースがあって納得できる気がします!

SlackとChatGPTのAPI連携
次は、先程準備した要約用のSlackアプリを実行しましょう。
要約アプリの実行
先程、Slackアプリの導入手順で作ったsummarize.pyを実行します。
python3 summarize.py 
すると、Slack上で、各チャンネルの内容が要約されます!

ほかにもSlack APIを使い別のアプリ開発することで、さまざまなことに応用可能です。
ChatGPTと連携させたSlackの活用シーン
実際に連携を済ませた後、日々の業務でどのように活用できるのか、具体的なシーンを紹介します。
メールの返信文や企画書の作成
取引先から届いたメールに対して、適切な敬語を使った返信文の作成をAIに依頼できます。要点やトーンを簡単に伝えるだけで、ビジネスメールとして十分な文面を短時間で仕上げてくれます。
また、社内イベントの企画や会議のアジェンダ作成など、ゼロから文章を考えるのが難しい場面でも、条件を箇条書きで伝えるだけで大枠を作成してくれます。内容の修正や言い回しの調整もチャット上で順次依頼できるため、メール作成にかかる時間を大幅に短縮できます。
文章を数秒で敬語に変換してくれるAIツールについて、以下の記事で紹介しています。詳しく知りたい方は、併せてご確認ください。

プログラムのコード生成とエラー確認
エンジニアの方にとっても使い道はあります。特定の処理をするコードを書いてもらったり、エラーが出たときに原因を一緒に探ってもらったりといった使い方ができます。
エラーメッセージをそのままSlackに貼って聞くだけで、原因と修正の方向性を示してくれるので、デバッグにかかる時間をかなり減らせます。Slack上でやりとりが完結するので、開発チーム内での情報共有もついでにできるのが地味に便利です。
コーディング性能が向上したClaude Opus 4.7について、詳しく知りたい方は、以下の記事も併せてご確認ください。
専門家AIとしての活用
API連携を利用して、マーケターやコンサルタントといった特定の役割を持たせたAIボットを作成することも有効です。例えば「マーケティング施策の改善点を指摘して」と依頼すると、専門家の視点から回答を得られるため、気軽に相談できる壁打ち相手として機能します。
社内に該当の専門家がいない分野でも、AIボットを通じて専門知識にアクセスできる点が大きなメリットです。
どんな専門家でも召喚させられるChatGPT AutoExpertについて、詳しく知りたい方は、以下の記事も併せてご確認ください。

SlackとChatGPTを連携させる注意点
連携は非常に便利ですが、運用にあたってはいくつか気をつけるべきポイントがあります。
情報漏洩とセキュリティの管理
機密情報や個人情報をAIに入力しないよう、社内で明確なルールを設けることが推奨されます。公式アプリやAPIを利用する場合、入力データがAIの学習に利用されない設定になっているか、事前に確認しておくことが望ましいです。
OpenAIでは、APIを通じた入力データはデフォルトでモデルの学習に使用されない仕様となっていますが、利用するプランや設定によって異なる場合があるため、公式ドキュメントで最新の情報を確認するようにしましょう。
回答の正確性の確認
AIが生成する回答は、すべてが正確とは限りません。誤った情報(ハルシネーション)が含まれる可能性があるため、最終的な事実確認は人間が行う体制を整えておくことが求められます。
特に、数値データや法律・規約に関わる内容、社外に公開する文章などは、AIの回答をそのまま使用せず、担当者が内容を精査したうえで活用するフローを社内で定めておくとよいでしょう。
よくある質問
slackgptを活用して業務のデジタル化を推進しよう
本記事では、SlackとChatGPTを連携させる方法や、その具体的な活用シーンについて解説しました。slackgptをはじめとするAI技術を社内のコミュニケーションツールに組み込むことで、情報の整理や文章作成にかかる時間を大幅に削減できます。
一方で、「自社のセキュリティ基準を満たした連携方法がわからない」「APIを使った高度なボット開発を任せられる人材がいない」といった課題を抱える企業様も少なくありません。
弊社では、AIを活用した業務効率化の支援や、独自のSlackアプリ開発のサポートを行っております。貴社の課題に合わせた最適なAI導入プランをご提案いたしますので、AIのビジネス活用にご興味のある方は、ぜひお気軽にお問い合わせください。専門スタッフが現状のヒアリングから実装まで、丁寧にサポートいたします。

最後に
いかがだったでしょうか?
SlackとChatGPTを連携すると、単なるチャット効率化ではなく「社内ナレッジを即座に活用できる環境」を構築できます。メール作成やコードレビュー、専門家AIによる壁打ちまで自動化することで、情報共有や意思決定のスピードを大きく向上させることが可能です。
株式会社WEELは、自社・業務特化の効果が出るAIプロダクト開発が強みです!
開発実績として、
・新規事業室での「リサーチ」「分析」「事業計画検討」を70%自動化するAIエージェント
・社内お問い合わせの1次回答を自動化するRAG型のチャットボット
・過去事例や最新情報を加味して、10秒で記事のたたき台を作成できるAIプロダクト
・お客様からのメール対応の工数を80%削減したAIメール
・サーバーやAI PCを活用したオンプレでの生成AI活用
・生徒の感情や学習状況を踏まえ、勉強をアシストするAIアシスタント
などの開発実績がございます。
生成AIを活用したプロダクト開発の支援内容は、以下のページでも詳しくご覧いただけます。
︎株式会社WEELのサービスを詳しく見る。
まずは、「無料相談」にてご相談を承っておりますので、ご興味がある方はぜひご連絡ください。
︎生成AIを使った業務効率化、生成AIツールの開発について相談をしてみる。

「生成AIを社内で活用したい」「生成AIの事業をやっていきたい」という方に向けて、生成AI社内セミナー・勉強会をさせていただいております。
セミナー内容や料金については、ご相談ください。
また、サービス紹介資料もご用意しておりますので、併せてご確認ください。

【監修者】田村 洋樹
株式会社WEELの代表取締役として、AI導入支援や生成AIを活用した業務改革を中心に、アドバイザリー・プロジェクトマネジメント・講演活動など多面的な立場で企業を支援している。
これまでに累計25社以上のAIアドバイザリーを担当し、企業向けセミナーや大学講義を通じて、のべ10,000人を超える受講者に対して実践的な知見を提供。上場企業や国立大学などでの登壇実績も多く、日本HP主催「HP Future Ready AI Conference 2024」や、インテル主催「Intel Connection Japan 2024」など、業界を代表するカンファレンスにも登壇している。

