✍️ 【完全保存版】自分の分身GPTをつくる方法　～ ChatGPT履歴から「あなたAI」を誕生させるまでのすべて ～

## はじめに：なぜ「自分専用GPT」を作ろうと思ったのか？

私はこれまで3年以上、ChatGPTを日常的に使ってきた。  
仕事の思考整理、メール文の下書き、情報の構造化、ちょっとした雑談まで。

気づけばそこには「自分の思考の蓄積」があった。

そんなとき、尊敬する佐渡島庸平さんが「編集者サディ」を公開していた。
NoteやVoicyなど全て目を通している自分からすると、本当に佐渡島さんと話している感覚だった。

影響されやすい私は、「自分も分身GPTを作りたい」と思い立ち、  
**“自分の代わりになるGPT”** を作ってみることにした。

---

## ステップ0：必要な前提

- ✅ ChatGPT Plus（有料プラン）に加入している
- ✅ GPTs（カスタムGPT）を自作した経験がある
- ✅ 過去の会話履歴が豊富（私は3年分！）

---

## ステップ1：ChatGPTの会話履歴をエクスポート

### 手順：

1. ChatGPT右下のプロフィール →「Settings（設定）」をクリック  
2. 「Data Controls」→「Export Data」を選択  
3. 数分後に `.zip` ファイルがメールで届く  
4. 中にある `conversations.json` が会話のすべて！

---

## ステップ2：Pythonで `.json` をテキストに整形

`conversations.json` はそのままだと読みにくいので、Pythonで整形する。

```python
import json

with open("conversations.json", "r", encoding="utf-8") as f:
    data = json.load(f)

with open("output.txt", "w", encoding="utf-8") as out:
    for i, conv in enumerate(data[:3]):
        out.write(f"\n=== 会話 {i+1} ===\n")
        mapping = conv.get("mapping", {})
        for msg in mapping.values():
            message = msg.get("message")
            if message:
                role = message["author"]["role"]
                parts = message["content"].get("parts", [])
                if parts:
                    text = parts[0]
                    out.write(f"{role.capitalize()}: {text}\n\n")

```               
## ステップ3：テキストファイルを月別に分割
大量の会話があるので、月ごとの .txt ファイルに分割した。
これにより、時系列分析やGPTへの分割アップロードがしやすくなる。

```python
from datetime import datetime
import os

monthly_buffers = {}
with open("conversations.json", "r", encoding="utf-8") as f:
    data = json.load(f)

for conv in data:
    mapping = conv.get("mapping", {})
    for msg in mapping.values():
        message = msg.get("message")
        if not message:
            continue
        role = message["author"]["role"]
        parts = message["content"].get("parts", [])
        text = parts[0] if parts else ""
        timestamp = message.get("create_time")
        if not timestamp:
            continue
        dt = datetime.fromtimestamp(timestamp)
        month_key = dt.strftime("%Y-%m")
        if month_key not in monthly_buffers:
            monthly_buffers[month_key] = []
        monthly_buffers[month_key].append(f"{role.capitalize()}: {text}\n")

os.makedirs("monthly_logs", exist_ok=True)
for month, lines in monthly_buffers.items():
    with open(f"monthly_logs/{month}.txt", "w", encoding="utf-8") as f:
        f.write("".join(lines))
```
## ステップ4：ChatGPTに読み込ませたい会話ログをアップロード
私は 2023-01.txt 〜 2025-05.txt までの月別ログをすべて用意。
これが、GPTに「自分らしさ」を教えるベースとなる。

## ステップ5：「GPT設計テンプレート」を設定する
以下のような**人格設計の指示文（Instructions）**をGPTs作成画面に入力：

🧠【指示文（抜粋）】
```
【Role】
あなたは、ユーザーの過去の対話データ（2023〜2025年）を元に構築された、思考パートナー型の分身GPTです。
冷静で論理的かつやわらかい語り口を持ち、整理力と観察力に長けています。

【Tone / Style】

丁寧語を基本に、親しみある落ち着いたトーンで話す

提案型：相手に委ねる言い方（「〜かもしれません」「〜してみても良さそうです」）

構造化と言語化が得意

相手の問いを受け取り、問い返すことも厭わない

【Abilities】

過去の会話から「ユーザーが何に悩み、何を大切にしてきたか」をふまえて答える

情報を構造的に整理し、説明や要約ができる

営業・製造・市場分析・ふるさと納税・制度解釈などにも親しみがある

長文対応、壁打ち対応、資料設計も可能

【Not do】

フワッとした抽象語だけで返す

断定的な物言い（「絶対に〜です」など）

馴れ馴れしい言い回し（「だよね！」「マジで？」など）

✍️ 思考整理系
「この企画を整理したいんだけど、どう言語化すればいい？」

📧 文章作成系
「このメールどう書く？」

🧠 価値観・深掘り系
「なぜ私はこういう考え方をするんだと思う？」

📈 資料構造化系
「このインプットを、3つくらいの構造で整理してくれる？」
```
💬【使用例】

「今日の会話、まとめると何が見えた？」

「このメール、あの人向けに柔らかく書き直して」

「このアイデア、どんな問いを立てれば深まる？」

## ステップ6：GPTを保存 → 話しかけてみる！
「Create GPT」→「Configure」→「Save」で作成完了。
あとは実際に話しかけて、「自分っぽさ」が出ているか確認する。

## 実際にやってみて感じたこと
思考の整理や壁打ちが、自分の言葉で返ってくるのが不思議で心地よい

GPTが“自分らしさ”を持ち始めると、質問の質と返答の納得度が圧倒的に高くなる

日記やSNS投稿などを足すとさらにリアルになるかもしれない

## 今後やりたいこと
文章スタイルをより反映させる（口語・文語の切り替えなど）

タグ付けされたログで「テーマ別GPT」を作る（例：仕事GPT・生活GPT）

他者と共有できるバージョンの設計も試したい

## おわりに
「自分専用GPTをつくる」という体験は、
ただのテクノロジー活用ではなく、「自分を再発見するプロセス」そのものだった。

自分の思考、言葉、価値観。それらを反映する“分身AI”と、これからの対話が楽しみでならない。