Claude Code活用 #10 担当者が何度も替わって追えなくなったチャット履歴を、AIに調べてもらう

Claude Code や各種 AI ツールで業務を進めていると、「このデータもAIに読ませたい」という場面が増えてきます。ところが、世の中のツールがすべて AI 連携に対応しているわけではありません。その代表格が Google Chat です。
今回は、AI から直接は読めない Google Chat の会話履歴を、エクスポート機能を使って書き出し → 整形して、Claude Code と NotebookLM の両方で検索できる形に変換した話を紹介します。ニッチな工夫かもしれませんが、「AI連携に対応していないツールを、どうやってAIの土俵に乗せるか」という汎用的な考え方の一例として読んでいただければと思います。
困っていたこと:担当者が入れ替わり、過去の経緯が追えない
あるお客様の CMS 運用案件で、日々のやり取りを Google Chat のスペースで続けてきました。期間はおよそ3年、メッセージ数は約1万件にのぼります。
この案件、お客様側・こちら側とも担当者が3〜4回入れ替わっています。よくあることではあるのですが、困るのは「過去にどういう経緯でこの仕様に決まったのか」「前の担当者の頃にどんな約束をしていたのか」が、もう誰も即答できない状態になっていくことです。
チャットをスクロールして上へ上へと遡れば、記録自体は残っています。でも、3年分・1万件を人力で読み返すのは現実的ではありません。「あの話、たしかどこかでやったはず」を探すだけで半日溶ける、というのは避けたいところでした。
こういう「過去の膨大なやり取りから、必要な文脈を引っ張り出す」作業は、まさに AI が得意とするところです。そこで、この会話履歴を AI に読ませることにしました。
なぜ直接AIに読ませられないのか
Claude Code のような AI エージェントは、MCP(Model Context Protocol)などの仕組みを通じて外部サービスのデータを読み書きできます。実際、Gmail や Google Drive、各種 SaaS には AI から扱える口が用意されつつあります。
ところが Google Chat には、AI から実用的に会話履歴を引ける口がありません。API はあるものの、スペースの全履歴をまとめて取得するような用途には向いておらず、MCP 対応のツールも実質的に見当たりません。つまり「リアルタイムに繋いで読む」路線は、今のところ厳しいのが実情です。
ただし、Google には Google Takeout(データエクスポート) という機能があります。これを使えば、スペースの会話履歴を JSON でまるごと書き出せます。リアルタイム連携ができないなら、定期的にエクスポートした静的データをAIに読ませればいい——今回のアプローチはこれだけです。
やったこと:エクスポートして、2つの形に整形する
作業の流れはシンプルです。
- Google Takeout で対象スペースの履歴をエクスポートする(Google Chat → 対象スペースを選択)
- 書き出された
messages.jsonを、整形スクリプトで2つの形式に変換する - Claude Code と NotebookLM、それぞれで検索できるようにする
エクスポートされた生の JSON は、1メッセージあたりの構造が深く、そのままでは grep も NotebookLM 投入もしづらい形です。そこで、用途に合わせて2つに整えました。
① Claude Code 用:1行1メッセージの JSONL
Claude Code で grep や jq を使ってピンポイントに探すための形式です。1行 = 1メッセージにして、「日付・投稿者・本文・添付ファイル名」を1行にまとめておきます。
{"date":"2026-01-09T08:53:19Z","author":"担当A","text":"緊急時お知らせの表示仕様ですが…","attachments":[],"message_id":"..."}
{"date":"2026-01-09T09:12:04Z","author":"担当B","text":"了解しました。ではその方向で…","attachments":["仕様メモ.xlsx"],"message_id":"..."}
こうしておくと、検索が一気に楽になります。
# 本文に「緊急時お知らせ」を含む発言だけ抜く
grep '緊急時お知らせ' messages.jsonl
# jq で「2026年6月以降」かつ「更新日時」に触れている発言に絞る
jq -c 'select(.date >= "2026-06" and (.text|test("更新日時")))' messages.jsonl
あとは Claude Code に「この案件で〇〇の仕様をいつ・どういう理由で決めたか、履歴から調べて」と頼めば、grep で該当箇所を拾い、前後の文脈を読んで経緯を要約してくれます。1万件を人が読み返す代わりに、AI が該当メッセージだけを引いてまとめてくれる、というわけです。
② NotebookLM 用:年別のプレーンテキスト
もう一つは、チームの誰でも自然言語で質問できるように NotebookLM に投入する用のテキストです。年ごとに1ファイルへまとめ、1メッセージを読みやすいブロックに整形します。
[2026-01-09 08:53:19 UTC] 担当A
緊急時お知らせの表示仕様ですが…
[2026-01-09 09:12:04 UTC] 担当B
了解しました。ではその方向で…
(添付: 仕様メモ.xlsx)
これを NotebookLM にソースとしてアップロードしておけば、「この案件で緊急時対応の仕様はどう変わってきた?」といった質問に、根拠となる発言を引用しながら答えてくれます。Claude Code はエンジニア向けですが、NotebookLM ならブラウザだけで使えるので、開発担当以外のメンバーとも過去の経緯を共有できます。
なお、履歴を「読める形」で残す意味でも、原本の JSON はそのまま保管しています。整形後のテキストと突き合わせれば、いつでもチャットの内容を目視で確認できます。
エクスポート時に気をつけたこと
実際にやってみると、いくつか注意点がありました。
- 退職者の発言は投稿者名が失われる:Google のエクスポート仕様上、アカウントが削除済みのユーザーの発言は投稿者名が「Deleted User」に統合されます。本文は残りますが、後から実名を機械的に復元することはできません。担当者が入れ替わる長期案件ほど、この「名無し化」が起きやすいので、追えるうちにエクスポートしておく価値があります。
- 添付ファイルの本体は扱わない:今回は本文と「添付ファイル名」だけを保持しました。ファイル中身まで含めると量が膨らむうえ、機密情報の管理も難しくなるためです。
- 顧客とのやり取りはローカル保管:会話ログには顧客名や社内の生のやり取りが含まれるため、リポジトリにはコミットせず(
.gitignoreで除外)、手元での保管に留めています。
月1でエクスポートすれば、常に最新化できる
このやり方の良いところは、仕組みが単純で、繰り返しやすいことです。
Takeout を再取得して、整形スクリプトの入力パスを差し替えて実行するだけで、JSONL も NotebookLM 用テキストも作り直せます。月1回くらいのペースでこれを回せば、直近のやり取りまで含めて常に AI から検索できる状態を保てます。
そして、これは Google Chat に限った話ではありません。「AI/MCP には対応していないが、エクスポート機能はある」ツールは世の中にたくさんあります。チャット、掲示板、社内ツール、古い業務システム——そういったものも、
エクスポート → 用途に合わせて整形 → AI に読ませる
という同じ流れに乗せれば、AI 活用の対象にできます。リアルタイム連携が用意されるのを待たなくても、定期エクスポートという「泥臭いけれど確実な」方法で、AI が扱えるデータの範囲は今すぐ広げられる、というのが今回の一番の学びでした。
まとめ
- Google Chat のように AI 連携に対応していないツールでも、エクスポート機能があれば AI の土俵に乗せられます。
- 3年・約1万件の会話履歴を、Claude Code 用の JSONL(grep / jq で検索)と NotebookLM 用のテキスト(自然言語で質問)の2形式に整形しました。
- 担当者が何度も入れ替わり、過去の経緯が誰も追えなくなった案件でも、AI に履歴を読ませることで「いつ・なぜ・どう決めたか」を素早く辿れるようになりました。
- ポイントは、リアルタイム連携を待たず 月1のエクスポート+整形を繰り返すこと。同じ発想は Google Chat 以外の「MCP非対応ツール」にもそのまま応用できます。
「うちのあのツール、AIで扱えないんだよな」と思っているものがあれば、まずエクスポート機能を探してみるところから始めてみてください。
