Automate Slack Standup Summaries with n8n and AI

Daily standups are supposed to keep teams aligned. Instead, they often produce scattered Slack threads, forgotten updates, and summary messages that someone has to manually compile before the next mee

Automate Slack Standup Summaries with n8n and AI

Daily standups are supposed to keep teams aligned. Instead, they often produce scattered Slack threads, forgotten updates, and summary messages that someone has to manually compile before the next meeting. If your team runs async standups in Slack, you already have the raw material for a clean, consistent summary — you just need something to process it automatically. n8n combined with an LLM can do exactly that, without any custom infrastructure.

How the Workflow Works

The core idea is straightforward: collect standup messages posted in a specific Slack channel during a defined window, pass them to an AI model, and post the generated summary back to Slack (or send it by email, log it to Notion, whatever your team uses). The flow has four stages:

  • Trigger: A scheduled node fires at the end of your standup window — say, 10:00 AM daily.
  • Collect: The Slack node fetches all messages from the standup channel posted in the last 24 hours (or since the previous trigger run).
  • Summarize: An AI node (OpenAI, Claude, or any compatible model) receives the raw messages and returns a structured summary grouped by person, blockers, and action items.
  • Deliver: The summary posts back to Slack in a dedicated #standup-summary channel, or gets sent to a project manager's inbox.

The whole thing runs unattended. No one has to read through 15 message threads and manually write a summary. The AI does it, every day, on schedule.

Setting Up the n8n Workflow

You'll need a few things before building this in n8n:

  • A Slack app with channels:history and chat:write scopes — create one at api.slack.com and install it to your workspace.
  • An API key for your LLM provider (OpenAI, Anthropic, or whichever you prefer).
  • An n8n instance — self-hosted or n8n Cloud both work.

In n8n, start with a Schedule Trigger set to run weekdays at your standup cutoff time. Connect it to a Slack node using the "Get Messages" operation. Set the channel to your standup channel and filter by timestamp — use the expression {{ $now.minus(1, 'day').toUnixInteger() }} as your oldest timestamp parameter to pull only today's messages.

Next, pass the message array to an HTTP Request node or the native OpenAI / Anthropic node. Your prompt should instruct the model to extract each person's updates, flag any blockers, and list action items. A prompt like this works well in practice:

"Below are standup messages from a Slack channel. Summarize them into three sections: 1) What each person completed yesterday, 2) What each person is working on today, 3) Any blockers. Be concise. Use bullet points."

Finally, connect a second Slack node set to "Post Message" and send the AI output to your summary channel. Add a Code node before posting if you want to format the output with Slack's block kit for cleaner rendering.

Prompt Engineering for Clean Output

The quality of the summary depends almost entirely on your prompt. A few patterns that improve results consistently:

  • Give the model a structure to follow. If you want output in a specific format, show it an example in the prompt. "Format exactly like this: [example]" works better than describing the format abstractly.
  • Handle noise explicitly. Standup channels accumulate emoji reactions, bot messages, and off-topic threads. Tell the model to ignore messages that don't follow the standup format.
  • Set a persona. "You are a technical project manager summarizing async standups" produces more useful output than a generic instruction.
  • Cap the output length. Without a length constraint, models tend to over-explain. Add "Keep the total summary under 300 words" to keep it readable in Slack.

If your team doesn't follow a consistent standup format (yesterday / today / blockers), the AI will still produce something useful, but you'll get better results by standardizing your team's update format first — even just a pinned message template in the channel helps.

Extending the Workflow

Once the basic version is running, there are a few high-value extensions worth considering:

  • Log summaries to Notion or Google Sheets — gives you a searchable history of what the team was working on week by week.
  • Route blockers to a separate channel or ticket system — the AI can tag messages that contain the word "blocked" and trigger a separate notification to a tech lead.
  • Weekly digest — run a second workflow every Friday that pulls the week's summaries and generates a higher-level weekly report for leadership.
  • Multi-team support — parameterize the channel ID so the same workflow runs for multiple teams without duplicating nodes.

None of these require significant extra work — they're mostly additional nodes connected to the same core logic.

If you'd rather start from a working workflow than build from scratch, ready-made n8n templates cover this pattern and dozens of others, pre-built and ready to import into your n8n instance. Building it yourself is a useful exercise; using a tested template is faster when the goal is to ship.

Async standups work best when the overhead of managing them is invisible. Automating the summary is one of the highest-leverage things you can do to make that happen — it takes an hour to build, and it saves someone a manual task every single workday after that.

Competitor Intelligence Monitor
PRONTO PARA USAR

Ja construimos isso pra voce

Nao comece do zero. O Competitor Intelligence Monitor e um workflow n8n pronto para instalar que faz exatamente isso — em minutos, nao horas.

Instalar por $59 →