Claude Code Hooks運用|SessionStart hook で作業時間を自動記録する仕組み|配送業40代の実戦記録
副業ブログを2週間続けた結果、ある気づきがありました。
「いつ・何時間・何をしたか が記録されてないと、振り返りができない」
手動で記録するとほぼ挫折します(私は3日で挫折しました)。
そこで使ったのが、Claude Code の Hooks(フック)機能。Claude Code を起動した瞬間に作業ログが 自動記録 される仕組みを作りました。
この記事では、プログラミング未経験の私が実際に使っている SessionStart hook の全コード を公開します。コピペで動きます。
※ hook で「完了音を鳴らす」Tips は他にもありますが、この記事は作業時間が”振り返れる資産”になる hook の実戦記録です。音を鳴らす話ではなく、続けるための仕組みの話をします。
🚀 30秒で読める要約
- ✅ Claude Code には「複数の hook(フック)=自動実行ポイント」がある
- ✅ SessionStart hook で作業時間を自動記録できる(手動記録は時間が足りない)
- ✅ 必要なのは settings.json(Claude Codeの設定ファイル)に10行のコードを追記するだけ
- ✅ コピペで早ければ5〜10分・プログラミング未経験でも導入できる
- ✅ 月別ファイルに自動的に開始時刻が積み重なる(作業内容と終了時刻は、あとでClaudeに追記してもらう)
- ✅ コードを書きたくない人は、後述の【コピペプロンプト】をClaude Codeに投げるだけでOK
Claude Code Hooks とは何か
📌 30秒要約
hook(フック)=Claude Codeが特定のタイミングで自動的にコマンドを実行する仕組み。AIの判断は入らず「条件が揃えば自動的に動く」シンプルな決定的動作です。
Claude Code には複数の hook(フック)が用意されています。
hook = 「特定のタイミングで自動実行される仕組み(自動実行ポイント)」
Git hooks の AI版・Claude Code が動いた瞬間に裏でコマンドを動かせます。
この記事で扱うのは SessionStart hook だけ
Claude Code には複数のhookが用意されていますが、種類や仕様はバージョンで変わる可能性があります。この記事では、作業開始時に動く「SessionStart hook」1つに絞って解説します(その他のhookやクラウド側の自動化は仕様変更があり得るため、公式ドキュメントを確認のうえ別記事で扱います)。
1つに絞るのは、初心者がいきなり複数のhookを触ると混乱しやすいからです。まず「起動したら作業ログが1行残る」だけを動かせれば、それで十分に価値があります。
hookは「決定的(AIじゃない)」
hook は 決定的なコマンド実行(AIの判断は入らない)。
Git hooks と同じく、「条件 → 自動的に実行」のシンプルな仕組みです。
つまり「AIが気まぐれに動かなかった」ということは起こりません。条件が揃えば自動で動きます。
なぜ SessionStart hook で作業ログを取るのか
📌 30秒要約
振り返りがあった方がモチベーションにつながると思いました。手動記録は時間が足りません。SessionStart hook で自動化すればゼロ工数で蓄積できます。
振り返りがあるとモチベーションにつながる
副業ブログは、本業(私の場合は配送業)の合間に作業します。1日30分〜2時間の隙間時間。
「いつ・何時間・何をしたか」が記録されていれば:
- 月集計で「先月20時間頑張った」と確認できる
- 「3時間やったから今日はゆっくり休もう」と決められる
- note 記事の素材として「実働時間」がそのまま使える
- 副業の収益化への軌跡がそのまま残る
手動記録は時間が足りない
「Excel に毎日書く」「ノートに書く」 → 記録に時間が取られて、本来の作業時間が足りなくなりませんか?
自動化すればゼロ工数で蓄積される のが hook の威力です。
あなたが副業ブログを続けたいなら、最初に仕組み化すべきはこの「作業ログの自動記録」だと感じています。
自分で書くのが難しい方へ:コピペで使える完成プロンプト
📌 30秒要約
下のプロンプトをそのまま Claude Code に貼り付けて送信するだけ。設定ファイルへの追記から動作確認まで全部代行してくれます。コードを1行も書く必要はありません。
「コードを自分で書くのは難しそう…」と感じる方へ。安心してください。Claude Code に丸ごとお願いするための完成プロンプトを用意しました。
💡 コピペ用プロンプト
> 私はプログラミング未経験です。
> Claude Code の SessionStart hook を使って、
> 作業時間を自動記録する仕組みを導入したいです。
>
> 以下を全部代行してください:
>
> 1. ~/.claude/settings.json を確認(なければ新規作成)
> 2. SessionStart hook を追記
> (時刻を「- 開始:HH:MM」形式で月別ファイルに記録)
> 3. 作業ログの保存先:~/Documents/[ブログ名]/worklog/$(date +%Y-%m).md
> 4. 必要なディレクトリが無ければ作成
> 5. 設定後、Claude Code を再起動して動作確認
> 6. うまく動かない場合のトラブルシュート方法も教えてください
>
> 「ブログ名」の部分は、私と相談して決めてください。
> ```
このプロンプトを そのまま Claude Code(クロ)に投げるだけで、settings.json への追記から動作確認の方法まで、全部代行してくれます。
コードの中身を理解したい方へ
「Claudeに丸投げ」で十分ですが、「中身を理解して自分でも書けるようになりたい」という方向けに、以下に全コードと解説を載せます。
実装する settings.json の全コード
📌 30秒要約
Claude Code の設定ファイル settings.json に10行のJSONを追記するだけ。コピペで動きます。月別ファイル(2026-05.md 等)が自動生成され、起動時刻が記録されていきます。
ここからは実際のコードです。
設定ファイルの場所
Claude Code の設定ファイル(settings.json)は以下の場所にあります:
~/.claude/settings.json
~/ は「ホームディレクトリ(ユーザーフォルダ)」のことです。Macなら /Users/USERNAME/ に展開されます。
全コード(コピペで動きます)
{
"hooks": {
"SessionStart": [
{
"matcher": "*",
"hooks": [
{
"type": "command",
"command": "echo \"- 開始:$(date +%H:%M)\" >> ~/Documents/MyBlog/worklog/$(date +%Y-%m).md"
}
]
}
]
}
}
各部分の意味
| 部分 | 意味 |
|---|---|
"hooks" |
hook の設定をここに書きますよ、という宣言 |
"SessionStart" |
複数あるhookのうち「起動時」に動くものを選択 |
"matcher": "*" |
すべてのセッションで動かす(特定のプロジェクトだけにも絞れます) |
"type": "command" |
「コマンドを実行する」タイプ |
"command": "..." |
実際に動かすシェルコマンド |
echo "- 開始:$(date +%H:%M)" |
現在の時刻を「- 開始:07:30」の形で出力 |
>> ~/Documents/.../作業ログ/$(date +%Y-%m).md |
月別ファイル(2026-05.md)に追記する |
$(date +%Y-%m) の部分が月ごとに変わるので、月が変われば自動で新しいファイルが作られます。
パスはあなたの環境に合わせて変える
~/Documents/MyBlog/worklog/ の部分はパスの一例です。
あなたが使う時は、自分の作業ログ保存先に変えてください。例:
~/Documents/MyBlog/worklog/
ディレクトリは事前に作っておく必要があります(mkdir -p ~/Documents/MyBlog/worklog/ で作成可能)。
実際の作業ログのサンプル
📌 30秒要約
月別ファイル(例:2026-05.md)に時刻が自動で積み重なります。終了時刻と作業内容は Claude(クロ)が締めてくれます。
実際に蓄積されている作業ログはこんな感じです:
# 2026年5月 作業ログ
## 5/8(水)
- 開始:07:30
- 内容:note01「Claude Code 22ルール」最終推敲
- 終了:09:15
- 実働:1時間45分
## 5/9(木)
- 開始:05:50
- 内容:X 投稿テスト・引用RP戦略検討
- 終了:07:00
- 実働:1時間10分
## 5/10(金)
- 開始:06:15
- 内容:記事⑦執筆+メモリ拡張15本
- 終了:13:30
- 実働:7時間15分(途中昼休憩45分)
終了時刻と内容は Claude が締める
開始時刻は hook で自動記録されますが、終了時刻と作業内容は Claude(クロ)に締めてもらっています。
月集計で振り返り
月末には Claude に「今月の作業ログ集計して」と頼めば、合計時間・記事本数・主なトピックを集計してくれます。「先月60時間頑張った」と数字で見えると、続けるモチベーションになると感じています。
応用:他のhookで何ができるか
📌 30秒要約
SessionStart 以外にも、PreToolUse(危険コマンドのブロック)・PostToolUse(ファイル編集後の通知)・Stop(セッション終了通知)など、4つの応用があります。
PreToolUse:危険なコマンドをブロック
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "if echo \"$TOOL_INPUT\" | grep -q 'rm -rf'; then echo 'BLOCKED: rm -rf detected' && exit 1; fi"
}
]
}
]
rm -rf(フォルダごと一括削除する危険コマンド)が出たらブロックします。
PostToolUse:ファイル編集後の自動lint
ファイル書き込み後に自動で構文チェック(lint=コードの書き間違いチェック)を走らせる仕組みです。
Stop:セッション終了時の Slack/Discord 通知
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "curl -X POST https://hooks.slack.com/services/XXX -d '{\"text\":\"作業終了 $(date)\"}'"
}
]
}
]
セッションを終えると Slack に「作業終了」が飛びます。家族や仲間に「今ブログ作業終わった」と自動で伝わる仕組みも作れます。
クラウド側の定期実行(Routines等)について
※ Routines などクラウド側の自動化機能は、仕様変更があり得るため、本記事では深入りしません。公式情報を確認したうえで別記事で扱う予定です。まずはローカルで完結する SessionStart hook から始めるのが、初心者には一番安全で確実です。
hookのデバッグ方法
📌 30秒要約
動かない時のチェックは「権限・パス・コマンド構文」の3点。bash で直接コマンドを叩いて動作確認するのが基本です。
動かない時のチェックポイント
- パスが正しいか:書き込み先のディレクトリが事前に存在しているか
- 権限があるか:書き込み先に書き込み権限があるか
- コマンドが正しいか:シェルでそのまま動かしてみて結果が出るか
コマンド単体で動作確認
設定ファイルに書く前に、コマンドだけターミナルで叩いてみてください:
echo "- 開始:$(date +%H:%M)" >> ~/Documents/MyBlog/worklog/$(date +%Y-%m).md
cat ~/Documents/MyBlog/worklog/$(date +%Y-%m).md
ファイルに「- 開始:07:30」のような行が追加されていれば成功です。
次に広げられるClaude Code活用
SessionStart hook に慣れたら、次の3つと組み合わせると活用の幅が広がります。いずれもこの記事の主題からは外れるので、それぞれ別記事で詳しく扱う予定です。
- メモリ機能:過去の運用ルールを Claude が覚えた状態でセッションを始められる(→記事⑨で予定)
- カスタムスキル:繰り返すタスクを
/名前で呼び出せる形にできる(→記事⑩で予定) - subagent:リサーチを別のClaudeに並列で投げ、メイン会話を汚さない(→記事⑯で予定)
まずは SessionStart hook 1つを動かすことに集中すれば、それだけで十分に価値があります。
私が hook を使い始めて変わったこと(失敗→AIに聞く→理解→今)
📌 30秒要約
手動の作業記録が続かず挫折 → AIに「自動でログを取れないか」と相談 → hookで解決 → 今は作業時間が”振り返れる資産”になっています。
STEP1:失敗 — 手動の作業記録が、まったく続かなかった
最初は「今日は何時間やった」をメモアプリに手で書いていました。でも本業から帰って疲れている日は、記録自体を忘れる。気づけば1週間分が空白で、振り返りようがありませんでした。
STEP2:AIに聞く — 「記録を自動でやれないか」と相談した
手動が続かないのを諦めて、Claude にそのまま聞きました。
返ってきたのが「SessionStart hook を使えば、起動時に自動でログ行を追記できる」という答え。設定ファイルの中身も全部書いてくれました。
STEP3:一気に理解 — hook は「決まった処理を自動で挟む仕組み」
やり取りするうちに、hook は「特定のタイミングで、決まった処理を自動実行する仕組み」だと腑に落ちました。AIの気分で動くのではなく、毎回確実に動く。だから”記録し忘れ”が構造的にゼロになる、と理解できました。
STEP4:今の結論 — 作業時間が”振り返れる資産”になった
以前は「ブログ書いてる気はするけど、何時間やったか覚えてない」状態。hook を入れた後は、月ごとに正確な実働時間が分かります。先月(4月)は 約26時間 でした。「2週間で26時間も書いた、結果が出るまで続けよう」と思えています。
おまけ:3時間ブロックが意識できる
作業ログを見ると、自分の集中力のピーク時間帯がわかります。
- 平日:本業(配送業)が終わった後、夕方16時〜19時の約3時間 が一番進む時間帯です。
- 休みの日:朝〜午前中で 連続4〜5時間 まとめて取れます。記事1本仕上げる絶好のチャンスです。
ここに執筆を集中させるだけで、生産性がぐっと上がります。
変化③:仕組み化への原動力
2026年5月10日、SessionStart hook で作業時間を自動記録できる環境を活かして、たった4時間で「翌朝レポート Bot」を構築しました。
Bot が毎朝6時に X・GA4 のデータを集計してくれます。これは hook で土台を作っていなければ、構築する発想すら浮かばなかったと感じています。
22ルール × hook運用 = 仕組み化された副業ブログ
📌 30秒要約
note01「Claude Code 22ルール」と hook を組み合わせると、ルールが自動で守られる状態になり、副業ブログが「個人の頑張り」から「仕組みで回る装置」に進化します。
ルールだけだと忘れる・hook で強制力が生まれる
note01 で公開した「Claude Code 22ルール」は、Claude にどう動いてもらうかの設計書です。
ただ、ルールだけだと忘れる・守らないことが起きます。
hook を組み合わせると、「ルール違反になりそうな操作を自動でブロック」「ルール遵守の作業を自動で記録」といった強制力が生まれます。
📥 hook の前提になる「Claude Code 22ルール」note 販売中
この記事の hook 運用は、note01「Claude Code 22ルール」の設計書とセットで効きます。実際に私がClaudeへ送っていた指示や、詰まったポイントもそのまま入っています + 特典5点(CLAUDE.mdテンプレ・トラブル事例集・3記事リライト実例集・自動化スクリプト4本・アップデート保証)。
📘 価格 1,480円(買い切り・アップデート保証つき)
仕組み化の最終形は note02「中級編」で
仕組み化を本格的にやりたいなら、note02「中級編」では:
- hooks運用 完全版(PreToolUse・PostToolUse・Stop の3種類詳細)
- CLAUDE.mdテンプレ(複数プロジェクト共通設定)
- MCP連携集(Gmail/Calendar/Notion等の自動化)
- 自動化スクリプト4本(メルマガ配信・X投稿・記事生成・売上集計)
- アップデート保証(Claude Codeの仕様変更に追従)
を扱う予定です。
中級編「Claude Code 仕組み化15ルール」note02 販売予定(2026-07〜08)
SessionStart hook 含む15ルール + 特典5点(CLAUDE.mdテンプレ・MCP設定集・hook集・自動化スクリプト4本・アップデート保証)
👉 最新情報は X (@shinlabo_ai) で告知します。フォローして待っていてくださると嬉しいです。
あなたが今日やるべき3つのこと
まずは今日、SessionStart hook で「開始時刻だけ」記録してみてください。
完璧な自動化を目指さなくて大丈夫です。1行のログが残ることが、続く仕組みの第一歩です。実際にログが残った瞬間、私は「これなら続く」と思いました。手動記録だと忘れる。でも自動なら、疲れていても残る。配送後の副業には、この差が大きかったです。
副業ブログを「仕組み化された装置」に進化させる、最初の3ステップです。
✅ 0. 一番ラクなルート:上のコピペプロンプトを Claude Code に投げる
「自分で書くのが難しい方へ:コピペで使える完成プロンプト」セクションのプロンプトを、そのまま Claude Code に貼り付けて送信するだけ。これが最速・最簡単です。コードを1行も書かずに完了します。
✅ 1. 作業ログ用ディレクトリを作る
mkdir -p ~/Documents/MyBlog/worklog
(パスは自分の環境に合わせて)
✅ 2. settings.json に10行追記
~/.claude/settings.json を開いて、本記事の SessionStart hook をコピペ。パスを自分の作業ログ用ディレクトリに変える。
✅ 3. Claude Code を再起動して動作確認
cat ~/Documents/MyBlog/worklog/2026-05.md
「- 開始:07:30」のような行が追加されていれば成功です。
まとめ
- ✅ Claude Code には 複数の hook(自動実行ポイント)がある
- ✅ SessionStart hook で作業時間を自動記録できる
- ✅ 必要なのは settings.json に10行のJSONを追記するだけ
- ✅ 月別ファイルに時刻が積み重なり、振り返り・モチベ維持に直結
- ✅ 慣れてきたら、他のhookと組み合わせて仕組み化を広げられる
副業ブログを「個人の頑張り」から「仕組みで回る装置」に進化させたいなら、今日この10行から始めてみてください。
早ければ5〜10分で導入できます。コピペでOKです。
関連記事
- 【2026年版】AI×副業ブログの始め方|作業時間が1/3になった実体験
- 【2026年最新】ConoHa WINGの評判は?デメリットと口コミを正直に解説
- 【初心者向け】WordPressとレンタルサーバーの違いとは?役割を家づくりで丸わかり解説
- 記事⑨:Claude Code 標準メモリの運用法(執筆予定)
- 記事⑩:カスタムスキルで Claude Code を専門家化する(執筆予定)
公開予定:2026年6月中旬

コメント