溜めたAI作業ログをローカルLLMで要約してObsidianデイリーノートに書き出す

ツール

はじめに

以前、Claude Code/Codexの会話ログを自動でObsidianに蓄積する仕組みを紹介しました。LaunchAgentで常駐させて、AIとの会話が勝手にObsidianへ流れ込むようにしたものです。

ログは溜まるようになった。でも、溜まるだけだった。

1日に何回もClaude CodeやCodexとやり取りしていると、ログファイルは数百行になる。振り返ろうとしても、どこに何が書いてあるのか分からないし、開くのがおっくうで結局見ない。

「ログを溜める」と「振り返る」のあいだには、もうひとつ仕組みが必要でした。ログの要約です。

そこで、ローカルLLM(ELYZA)でログを自動要約し、Obsidianのデイリーノートに挿入する仕組みを作りました。 クラウドAPIと違って実行コストはゼロ。claude-daily-summary を1回叩くだけで、「今日AIと何をやったか」が箇条書きで手に入ります。

全体像

ログの蓄積から振り返りまでの流れはこうなっています。

[Claude Code / Codex]
        │ セッションログ (JSONL)
        ▼
[watch-and-save.sh]  ← 前回の記事で紹介
        │ 5秒ごとに監視・抽出
        ▼
[Obsidian ログファイル]
  04_Claude/logs/2026/2026-02-15.md
  04_Codex/logs/2026/2026-02-15.md
        │
        ▼
[claude-daily-summary]  ← 本記事の主題
        │ ログ解析 → ELYZA で要約
        ▼
[Obsidian デイリーノート]
  02_Daily/2026/2026-02-15.md

前回の記事で作ったログ蓄積の仕組みが「入力」、今回のサマリー生成が「出力」です。

使い方

# 今日のサマリーを生成してデイリーノートに追加
claude-daily-summary

# 昨日のサマリー
claude-daily-summary -y

# 特定日のサマリー
claude-daily-summary -d 2026-02-14

# ELYZA 要約なしで実行(ログ一覧のみ)
claude-daily-summary -n

# 中身だけ確認(ファイルに書き込まない)
claude-daily-summary --no-append --dry-run

1コマンドで「その日のAI作業ログを読み、要約し、デイリーノートに書き出す」まで完了します。

出力されるもの

デイリーノートに挿入されるMarkdownはこんな形式です。

## Claude Code Activity

### Claude

- **my-api-server**: (5 entries)
  - Summary:
    - 認証ミドルウェアのリファクタリング
    - JWTトークンの有効期限チェックを修正
    - テストケースの追加

### Codex

- **frontend-dashboard**: (3 entries)
  - Summary:
    - ダッシュボードのレイアウト調整
    - レスポンシブ対応の修正

プロジェクトごとに何をやったかが箇条書きで並ぶので、デイリーノートを開けば「今日AIと何をやったか」がすぐに分かります。

なぜローカルLLMか

要約にはELYZA CLIを使っています。ローカルで動くLLMです。

クラウドのAPIで要約する選択肢もありましたが、ログの量がネックでした。毎日AIと何度もやり取りしていると、蓄積されるログは簡単に数百万行に達します。これをそのままAPIに投げると、トークン消費量がばかになりません。日次の要約タスクにそこまでのコストをかけるのは割に合わない。

ローカルLLMなら何度回してもコストはゼロです。ELYZAは日本語の要約が得意で、作業ログのような断片的な文章でもそれなりにまとまった結果を返してくれます。

ELYZA CLIが入っていなければ、要約はスキップされてログの先頭行がそのまま表示されます。要約なしでも使えます。

仕組み

内部は2段構成です。

1. summary.py — ログの解析と要約

PythonスクリプトがObsidianのログファイルを読み、セッションヘッダー(## [HH:MM:SS] Claude - project-name)を手がかりにエントリーを抽出します。

LOG_HEADER_RE = re.compile(
    r"^## [(d{2}:d{2}:d{2})] (Claude|Codex) - (.+)$"
)

プロジェクトごとにログを集約したあと、ELYZAへ渡して要約を生成します。ログが長すぎる場合は6000文字で切り詰めてからELYZAに送ります。

2. claude-daily-summary.sh — Obsidianデイリーノートへの挿入

シェルスクリプトがsummary.pyの出力を受け取り、デイリーノートに書き込みます。

  • ファイルがなければテンプレートから新規作成
  • ## Claude Code Activity セクションがあれば置き換え
  • なければ #Daily タグの直前に挿入

冪等に動くので、同じ日に何度実行しても壊れません。

運用してみて

1日の終わりに claude-daily-summary を1回叩く運用にしています。

Obsidianのデイリーノートを開くと、手書きの日記の横にAI作業のサマリーが並んでいる。「午前はAPI設計の相談をして、午後はフロントの修正を3件やったんだな」と一目で分かる。

週末に1週間分のデイリーノートをざっと見返すだけで、自分が何をやっていたか思い出せるようになりました。

おわりに

「ログを溜める」だけでは振り返りにつながらない。読める形に加工して、普段開く場所に置く。そこまでやって初めて、過去のAI作業が資産になります。

自分の開発日記に、AIとの作業記録が自然に組み込まれる。それだけで振り返りの質が変わります。

関連記事

この記事はAI開発ワークフロー改善シリーズの一部です。

リンク

  • ELYZA CLI: https://github.com/elyza-inc/elyza-cli
  • 元記事(あんちぽさん): https://zenn.dev/pepabo/articles/ffb79b5279f6ee

コメント

タイトルとURLをコピーしました