How to Summarise Long Slack Channels With AI (Built-in, Claude or a Short Script)
Summarise long Slack channels with AI: use Slack's built-in Summarise button, the Claude app, or a short Python script. Plans, limits and steps as of Oct 2026.
Quick answer: Open the channel, click the three dots icon at the top, and choose Summarise channel. Slack's help center says you can summarise your unread messages, the last seven days, or a custom date range (desktop only). Free? Only if your plan includes it (see below).
If your plan has no summary button, or the channel is too long for the Claude app, a short Python script can do the job for a small API fee. All three methods are below.
What do you need before you start?
You need a Slack workspace where you are allowed to read the channel. Beyond that, each method has its own requirement:
- Method 1 (Slack's built-in summaries): a Pro, Business+ or Enterprise+ plan. Slack's help center lists conversation summaries on all three. Admins can restrict AI access, so a missing button may be a workspace setting.
- Method 2 (Claude in Slack): a paid Claude Pro, Max, Team or Enterprise account, plus permission to install apps in your workspace, per Slack's Claude page.
- Method 3 (script): a Slack app you create, a bot token, a channel ID, Python 3 with the
requestslibrary, and an Anthropic API key.
How do you summarise a Slack channel with Slack's built-in AI? (Method 1: easiest)
Use the Summarise channel option in the channel menu. This is the fastest route and needs no setup. The steps below follow Slack's AI guide.
- Open the channel or DM in Slack on desktop.
- Click the three dots icon at the top of the conversation.
- Select Summarise channel (in a DM it reads Summarise conversation).
- Choose an option: your unread messages, the last seven days, or a custom date range. The custom range is desktop only.
- Wait for the summary. Slack says larger time frames or message histories take longer, and it notifies you when the summary is ready.
- Click the More details icon to see the messages the summary came from.
For a single long thread, open the thread and click Summarise at the top of it. On mobile, open the channel and tap Summarise in the top right. A badge appears on the icon when the summary is ready.
How do you get an automatic daily summary instead?
Turn on Recaps. Slack's guide says a recap arrives each morning and covers the previous day, or all the days you were away. Recaps are listed for Business+ and Enterprise+, not Pro.
- Click Recap in the sidebar on desktop.
- Review the channels Slack suggests. It recommends a few you visit often but rarely post in.
- Turn recaps on.
- To change channels later, click Recap, then Manage Recap in the top right. Search to add a channel, untick one to remove it, use the toggle to mute or unmute, then click Save.
How do you summarise a Slack channel with Claude? (Method 2)
Install the Claude app from the Slack Marketplace, connect your Claude account, then mention @Claude in the channel. This works on a paid Claude plan, but it has a hard limit on how much history it reads.
- Open the Claude page in the Slack Marketplace and click Add to Slack.
- Click Allow, then return to your workspace. If you cannot install apps, Slack says you can send a request to an admin.
- In the sidebar, click Agents & tools, then Apps, and select Claude.
- Click Open app, then the Home tab, then Connect account. Sign in to Claude and return to Slack.
- Add Claude to the channel: open the channel name, choose Agents & apps, click Add agent or app, then click Add next to Claude.
- Type a message such as
@Claude summarise the key decisions in this channeland send it.
Slack's page says Claude can access the 20 most recent messages in a channel and the 50 most recent replies in a thread. For a busy channel, 20 messages may cover only a few hours. If you only need to summarise one long thread, the 50-reply limit is more forgiving.
For more on setup across plans, see our guide on how to use Claude in Slack.
What is Claude Tag, and does it change this?
Claude Tag is Anthropic's newer way to use @Claude in Slack. Slack's help page states: "Starting 3rd August 2026, Claude Tag will replace the current Claude app in Slack." Anthropic says Claude Tag is available in beta for Claude Enterprise and Team customers.
Anthropic's catch-up docs list prompts such as @Claude catch me up on this channel since Monday. and @Claude summarize what I missed last week, grouped by topic. They also show a scheduled prompt that posts a summary of open threads every weekday at 9am. Claude must already be in the channel, and the docs say this use case needs no extra connections. The docs state no history depth. They say you bound the work with a time window, one thread, or a grouping.
How do you build your own Slack channel summariser? (Method 3: script)
Write a short Python script that downloads recent messages with Slack's conversations.history method and sends them to the Anthropic Messages API. Use this if your plan has no summary button or you want to control the time window.
Step 1: Create a Slack app and get a token
These steps follow Slack's app settings quickstart.
- Go to
https://api.slack.com/apps?new_app=1. - Select Blank app and click Continue.
- Enter an App Name, select your Workspace, and click Create.
- Open OAuth & Permissions and scroll to Scopes.
- Under Bot Token Scopes, click Add an OAuth Scope. Add
channels:historyfor public channels (usegroups:historyfor private channels). Slack's method page lists both. - Scroll to the top of the page and click Install to Workspace, then Allow.
- Copy the token under OAuth Tokens. Slack says bot tokens begin with
xoxb-. Keep it out of your code. - In Slack, open the channel and type
/invite @YourAppNameto add the app. A bot token only reaches channels the bot belongs to. - Find the channel ID. Verify this step: the Slack docs used for this guide do not cover where the ID is shown, so check Slack's help for your version.
If you add a scope later, use Reinstall to Workspace on the Install App page.
Step 2: Run the script
Set two environment variables, then run the file. Replace the placeholders. Never paste real keys into code you share.
export SLACK_BOT_TOKEN="xoxb-your-token-here"
export ANTHROPIC_API_KEY="your-anthropic-key-here"
pip install requests
python summarise_slack.py
Save this as summarise_slack.py:
import os
import sys
import time
import requests
SLACK_TOKEN = os.environ["SLACK_BOT_TOKEN"]
ANTHROPIC_KEY = os.environ["ANTHROPIC_API_KEY"]
CHANNEL_ID = "C0123456789" # replace with your channel ID
DAYS = 7 # how far back to look
MODEL = "claude-haiku-5-5"
def fetch_messages(channel_id: str, days: int) -> list[dict]:
oldest = str(time.time() - days * 86400)
messages: list[dict] = []
cursor = None
while True:
params = {"channel": channel_id, "oldest": oldest, "limit": 200}
if cursor:
params["cursor"] = cursor
resp = requests.get(
"https://slack.com/api/conversations.history",
headers={"Authorization": f"Bearer {SLACK_TOKEN}"},
params=params,
timeout=30,
)
if resp.status_code == 429:
time.sleep(int(resp.headers.get("Retry-After", "30")))
continue
data = resp.json()
if not data.get("ok"):
sys.exit(f"Slack error: {data.get('error')}")
messages.extend(data["messages"])
cursor = data.get("response_metadata", {}).get("next_cursor")
if not cursor:
return messages
def summarise(transcript: str) -> str:
resp = requests.post(
"https://api.anthropic.com/v1/messages",
headers={
"x-api-key": ANTHROPIC_KEY,
"anthropic-version": "2023-06-01",
"content-type": "application/json",
},
json={
"model": MODEL,
"max_tokens": 1024,
"system": "You summarise Slack channels for busy readers.",
"messages": [
{
"role": "user",
"content": (
"Summarise this Slack channel history. Give: 1) key "
"decisions, 2) open questions, 3) action items with "
"owners if named. Be brief.\n\n" + transcript
),
}
],
},
timeout=120,
)
resp.raise_for_status()
for block in resp.json()["content"]:
if block.get("type") == "text":
return block["text"]
return "No text returned."
if __name__ == "__main__":
msgs = fetch_messages(CHANNEL_ID, DAYS)
msgs.reverse() # Slack returns the newest message first
lines = [f"[{m.get('user', 'bot')}] {m.get('text', '')}" for m in msgs]
if not lines:
sys.exit("No messages in that time window.")
print(summarise("\n".join(lines)))
Notes on this script:
- Names appear as Slack user IDs such as
U123ABC456, because the method returns auserID field. Claude can still summarise by ID, but you would need another Slack method to show real names. - It reads top-level channel messages. Replies inside threads are fetched with a separate method,
conversations.replies, which this script does not call. - The model ID
claude-haiku-5-5is listed on Anthropic's models overview. Swap inclaude-sonnet-5-5for harder channels.
Will this hit Slack's rate limits?
Not for an app you build for your own workspace. Slack's changelog says conversations.history and conversations.replies dropped to 1 request per minute and 15 objects per request for commercially distributed apps outside the Marketplace. It also says internal customer-built apps are not affected and keep their higher limits. Slack's method page gives those apps Tier 3, which it describes as 50+ requests per minute.
If you plan to sell or distribute the app, the lower limits apply to new installations.
Which method should you choose?
| Method | Cost | Difficulty | Limits | Best for |
|---|---|---|---|---|
| 1. Slack Summarise channel | Included in Pro, Business+ and Enterprise+ | Very easy | Unread, last 7 days or custom range (custom is desktop only) | Daily catch-up |
| 1b. Slack Recap | Business+ and Enterprise+ | Very easy | Previous day or days away | Channels you follow but rarely post in |
| 2. Claude app | Needs a paid Claude plan | Easy | 20 channel messages, 50 thread replies | Short channels, one thread |
| 2b. Claude Tag (beta) | Enterprise and Team (Anthropic) | Easy | No depth stated | Teams on those Claude plans |
| 3. Your own script | Pay-per-use API | Medium | Your Slack scopes and token budget | Free-plan workspaces, custom formats |
What's free and what costs money? (as of 14 October 2026)
- Slack: the pricing page lists Free, Pro, Business+ and Enterprise+. Pro lists AI conversation summaries with the line "Catch up on channels in just a click." Business+ adds AI daily recaps, AI search and file summaries. Enterprise+ is contact-sales. Prices vary by region, so check the page for your own figure.
- Claude app: requires a paid Claude account. Anthropic's Claude Tag is in beta for Enterprise and Team.
- API script: Anthropic's models page lists Claude Haiku 5.5 from $0.10 per million input tokens and $0.50 per million output tokens as of 14 October 2026, with a 1M-token context window.
A hypothetical example for scale: if a week of chat comes to 100,000 input tokens, the input cost at $0.10 per million is $0.01. A 500-token summary at $0.50 per million output tokens is $0.00025. Actual token counts vary with your channel.
What can go wrong, and how do you fix it?
- No Summarise button. Your plan may not include it, or an admin may have restricted AI. Slack's guide says availability depends on your plan, your role as member or guest, and admin settings.
- Summary is slow. Slack says larger time frames or histories take longer. Try seven days instead of a custom range.
- Claude misses older context. The app only sees the 20 latest channel messages. Ask about a thread, paste a link to the message, or use Method 3.
not_in_channelerror in the script. The bot is not a member. Run/invite @YourAppNamein the channel. Slack's method page lists this error.missing_scopeerror. Addchannels:history(orgroups:historyfor private channels) and use Reinstall to Workspace.ratelimitederror. Slack says to read theRetry-Afterheader. The script above waits and retries when it gets a 429 response.
Is this allowed?
Using Slack's own features and approved apps is allowed within your workspace settings. For your own script, read your company's rules first. The script sends message text to a third-party API, and some workspaces forbid that. Do not point it at private channels or DMs without the members' knowledge. Slack's API terms also changed in 2025: its changelog says updated terms took effect on 30 June 2025 for apps created before 29 May 2025. If you distribute an app, read them.
Do not use summaries to bypass access rules. A summary should only cover channels you can already read.
What's still unclear?
- Which Claude product your workspace has. Slack says Claude Tag replaces the Claude app from 3 August 2026, but neither page says whether every workspace has already switched. The 20 and 50 message limits come from the Claude app page, and the Claude Tag docs state no history depth.
- Plan details for Slack AI. The help center's availability table shows summaries on Pro and recaps on Business+, while the pricing page's feature mapping is harder to read by plan. Treat the help center as the authority and check in your workspace.
- Claude Tag is in beta. Anthropic's docs say features may change before general availability.
- The weakest point of any summary: AI summaries can miss context or drop detail. Slack offers More details so you can check the sources. Use it before acting on a decision.
If you want the output somewhere other than your terminal, our guides on sending Slack messages from Google Sheets and pulling API data into Google Sheets cover the next steps. You can also see how to send Google Form responses to Slack.
Last checked: 14 October 2026.
Frequently asked questions
Can Slack summarise a channel for free?
Slack's help center lists conversation summaries for the Pro, Business+ and Enterprise+ plans, and its availability table has no Free column. If you are on the Free plan, the alternatives are the Claude app with a paid Claude account, or your own script with an API key, which is billed by usage. Check your workspace, as plans change.
How many messages can Claude read in a Slack channel?
Slack's help page for the Claude app says that in a channel Claude can access the 20 most recent messages, and in a thread the 50 most recent replies. That is enough for a short catch-up but not for a busy channel. Anthropic's Claude Tag, a newer beta, does not state a history depth, and you set the time window in your prompt.
What is the difference between a Slack summary and a Recap?
A summary is on demand: you open a channel, click the three dots icon, and choose Summarise channel. A Recap is automatic. Each morning Slack gives you a digest of the previous day for channels you chose, or for every day you were away. Recaps need Business+ or Enterprise+, while summaries are also on Pro.
Is it safe to send Slack messages to an AI service?
It depends on your company policy and the tool. Slack's own summaries and the Claude app run inside tools your admin approves. A custom script sends message text to the Anthropic API, so only use it on channels you are allowed to share, and keep tokens in environment variables, never in the code itself.
Why does my script only get a few messages back?
Slack's conversations.history method returns pages of results, so you must follow the next_cursor value until it is empty. Also, the limit is lowered to 15 objects and one request per minute for new installs of commercially distributed apps outside the Slack Marketplace. An app you build only for your own workspace keeps the higher limits.
Sources
- Guide to AI features in Slack, Slack Help Center (2026-10-14)
- Use Claude in Slack, Slack Help Center (2026-10-14)
- Tag Claude in Slack, Anthropic (2026-10-14)
- Catch up (Claude Tag docs), Anthropic (2026-10-14)
- Slack pricing, Slack (2026-10-14)
- conversations.history method, Slack Developer Docs (2026-10-14)
- Rate limit changes for non-Marketplace apps, Slack Developer Docs (2025-05-29)
- Quickstart: create an app with app settings, Slack Developer Docs (2026-10-14)
- Tokens, Slack Developer Docs (2026-10-14)
- Messages API, Anthropic (2026-10-14)
- Models overview, Anthropic (2026-10-14)