claude-code-notifier
작동 방식 가이드 자주 묻는 질문
◐한국어
English العربية Deutsch Español Français עברית Italiano 日本語 한국어 Nederlands Polski Português (Brasil) Русский Türkçe Tiếng Việt 简体中文 繁體中文
시작하기
전체 가이드

Claude Code 알림을 Telegram, Slack, Discord로 보내기

2026년 10월 31일 업데이트 · 7분 분량
이 페이지의 내용 01시작하기 전에: 메시지와 비밀 값 02Telegram: 나에게 메시지를 보내는 bot 03Slack: incoming webhook 04Discord: 채널 webhook 05Hook 스크립트(Mac과 Linux) 06Hook 추가하기 07Windows (PowerShell) 08채팅 앱을 알림 도구로 쓸 때 알아둘 점 09Claude Code Notifier의 역할 10FAQ

Claude Code 알림을 Telegram, Slack, Discord로 보내려면 해당 앱에서 bot이나 incoming webhook을 만든 다음, curl로 짧은 메시지를 보내는 Claude Code hook을 추가하면 돼요. "Claude가 권한을 요청함"과 "Claude가 기다리는 중"은 Notification hook이, "Claude가 작업을 마침"은 Stop hook이 처리해요. Telegram은 bot token과 chat ID가 필요하고, Slack과 Discord는 webhook URL만 있으면 돼요. 같은 스크립트가 Mac과 Linux에서 동작하고, Windows용으로는 짧은 PowerShell 버전이 있어요.

01시작하기 전에: 메시지와 비밀 값

모든 hook은 표준 입력으로 JSON을 받아요. 쓸 만한 필드는 hook_event_name, cwd(프로젝트 폴더), Notification 이벤트의 message, Stop 이벤트의 last_assistant_message예요. 아래 예제는 이 값들을 Claude needs you in my-app: Claude needs your permission to use Bash 같은 한 줄로 만들어요.

Bot token과 webhook URL은 비밀번호나 마찬가지예요. 가진 사람은 누구나 여러분의 bot 이름으로 메시지를 보낼 수 있어요. Slack 문서에서도 webhook URL을 공유하거나 버전 관리에 커밋하지 말라고 분명히 안내해요. 본인만 읽을 수 있는 별도 파일에 보관하세요:

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

02Telegram: 나에게 메시지를 보내는 bot

  1. Telegram에서 @BotFather와 대화를 열고 /newbot을 보낸 뒤 안내를 따라가세요. 123456789:AA... 같은 token을 알려줘요.
  2. 새로 만든 bot과 대화를 열고 아무 메시지나 보내세요. 그래야 bot이 여러분에게 메시지를 보낼 수 있어요.
  3. Chat ID를 확인하세요. token을 넣은 이 URL을 열고 응답에서 "chat":{"id":를 찾으면 돼요:
curl "https://api.telegram.org/bot<TOKEN>/getUpdates"
  1. 두 값을 ~/.claude/chat-notify.env에 넣으세요:
SERVICE=telegram
TELEGRAM_TOKEN=123456789:AA...
TELEGRAM_CHAT_ID=987654321

Telegram의 sendMessage 메서드는 chat_id와 text(1~4,096자)를 받아요. disable_notification=true를 주면 소리 없이 메시지를 전달해요. 스크립트는 "완료" 메시지에 이 옵션을 쓰고, 권한 요청에는 소리를 그대로 둬요.

03Slack: incoming webhook

  1. api.slack.com/apps에서 Slack 앱을 만드세요(또는 기존 앱을 여세요).
  2. Incoming Webhooks에서 Activate Incoming Webhooks를 켜세요.
  3. Add New Webhook to Workspace를 클릭하고 채널을 고른 뒤 Authorize를 선택하세요.
  4. https://hooks.slack.com/services/로 시작하는 URL을 복사하세요.
SERVICE=slack
SLACK_WEBHOOK_URL=https://hooks.slack.com/services/T000/B000/XXXX

각 webhook은 만들 때 고른 채널 하나에만 메시지를 보내고, 메시지마다 이름이나 아이콘을 바꿀 수 없어요. 알림이 다른 메시지에 묻히지 않도록 본인만 쓰는 작은 비공개 채널이 가장 좋아요.

04Discord: 채널 webhook

  1. 서버에서 Server Settings → Integrations → Webhooks로 이동하세요.
  2. webhook을 만들고 채널을 고른 뒤 URL을 복사하세요.
SERVICE=discord
DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/1234/abcd

Discord의 execute-webhook endpoint는 content(최대 2,000자)와, webhook 이름을 덮어쓰는 선택 항목 username이 담긴 JSON body를 받아요.

05Hook 스크립트(Mac과 Linux)

이 내용을 ~/.claude/chat-notify.sh로 저장하고 chmod +x ~/.claude/chat-notify.sh를 실행하세요. curl과 jq가 필요해요(brew install jq 또는 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

JSON을 jq -n --arg로 만드는 게 중요해요. Claude의 응답에는 따옴표, 백슬래시, 줄바꿈이 들어 있어서 JSON 문자열에 직접 붙여 넣으면 요청이 깨져요.

연결하기 전에 테스트해 보세요:

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

06Hook 추가하기

~/.claude/settings.json에 추가하세요. 이미 hooks 객체가 있다면 그 안에 넣으면 돼요:

{
  "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 }]
      }
    ]
  }
}

hook이 로드되도록 새 Claude Code 세션을 시작하세요. idle_prompt와 Stop은 겹치는 부분이 있어요. Stop은 Claude가 끝나는 순간 실행되고, idle_prompt는 입력이 없으면 약 1분 뒤에 실행돼요. 둘 다 두거나 하나만 남기세요. 장단점은 ntfy 가이드에서 설명해요.

07Windows (PowerShell)

%USERPROFILE%\.claude\chat-notify.ps1로 저장하세요. 이 버전은 Discord로 보내요. Slack을 쓰려면 body를 @{ text = $text }로, 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

Hook 항목:

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

WSL 안에서는 Mac/Linux 스크립트를 쓰세요.

08채팅 앱을 알림 도구로 쓸 때 알아둘 점

  • 보내는 내용은 컴퓨터 밖으로 나가요. "완료" 메시지에는 Claude 응답의 앞부분이 포함돼요. 공유 Slack이나 Discord 채널이라면 채널의 모든 사람이 읽을 수 있어요. 코드가 비공개라면 $detail을 빼세요.
  • 채팅 앱은 알림을 묶거나 음소거해요. 바쁜 워크스페이스나 음소거된 서버에서는 알림이 묻힐 수 있어요. ntfy 같은 전용 push 앱(ntfy 가이드 참고)이 놓칠 가능성이 더 낮아요.
  • Hook은 여러분이 자리에 있는지 몰라요. Stop은 매번 메시지를 보내요. 기본 제공되는 "자리 비움" 필터에 가장 가까운 건 idle_prompt와 permission_prompt예요.

09Claude Code Notifier의 역할

webhook은 Claude가 한 일을 기록으로 남기기에 좋고, 팀이라면 딱 맞는 도구일 수 있어요. 하지만 알림을 보고 바로 대응하고 싶은 개인에게는 부족해요. Claude가 권한을 요청한다는 걸 읽고도 결국 terminal로 돌아가서 허용해야 하니까요. Telegram bot으로 답장을 받을 수도 있긴 하지만, 답장을 기다렸다가 결정을 돌려주는 hook을 직접 짜야 해요.

그 부분을 해주는 게 Claude Code Notifier예요. 휴대폰을 연결해 두면 권한 요청을 한 번 허용, 세션 동안 허용, 거부할 수 있고, Claude의 객관식 질문에 답하거나 Claude가 끝났을 때 후속 지시를 휴대폰에서 보낼 수 있어요. 최근 30초 안에 입력했다면 평소처럼 terminal에서 묻고 휴대폰에서는 아무것도 기다리지 않아요. Anthropic이 만든 것이 아닌 독립 도구이고, ccn은 Mac, Windows, Linux에서 동작해요. 비교, ccn 페이지, 가격을 확인해 보세요.

10FAQ

Claude Code가 스크립트 없이 Slack에 메시지를 보낼 수 있나요?

Claude Code에는 hook의 JSON을 URL로 POST하는 http hook이 있지만, Slack과 Discord webhook은 자체 body 형식(text 또는 content)을 요구해서 http hook으로 직접 보내면 실패해요. 중간에 작은 스크립트나 relay가 필요해요.

Telegram chat ID는 어떻게 찾나요?

bot에게 메시지를 보낸 다음 https://api.telegram.org/bot<TOKEN>/getUpdates를 여세요. "chat":{"id": 뒤의 숫자가 chat ID예요. 그룹이라면 먼저 bot을 그룹에 추가하고 그룹에서 메시지를 보내세요.

Slack이나 Discord에서 Claude Code에 응답할 수 있나요?

incoming webhook으로는 안 돼요. 메시지를 보내기만 하거든요. 응답하려면 답장을 기다렸다가 결정을 돌려주는 hook이 필요한데, 원격 승인 도구가 바로 그런 용도로 만들어졌어요.

hook 때문에 Claude Code가 느려지나요?

Stop 항목은 "async": true를 사용하기 때문에 백그라운드에서 전송돼요. Notification hook은 원래 Claude를 막지 않고 함께 실행돼요.

Claude Code Notifier Claude Code가 작업을 끝내거나 입력이 필요할 때 휴대폰으로 push 알림을 받고, 바로 승인·거부하거나 답할 수 있어요. ccn 커맨드라인 도구는 Mac, Windows, Linux에서 무료예요.
iOS용 다운로드 Android용 다운로드 ccn 설치하기

관련 가이드

  • ntfy로 Claude Code push 알림 받기(직접 설정)ntfy로 Claude Code 알림을 휴대폰에 보내 보세요. Mac, Windows, Linux용 hook 스크립트, settings.json 설정 항목, topic을 비공개로 유지하는 방법까지 정리했어요.
  • Claude Code 알림을 받는 모든 방법 비교기본 알림, 직접 만든 hook, ntfy와 채팅 webhook, Anthropic의 Remote Control, 알림 앱까지 각각 할 수 있는 것과 없는 것을 비교해요.
  • Claude Code Notification hook: 언제 실행되고 어떻게 쓰는지Claude Code의 Notification hook이 언제 실행되는지, permission_prompt와 idle_prompt의 의미, 받는 입력, 그리고 실행 전에 기다리는 이유를 알아봐요.
claude-code-notifier

Claude Code Notifier는 독립적인 제3자 애플리케이션입니다. Anthropic, PBC와 제휴하거나 Anthropic, PBC의 보증 또는 후원을 받지 않습니다. "Claude" 및 "Claude Code"는 Anthropic, PBC의 상표입니다.

앱 iOS 앱 Android 앱 macOS, Windows, Linux용 ccn 전체 가이드
법적 고지 개인정보 처리방침 서비스 약관 다른 언어 © 2026 touchtap. 모든 권리 보유. TouchTap Ltd는 잉글랜드 및 웨일스에 등록되어 있습니다(회사 번호 13942589).