Claude Codeの会話履歴を記録・エクスポートする方法

Claude Codeで作業していると、「あのとき何を相談して、どう解決したんだっけ?」と振り返りたくなることがあります。特に書籍執筆やプロジェクト開発など長期にわたる作業では、過去の会話が貴重な記録になります。

この記事では、Claude Codeの会話履歴がどこに保存されているか、それをどうやって読みやすい形で取り出すかを整理します。

1. Claude Codeは会話を自動保存している

Claude Codeは、すべての会話を自動的にローカルに保存しています。特別な設定は不要です。

保存先は以下の2箇所です。

  • ~/.claude/projects/ — プロジェクトごとのセッションがJSONL形式で保存される
  • ~/.claude/history.jsonl — グローバルな会話履歴

ただし、JSONL形式のままでは人間が読むには不便です。後述のツールを使うことで、MarkdownやHTML形式に変換できます。

2. 組み込みのセッション管理コマンド

Claude Codeには、セッション管理のためのコマンドがいくつか用意されています。

セッション内で使えるスラッシュコマンド

コマンド機能
/export [filename]現在の会話をファイルにエクスポート
/compact会話を要約してトークンを節約(長いセッションで有効)
/clear会話履歴をクリア(タスク切り替え時に便利)
/context現在のトークン使用量を表示

ターミナルから使えるコマンド

セッションの再開には、以下のコマンドが使えます。Claude Codeを起動する前(ターミナルのプロンプトの状態)で実行します。

コマンド機能
claude --resume直前のセッションを再開
claude -cインタラクティブにセッションを選択して再開
Ctrl+R(セッション内)セッション履歴をブラウズ

/export は、作業中に重要な解決策が得られたとき、その場で記録を残すのに便利です。

3. サードパーティツールでMarkdownにエクスポート

組み込みのエクスポート機能もありますが、過去のセッションをまとめてエクスポートしたい場合は、サードパーティのツールが便利です。

claude-conversation-extractor

claude-conversation-extractor は、~/.claude/projects/ に保存されたJSONLファイルをMarkdownやHTML形式に変換するPythonツールです。

インストール

# pipxを使う方法(推奨)
pipx install claude-conversation-extractor

# pipを使う方法
pip install claude-conversation-extractor

基本的な使い方

# インタラクティブモード(UIで選択できるのでおすすめ)
claude-start

# CLI モード
claude-extract

# セッション一覧を表示
claude-extract --list

# 最近の5セッションをエクスポート
claude-extract --recent 5

# 全会話をバックアップ
claude-extract --all

# 保存先を指定
claude-extract --output ~/my-claude-backups

出力形式の指定

# Markdown形式(デフォルト)
claude-extract --extract 1

# JSON形式(プログラムで処理したい場合)
claude-extract --format json --extract 1

# HTML形式(ブラウザで見やすい)
claude-extract --format html --all

ツールの使用履歴も含める

--detailed フラグを付けると、ツールの呼び出し、MCP応答、システムメッセージなども含めたエクスポートが可能です。

claude-extract --detailed --format html --extract 1

会話の検索

過去の会話をキーワードで検索することもできます。

# 検索モード
claude-search

# キーワードを指定して検索
claude-search "pandoc"
claude-search "エラー対応"

claude-code-exporter(npm版)

Node.js環境の場合は、npm版のエクスポーターも利用できます。

npm install -g claude-code-exporter

# 現在のプロジェクトの会話をエクスポート
claude-prompts

# 最近7日間のセッションを集約
claude-prompts --aggregate --period=7d

4. Hooksによる自動エクスポート

毎回手動でエクスポートするのが面倒な場合、Claude CodeのHooks機能を使って、セッション終了時に自動でエクスポートすることができます。

Hooksは、Claude Codeの特定のイベント(セッション開始、応答完了、セッション終了など)にスクリプトを紐づけて自動実行する仕組みです。

Stop Hookの設定例

~/.claude/settings.json にHookを設定します。

{
  "hooks": {
    "stop": [
      {
        "command": "bash /path/to/save-conversation.sh"
      }
    ]
  }
}

Stop Hookに渡されるデータには transcript_pathsession_id が含まれているので、これを使って会話内容をMarkdownファイルに変換・保存するスクリプトを書くことができます。

Hookの仕組みを活用したオープンソースの自動保存システム(conversation-logger)も公開されています。詳しくは参考資料のリンクを参照してください。

5. CLAUDE.mdに重要事項を記録する

会話履歴の保存とは別のアプローチとして、プロジェクトのルートディレクトリに CLAUDE.md ファイルを配置する方法があります。

CLAUDE.md はClaude Codeがセッション開始時に自動的に読み込むファイルです。以下のような情報を記録しておくと、セッションをまたいでコンテキストを引き継ぐことができます。

  • プロジェクトの方針や設計判断
  • コーディング規約やスタイルガイド
  • 過去のセッションで決定した重要事項
  • よく使うコマンドやワークフロー

セッション中に # プレフィックスを使って # インデントはスペース2つで統一 のように入力すると、その内容が CLAUDE.md に自動追加されます。

6. カスタムコマンドで履歴表示を効率化する

Claude Codeではカスタムスラッシュコマンドを作成できます。~/.claude/commands/ ディレクトリにMarkdownファイルを配置すると、すべてのプロジェクトで使えるグローバルコマンドになります。

たとえば、会話履歴を見やすく表示するコマンドを作成できます。

cat > ~/.claude/commands/history.md << 'EOF'
~/.claude/history.jsonl を読み込み、最近の10件の会話を以下の形式で表示してください。

- 日時(読みやすい形式)
- プロジェクト名
- 会話の最初のメッセージ(80文字まで)
- セッションID

表形式で出力してください。
EOF

作成後、Claude Codeのセッション内で /history と入力すると実行されます。

7. 用途別のおすすめ運用

用途に応じて以下のように使い分けると効率的です。

日常的な作業記録を残したい場合claude-conversation-extractor で定期的にMarkdownエクスポート。--recent 5 で直近のセッションだけ取り出すのが手軽です。

重要な決定事項をセッション間で引き継ぎたい場合CLAUDE.md に記録。セッションのたびに自動で読み込まれるため、繰り返し同じ説明をする必要がなくなります。

すべての会話を自動バックアップしたい場合 — Stop Hookで自動エクスポートを設定。一度設定すれば、以降はセッション終了のたびに自動保存されます。

特定の作業を中断・再開したい場合claude --resume または claude -c でセッションを再開。ファイルの状態やこれまでのコンテキストがそのまま復元されます。

まとめ

Claude Codeの会話は ~/.claude/projects/ にJSONL形式で自動保存されています。組み込みの /export コマンドで個別にエクスポートできるほか、claude-conversation-extractor などのツールを使えばまとめてMarkdownやHTMLに変換できます。さらにHooksを活用すれば自動バックアップも可能です。

長期にわたるプロジェクトでは、過去の議論や決定の経緯を振り返れることが重要です。自分の作業スタイルに合った方法で、会話の記録を残す仕組みを整えておくと良いでしょう。

参考資料

← ITQ Lab トップに戻る