claude-code-notifier
使い方 ガイド よくある質問
◐日本語
English العربية Deutsch Español Français עברית Italiano 日本語 한국어 Nederlands Polski Português (Brasil) Русский Türkçe Tiếng Việt 简体中文 繁體中文
はじめる
すべてのガイド

ntfy で Claude Code の push 通知を自作する

更新日: 2026年10月31日 · 6 分で読めます
このページの内容 01ステップ 1: トピックを決めて購読する 02ステップ 2: hook スクリプト(Mac と Linux) 03ステップ 3: settings.json に登録する 04Windows(PowerShell) 05プライバシーを守る 06Claude Code Notifier の位置づけ 07よくある質問

ntfy で Claude Code の push 通知を受け取るには、スマートフォンに ntfy アプリをインストールし、推測されにくい名前のトピックを購読して、curl -d "message" https://ntfy.sh/your-topic を実行する Claude Code の hook を追加します。Notification hook は Claude が権限を求めているときや入力を待っているときに、Stop hook はターンが終わった瞬間に通知します。無料で、10 分ほどで設定でき、Mac、Windows、Linux で動作します。

01ステップ 1: トピックを決めて購読する

ntfy にはアカウント登録がありません。トピックは誰かが最初に publish または購読した時点で作成され、名前を知っていれば誰でも読めます。ntfy の公式ドキュメントにもあるとおり、トピック名は実質的にパスワードなので、claude-7f3k9q2xw4mz のように長くランダムな名前にしてください。使える文字は英字、数字、アンダースコア、ハイフンで、最大 64 文字です。

ntfy アプリ(App Store、Google Play、F-Droid)をインストールし、+ をタップして ntfy.sh 上のトピックを購読します。

terminal から動作を確認します:

curl -H "Title: Test" -d "Hello from my computer" https://ntfy.sh/claude-7f3k9q2xw4mz

1~2 秒以内にスマートフォンが振動するはずです。Windows 10 と 11 には curl.exe が標準で入っており、同じコマンドがそのまま使えます。

02ステップ 2: hook スクリプト(Mac と Linux)

Claude Code は各 hook に標準入力で JSON オブジェクトを渡します。どちらのイベントにも cwd や hook_event_name などの共通フィールドがあります。Notification には message と notification_type が、Stop には Claude の最後の返答テキストである last_assistant_message が追加されます。このスクリプトはどちらのイベントも読みやすい push に変換します。jq が必要です(brew install jq、Debian や Ubuntu なら apt install jq)。

~/.claude/ntfy-notify.sh として保存し、chmod +x ~/.claude/ntfy-notify.sh を実行します:

#!/bin/sh
TOPIC_URL="https://ntfy.sh/claude-7f3k9q2xw4mz"

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

if [ "$event" = "Stop" ]; then
  title="Claude finished: $project"
  body=$(printf '%s' "$input" | jq -r '(.last_assistant_message // "Done") | .[0:300]')
  priority=3
else
  title="Claude needs you: $project"
  body=$(printf '%s' "$input" | jq -r '.message // "Needs your attention"')
  priority=4
fi

curl -s -H "Title: $title" -H "Priority: $priority" -H "Tags: robot" \
  -d "$body" "$TOPIC_URL" > /dev/null
exit 0

Priority は 1(最低)から 5(緊急)まで指定できます。Tags は通知に絵文字を付けるもので、robot ならロボットの顔が表示されます。

03ステップ 3: settings.json に登録する

~/.claude/settings.json に hook を追加します。ファイルにすでに hooks オブジェクトがある場合は、置き換えずにその中へイベントを追加してください。

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

"async": true を指定すると Stop hook がバックグラウンドで送信するため、ネットワークが遅くても Claude の動作は遅れません。hook はセッション開始時に読み込まれるので、新しい Claude Code セッションを開始してください。

Stop と idle_prompt のどちらを使うか

Stop は、キーボードの前にいても Claude が終わった瞬間に発火します。通知が多すぎる場合は Stop ブロックを削除し、代わりに matcher permission_prompt|idle_prompt を使ってください。Anthropic のドキュメントによると、idle_prompt は Claude の完了から約 60 秒後、その間に入力がなかった場合のみ発火し、permission_prompt は権限確認が約 6 秒間キー入力なしで待機した時点で発火します。これで「離席中だけ通知する」簡易フィルターが手軽に実現できます。各フィールドとタイミングの詳細は Notification hook ガイドと Stop hook ガイドを参照してください。

04Windows(PowerShell)

Windows では、これを %USERPROFILE%\.claude\ntfy-notify.ps1 として保存します。追加のインストールは不要です:

$in = [Console]::In.ReadToEnd() | ConvertFrom-Json
$project = Split-Path $in.cwd -Leaf

if ($in.hook_event_name -eq 'Stop') {
  $title = "Claude finished: $project"
  $body = [string]$in.last_assistant_message
  if ($body.Length -gt 300) { $body = $body.Substring(0, 300) }
  $priority = '3'
} else {
  $title = "Claude needs you: $project"
  $body = [string]$in.message
  $priority = '4'
}

Invoke-RestMethod -Method Post -Uri 'https://ntfy.sh/claude-7f3k9q2xw4mz' `
  -Headers @{ Title = $title; Priority = $priority } `
  -Body ([Text.Encoding]::UTF8.GetBytes($body)) | Out-Null

そのうえで、上記の command 行の代わりに次の hook エントリを使います:

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

WSL 内で Claude Code を実行している場合は、Mac と Linux 用のスクリプトを使ってください。hook から見れば WSL は Linux です。

05プライバシーを守る

push の内容はすべて ntfy サーバーを経由し、ntfy.sh ではトピック名を知っている人なら誰でも読めます。上の Stop メッセージには Claude の返答の冒頭が含まれ、コードやファイル名が入ることもあります。対策は 3 つあります:

  1. 送る情報を減らす。 Stop の本文を "Done" のような固定文字列にし、タイトルにはプロジェクト名だけを残します。
  2. アクセストークンを使う。 ntfy はどの publish でも -H "Authorization: Bearer tk_..." を受け付けます。自前のサーバーでは auth-default-access: "deny-all" を設定し、ntfy user add でユーザーを、ntfy token add でトークンを作成します。
  3. 自前のサーバーを立てる。 ntfy はセルフホストできます。iPhone アプリへ即時配信するには、ntfy のドキュメントにあるとおり upstream-base-url: "https://ntfy.sh" を設定します。これによりメッセージ ID とトピックのハッシュだけが ntfy.sh に転送されてスマートフォンが起動し、アプリは本文を自分のサーバーから取得します。

Claude Code をリモートサーバーで実行している場合も同じ hook がそのまま動くので、ntfy は SSH 越しの通知にも向いています。

06Claude Code Notifier の位置づけ

一方向の通知が目的なら、上の設定で十分ですし、無理に別の方法を勧めるつもりもありません。ただし、これは知らせるところまでです。push で Claude が権限を求めていると分かっても、キーボードに戻るまでセッションは待ち続けます。

ntfy には HTTP リクエストを送るアクションボタンがあるので、返信の仕組みを自作することもできます。リクエストを publish し、別のトピックで応答を待ち、判断を返す PermissionRequest hook を作るという方法で、実際にそうしているオープンソースプロジェクトもあります(比較記事を参照)。

Claude Code Notifier はその仕組みをパッケージ化したものです。スマートフォンをペアリングすれば、権限の「今回のみ許可」「セッション中は許可」「拒否」、Claude からの質問への回答、Claude 完了後の次の指示の送信を、すべてスマートフォンから行えます。在席確認も行い、直近 30 秒以内に入力があれば terminal で通常どおり確認し、スマートフォン側では何も待ちません。離席中は設定した上限時間まで terminal が回答を待ち、キーボードに触れた瞬間に待機をやめます。ccn は Mac、Windows、Linux で動作します。スマートフォンアプリについては ccn のページと料金をご覧ください。

07よくある質問

Claude Code の通知に ntfy は無料で使えますか?

ntfy.sh への publish と購読にアカウントは不要で、サーバーは誰でも利用できます。ntfy には有料プランもあり、セルフホストも可能です。最新の制限は ntfy の公式サイトで確認してください。

ntfy の hook が発火しないのはなぜですか?

hook は起動時に読み込まれるため、settings.json を編集したら新しい Claude Code セッションを開始してください。次に curl のテストコマンドを手動で実行し、echo '{"hook_event_name":"Stop","cwd":"/tmp/x"}' | ~/.claude/ntfy-notify.sh のようにサンプル JSON をスクリプトに渡して試します。それ以外の確認事項はトラブルシューティングのチェックリストにまとめています。

ntfy の通知から Claude Code に返信できますか?

単純な publish ではできません。ntfy の HTTP アクションボタンでリクエストは送れますが、回答を待って Claude Code が理解できる判断に変換する hook が必要です。

すべての通知タイプで push が届きますか?

届くのは指定した matcher の分だけです。Notification エントリの matcher を省略すると、認証や MCP のダイアログを含むすべてのタイプを受け取れます。

Claude Code Notifier Claude Code の処理完了や入力待ちをスマートフォンへの push で受け取り、そのまま承認・拒否・回答できます。ccn コマンドラインツールは Mac、Windows、Linux で無料で使えます。
iOS 版をダウンロード Android 版をダウンロード ccn をインストール

関連ガイド

  • Claude Code の通知方法をすべて比較組み込みの通知、自作の hook、ntfy やチャットの Webhook、Anthropic の Remote Control、通知アプリについて、それぞれできること・できないことを比較します。
  • Claude Code の通知を Telegram、Slack、Discord に送るClaude Code のアラートを Telegram ボット、Slack の Incoming Webhook、Discord の Webhook に送る hook スクリプト。Mac、Windows、Linux に対応しています。
  • Claude Code の Notification hook:発火するタイミングと使い方Claude Code の Notification hook がいつ発火するのか、permission_prompt と idle_prompt の意味、受け取る入力、そして発火前に待機する理由を解説します。
  • Claude Code の Stop hook:Claude の完了時に処理を実行するClaude Code の Stop hook の仕組み、受け取る入力、Claude の完了時にコマンドを実行する方法、そして Claude に安全に作業を続けさせる方法を解説します。
claude-code-notifier

Claude Code Notifier は独立したサードパーティ製アプリケーションです。Anthropic, PBC との提携関係はなく、同社による承認や後援も受けていません。「Claude」および「Claude Code」は Anthropic, PBC の商標です。

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