Claude Codeとlaunchdで毎朝のブリーフィングを自動生成する方法
毎朝、ニュースを眺めて、タスク一覧を見直して、今日やることを決める——この「朝の助走」に15分以上かけていませんか。本記事では、macOS標準のジョブ管理機能「launchd」と、Anthropicのターミナル型AIツール「Claude Code」を組み合わせて、起床前に今日のブリーフィング(要約メモ)を自動生成する手順を紹介します。一度設定すれば、朝はMarkdownファイルを開くだけ。コピー&ペーストで再現できる粒度で説明します。
全体の仕組み
やることはシンプルで、次の3つの部品を組み合わせるだけです。
- Claude Codeの非対話モード(
claude -p): プロンプトを渡すと、対話画面を開かずに回答だけを出力してくれる機能 - シェルスクリプト: 「Claudeに指示を出し、結果を日付つきファイルに保存する」手順をまとめた台本
- launchd: macOSに最初から入っているスケジューラー。「毎朝6時30分にこの台本を実行して」と予約できる
cronを使う方法もありますが、macOSではlaunchdが標準の仕組みとして案内されており、設定ファイルの置き場所やログの扱いが整理しやすいのが利点です。
事前準備
- Claude Codeをインストールし、
claudeコマンドの初回ログインまで済ませておきます(利用には有料プランまたはAPI課金が必要です)。 - ターミナルで次を実行し、応答が返ることを確認します。
claude -p "こんにちは。1行で自己紹介して"
which claudeを実行し、表示されたフルパス(例:/opt/homebrew/bin/claude)をメモしておきます。後でこのパスを使います。
手順1: ブリーフィング生成スクリプトを作る
~/bin/morning_briefing.sh というファイルを作り、次の内容を貼り付けます。プロンプト部分は自分の生活に合わせて自由に書き換えてください。
#!/bin/zsh
OUTDIR="$HOME/Documents/briefings"
mkdir -p "$OUTDIR"
TODAY=$(date +%Y-%m-%d)
/opt/homebrew/bin/claude -p "$(cat <<'EOF'
あなたは私の秘書です。今日の朝ブリーフィングをMarkdownで作成してください。
構成:
1. 今日の日付・曜日と、ひとこと励まし(1行)
2. ~/Documents/todo.md を読み、今日着手すべきタスク上位3件を理由つきで
3. 1週間以上更新されていない項目があれば「放置アラート」として指摘
4. 今日の集中テーマを1つ提案(タスクの傾向から判断)
EOF
)" --allowedTools "Read" > "$OUTDIR/$TODAY.md" 2>&1
ポイントは2つあります。1つ目は、/opt/homebrew/bin/claude の部分を、先ほどwhich claudeでメモした自分の環境のパスに置き換えること。2つ目は、--allowedTools "Read"で、Claudeに許可する操作をファイル読み取りだけに限定していることです。自動実行中は人間が画面を確認できないため、権限は最小限に絞るのが安全です。
保存したら実行権限を付け、一度手動で動かして中身を確認します。
chmod +x ~/bin/morning_briefing.sh
~/bin/morning_briefing.sh
cat ~/Documents/briefings/$(date +%Y-%m-%d).md
ここで出力が気に入らなければ、プロンプトを直して何度か試します。自動化の前に手動で「理想の1枚」を作れるようにしておくのが、後戻りを減らすコツです。
手順2: launchdに毎朝の実行を予約する
~/Library/LaunchAgents/com.user.morning-briefing.plist を新規作成し、次を貼り付けます(「あなたのユーザー名」は実際の名前に置き換えます)。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.user.morning-briefing</string>
<key>ProgramArguments</key>
<array>
<string>/bin/zsh</string>
<string>/Users/あなたのユーザー名/bin/morning_briefing.sh</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key><integer>6</integer>
<key>Minute</key><integer>30</integer>
</dict>
<key>StandardErrorPath</key>
<string>/tmp/morning-briefing.err</string>
</dict>
</plist>
登録と動作テストは次の2行です。
launchctl load ~/Library/LaunchAgents/com.user.morning-briefing.plist
launchctl start com.user.morning-briefing
startは予約時刻を待たずに即実行するコマンドなので、その場でbriefingsフォルダに今日のファイルが生成されれば成功です。以降は毎朝6時30分に自動で実行されます。時刻を変えたいときはplistのHour/Minuteを書き換えて、launchctl unload→loadで再読み込みします。
つまずきポイント: 「手動では動くのに自動だと動かない」
最も多い失敗がこれで、原因はほぼPATHです。launchdは.zshrcなどのシェル設定を読み込まないため、スクリプト内でclaudeとだけ書くと「コマンドが見つからない」エラーで失敗します。対処は本記事のとおりコマンドをフルパスで書くこと。それでも動かないときは/tmp/morning-briefing.errにエラーが記録されているので、まずそこを全文読んでください。また、Macがシャットダウンされている時間帯のジョブは実行されません(スリープ中だった場合は、復帰時の挙動が環境により異なるため、最初の数日はファイルが生成されているか目視で確認すると安心です)。
カスタマイズの方向性
- 夜版ブリーフィング: plistをもう1つ作り、22時に「今日の振り返り用の質問を3つ」を生成させる
- 読ませる情報を増やす: 予定や日誌をテキストで書き出すフォルダを作り、プロンプトの読み取り対象に加える
- ChatGPT派の場合: 同様の仕組みはOpenAIのAPIとスクリプトでも組めますが、ローカルのメモやタスクファイルをそのまま読ませたい場合は、ファイル操作が前提のClaude Codeのほうが設定の手数が少なく済みます
まとめ
Claude Codeの非対話モードとlaunchdを組み合わせると、「毎朝AIが自分のタスクを読んでブリーフィングを用意しておいてくれる」環境が、追加アプリなしのmacOS標準機能だけで作れます。手順は、①スクリプトを書いて手動で動作確認、②plistで実行時刻を予約、③動かないときはエラーログとPATHを確認、の3段階です。まずは手動実行でプロンプトを自分好みに育ててから自動化に進むと、つまずきが少なく着実です。朝の15分を、情報の確認作業ではなく判断と実行に使えるようになります。
この記事の自動化の考え方をもっと体系立てて学びたい方へ
Claude Codeで「自分専用の第二の脳」を作るための手順をまとめた「人生管理OSの作り方完全マニュアル〜Claude Codeで作る、自分専用の第二の脳〜」を公開しています。
マニュアルの詳細を見る