毎日日報や学習ログを書くのが大変だったので、
ActivityWatchの作業ログとGit diffを使って、1日の振り返りを自動生成するツールを作りました。
最終的にはObsidianへ自動保存されます。
タスクスケジューラなどで定期実行するようにすれば毎日自動的に日報が生成されて保存されます。
Activity Watch
自動でPCで動かしている各アプリの作業時間を記録してくれるオープンソースのアプリです。
Cursorなどのエディタの場合、どのファイルを編集したかまで記録されます。
取得した情報はローカルで保存されるのでプライバシーの面でも安心です。
本プログラムとは別にリンクからダウンロードする必要があります。
https://activitywatch.net/
作ったもの
以下のデータを自動収集し、AIで要約してObsidianに保存するスクリプトです。
| データソース | 取得内容 |
|---|---|
| ActivityWatch | PC作業ログ(アプリ別時間・Cursorの作業ファイルなど) |
| Git diff | コードの変更内容 |
| Obsidianのメモ | Noteフォルダに書いた当日の記録 |
| OpenAI API | 上記をまとめて要約生成 |
| Obsidian | Daily Summaryとして保存 |
.envで以下を設定するようになっています。
- OpenAIのAPIキー
- ActivityWatchから除外したいドメイン
- PC上での作業がすべて記録されるとごちゃごちゃするので例えばYoutubeを除外したい場合は以下のようにしてください
EXCLUDED_DOMAINS=youtube.com;www.youtube.com;youtu.be - Git diffを記録したいプロジェクト
- Obsidianで自分でまとめた手動メモのフォルダの場所
- 生成した日報のObsidianでの保存場所
使用技術
- Python
- OpenAI API
- ActivityWatch
- Git
- Obsidian
- uv
- Ruff
ActivityWatchからログ取得
ActivityWatch を使うと、
どのアプリをどれくらい使ったか取得できます。
例えば:
{ "app": "Cursor", "title": "main.py", "duration": 3200}
のようなデータが取れます。
これを集計して:
- 開発時間
- ブラウザ時間
などを取得しています。
Git diffも使う
作業ログだけだと、具体的に何を開発したのかわからないので.envで指定したプロジェクトのgit diffを取得してLLMに渡しています。
これをLLMに渡すことで:
- README更新
- Ruff導入
- API修正
なども要約として含められるようになりました。
手動メモ
ActivityWatchやGit diffのログだけでなく、ObsidianのNoteフォルダに今日の日付をタイトルにしたノート(例:2026-05-10)を作るとその内容もOpenAI APIに渡して要約するようにしています。
OpenAI APIで要約
取得したログをまとめてOpenAI APIへ渡します。
生成される内容の例:
## 今日やったこと
- Python開発
- Ruff設定追加
- README作成
## コード変更
- pyproject.toml 修正
- import整理
- GitHub公開準備
Obsidianへ保存
最終的に:
DailySummary/2026-05-10.md
のように保存しています。
Github