会議に出て、Slackで相談を受けて、メールを返して、PRをレビューして、稟議を書いて……。夕方になると午前中のことがもう遠い。1日にやったことを翌日にはほとんど覚えていない。
「あれ、今週なにしてたんだっけ」となるのが嫌で、Claude Code を使って毎朝の振り返りレポートを自動で作る仕組みをつくった。最初は「日報の自動化」くらいのつもりだったが、気づいたら案件管理やTODO抽出まで含む仕事の基盤になっていた。
いま自分がどう運用しているかを記録しておく。
やっていることの全体像
毎朝、自分が寝ている間に以下が自動で動く。
- 前日の活動データを10箇所から集める
- それらを突き合わせて、1日の振り返りレポートを生成する
- 朝6:30にSlack DMでダイジェストが届く
起きたらSlackを見て「ああ、昨日こういう1日だったな」と確認する。それだけ。
技術的にはClaude Codeのスキル機能を使っていて、macOSのlaunchdで毎朝3:10に実行している。
集めているデータ
振り返りの材料として、以下の10箇所からデータを取っている。
| データソース | なにがわかるか |
|---|---|
| Google Calendar | どの会議に出たか、議事録の内容 |
| Gmail | 誰からどんなメールが来たか、どんなメールを返したか |
| Google Drive | どのファイルを編集したか |
| Slack | どのチャンネルでなにを話したか |
| Notion | どのページを更新したか |
| GitHub Enterprise | どのPRをレビューしたか、Issueにコメントしたか |
| Claude Code | Claude Codeでなにを作業したか |
| Google Chat | グループチャットでのやり取り |
| Gemini | AIとのブレスト内容(手動でエクスポート) |
| ボイスレコーダー | 会議の文字起こし |
最初は上の4つだけだった。使っていくうちに「この情報も入れたほうが正確になるな」と思って少しずつ増えた。
取得にはMCP(Model Context Protocol)という仕組みを使っている。SlackやGoogleカレンダーに直接つながるので、ブラウザを開かなくてもデータが取れる。GHEのデータだけはCLIコマンドで取得している。
振り返りレポートのつくり方
データを集めた後、Claude Codeに「この10個のソースを読んで、1日の振り返りを書いて」と指示している。ただの箇条書きではなく、いくつか工夫がある。
タイムラインをつくる
まず時系列で「何時に何をしていたか」をまとめる。カレンダーだけだと会議しか出ないが、SlackやGHEを組み合わせると「10時の会議の直後にSlackでフォローアップして、午後にPRをレビューした」という流れが見える。
複数ソースを突き合わせる
これが一番助かっている部分。たとえば、カレンダーに「KPI整備会議」と書いてあって、Slackで「BQクエリ修正しました」という発言があって、GHEでKPI関連のIssueにコメントしている。これらがバラバラだと意味がわからないが、突き合わせると「会議でKPIの数値がおかしいと指摘して、その場でBQを修正して、Issueに記録した」という一連の流れが見える。
物語として書く
8〜12個のトピックに分けて、それぞれ文章で書く。箇条書きだと後で読み返したときに文脈がわからなくなるので、「なにが起きて、どう判断して、どうなったか」を文章にしている。
案件管理がついてきた
振り返りを毎日つくっていると、自然と「この案件、今週は進んだのか?」が気になってくる。
いざまとめてみると、大小さまざまだが60〜70件くらいの話題(案件)が並行して動いていた。プロダクト開発、パートナー企業との提携、社内ツールの整備、組織の話……。これを全部頭で覚えておくのは無理だった。
そこで、日次の振り返りから案件の進捗を自動で拾うようにした。
仕組みはシンプルで、案件一覧のデータ(Pythonファイルで管理している)と振り返りレポートを照合して、「この案件について今日こういう動きがあった」を検出する。新しい案件が出てきたら「新規候補」として提案もしてくれる。
今日この記事を書いている時点で、累計178件の案件を記録している。うち66件がアクティブ、112件が完了済み。週に1回くらいの頻度で振り返りデータをもとに一覧を更新している。
TODO管理もつながった
もうひとつ、振り返りから自然に生まれた機能がTODOの自動抽出。
SlackのDMや振り返りレポートの中には「来週までに確認する」「〇〇さんに連絡する」といったタスクが埋もれている。これを拾い出して「TODO.mdに未登録のタスクがありそうです」と提案してくれる。
ただし自動でTODOに追加はしない。あくまで「候補」として出して、自分が「これは入れる、これはいらない」と判断する。完全に任せるのではなく、判断は自分で持つようにしている。
人名の辞書をつくった理由
地味だけど大事な工夫として、社内の人物辞書をつくっている。
AIに振り返りを書かせると、Slackの表示名と本名を間違えたり、同じ苗字の別人を混同したりすることがある。うちの会社だと社長とCTOが同じ「健太郎」さんなので、これを取り違えると大変なことになるのだった。
辞書をつくって「この表示名はこの人」と明示し、辞書にない名前は推測で補完しないというルールにした。一度AIが存在しない人名を生成したことがあり、それ以降は徹底している。
運用して変わったこと
「思い出す」コストがなくなった
週次の報告や月次の振り返りを書くとき、以前は1時間くらいカレンダーとSlackを遡っていた。今は日次のレポートを読み返すだけで書ける。
案件の抜け漏れが減った
大量の案件があると、1週間触っていないものは完全に忘れる。案件一覧に「最終言及日」が入っているので、しばらく動いていない案件がすぐわかる。
自分の時間の使い方が見える
タイムラインを見ると「今日は会議が多すぎて手を動かす時間がなかった」とか「この案件に思ったより時間を使っている」といったことがわかる。自覚がなかった偏りに気づける。
やってみてわかったこと
最初から完成形を目指さないほうがいい
最初はカレンダーとSlackだけで始めた。データソースは必要に応じて足していった。最初から10個全部を取ろうとしていたら、セットアップが面倒で挫折していたと思う。
自動化と判断は分けたほうがいい
データの収集とレポートの生成は自動でいい。でもTODOの追加や案件ステータスの変更は、自分が見て判断したい。全部自動にすると、逆に信頼できなくなる。
辞書やルールは運用しながら育てる
人物辞書も、文字起こしの修正辞書も、最初から全部つくったわけではない。「この名前がおかしい」と気づいたら辞書に足す、その繰り返しで精度が上がっていった。
スキル一覧(コマンドでできること)
Claude Codeには「スキル」という仕組みがあり、/コマンド名 で定型的な処理を呼び出せる。このプロジェクトでは以下のスキルを使っている。
/ops(日次振り返り生成)
メインのスキル。日付を指定して実行すると、その日の振り返りレポートを生成する。
/furikaeri → 昨日の振り返りを生成
/furikaeri 2026-03-10 → 指定日の振り返りを生成
処理の流れ:
- 設定ファイル(config.yaml)を読む
- 10個のデータソースのうち、未取得のものを取得
- 全ソースを読み込み、クロスリファレンス分析
- タイムライン+8〜12トピックのレポートを生成
- Slack DMでダイジェストを予約送信
- 案件一覧と照合し、進捗・新規候補を自動検出
- 案件コンテキストファイルに活動ログを追記
毎朝のlaunchd自動実行でもこのスキルを呼んでいる。
/find-todo(TODO候補の抽出)
Slack DMと過去の振り返りレポートから、TODO.mdに未登録のタスクを探し出す。
/find-todo → 直近3営業日分を探索
/find-todo 2w → 2週間分を探索
「来週までに確認する」「〇〇さんに連絡する」といった、流れてしまいがちなタスクを拾い上げてくれる。見つかった候補は緊急度で分類して提示される。
- 最優先(今日〜明日中に確認)
- 今週中に確認
- 来週以降だが忘れると危険
- 終わっているかもしれないが確認が取れていないもの
自動でTODOに追加はしない。候補を見て、自分で「入れる・入れない」を判断する。
/review-todo(TODOレビュー)
TODO.mdの棚卸しをするスキル。
チェック観点:
- 期限超過・期限が近いタスク(3日以内)
- 追加から3日以上進捗がないタスク
- 重複・関連しているタスク
- 今日やるべき上位3件の提案
週の頭や金曜日に実行して、タスクの滞留を防いでいる。
ディレクトリ構成
ops/
├── config.yaml # 個人設定
├── config.example.yaml # 設定テンプレート(他の人向け)
├── run_ops.sh # launchd自動実行スクリプト
├── com.pepabo.ops.plist # macOS定期実行設定
├── CLAUDE.md # プロジェクトのルール定義
├── TODO.md / done.md # タスク管理
├── people.md # 社内人物辞書
├── gemini_dictionary.yaml # Gemini議事録の文字起こし修正辞書
│
├── .claude/commands/ # スキル定義
│ ├── ops.md # /ops(日次振り返り)
│ ├── find-todo.md # /find-todo(TODO候補抽出)
│ ├── review-todo.md # /review-todo(TODOレビュー)
│ └── setup.md # /setup(初期セットアップ)
│
├── source-calendar/ # データソース(入力)
├── source-gmail/
├── source-drive/
├── source-slack/
├── source-notion/
├── source-ghe/
├── source-claude/daily/
├── source-google-chat/
├── source-anker-soundwork/
├── source-manual-gemini/
│
├── output-daily/ # 日次レポート(出力)
├── output-weekly/ # 週次レポート
├── output-monthly/ # 月次分析レポート
│
├── output-analysis/ # 案件管理
│ ├── anken_active.py # アクティブ案件データ
│ ├── anken_completed.py # 完了済み案件データ
│ └── update_sheets.py # Google Sheetsへの自動反映
│
├── anken/ # 案件コンテキストファイル
├── tools-scripts/ # データ取得スクリプト
├── tools-gemini-exporter/ # Gemini会話エクスポートChrome拡張
├── docs/ # 運用ドキュメント
└── logs/ # 自動実行ログ
データの流れとしては、source-*/ に生データが入り、output-daily/ に振り返りレポートが出て、output-analysis/ に案件データが蓄積される。入力と出力が明確に分かれているので、「このレポートはどのデータから作られたか」が追える。
技術的な構成(興味がある人向け)
- データ取得: MCP(Slack, Google Workspace, Notion)+ CLI(GHE)+ Pythonスクリプト
- 自動実行: macOS launchd(毎朝3:10)
- データ管理: ローカルのMarkdownファイル + Pythonスクリプト
- 案件データ: Pythonファイルで定義 → Google Sheets APIで共有用スプレッドシートに反映
- 通知: Slack MCPで自分宛DMに予約送信
コードやスキル定義はGitで管理している。設定ファイル(config.yaml)を分離しているので、仕組み自体は他の人でも使える形にはなっている。
おわりに
「振り返りの自動化」という小さな課題から始めて、案件管理やTODO抽出まで育ってきた。大層なシステムをつくろうとしたわけではなく、日々の「困った」を一つずつ潰していったらこうなった。
まだ完成形ではなく、先週も「アウトプットをどこに書き出したか忘れる」という課題が出てきたので、書き出し先の記録を自動でつける仕組みを足したところ。たぶんこれからも少しずつ変わっていく。
日々の業務が多岐にわたる人にとって「昨日なにしてたっけ」は共通の悩みだと思う。全く同じ仕組みでなくても、自分の活動データを集めて振り返る習慣は、やってみる価値があると思う。
