ChatGPT履歴をMarkdown化して知識資産とする方法
ChatGPTの会話履歴(公式エクスポートのconversations.json)をPythonでMarkdownに一括変換し、ローカルで全文検索できる知識資産にします。月単位/会話単位で出力できます。
ChatGPTの履歴を知識資産に変える
ChatGPTで調べ物や学習をしていると、数週間後にこうなりがちです。
- 「あの結論、どのチャットだっけ?」
- 「確か手順を書いたはず…」
- 「会話に散らばった知識を横断検索したい」
この記事では、ChatGPTの公式データエクスポートで取得できる conversations.json を、UTF-8のMarkdownに一括変換して、自分のローカルにmdファイルで保存するスクリプトを作ったので紹介します。
(外部API不要・追加ライブラリ不要・ローカル完結)
Quick Start(最短3ステップ)
0) 前提
- Python 3.x が動くこと(Windowsは
pyコマンドでもOK) - ChatGPT公式エクスポートZIPを解凍して
conversations.jsonを用意できること
1) conversations.json を用意
ChatGPTの設定からエクスポートを実行し、conversations.json を取得します。
2) スクリプトを取得
リポジトリ:https://github.com/pawaramorucha819/export_chatgpt_to_md.git
git clone https://github.com/pawaramorucha819/export_chatgpt_to_md.git
cd export_chatgpt_to_md
3) 変換
月ごと(YYYY-MM) に会話をまとめて出力する場合
python export_chatgpt_to_md.py conversations.json --mode per_month -o out_md
チャットごと に1ファイルで出力する場合
python export_chatgpt_to_md.py conversations.json --mode per_chat -o out_md
Windowsで `python` が通らない場合:
月ごと(YYYY-MM)
py .\export_chatgpt_to_md.py .\conversations.json --mode per_month -o .\out_md
チャットごと
py .\export_chatgpt_to_md.py .\conversations.json --mode per_chat -o out_md
できること
export_chatgpt_to_md.py は、conversations.json を読み込み、2つのモードでMarkdownを書き出します。
-
per_month:**月ごと(YYYY-MM)**に会話を束ねて出力(まずはこれがおすすめ) -
per_chat:会話ごとに1ファイルで出力(会話単位で管理したい人向け)
出力はどちらも UTF-8のMarkdown。ローカルで完結します。
なぜ作ったのか?(背景)
ChatGPTは非常に便利ですが、調べたことや学んだことを後で探すのは大変です。
特に、会話が散らばっているとその場限りの情報にもなってしまいがちで、自分の知識資産として過去の履歴を活用するのが難しいと感じていました。
そこでこのスクリプトは、ChatGPTの公式エクスポートで取得できる conversations.json をMarkdown形式に変換し、ローカルに保存したり、NotebookLMやObsidianといったツールに取り込むことで自分の知識資産として活用しやすくすることを目的として開発しています。
手順(詳細)
1) ChatGPTからデータをエクスポートする
設定から Export data を実行 → メールのリンクからZIPをダウンロード → 解凍します。
解凍後、次のファイルが含まれますので任意のフォルダに保存してください。
こちらにすべてのチャット履歴が含まれています。
-
conversations.json(本記事で使う)
エクスポート手順を日本語でざっくり(2026/01/04時点)
- ChatGPTの設定画面を開く
- データコントロールをクリック
- "データをエクスポートする"項目の"エクスポートする"ボタンをクリック
- 画面に表示される内容を確認し、"エクスポートを確認"ボタンをクリック
- 数分〜数時間後に登録メールアドレスにエクスポート完了した旨のメールが届く
- メール内の"データエクスポートのダウンロード"をクリックしてZIPファイルをダウンロード
2) スクリプトを用意する
以下のリポジトリをクローンまたはダウンロードします。
3) 変換する
per_month(月ごとに管理したい)
python export_chatgpt_to_md.py conversations.json --mode per_month -o out_md
per_chat(会話単位で管理したい)
python export_chatgpt_to_md.py conversations.json --mode per_chat -o out_md
出力例
per_monthの場合
--mode per_month の場合、月単位のファイルができます。
例えば、こんな感じの履歴です。
out_md/
2025-12_chatgpt_bundle.md
2026-01_chatgpt_bundle.md
...
各ファイルは「会話ごとの区切り」で並び、先頭にメタ情報が入ります(例)。
title-
created_utc/updated_utc(UTCの時刻です) -
User / Assistantの発言
例:先頭のイメージ
---
title: "Chatタイトル"
chatgpt_conversation_id: "69572cd5-a958-8323-b69b-ce6d9b9d5793"
created_utc: 2026-01-02T02:26:30.598524+00:00
updated_utc: 2026-01-02T02:38:12.935301+00:00
---
# Chatタイトル
- Created (UTC): 2026-01-02T02:26:30.598524+00:00
- Updated (UTC): 2026-01-02T02:38:12.935301+00:00
---
## User
*Time (UTC): 2026-01-02T02:26:29.056000+00:00*
...(ユーザが発言投稿した内容)
## Assistant
*Time (UTC): 2026-01-02T02:26:30.462902+00:00*
...(ChatGPTの応答内容)
以下続く...
per_chatの場合
チャット履歴ごとに1ファイル出力します。
例えば、こんな感じの履歴です。
out_md/
20260103_Chatタイトル_ab12cd34.md
20251230_他のChatタイトル_ef56gh78.md
...
ファイル名は 作成日 + タイトル + 会話ID(短縮) をベースにしています。
変換結果の取り扱いについて気をつけること(重要)
仕組み(ざっくり)
ChatGPTのエクスポートは会話がツリー構造(mapping)になっています。
このスクリプトは概ね次の流れで「読みやすい会話」を復元します。
-
current_nodeから親を辿って会話チェーンを復元 -
user/assistantのメッセージを抽出 - Markdownに整形(見出し・メタ情報・発言ブロック)
- モードに応じてファイル分割(会話単位 / 月単位)
まとめ
ChatGPT履歴は、溜めるほど資産になります。
でも、活用できなければ意味がないですよね。
今回、こちらのスクリプトは自分用に作りましたが、ぜひ皆さんにも使ってみてほしいと思い、公開しました。
ChatGPTの履歴を自分の知識資産として有効活用できるようにしていただければ幸いです。
Contributeも大歓迎ですので、気軽にPRやIssueをお寄せください!
関連記事(2026/01/14追記)
Markdown化したChatGPT履歴を活用して、自己分析やプロダクト案出しに使う方法を実践してみた記事を公開しました!こちらもぜひご覧ください。
Discussion
素晴らしいツールをありがとうございます!
自分でも作ろうと考えては面倒で諦めていた作業だったので、こうして公開していただけて本当に助かりました。Markdownへの変換ができるだけで、作業効率が劇的に上がりそうです。特に、タイムスタンプが保持される点や、ID付与によるファイル名被りの防止など、実際に使う側の視点に立った工夫がとてもありがたいです。
活用させていただきます!