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 の位置づけ 10よくある質問

Claude Code の通知を Telegram、Slack、Discord に送るには、各アプリで bot か incoming webhook を作成し、curl で短いメッセージを投稿する Claude Code の hook を追加します。Notification hook は「Claude が許可を求めている」「Claude が入力を待っている」を、Stop hook は「Claude が完了した」をカバーします。Telegram には bot トークンとチャット 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 のような 1 行にまとめます。

bot トークンと 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... のようなトークンが返ってきます。
  2. 作成した bot とのチャットを開き、何かメッセージを送ります。これで bot からあなたにメッセージを送れるようになります。
  3. チャット ID を調べます。トークンを入れたこの 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 は作成時に選んだ 1 つのチャンネルにだけ投稿でき、メッセージごとに名前やアイコンを変えることはできません。通知が埋もれないよう、自分専用の小さなプライベートチャンネルを使うのがおすすめです。

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 エンドポイントは、content(最大 2,000 文字)と、webhook 名を上書きする任意の username を含む JSON ボディを受け取ります。

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 で使う場合は、ボディを @{ 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 の選択式の質問に答えたり、完了時に追加の指示を送ったりがスマートフォンからできます。直近 30 秒以内に入力していれば、通常どおり terminal で確認され、スマートフォン側では何も待ちません。Anthropic 製ではない独立したツールで、ccn は Mac、Windows、Linux で動作します。他の方法との比較、ccn のページ、料金もご覧ください。

10よくある質問

Claude Code からスクリプトなしで Slack に投稿できますか?

Claude Code には hook の JSON を URL に POST する http hook がありますが、Slack と Discord の webhook は独自のボディ形式(text または content)を求めるため、直接 http hook で送っても失敗します。間に小さなスクリプトかリレーが必要です。

Telegram のチャット ID はどうやって調べますか?

bot にメッセージを送ってから https://api.telegram.org/bot<TOKEN>/getUpdates を開きます。"chat":{"id": の後の数字がチャット 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 の設定内容、トピックを非公開に保つ方法を解説します。
  • 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 は独立したサードパーティ製アプリケーションです。Anthropic, PBC との提携関係はなく、同社による承認や後援も受けていません。「Claude」および「Claude Code」は Anthropic, PBC の商標です。

アプリ iOS アプリ Android アプリ macOS・Windows・Linux 用 ccn すべてのガイド
法的情報 プライバシーポリシー 利用規約 その他の言語 © 2026 touchtap. 無断複写・転載を禁じます。 TouchTap Ltd はイングランド・ウェールズで登記されています(会社番号 13942589)。