Skill Slack OpenClaw : guide pratique
Configurez un skill Slack OpenClaw pour envoyer alertes, résumés et notifications automatiques depuis vos agents.
Slack skill openclaw
Introduction
Quand un agent OpenClaw tourne en arrière-plan, le vrai enjeu n'est pas seulement l'exécution, mais la visibilité sur ce qu'il fait. Slack est souvent le meilleur canal pour recevoir un résumé de fin de run, une alerte critique ou un rapport quotidien partagé avec une équipe. Dans ce tutoriel, vous allez voir comment créer une app Slack, récupérer un bot token, coder un skill basé sur slack-sdk, puis envoyer des messages simples ou enrichis vers un canal dédié. Si vous découvrez d'abord l'architecture globale, commencez par comprendre les skills OpenClaw.
Résumé rapide
- Créez une Slack App et donnez-lui au minimum
chat:writeetchannels:read. - Installez l'app dans votre workspace, puis stockez le bot token
xoxb-...dans les variables d'environnement. - Créez un skill OpenClaw avec
slack-sdk, un clientWebClientet une méthodeexecute(). - Testez d'abord un message texte simple, puis ajoutez des blocs Block Kit pour les rapports lisibles.
- N'envoyez des notifications que sur événement utile, sinon votre canal devient rapidement inutilisable.
Explication
Un skill Slack OpenClaw est un module Python qui permet à un agent d'écrire dans un workspace Slack via l'API officielle. Techniquement, l'agent n'envoie rien directement : il choisit un skill, lui passe un contenu structuré, puis le skill appelle Slack avec le bon token, le bon canal et le bon format.
Ce modèle est utile pour trois raisons. D'abord, vous séparez la logique métier de la logique de notification. Ensuite, vous gardez un historique centralisé dans un canal d'équipe au lieu de dépendre uniquement des logs serveur. Enfin, vous pouvez enrichir le message selon le contexte : simple texte pour une confirmation, blocs structurés pour un rapport, mention ciblée pour une anomalie.
Dans l'écosystème OpenClaw, Slack complète bien des articles comme les outils d'un agent IA ou les exemples de skills OpenClaw. C'est un point de sortie, pas un moteur d'orchestration. Le bon design consiste donc à garder les décisions dans l'agent et à réserver Slack au signal utile : état, synthèse, exception, validation humaine éventuelle.
Configurer le skill Slack dans OpenClaw
Prérequis
Avant de coder, préparez quatre éléments :
- un workspace Slack où vous pouvez installer une app,
- Python et votre environnement OpenClaw,
- la dépendance
slack-sdk, - un canal de test, par exemple
#agents-ia.
Installez la dépendance officielle :
pip install slack-sdk
1. Créer la Slack App
Dans https://api.slack.com/apps, créez une nouvelle app, puis ouvrez OAuth & Permissions. Ajoutez au minimum ces scopes bot :
chat:writechannels:read
chat:write permet d'envoyer un message. channels:read permet de retrouver un canal public par son nom ou de valider sa présence. Dans beaucoup de cas, cela suffit pour une première version propre.
Installez ensuite l'app dans votre workspace. Slack génère alors un Bot User OAuth Token commençant par xoxb-. Conservez-le dans une variable d'environnement, jamais en dur dans le code.
export SLACK_BOT_TOKEN="xoxb-..."
export SLACK_DEFAULT_CHANNEL="#agents-ia"
2. Écrire un skill minimal
L'exemple ci-dessous utilise slack-sdk et reste volontairement simple. Il envoie un message texte dans un canal donné ou dans le canal par défaut.
import os
from slack_sdk import WebClient
from slack_sdk.errors import SlackApiError
from openclaw.skills import BaseSkill, SkillResult
class SlackNotificationSkill(BaseSkill):
name = "slack_notification"
description = (
"Envoie une notification Slack dans un canal pour signaler un résultat, "
"une erreur ou un résumé d'exécution."
)
def __init__(self):
self.client = WebClient(token=os.environ["SLACK_BOT_TOKEN"])
self.default_channel = os.environ.get("SLACK_DEFAULT_CHANNEL", "#agents-ia")
def execute(self, message: str, channel: str | None = None) -> SkillResult:
target_channel = channel or self.default_channel
try:
response = self.client.chat_postMessage(
channel=target_channel,
text=message,
)
return SkillResult(
success=True,
data={
"channel": target_channel,
"ts": response["ts"],
"ok": True,
},
)
except SlackApiError as exc:
return SkillResult(
success=False,
data={
"channel": target_channel,
"error": exc.response.get("error", str(exc)),
"ok": False,
},
)
3. Tester le skill localement
L'idée est de valider le token, le canal et les permissions avant d'intégrer le skill dans un agent plus complexe.
skill = SlackNotificationSkill()
result = skill.execute("Test OpenClaw : notification Slack OK")
print(result)
Si Slack répond channel_not_found, votre bot n'est pas encore dans le canal ou vous utilisez un identifiant/niveau d'accès incorrect. Si Slack répond invalid_auth, vérifiez le token et l'environnement chargé.
4. Passer à des messages lisibles avec Block Kit
Pour un agent en production, un simple paragraphe devient vite limité. Slack Block Kit permet d'afficher une structure plus claire, par exemple un titre, un résumé et une séparation visuelle.
def execute_report(self, title: str, summary: str, channel: str | None = None) -> SkillResult:
target_channel = channel or self.default_channel
blocks = [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": f"*{title}*\n{summary}",
},
},
{"type": "divider"},
]
try:
response = self.client.chat_postMessage(
channel=target_channel,
text=title,
blocks=blocks,
)
return SkillResult(success=True, data={"ts": response["ts"], "ok": True})
except SlackApiError as exc:
return SkillResult(success=False, data={"error": exc.response.get("error", str(exc))})
Le paramètre text reste important, même avec blocks, car Slack l'utilise dans certains aperçus et fallbacks.
5. Déclencher seulement quand c'est utile
Le meilleur usage n'est pas d'envoyer un message à chaque étape, mais de déclencher selon une condition. C'est cohérent avec un système d'orchestration d'agents où les sorties doivent rester rares et exploitables.
Exemple : notifier uniquement si un run dure plus de 15 minutes, si un score dépasse un seuil, ou si une erreur bloque le pipeline.
def maybe_notify(skill, run_status: str, duration_s: int, summary: str):
if run_status == "failed":
return skill.execute(f"Alerte agent : échec du run. {summary}")
if duration_s > 900:
return skill.execute(f"Run long détecté : {duration_s}s. {summary}")
return None
Cette logique évite de transformer Slack en flux de logs bruts. Pour des workflows plus larges, vous pouvez aussi combiner Slack avec OpenClaw en production afin de distinguer les notifications d'exploitation et les notifications métier.
Exemple concret
Prenons un cas très réaliste : un agent OpenClaw exécute une veille concurrentielle chaque soir, synthétise 12 sources et doit poster un résumé final dans #agents-ia.
Le workflow minimal ressemble à ceci :
- l'agent collecte les pages,
- il produit un résumé structuré,
- il appelle le skill Slack à la fin du run,
- il mentionne une personne seulement en cas d'échec ou de signal critique.
summary = """
- 12 sources analysées
- 3 annonces produit détectées
- 1 changement tarifaire chez un concurrent
- rapport complet stocké dans /reports/veille-2026-04-29.md
""".strip()
skill.execute_report(
title="Fin de run - Veille concurrentielle",
summary=summary,
channel="#agents-ia",
)
Le résultat attendu dans Slack est un message court, lisible, non intrusif, que toute l'équipe peut consulter sans ouvrir le serveur. Si vous voulez alerter une personne précise, ajoutez simplement un préfixe comme <@U12345678> dans summary ou dans text. En pratique, gardez les mentions pour les blocages, les délais anormaux ou les écarts critiques. Pour d'autres modèles prêts à adapter, consultez aussi les exemples de skills OpenClaw.
Bonnes pratiques
Le premier piège consiste à spammer. Un agent qui poste à chaque micro-étape finit ignoré. Préférez un message final, plus éventuellement une alerte en cas d'échec. Si vous avez beaucoup d'événements, faites du batching et envoyez une synthèse horaire ou quotidienne.
Deuxième point, gérez explicitement les erreurs Slack API. Les cas les plus fréquents sont invalid_auth, not_in_channel, channel_not_found et les limitations de débit. Logguez ces erreurs côté application pour éviter les faux positifs où l'agent pense avoir notifié alors que rien n'a été envoyé.
Troisième point, choisissez un canal dédié. Mélanger les rapports d'agents avec la conversation générale réduit la valeur des deux. Un canal comme #agents-ia ou #ops-automation est plus propre. Enfin, si vous hésitez entre Slack et l'email pour vos comptes rendus, vous pouvez aussi notifier par complément avec les patterns décrits dans l'article 10 exemples de skills OpenClaw concrets.
Questions fréquentes
Comment connecter OpenClaw à Slack ?
Le plus simple est de créer une Slack App, d'ajouter les scopes chat:write et channels:read, puis d'installer l'app dans votre workspace. Vous récupérez ensuite le bot token xoxb-..., vous le stockez dans une variable d'environnement, et votre skill OpenClaw appelle l'API via slack-sdk.
Faut-il utiliser un webhook ou un bot token pour un agent IA Slack OpenClaw ?
Pour un projet sérieux, préférez le bot token. Les incoming webhooks sont plus rapides à démarrer mais moins souples. Avec slack-sdk et un bot token, vous gardez une intégration Slack agents plus propre, plus extensible, et mieux adaptée aux messages structurés ou aux évolutions futures.
Quels scopes Slack faut-il pour des notifications OpenClaw ?
Le minimum viable pour des openclaw notifications slack simples est chat:write pour poster et channels:read pour lire les informations de canaux publics. Selon vos besoins, vous pourrez ajouter d'autres permissions plus tard, mais commencez petit pour limiter les risques et simplifier le debug.
Peut-on mentionner une personne ou un canal depuis un openclaw slack bot ?
Oui. Il suffit d'inclure la syntaxe Slack appropriée dans le texte, par exemple <@U12345678> pour un utilisateur. Utilisez cette possibilité avec parcimonie. Un openclaw slack bot doit surtout signaler les exceptions réelles, pas interrompre l'équipe pour des événements normaux.
Articles liés
Un skill Slack OpenClaw est surtout utile quand vous avez déjà des agents qui produisent des sorties régulières et que vous voulez les rendre visibles sans ouvrir vos logs. Commencez simple avec un message texte, puis enrichissez seulement ce qui améliore vraiment la lecture. La prochaine étape logique consiste à combiner plusieurs skills de sortie et d'orchestration selon votre workflow.
Restez informé sur les agents IA
Nouveaux tutoriels, comparatifs et guides pratiques directement dans votre boîte mail.