ChatGPT-Export in Markdown umwandeln — kostenlos

Machen Sie aus der conversations.json eines ChatGPT-Datenexports lesbares Markdown. Folgt dem tatsächlich angezeigten Zweig und lässt den verborgenen System-Prompt weg.

Einen ChatGPT-Datenexport lesen: die Unterhaltung ist ein Baum, keine Liste

Fordern Sie Ihre Daten bei ChatGPT an und Sie bekommen eine .zip, deren brauchbarer Inhalt eine einzige conversations.json ist. Öffnen Sie sie in Erwartung einer Nachrichtenliste und finden etwas anderes: ein Objekt namens mapping, voller Einträge mit Bezeichnern als Schlüssel, von denen jeder auf einen Elternknoten und eine Menge Kinder zeigt. Die Nachrichten sind darin. Die Unterhaltung, an die Sie sich erinnern, ist ein Pfad durch einen Graphen.

Diese Seite rekonstruiert diesen Pfad und schreibt ihn als Markdown. Legen Sie das Archiv oder das entpackte JSON ab: geparst wird in diesem Browser-Tab.

Warum es als Graph gespeichert wird

Weil die Oberfläche Ihnen erlaubt, die Geschichte umzuschreiben. Bearbeiten Sie eine frühere Frage, und der Verlauf gabelt sich ab diesem Punkt. Erzeugen Sie eine Antwort neu, bekommen Sie eine Alternative, zwischen denen Sie mit den kleinen Pfeilen blättern können. Beide Fassungen existieren weiterhin; die Oberfläche zeigt nur eine.

Ein flaches Array kann das nicht abbilden. Der Export speichert daher jeden Zweig, und das Transkript, das Sie tatsächlich gesehen haben, gewinnt man zurück, indem man beim Knoten ohne Elternteil beginnt und hinabgeht, an jedem Schritt unter den Kindern wählend. Die Konvention, die zur Oberfläche passt, ist, dem letzten Kind zu folgen, denn eine Neuerzeugung wird hinter der ersetzten Antwort angehängt. Genau das tut dieses Werkzeug, weshalb sich die Ausgabe wie die Unterhaltung liest, die Sie geführt haben, statt wie eine Verschränkung aller Versuche.

Beim Durchlaufen greift eine Zyklusabsicherung. Bei einem wohlgeformten Export sollte sie nie auslösen, aber eine Endlosschleife in einem Parser ist ein schlechteres Ergebnis als ein abgeschnittenes Transkript.

Inhalte, die Sie nie gesehen haben

Der Export enthält Material, das die Oberfläche verbirgt, und es wortwörtlich wiederzugeben ergibt ein Transkript, das nicht zu Ihrer Erinnerung an die Unterhaltung passt:

  • Die Systemnachricht. Jede Unterhaltung beginnt mit Anweisungen, die Sie nicht geschrieben haben und die Ihnen nicht gezeigt wurden. Sie steht in der Datei als vollwertige Nachricht.
  • Werkzeugverkehr. Websuchen, Codeausführung und Bilderzeugung hinterlassen jeweils eigene Anfrage- und Ergebnisknoten, adressiert an einen anderen Empfänger als die Nutzerin. Das ist die Maschinerie hinter einer Antwort, nicht der Dialog.
  • Ausdrücklich verborgene Knoten. Manche Nachrichten tragen ein Kennzeichen, das sie als nicht in der Unterhaltung angezeigt markiert. Der Export ist darin ehrlich, und das Kennzeichen wird beachtet.

Alle drei werden herausgefiltert, übrig bleiben die Beiträge von Nutzerin und Assistent.

Nachrichteninhalt ist nicht immer eine Zeichenkette

Das Inhaltsfeld ist mit der Zeit gewachsen. Ein reiner Textbeitrag trägt ein parts-Array aus Zeichenketten. Manche Nachrichtentypen verwenden stattdessen ein text-Feld. Multimodale Beiträge legen Objekte in das parts-Array, eines je Element, wobei ein hochgeladenes Bild und die dazugehörige Frage getrennte Einträge sind. Ergebnisse des Code-Interpreters kommen wieder in einer eigenen Form.

Der Parser liest die Zeichenkettenform, die Form als Array von Zeichenketten und die Form als Array von Objekten und holt aus jeder den Text heraus. Nicht-textuelle Teile tragen nichts bei, statt einen Platzhalter oder einen Fehler zu erzeugen: eine Unterhaltung mit Bildern kommt also als die Worte darum herum an.

Warum Markdown das richtige Ziel ist

Der Assistent schreibt bereits Markdown. Seine Antworten enthalten eingezäunte Code-Blöcke, Überschriften, Aufzählungen und Tabellen, und diese Zeichen stehen als Zeichen im Export. Eine Umwandlung in Klartext ließe sie dort stehen, als buchstäbliche Backticks und Rauten — die Formatierung weder gerendert noch entfernt, bloß gestrandet.

Markdown zu behalten heißt, dass Code-Blöcke Code-Blöcke bleiben. Fügen Sie das Ergebnis in eine beliebige Notizen-App, einen Static-Site-Generator, ein Dokumentationswerkzeug oder ein Wiki ein, und es wird gerendert. Sprechernamen sind fett und jede Unterhaltung bekommt eine Überschrift aus ihrem Titel, sodass ein Export über mehrere Jahre zu einem navigierbaren Dokument wird statt zu einem ununterscheidbaren Textstrom.

Exporte sind groß

Ein paar Jahre regelmäßiger Nutzung ergeben eine conversations.json von zig oder hunderten Megabyte mit Tausenden Unterhaltungen. Das ist ein Problem für einen Texteditor, der das Ganze syntaktisch einfärben will, und für jedes Werkzeug, das erst formatiert, bevor es Ihnen überhaupt etwas zeigt.

Hier wird einmal geparst, im Arbeitsspeicher, und nur die lesbare Ausgabe wird gerendert. Jede Unterhaltung wird ein Abschnitt unter eigener Überschrift mit einem Trenner dazwischen, sodass Sie im Ergebnis nach einer halb erinnerten Wendung suchen können, statt zu scrollen.

Ihren Export anfordern

In ChatGPT: Einstellungen, dann Datenkontrolle, dann Daten exportieren. Das Archiv wird Ihnen per E-Mail geschickt, meist binnen Minuten, als ablaufender Downloadlink. Das Zip enthält außerdem einen HTML-Betrachter und diverse Medien; hier wird nur das JSON gebraucht, und das ganze Archiv abzulegen funktioniert einwandfrei.

Nichts wird hochgeladen

Ihr ChatGPT-Verlauf ist eine detaillierte Aufzeichnung dessen, woran Sie arbeiten, was Sie beschäftigt und wobei Sie um Hilfe gebeten haben. Es ist eine der aufschlussreichsten Dateien, die die meisten Menschen besitzen. Das Parsen läuft als JavaScript in diesem Tab, und es gibt keinen Upload-Schritt: kein Server erhält ihn, und hinterher ist nichts zu löschen.

Claude-Exporte haben eine eigene Seite: Claude-Export in Markdown. Die allgemeine Chat-Export-Seite nimmt jede unterstützte Plattform.