claude-code-notifier
cómo funciona guías preguntas frecuentes
◐Español
English العربية Deutsch Español Français עברית Italiano 日本語 한국어 Nederlands Polski Português (Brasil) Русский Türkçe Tiếng Việt 简体中文 繁體中文
Empezar
Todas las guías

Envía notificaciones de Claude Code a Telegram, Slack o Discord

Actualizado el 31 de octubre de 2026 · 7 min de lectura
en esta página 01Antes de empezar: el mensaje y el secreto 02Telegram: un bot que te escribe 03Slack: un incoming webhook 04Discord: un webhook de canal 05El script del hook (Mac y Linux) 06Añade los hooks 07Windows (PowerShell) 08Lo que debes saber sobre usar apps de chat para notificaciones 09Dónde encaja Claude Code Notifier 10Preguntas frecuentes

Para enviar notificaciones de Claude Code a Telegram, Slack o Discord, crea un bot o un incoming webhook en esa app y luego añade un hook de Claude Code que le envíe un mensaje corto con curl. Un hook Notification cubre "Claude necesita tu permiso" y "Claude está esperando", y un hook Stop cubre "Claude ha terminado". Telegram necesita un token de bot y tu chat ID; Slack y Discord solo necesitan una URL de webhook. El mismo script funciona en Mac y Linux, y una versión corta en PowerShell cubre Windows.

01Antes de empezar: el mensaje y el secreto

Cada hook recibe JSON por la entrada estándar. Los campos útiles son hook_event_name, cwd (la carpeta del proyecto), message en los eventos Notification y last_assistant_message en los eventos Stop. Los ejemplos de abajo los convierten en una sola línea como Claude needs you in my-app: Claude needs your permission to use Bash.

Los tokens de bot y las URLs de webhook son contraseñas: cualquiera que tenga una puede publicar como tu bot. La documentación de Slack dice claramente que no compartas las URLs de webhook ni las subas al control de versiones. Guárdalas en un archivo aparte que solo tú puedas leer:

mkdir -p ~/.claude
touch ~/.claude/chat-notify.env
chmod 600 ~/.claude/chat-notify.env

02Telegram: un bot que te escribe

  1. En Telegram, abre un chat con @BotFather, envía /newbot y sigue las instrucciones. Te responderá con un token como 123456789:AA....
  2. Abre un chat con tu nuevo bot y envíale cualquier mensaje, para que tenga permiso de escribirte.
  3. Busca tu chat ID. Abre esta URL con tu token y busca "chat":{"id": en la respuesta:
curl "https://api.telegram.org/bot<TOKEN>/getUpdates"
  1. Pon ambos valores en ~/.claude/chat-notify.env:
SERVICE=telegram
TELEGRAM_TOKEN=123456789:AA...
TELEGRAM_CHAT_ID=987654321

El método sendMessage de Telegram recibe chat_id y text (de 1 a 4096 caracteres). También acepta disable_notification=true, que entrega el mensaje sin sonido. El script lo usa para los mensajes de "terminado" y mantiene el sonido para las solicitudes de permiso.

03Slack: un incoming webhook

  1. Crea una app de Slack en api.slack.com/apps (o abre una que ya tengas).
  2. En Incoming Webhooks, activa Activate Incoming Webhooks.
  3. Haz clic en Add New Webhook to Workspace, elige un canal y selecciona Authorize.
  4. Copia la URL que empieza por https://hooks.slack.com/services/.
SERVICE=slack
SLACK_WEBHOOK_URL=https://hooks.slack.com/services/T000/B000/XXXX

Cada webhook publica en un solo canal, elegido al crearlo, y no puedes cambiar el nombre ni el icono en cada mensaje. Lo mejor es un canal privado pequeño para ti, así un canal con mucho movimiento no entierra el aviso.

04Discord: un webhook de canal

  1. En tu servidor, abre Server Settings, luego Integrations y luego Webhooks.
  2. Crea un webhook, elige el canal y copia su URL.
SERVICE=discord
DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/1234/abcd

El endpoint execute-webhook de Discord recibe un cuerpo JSON con content (hasta 2000 caracteres) y un username opcional para sobrescribir el nombre del webhook.

05El script del hook (Mac y Linux)

Guárdalo como ~/.claude/chat-notify.sh y ejecuta chmod +x ~/.claude/chat-notify.sh. Necesita curl y jq (brew install jq o apt install jq).

#!/bin/sh
. "$HOME/.claude/chat-notify.env"

input=$(cat)
event=$(printf '%s' "$input" | jq -r '.hook_event_name')
project=$(basename "$(printf '%s' "$input" | jq -r '.cwd')")

if [ "$event" = "Stop" ]; then
  detail=$(printf '%s' "$input" | jq -r '(.last_assistant_message // "") | .[0:300]')
  text="Claude finished in $project. $detail"
  quiet=true
else
  detail=$(printf '%s' "$input" | jq -r '.message // "Needs your attention"')
  text="Claude needs you in $project: $detail"
  quiet=false
fi

case "$SERVICE" in
  telegram)
    curl -s "https://api.telegram.org/bot$TELEGRAM_TOKEN/sendMessage" \
      --data-urlencode "chat_id=$TELEGRAM_CHAT_ID" \
      --data-urlencode "text=$text" \
      --data-urlencode "disable_notification=$quiet" > /dev/null ;;
  slack)
    jq -n --arg t "$text" '{text: $t}' | curl -s -X POST \
      -H 'Content-Type: application/json' --data @- "$SLACK_WEBHOOK_URL" > /dev/null ;;
  discord)
    jq -n --arg t "$text" '{content: $t, username: "Claude Code"}' | curl -s -X POST \
      -H 'Content-Type: application/json' --data @- "$DISCORD_WEBHOOK_URL" > /dev/null ;;
esac
exit 0

Construir el JSON con jq -n --arg es importante: las respuestas de Claude contienen comillas, barras invertidas y saltos de línea, y pegarlas a mano en un string JSON rompe la petición.

Pruébalo antes de conectarlo:

echo '{"hook_event_name":"Notification","cwd":"/tmp/demo","message":"Test"}' | ~/.claude/chat-notify.sh

06Añade los hooks

En ~/.claude/settings.json, dentro del objeto hooks si ya existe:

{
  "hooks": {
    "Notification": [
      {
        "matcher": "permission_prompt|idle_prompt",
        "hooks": [{ "type": "command", "command": "~/.claude/chat-notify.sh" }]
      }
    ],
    "Stop": [
      {
        "hooks": [{ "type": "command", "command": "~/.claude/chat-notify.sh", "async": true }]
      }
    ]
  }
}

Inicia una nueva sesión de Claude Code para que se carguen los hooks. idle_prompt y Stop se solapan: Stop se dispara en cuanto Claude termina, e idle_prompt más o menos un minuto después si no has escrito nada. Quédate con los dos o quita uno; la guía de ntfy explica los pros y contras.

07Windows (PowerShell)

Guárdalo como %USERPROFILE%\.claude\chat-notify.ps1. Esta versión publica en Discord; para Slack, cambia el cuerpo a @{ text = $text } y la URL.

$url = 'https://discord.com/api/webhooks/1234/abcd'
$in = [Console]::In.ReadToEnd() | ConvertFrom-Json
$project = Split-Path $in.cwd -Leaf

if ($in.hook_event_name -eq 'Stop') { $text = "Claude finished in $project." }
else { $text = "Claude needs you in ${project}: $($in.message)" }

$json = @{ content = $text; username = 'Claude Code' } | ConvertTo-Json
Invoke-RestMethod -Method Post -Uri $url -ContentType 'application/json; charset=utf-8' `
  -Body ([Text.Encoding]::UTF8.GetBytes($json)) | Out-Null

Entrada del hook:

{
  "type": "command",
  "shell": "powershell",
  "command": "powershell -NoProfile -ExecutionPolicy Bypass -File \"$HOME\\.claude\\chat-notify.ps1\""
}

Dentro de WSL, usa el script de Mac y Linux.

08Lo que debes saber sobre usar apps de chat para notificaciones

  • Lo que envías sale de tu ordenador. El mensaje de "terminado" incluye el principio de la respuesta de Claude. En un canal compartido de Slack o Discord, todos los miembros pueden leerlo. Quita $detail si tu código es privado.
  • Las apps de chat agrupan y silencian. Un workspace con mucho movimiento o un servidor silenciado pueden ocultar el aviso. Una app de push dedicada como ntfy (consulta la guía de ntfy) tiene menos riesgo de perderse.
  • Los hooks no saben si estás en tu mesa. Stop publica siempre. idle_prompt y permission_prompt son lo más parecido a un filtro de "ausente" integrado.

09Dónde encaja Claude Code Notifier

Un webhook es una buena forma de llevar un registro de lo que hizo Claude, y para un equipo puede ser la herramienta adecuada. Para una persona que quiere actuar sobre el aviso, se queda corto: lees que Claude necesita permiso y luego tienes que volver a la terminal para dárselo. Un bot de Telegram podría en teoría recibir respuestas, pero tendrías que escribir tú el hook que las espera y devuelve una decisión.

Claude Code Notifier se encarga de esa parte. Con un móvil vinculado, puedes permitir una vez, permitir para la sesión o denegar una solicitud de permiso, responder a las preguntas de opción múltiple de Claude y enviar una nueva instrucción cuando Claude termina, todo desde el móvil. Si has escrito en los últimos 30 segundos, la terminal pregunta como siempre y no queda nada esperando en el móvil. Es independiente, no está hecho por Anthropic, y ccn funciona en Mac, Windows y Linux. Mira cómo se compara, la página de ccn y los precios.

10Preguntas frecuentes

¿Puede Claude Code publicar en Slack sin un script?

Claude Code tiene hooks http que hacen POST del JSON del hook a una URL, pero los webhooks de Slack y Discord esperan su propio formato de cuerpo (text o content), así que un hook http directo a ellos falla. Hace falta un pequeño script o un relay en medio.

¿Cómo encuentro mi chat ID de Telegram?

Envía un mensaje a tu bot y luego abre https://api.telegram.org/bot<TOKEN>/getUpdates. El número que aparece después de "chat":{"id": es el chat ID. Para un grupo, primero añade el bot al grupo y envía un mensaje allí.

¿Puedo responder a Claude Code desde Slack o Discord?

No con un webhook entrante, que solo publica mensajes. Para responder necesitas un hook que espere tu respuesta y devuelva una decisión, que es justo para lo que están hechas las herramientas de aprobación remota.

¿El hook ralentiza Claude Code?

La entrada Stop usa "async": true, así que envía en segundo plano. Los hooks Notification ya se ejecutan en paralelo a Claude sin bloquearlo.

Claude Code Notifier Recibe un push en el móvil cuando Claude Code termina o te necesita, y aprueba, deniega o responde desde ahí. La herramienta de línea de comandos ccn es gratis en Mac, Windows y Linux.
Descargar para iOS Descargar para Android Instalar ccn

Guías relacionadas

  • Notificaciones push de Claude Code con ntfy (hazlo tú mismo)Envía alertas de Claude Code a tu móvil con ntfy: un script de hook para Mac, Windows y Linux, las entradas de settings.json y cómo mantener privado el topic.
  • Todas las formas de recibir notificaciones de Claude Code, comparadasAlertas integradas, tus propios hooks, ntfy y webhooks de chat, Remote Control de Anthropic y apps de notificaciones, comparados según lo que puede y no puede hacer cada uno.
  • El Notification hook de Claude Code: cuándo se dispara y cómo usarloCuándo se dispara el Notification hook de Claude Code, qué significan permission_prompt e idle_prompt, qué entrada recibe y por qué espera antes de dispararse.
claude-code-notifier

Claude Code Notifier es una aplicación independiente de terceros. No está afiliada, respaldada ni patrocinada por Anthropic, PBC. "Claude" y "Claude Code" son marcas comerciales de Anthropic, PBC.

apps App para iOS App para Android ccn para macOS, Windows y Linux Todas las guías
legal Política de privacidad Condiciones del servicio Otros idiomas © 2026 touchtap. Todos los derechos reservados. TouchTap Ltd está registrada en Inglaterra y Gales, número de empresa 13942589.