この記事は「女性エンジニア応援」Advent Calendar 2025の13日目の記事です。
アドベントカレンダー初参加に伴い、Qittaに登録しました。よろしくお願いします。
📌 目次
はじめに
ChatGPT を日々使っていて、学んだ内容を後から簡単に復習できない問題 にぶつかります。会話ログは流れて行ってしまうので、なかなか意図した情報に辿り着けず、ChatGPT自身に過去のやり取りを要約をしてもらっても、学習過程が見えない汎用的なまとめになってしまいます。
始めのうちはWordに抜き出したり、ノートを取っていましたが、それがさらに手間になるという悪循環でした。そこで、ChatGPTログを「復習できる学習ノート」に変換するプロンプト用のテンプレートを作ろうと思い立ちました。
🎯解決したい問題
- 結論だけ確認したい時に、探し出すのに時間がかかる
- 欲しい情報がどのセッションでの会話だったかが覚えていない
- 似たようなまとめが沢山あって、どれを参照するか迷う
- 会話を繰り返し、深堀りし、理解を深めたはずの内容を覚えていない
- 結果的に 何度も同じような質問をChatGPT にしてしまう
🎯どうせなら更に加えたい内容
- 自分がどのようなアプローチで理解を深めるのかを知りたい
- ChatGPT の大量ログを Obsidian で活かせる形に再構築したい
✅解決策:2段階プロンプトの導入
これらを解決するために、ChatGPT エクスポート(conversations.json)を「復習用のMarkdownノート」に自動変換する2段階テンプレート を作りました。
ここでいうテンプレートは、Cursorに投げる汎用プロンプトのことで、テキストファイルに保存して、再利用できるようにしています。この記事では、そのテンプレートの構造と考え方をまとめています。
📝Step0:ChatGPTからデータをエクスポート(JSON)
ここでは、ChatGPTの会話ログをJSONとして取得します。
アカウント > 設定 > データ コントロール > データをエクスポートする
【図1】ChatGPT アカウント設定画面(データのエクスポート)
ChatGPT の設定画面から会話ログを ZIP 形式でエクスポートします。
【図2】エクスポート後のファイル構成(Cursor のエクスプローラー)
解凍後、この中の conversations.json を使用します。

🛠2段階プロセスの全体フロー
Step0でエクスポートしたconversations.jsonを、次の2ステップで処理します。
【図3】2段階プロセスの全体フロー
┌──────────────────────────┐
│ ChatGPT conversations.json(全ログ) │
└───────────────┬──────────┘
│
▼
Step1:JSON 抽出テンプレート
(抽出条件に合うチャットだけを抽出)
│
│ @selected_chats.json
▼
Step2:Markdown 変換テンプレート
(復習しやすい構造でノート化)
│
▼
┌──────────────────────────┐
│ Obsidian 用 学習ノート(Markdown) │
└──────────────────────────┘
なぜ2段階にしたか
- Step1:抽出条件に合うチャットだけを抽出(JSON → JSON)
- Step2:復習しやすい学習ノートに変換(JSON → Markdown)
当初は、全ログから一気に Markdown ファイルを作ろうとしましたが、JSON が大きすぎて Cursor がエラーになりました。そのため、まず Step1 で対象チャットのみを抽出し、処理対象を小さくしたうえで Step2 に進む構成にしています。
なぜ Markdown + Obsidian にしたか
Step2 で Markdown に変換している理由は、AI モデルが構造を把握しやすいとされる軽量テキスト形式で、将来的に学習ノートを AI 処理に再利用する可能性が出てきた場合でも、変換せずに扱いやすそうだと思ったためです。
また、Markdown で保存することを前提にして調べた際に、ナレッジ管理ツールとして最適そうなのが Obsidian でした。そのため、学習ノートの保存先として Obsidian を使用しています。これは、ChatGPT 以外の資料とも組み合わせていきたいと思っています。
📝Step1:JSON抽出テンプレート(概要)
大量ログから、今回の学習テーマに関係するチャットだけを抜き出します。
【抽出条件】の部分では、その時に抽出したい学習テーマやキーワードを、箇条書きで列挙します。下記は実際に行った例ですが、条件はもう少し絞っても良いかもしれません。
【図4】今回使用した抽出条件(学習テーマの指定例)
対象とする学習テーマを、箇条書きで指定しています。
【抽出条件(ここを書き換えて使用)】
抽出したいチャット:
- 仮想環境
- streamlit
- venv の必要性
- VMWare / Docker の比較
- バージョン衝突
- グローバル環境への影響
- 依存関係・依存パッケージ管理
抽出された JSON ファイルは、selected_chats フォルダに保存します。上記の抽出条件で生成されたのは、2025-11-17virtual_environment_chats.jsonです。
【図5】抽出された JSON ファイル(Cursor のエクスプローラー)
抽出結果は selected_chats フォルダに保存され、Step2(Markdown 変換)の入力として使用します。
📝Step2:Markdown変換テンプレート(概要)
抽出したチャット内容から、復習用の Markdown 学習ノートを生成します。
📗生成される学習ノートの構成
- 冒頭の固定文(編集不要・実行内容)
- 0. メタ情報
- 1. 学習内容の要約(結果ベース)
- 2. トピック一覧(ナビゲーション)
- 3. トピック別メモ(復習の本体)
- 4. 思考の変化ログ(サブ)
- 5. 次にやること・保留事項
- 6. 検索キーワード(Obsidian向け)
- 7. 禁止事項
- 8. 出力仕様(保存候補パス)
この記事では、下記を そのまま全文掲載しています。
- 冒頭の固定文(編集不要・実行内容)
- 8. 出力仕様(保存候補パス)
それ以外の 1. 学習内容の要約(結果ベース)〜 7. 禁止事項 の各セクションについては、実際に Cursor のチャットに入力しているプロンプトの一部、多くは冒頭部分を記載しています。
箇条書きの「-」のみの行や、「・・」で省略している部分は、いずれも 追記・拡張前提の箇所 です。自分の学習内容や用途、好みに応じて自由に調整してください。
📗冒頭の固定文(編集不要・実行内容)
Step2 のテンプレート冒頭に記載している固定文です。実行内容と出力条件を AI に正確に伝えるためのもので、編集せず、そのまま使用する前提としています。
【図6】Step2 テンプレートの冒頭固定文(基本方針)
この部分は、私の運用では毎回共通で使用する冒頭定義文です。
以下のテンプレートは編集不要です。
レビューしたり提案したりせず、テンプレートをそのまま使用して実行してください。
実行内容:
@selected_chats.json から内容を読み取り、「学習内容の要約」「トピック別メモ」
「思考の変化タイムライン」を含む復習しやすい Markdown ノートを 1 本生成してください。
最後に save_suggestion を付けてください。
--- ここからテンプレート本文 ---
あなたは私の **ChatGPT 学習ノート生成アシスタント** です。
## 【タスク】 ChatGPT エクスポートから抽出された JSON(会話ログのサブセット)を
読み、 **復習しやすい 1 本の Markdown 学習ノート** にまとめてください。
このノートは以下を満たすことを目的とします:
1. 何を学んだかが一目でわかる **内容の要約(結果ベース)** が先頭にあること
2. 個々の技術・概念・比較を **トピック別に整理** し、あとから探しやすいこと
3. サブとして、**思考の変化・気づきのタイミング** をタイムライン形式で残すこと
## 【対象ファイル】
${source_json}
(実行時:私が @ で selected_chats.json を添付し、この部分が置き換わります)
JSON の構造は概ね次のような形を想定します:
(ここはJSON構造)
複数の conversation が含まれていても、**今回のテーマに関連する 1 つの
「学習セッション」** とみなし、まとめて1本のノートに統合してください。
## 【重要な方針】
- 時系列にダラダラ追うのではなく、
- まず「**学んだ内容の要約**」
- つぎに「**トピック別の整理**」
- その後に「**思考の変化(気づきログ)**」
を書いてください。
- **本文は日本語** で書いてください(コードやエラーメッセージは原文のままでOK)。
- あとから Obsidian で検索しやすいよう、
- 見出し
- 箇条書き
- キーワード列挙
を意識してください。
## 【出力形式(この構造で Markdown を生成)】
以下のテンプレートをベースに、{{ }} の部分を具体的な内容で埋めてください。
📗0. メタ情報
日付 / セッション名 / タグ / 元チャットタイトル
📗1. 学習内容の要約(結果ベース)
最初に、何を学んだかが一目で分かる要約を記載します。復習時にここだけ読めば全体像を思い出せるよう、結論・使い方・ポイントに絞って書かせる構成です。
【図7】学習内容の要約(結果ベース)のテンプレート
復習時に最初に確認するための、結論重視の要約セクションです。
## 1. 学習内容の要約(結果ベース)
> 復習のときにここだけ読めば「何がわかったか」が思い出せるように書く。
> 思考プロセスではなく、**結論・仕様・やり方** を中心に。
- {{学んだこと1:○○の基本的な使い方/考え方}}
-
-
📗2. トピック一覧(ナビゲーション)
後から必要な情報をすぐ探せるよう、トピック一覧を用意しています。この一覧は、学習ノート内のナビゲーション(目次) として機能します。
【図8】トピック一覧(ナビゲーション)のテンプレート
後で見返す際に、調べたい内容へすぐ移動できる索引です。
## 2. トピック一覧(ナビゲーション)
> 復習のときに「何を調べればいいか」がすぐわかるインデックス。
- [{{トピック1名}}](#{{トピック1用のアンカー}}) – {{一言説明(例:環境構築、変数の扱いなど)}}
-
-
※この記事の執筆時点では、まだ目次としての機能が使えていないので、CursorとObsidianの使い方を学びながら、活用していく予定です。
📗3. トピック別メモ(復習の本体)
ここが復習用ノートの中心となる部分です。会話ログをトピックごとに再構成し、定義 → 手順 → 比較 → つまずき → 自分への質問の流れで整理します。
【図9】トピック別メモのテンプレート(復習の本体)
会話ログを再構成し、理解を深めるための中心セクションです。
## 3. トピック別メモ(復習用の本体)
> 会話ログをトピックごとに再構成し、
> 「定義 → 手順・書き方 → 比較 → 落とし穴 → 自分への質問」
> の順で整理してください。
### 3-1. {{トピック1名}} {#{{トピック1用のアンカー}}}
#### ▷ 概要・定義
- {{このトピックの定義・何をするものか}}
- {{前提知識があれば書く}}
#### ▷ 具体的な手順・書き方
1. {{手順1}}
・
・
#### ▷ 関係性・比較
{{関連する技術Aとの違い・使い分け}}
・
・
#### ▷ よく出るエラー / 落とし穴
{{よくハマったポイントと原因}}
・
・
▷ 復習クイックチェック(自分への質問)
{{Q1: ○○は何のために使う?}}
・
・
📗4. 思考の変化ログ(サブ)
内容そのものではなく、「どこで詰まったか」、「どこで理解が変わったか」などの思考の変化だけを残します。思考プロセスをダラダラ書かないことを前提にしています。
【図10】思考の変化ログ(サブ)のテンプレート
理解の転換点や気づきを、最小限で記録するためのセクションです。
内容の復習より一段あと。
「どこで詰まったか」「どこで視点が変わったか」を残しておく。
{{ステップ or 時刻}}: 最初は {{こう考えていた/ここで勘違いしていた}}。
・
・
📗5. 次にやること・保留事項
学習中に出てきた「まだ試していないこと」や「後回しにしたこと」を忘れないようにまとめておくための項目です。
【図11】次にやること・保留事項のテンプレート
次回の学習や検証につなげるためのメモ欄です。
5. 次にやること・保留事項
{{すぐ試したいこと(例:別のデータセットで試す、似た機能をもう一度実装する)}}
📗6. 検索キーワード(Obsidian向け)
Obsidian で後から検索しやすくするため、用語名・エラー文・関連キーワードをまとめて列挙します。
【図12】検索キーワード(Obsidian向け)のテンプレート
後から検索することを前提にしたキーワード一覧です。
6. 検索用キーワード(Obsidian用)
将来の自分が検索窓に入れそうな単語をそのまま列挙する。
{{キーワード1}} ・・・
📗7. 禁止事項
AI に勝手なことをさせないための注意書きです。ファイルを保存したり、設定を変えたりといった操作は行わず、あくまでも提案や文章生成までに留めるようにします。
【図13】禁止事項のテンプレート
AI の動作範囲を制限するための注意事項です。
【禁止事項】
AI がファイル保存してはいけない
・
・
📗8. 出力仕様(保存候補パス)
最後に、生成された Markdown を保存するための保存候補パスを提示させます。ここでは保存先の候補を出力するだけで、実際のファイル保存は行いません。生成結果を確認して、自分で保存します。
【図14】出力仕様(保存候補パス)のテンプレート
保存先の候補を提示するだけで、実際の保存は自動では行いません。
【出力仕様】
上記フォーマットに従った Markdown 本文 を出力すること
その直後の行に、次の形式で保存候補パスを書くこと:
save_suggestion:
ai_chat_summaries/YYYY-MM-DD_topic.md
※ 実際の保存は行わない。
※ 日付と topic 部分は、ノート内容にふさわしいものに置き換えてよい。
--- テンプレートここまで ---
📚出力結果(Obsidianでの表示例)
Step2 のテンプレートを実行すると、抽出したチャット内容から復習しやすい Markdown 学習ノート が生成されます。ここでは、生成された Markdown 学習ノートを、Obsidian で開いた状態のスクリーンショットの一部を紹介します。
📒「0. メタ情報」 ~ 「1. 学習内容の要約(結果ベース)」について
【図15】「0. メタ情報」 ~ 「1. 学習内容の要約(結果ベース)」の冒頭部分
(生成された Markdown 学習ノートを Obsidian で開いた表示例)
📒「3. トピック別メモ」について
今回、色々と抽出条件を入れたため、実際には、以下のトピックに分かれてまとめられました。
- Cursorとクラウド型AIの違い
- 仮想環境の種類と比較
- Python仮想環境の実践
- Whisperと依存関係管理
- Markdown形式の理解
📖「3. トピック別メモ」生成完了時の Cursor チャット画面
Step2 のテンプレートを実行し、抽出されたチャット内容から、トピック別に Markdown 学習ノートが生成された直後の状態です。
【図16】「3. トピック別メモ」生成時の Cursor チャット画面

※ChatGPTに聞いたところによると、画面下部に表示されている「保存しました」という表示は、実際にファイルが保存されたことを意味するものではなく、生成結果が確定し、保存先候補(save_suggestion)が提示された状態を示しているそうです。
📖生成された「3. トピック別メモ」(Obsidianでの表示例)
「3. トピック別メモ(復習の本体)」のテンプレートに沿って生成された内容を、Obsidianで開いた表示例です。1トピックを「概要・定義 → 具体的な手順 → 比較 → 注意点 → 自分への質問」の流れで整理することを想定していて、そのように出力されています。
※ 使用しているテンプレートの詳細は
→「【図9】トピック別メモのテンプレート(復習の本体)」を参照してください。
【図17】生成された「3-1. Cursorとクラウド型AIの違い」
トピック別メモの部分抜粋(Obsidian表示例)

📖プロンプトに追加した工夫:比較表としてまとめる指定
以下は、生成された5つの主要トピックのうち「3-2. 仮想環境の種類と比較」に対応するトピック別メモの一部です。
ChatGPTとの会話で、venvとDockerとVMの比較を表形式で作ってもらったことを覚えていたので、プロンプト側で、「venv/Docker/VM の比較を表形式でまとめる」指示を追加していたのですが、その結果が、「▷ 具体的な手順・書き方」セクション内に反映されています。
【図18】生成された「3-2. 仮想環境の種類と比較」
比較表セクションの抜粋(Obsidian表示例)

📒「4. 思考の変化ログ(サブ)」について
ここは、記事の冒頭で挙げた「どうせなら更に加えたい内容」に対応するセクションです。
このテンプレートを設計した時点では、学習内容そのものの整理だけでなく、「理解がどこで変わったのか」「何が腑に落ちたのか」も残せる形にしたいと考えていました。その意識が強くプロンプトに反映されてしまったのか、最初の出力では、思考の変化ログがメインの学習ノートになってしまいました。
設計を見直し、学習内容の整理とは切り分けて、あくまで「サブ(補助的なログ)」として残す構成に変更したことで、現在はこの構成に落ち着いています。
【図19】生成された「4. 思考の変化ログ(サブ)」
(生成された Markdown 学習ノートを Obsidian で開いた表示例)

現状、学習ノートとしてはまだ改良の余地がありますが、これをベースに改良を進めていこうと思っています。同じように「ChatGPTのログが流れてしまう」ことに悩んでいる方の参考になれば幸いです。



