🔊

claude codeの応答内容をサマリーにして読み上げさせてみた

に公開

はじめに

Claude Codeを使っていると、こんな課題に直面しませんか?

  • 認知負荷が高い: 大量の長文応答を毎回読むのは疲れる
  • 的外れな応答: 読んでみて初めて「これ違う」とわかる
  • 効率性の低下: 不要な応答まで全文読む必要がある
  • 承認待ちに気づかない: 並列作業中に確認ダイアログが表示されても気づかず、作業が止まってしまう

この記事では、これらの課題を音声読み上げで解決する方法を紹介します。

何ができるか

応答の音声読み上げ(Stopフック)

  • 50文字以上の応答を自動要約(100字以内)
  • 応答を自動カテゴリ分類(コード実装、調査報告、質問など)
  • 要約をファイルに保存して後から確認可能

確認ダイアログの音声読み上げ(PermissionRequestフック)

  • 確認ダイアログ表示と同時に読み上げ
  • ツール別メッセージ(Bash、Read、Writeなど)
  • 「Bashコマンドを実行して良いですか?」など簡潔に通知

実際の動作

https://youtu.be/GUOEET1AL6M

セットアップ

git clone https://github.com/nichiv/claude-code-speech.git
cd claude-code-speech
./setup.sh

詳細な手動セットアップ方法はGitHubリポジトリをご覧ください。

使い方

設定後は通常通りClaude Codeを使用するだけです:

claude

タスク完了時に自動で応答が読み上げられます。

要約の確認

長文の応答(50文字以上)の場合、要約が~/.claude/hooks/stop-hook-summary.logに保存されます。

別のターミナルで監視:

tail -f ~/.claude/hooks/stop-hook-summary.log

出力例

──────────────────────────────────────
2026-01-11 19:46:29
Working Directory: /Users/username/work/project
──────────────────────────────────────

【ファイル操作】settings/ディレクトリ配下に設定を集約。エクスポート/インポートスクリプト、.gitignore、READMEを修正し動作確認完了。

他のカテゴリ例:

【コード実装】認証ミドルウェアにJWT検証機能を追加。有効期限チェックとリフレッシュトークン処理を実装。

【調査報告】Next.js 14のServer Actionsを調査。フォーム送信の簡略化が可能。既存API routesからの移行を検討。

【エラー報告】ビルド時にTypeScriptの型エラーが3件発生。User型とPost型の関連定義を修正して解決。

【テスト報告】ユニットテスト25件実行、全て成功。カバレッジ87%達成。エッジケースのテストを2件追加。

仕組み(参考)

Claude Codeの公式フック機能を使って実装しています:

  • Stopフック: タスク完了時に発火。50文字以上の応答はClaude APIで要約してから読み上げ
  • PermissionRequestフック: 確認ダイアログ表示時に発火。ツール名に応じたメッセージを即座に読み上げ

詳細な実装はGitHubリポジトリをご覧ください。

カスタマイズ

読み上げ速度や文字数閾値、カテゴリなどをカスタマイズできます。

詳しくはGitHubリポジトリのREADMEをご参照ください。

トラブルシューティング

音声が読み上げられない場合や、デバッグログの確認方法などの詳細は、GitHubリポジトリのトラブルシューティングセクションをご参照ください。

参考

Discussion