ChatGPT Verilerini Claude’a Aktarma Rehberi

Merhaba,

Bu yazımızda ChatGPT’yi bırakıp Claude’ye geçmek isteyen veya Claude’u yeni kullanmaya başlayıp kendini sıfırdan tanıtmakla zaman kaybetmek istemeyen kullanıcılar için gerçek anlamda Claude’un sizi tanımasını sağlayacak yöntemlerden birini inceleyeceğiz.

ChatGPT otomatik olarak veya siz istediğinizde bazı bilgilerinizi bellek adı altında (Şekil-1) kaydediyor ama benim gibi binlerce sohbet geçmişiniz varsa bu özellik sizi tanımak için kısıtlı kalmakta.

ChatGPT bellek arayüzü
Şekil-1

İlk olarak ChatGPT > Ayarlar > Veri kontrollerine giriyoruz. (Şekil-2)

Şekil-2

Verileri dışa aktarda Dışarı Aktara basıyoruz ve gelen pencerede Dışarı aktarmayı onaylaya basıyoruz. (Şekil-3)

Şekil-3

Yaklaşık 24 saat içerisinde size mail olarak indirme bağlantısı gelecek. Gelen zip dosyasını indirdiğinizde tüm resimler ve konuşmalarınızı içeren bir arşiv dosyası olduğunu göreceksiniz. (Şekil-4)

Şekil-4

Bizim için önemli olan conversations-000.json ile başlayıp devam eden dosyalar. Tüm bu json dosyaları sizin ChatGPT ile olan sohbet geçmişiniz. Bu konuşma geçmişlerini ayrı bir klasöre alalım.(Şekil-5)

Şekil-5

Gördüğünüz gibi yaklaşık 85,3 mb bir sohbet geçmişim mevcutmuş, ChatGPT bellekteki 2-3 sayfalık özet sizi tanıtamaz bu yüzden 🙂

Şimdi bu konuşma geçmişleri sizin sorduğunuz ve ChatGPT’nin verdiği yanıtların toplamı. ChatGPT’nin yanıtları Claude’un sizi tanıması için gereksiz olup bunları temizlememiz gerekme. Bu temizlik için powershell scripti aşağıda.

$klasor = "C:\Users\PC\Desktop\f"
$ciktiDosya = "C:\Users\PC\Desktop\chatgpt_ozet.txt"

Write-Host "Islem basliyor..." -ForegroundColor Cyan

$tumMetin = @()
$dosyaSayisi = 0
$mesajSayisi = 0

# Tum JSON dosyalarini bul
$jsonDosyalari = Get-ChildItem -Path $klasor -Filter "*.json" -Recurse

Write-Host "Toplam $($jsonDosyalari.Count) JSON dosyasi bulundu." -ForegroundColor Yellow

foreach ($dosya in $jsonDosyalari) {
    try {
        $icerik = Get-Content -Path $dosya.FullName -Raw -Encoding UTF8
        $json = $icerik | ConvertFrom-Json
        $dosyaSayisi++

        # ChatGPT export formatini isle
        # Format 1: conversations listesi
        if ($json.PSObject.Properties.Name -contains "conversations") {
            foreach ($konusma in $json.conversations) {
                foreach ($mesaj in $konusma.messages) {
                    if ($mesaj.author.role -eq "user" -and $mesaj.content.parts) {
                        $metin = ($mesaj.content.parts | Where-Object { $_ -is [string] }) -join " "
                        if ($metin.Trim().Length -gt 10) {
                            $tumMetin += $metin.Trim()
                            $mesajSayisi++
                        }
                    }
                }
            }
        }
        # Format 2: Direkt mesaj listesi olan JSON
        elseif ($json -is [array]) {
            foreach ($konusma in $json) {
                if ($konusma.mapping) {
                    foreach ($prop in $konusma.mapping.PSObject.Properties) {
                        $node = $prop.Value
                        if ($node.message -and $node.message.author.role -eq "user") {
                            $parts = $node.message.content.parts
                            if ($parts) {
                                $metin = ($parts | Where-Object { $_ -is [string] }) -join " "
                                if ($metin.Trim().Length -gt 10) {
                                    $tumMetin += $metin.Trim()
                                    $mesajSayisi++
                                }
                            }
                        }
                    }
                }
                # Direkt messages array
                elseif ($konusma.messages) {
                    foreach ($mesaj in $konusma.messages) {
                        if ($mesaj.author.role -eq "user" -and $mesaj.content.parts) {
                            $metin = ($mesaj.content.parts | Where-Object { $_ -is [string] }) -join " "
                            if ($metin.Trim().Length -gt 10) {
                                $tumMetin += $metin.Trim()
                                $mesajSayisi++
                            }
                        }
                    }
                }
            }
        }
        # Format 3: mapping iceren tek konusma
        elseif ($json.mapping) {
            foreach ($prop in $json.mapping.PSObject.Properties) {
                $node = $prop.Value
                if ($node.message -and $node.message.author.role -eq "user") {
                    $parts = $node.message.content.parts
                    if ($parts) {
                        $metin = ($parts | Where-Object { $_ -is [string] }) -join " "
                        if ($metin.Trim().Length -gt 10) {
                            $tumMetin += $metin.Trim()
                            $mesajSayisi++
                        }
                    }
                }
            }
        }

        Write-Host "OK: $($dosya.Name) islendi" -ForegroundColor Green
    }
    catch {
        Write-Host "HATA: $($dosya.Name) okunamadi - $_" -ForegroundColor Red
    }
}

# Ciktiyi kaydet
$baslik = @"
==============================================
CHATGPT ARSIVI - KULLANICI MESAJLARI OZETI
Olusturulma: $(Get-Date -Format "dd.MM.yyyy HH:mm")
Islenen dosya: $dosyaSayisi
Toplam mesaj: $mesajSayisi
==============================================

"@

$tumIcerik = $baslik + ($tumMetin -join "`n---`n")
$tumIcerik | Out-File -FilePath $ciktiDosya -Encoding UTF8

$boyut = [math]::Round((Get-Item $ciktiDosya).Length / 1MB, 2)

Write-Host ""
Write-Host "TAMAMLANDI!" -ForegroundColor Cyan
Write-Host "Islenen dosya sayisi : $dosyaSayisi" -ForegroundColor White
Write-Host "Toplam kullanici mesaji: $mesajSayisi" -ForegroundColor White
Write-Host "Cikti dosyasi boyutu : $boyut MB" -ForegroundColor White
Write-Host "Konum: $ciktiDosya" -ForegroundColor Yellow

$klasor = “C:\Users\PC\Desktop\f”
$ciktiDosya = “C:\Users\PC\Desktop\chatgpt_ozet.txt”
bu iki değişkeni kendinize göre değiştirmeniz ve Json dosyaları ile powershell scriptinizi aynı klasöre almanız gerekmekte. Ben masaüstünde f isimli klasör oluşturup buraya koydum. (Şekil-6)

Şekil-6

Powershelli yönetici olarak çalıştırıp şu kodu yazıp enter’a basıyoruz. Scripti “chatgpt_ozet.ps1” olarak kaydettim. (Şekil-7)

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass; & "C:\Users\PC\Desktop\f\chatgpt_ozet.ps1"
Şekil-7

Artık sadece sizin sorduğunuz sorular ayıklanmış oldu. İçeriğine baktığımızda 80753 satır bulunmakta.(Şekil-8)

Şekil-8

Şimdi tüm çıktıları Claude’a aktarmaya başlayabiliriz. Claude ile bir sohbet başlatıp bu dosyayı yükleyip “Tüm ChatGPT ile olan sohbetlerimden beni tanıman için gerekli olan verileri belleğine kaydet” promptu yazarak Claude’nin sizi tanımasını sağlayabilirsiniz. Ama Claude’da bu yazıyı yazdığım tarihte şöyle bir sınırlama var:

Maksimum 30 satır ve her satır 500 karakter ile sınırlı. Yani toplamda yaklaşık 15.000 karakter kaydedebiliyorum.

Tüm bu yaklaşık 6145 mesajımı özetleyip 15000 karakterde beni ve aynı zamanda sizi de tanımış olacak. Anthropic ileride bellek hafızası arttırma yoluna giderse bu yöntem daha faydalı hale gelecektir.

Herkese iyi promptlar 🙂

Yorum yapın