Claude Codeでタスク終了時に通知音と通知バナーを出す方法【Mac編】
はじめに
いつもブログをご覧いただきありがとうございます。
ミジンコに転生したIPUSIRONです😀
Windowsユーザーは別の記事を参照
本記事はMacユーザー向けです。
Windowsユーザー向けの記事は以下にあります。
通知音と通知バナーの設定
ここでは"marisa_owattaze.wav"ファイル(魔理沙の音声ファイル)を"/Users/ipusiron/custom/marisa_owattaze.wav"に配置したものとします。
ターミナルで以下のコマンドを実行して、挙動を確認してください。
- afplay /Users/ipusiron/custom/marisa_owattaze.wav
- →音声ファイルが鳴ればOK
- osascript -e 'display notification “Claude Code completed tasks." with title “Claude Code"'
- →通知バナーが出ればOK

以下の設定ファイルはプロジェクトフォルダー配下の".claude"フォルダー内にある、設定ファイル"settings.local.json"ファイルに通知音(aplayコマンドの2行)と通知バナー(osascriptコマンドの2行)の設定を追加します。
※osascriptコマンドの「"」をエスケープした形で設定ファイルに記すことに注意してください。
{
"permissions": {
"allow": [
"Bash(grep:*)",
"Bash(sed:*)",
"Bash(python3:*)",
"Bash(npm install:*)"
],
"deny": [],
"ask": []
},
"hooks": {
"PreToolUse": [],
"Notification": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "afplay /Users/ipusiron/custom/marisa_owattaze.wav"
},
{
"type": "command",
"command": "osascript -e 'display notification \"Claude Code is waiting for you.\" with title \"Claude Code\"'"
}
]
}
],
"Stop": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "afplay /Users/ipusiron/custom/marisa_owattaze.wav"
},
{
"type": "command",
"command": "osascript -e 'display notification \"Claude Code completed tasks.\" with title \"Claude Code\"'"
}
]
}
]
}
}
osascriptコマンド実行時に通知バナーが出ない場合の対処法
osascriptコマンド実行時にエラーが出ていないにもかかわらず通知バナーが表示されない場合は、権限が許可されていない可能性があります。
osascriptコマンドが送る通知は、OSから見るとスクリプトエディタからの通知扱いになります。つまり、スクリプエディターの通知が許可されていないと何も表示されないというわけです。
1:スクリプトエディタを起動します。
2:新規スクリプトを開き、以下を入力してから、メニューの再生アイコンを押して実行します。
display notification "Hello" with title "Script Editor"

すると、以下の通知バナーが出ます。

これを押すと、設定画面が開きます。
3:スクリプトエディタの設定にて、「通知を許可」をONにします。

4:もう一度ターミナルから以下のコマンドを実行してみます。
osascript -e 'display notification "Claude Code completed tasks." with title "Claude Code"'

通知バナーが出るはずです。これで成功です。