Handleidingen · n8n

Interne Slack-bot bouwen met n8n en Claude voor teamvragen

Bouw een interne Slack-bot met n8n en Claude die teamvragen beantwoordt vanuit je kennisbank. Stap-voor-stap handleiding voor MKB 2026.

🟡 Gevorderd — beetje technisch ⏱ 75 minuten
Tools: n8nClaudeSlackNotion
Interne Slack-bot bouwen met n8n en Claude voor teamvragen

Wat je leert in deze handleiding

  • Slack-bot aanmaken en koppelen aan n8n
  • Slash commands instellen voor veelgestelde vragen
  • Claude koppelen aan je interne kennisbank
  • Antwoorden posten in Slack threads
  • Bot uitbreiden met acties zoals taken aanmaken

Waarom een interne bot het verschil maakt

Slack is een zegen voor samenwerking, maar ook een vloek voor productiviteit. Het constante getik van vragen die al honderd keer zijn beantwoord: "Wat is het wachtwoord van X?", "Hoe werkt onze onboarding?", "Wie is de contactpersoon bij leverancier Y?" Een interne bot beantwoordt dit soort vragen direct, 24/7, zonder iemand te onderbreken.

We bouwen voor fictief bureau "Groeistroom" een Slack-bot die teamvragen beantwoordt op basis van hun Notion kennisbank. De aanpak werkt ook met andere kennisbanken.

Stap 1: Slack App aanmaken

Ga naar api.slack.com/apps en klik "Create New App". Kies "From scratch". Naam: "Groeistroom Bot". Selecteer je Slack workspace.

Activeer de volgende features:

• Slash Commands: voor /vraag, /kennisbank en andere commando's

• Event Subscriptions: om @ mentions op te vangen

• Bot Token Scopes: chat:write, commands, im:read, im:write

Ga naar "OAuth & Permissions" en installeer de app in je workspace. Kopieer het "Bot User OAuth Token" (begint met xoxb-).

Stap 2: Slash Command instellen

In je Slack App configuratie, ga naar "Slash Commands" > "Create New Command":

Command: /vraag

Request URL: [jouw n8n webhook URL] (volgt in stap 3)

Short Description: Stel een vraag aan de kennisbank

Usage Hint: [jouw vraag]

Sla op. Slack stuurt nu bij elk /vraag commando een POST-verzoek naar n8n.

Stap 3: n8n webhook ontvangen

Maak een nieuwe n8n workflow aan:

Node 1: Webhook (POST) — ontvang Slack slash command

Slack stuurt een form-urlencoded POST met velden: token, team_id, channel_id, user_id, command, text (de vraag), response_url.

Voeg meteen een "Respond to Webhook" node toe die 200 OK teruggeeft (Slack vereist dit binnen 3 seconden). Stuur een bevestiging:

{ "response_type": "ephemeral", "text": "Een moment... ik zoek het op." }

De eigenlijke verwerking doe je asynchroon via de response_url.

Stap 4: Notion kennisbank ophalen

Na de directe response, start de kennisbank-query. HTTP Request naar Notion:

URL: https://api.notion.com/v1/databases/{{ NOTION_DB_ID }}/query

Method: POST

Headers: Authorization: Bearer {{ notion_token }}, Notion-Version: 2022-06-28

Body: { "filter": { "property": "Status", "select": { "equals": "Actueel" } }, "page_size": 30 }

In een Code node: converteer de Notion response naar een leesbare tekst-string voor Claude.

Stap 5: Claude aanroepen

HTTP Request naar Claude:

URL: https://api.anthropic.com/v1/messages

Prompt:

"Je bent de interne kennisassistent van Groeistroom. Beantwoord de vraag van een teamlid op basis van de kennisbank. Regels: 1) Antwoord alleen op basis van de kennisbank, 2) Als het antwoord er niet in staat, zeg dat eerlijk, 3) Houd het beknopt en to-the-point, 4) Gebruik Slack-formatting (bold: *tekst*, bullets: •), 5) Sluit af met de naam van het kennisitem waaruit je het antwoord haalt.\n\nKennisbank:\n{{ kennisbank_content }}\n\nVraag van {{ user_naam }}:\n{{ slash_command_text }}"

Stap 6: Antwoord posten in Slack

Gebruik de response_url uit het Slack-verzoek om het Claude-antwoord te posten. HTTP Request:

URL: {{ $json.response_url }}

Method: POST

Body:

{ "response_type": "in_channel", "text": "{{ claude_antwoord }}", "replace_original": false }

Gebruik response_type "in_channel" als het antwoord voor het hele team nuttig is, of "ephemeral" als het alleen voor de vragensteller is (bijv. wachtwoorden).

Stap 7: Meerdere commando's toevoegen

Breid de bot uit met extra slash commands:

/kennisbank-toevoegen [onderwerp] [inhoud]: voeg direct een nieuw item toe aan Notion. Claude structureert het voordat het wordt opgeslagen.

/wie-is [naam/rol]: zoek contactpersonen in de Notion directory.

/status [project]: haal de laatste status op van een project (koppel aan ClickUp of Asana API).

Elk commando heeft een eigen webhook URL in n8n of je verwerkt alle commando's via één webhook met een IF/Switch node op het "command" veld.

Stap 8: @ mentions afvangen

Naast slash commands kun je de bot laten reageren op @ mentions. In je Slack App, activeer "Event Subscriptions":

Subscribe to Bot Events: app_mention

Request URL: een nieuwe n8n webhook URL voor @ mention events.

Nu reageert de bot als iemand "@Groeistroom Bot wat is het kantooradres?" typt. De flow is identiek aan het slash command, maar de input komt uit event.text in plaats van het command text-veld.

Stap 9: Acties toevoegen (taken aanmaken)

Uitbreiding: laat de bot taken aanmaken in je PM-tool. Commando: /taak [beschrijving]

n8n workflow:

1. Ontvang /taak commando

2. Claude parseert de taakomschrijving en voegt metadata toe (prioriteit, geschatte tijd)

3. HTTP Request naar ClickUp/Asana API: create task

4. Slack response: "Taak aangemaakt: [naam]. Toewijzen aan: {{ user }}? Reageer met een naam of @iemand."

5. Optioneel: luister op een follow-up bericht voor toewijzing

Stap 10: Testen en deployen

1. Ga in Slack naar het testkanaal

2. Typ /vraag Wat is ons retourbeleid?

3. Controleer of de bevestiging direct verschijnt

4. Controleer of het Claude-antwoord binnen 10 seconden verschijnt

5. Test met een vraag die NIET in de kennisbank staat

6. Test /vraag in een DM (directe berichten) met de bot

7. Deel de bot met het team via #algemeen

Troubleshooting

Slack geeft "dispatch_failed" terug: de n8n webhook reageerde niet binnen 3 seconden. Zorg dat je altijd meteen een 200 OK teruggeeft, ook al is de verwerking nog bezig. Stuur het definitieve antwoord asynchroon via response_url.

Bot reageert niet op @ mentions: controleer of Event Subscriptions actief zijn en of de Request URL correct is. Slack stuurt een verification challenge bij het instellen: n8n moet hierop reageren met { "challenge": "{{ challenge }}" }.

Claude antwoord te lang voor Slack: Slack heeft een maximale message lengte van 3.000 tekens. Voeg aan de Claude prompt toe: "Maximaal 400 woorden in je antwoord."

Notion data niet actueel: voeg een refresh knop toe via een slash command /kennisbank-refresh dat de Notion-cache in Airtable of n8n bijwerkt.

Resultaat

Na implementatie hebben teamleden direct toegang tot alle interne kennis via Slack. Geen onderbrekingen meer voor routinevragen. De bot wordt slimmer naarmate je kennisbank groeit. En nieuwe medewerkers zijn sneller productief omdat ze antwoorden kunnen vinden zonder collega's te storen.

Gerelateerd

Nieuwsbrief

Meer handleidingen en tips?

Elke week de beste agentic AI inzichten en nieuwe handleidingen in je inbox.

Gratis aanmelden →