Cómo exportar conversaciones de ChatGPT: guía JSON, PDF y Markdown
ChatGPT no tiene botón para descargar conversaciones individuales. Esta guía explica la exportación oficial de datos y compara extensiones de navegador y convertidores JSON para guardar chats en JSON, PDF o Markdown.
1. ¿Se pueden exportar conversaciones de ChatGPT?
ChatGPT no tiene un botón «descargar esta conversación», pero guardar chats es una necesidad muy habitual: apuntes de estudio, entregas de trabajo, copias de seguridad de código, bases de conocimiento y respaldo a nivel de cuenta para evitar pérdidas.
El formato importa: PDF sirve para compartir, Markdown para notas y JSON para uso programático — ya analices conversaciones con Python o jq, extraigas bloques de código, construyas datasets de fine-tuning o alimentes un flujo RAG, JSON es el mejor punto de partida.
Este artículo compara tres enfoques prácticos y explica por qué la exportación JSON de AI Exporter es más fácil de usar que el conversations.json oficial de OpenAI.
2. Respuesta rápida: qué método elegir
- Exportación oficial de datos (Ajustes → Controles de datos → Exportar datos) es el único respaldo oficial completo de ChatGPT, pero
conversations.jsonusa una estructura en árbolmappingdifícil de analizar y no está lista para entregar en PDF o Word. - Exportación JSON de AI Exporter genera un array plano de mensajes en el que cada mensaje incluye
role,model,modelId,created_atycontentsestructurados — ideal para scripts, migración y desarrollo posterior. - Combinación recomendada: exportación oficial para respaldos periódicos completos; AI Exporter en el día a día para conversaciones individuales o seleccionadas en JSON o PDF / Markdown; JSON oficial + convertidor cuando necesites transformar cientos de chats antiguos en documentos legibles de una vez.
3. Método 1: exportación oficial de datos de ChatGPT (ideal para respaldo completo)
La única opción oficial de exportación masiva de OpenAI.
Cuándo usarlo
- Respaldos periódicos completos de la cuenta
- Migración a otra plataforma de IA (p. ej. importar chats a Gemini)
- No ideal para: guardar una sola conversación o entregar un documento legible al instante
Pasos
- Abre chatgpt.com e inicia sesión.
- Haz clic en el icono del perfil (abajo a la izquierda) → Settings (Ajustes).

- Ve a Data controls (Controles de datos).
- Haz clic en Export data (Exportar datos) → confirma.

- Espera el correo de OpenAI (normalmente 20–30 minutos; cuentas con muchas conversaciones pueden tardar más — la documentación oficial indica hasta 24 horas).
- Haz clic en el enlace de descarga del correo (válido 24 horas — revisa también spam).
- Descomprime el archivo y localiza
conversations.json(exportaciones recientes pueden dividirse enconversations-000.jsony otros fragmentos).
Qué obtienes
conversations.json— historial completo en estructura en árbolmappingcon marcas de tiempo e información del modelochat.html— versión básica navegable en el navegador- Puede incluir imágenes y adjuntos (imágenes DALL·E, chats temporales y conversaciones eliminadas pueden faltar)
Problemas del JSON oficial
La exportación de OpenAI es JSON, pero está estructurada para almacenamiento interno — no para usarse directamente en scripts:
mappingen árbol con punteros padre/hijo — hay que recorrer el grafo para reconstruir el orden de la conversación.- Los prompts editados crean ramas — un hilo puede tener varios caminos, complicando el análisis.
- Texto enterrado en
content.parts[]— no es un campo string simple. - Marcas de tiempo Unix en float — p. ej.
1713350400.0, que requieren conversión adicional. - Todo o nada — sin exportación selectiva de mensajes individuales, sin descarga instantánea.
| Ventajas | Detalles |
|---|---|
| Oficial y fiable | Proporcionado por OpenAI, sin terceros |
| Exportación masiva real | Todas las conversaciones de la cuenta de una vez |
| Metadatos ricos | Marcas de tiempo, info del modelo y estructura de la conversación |
| Sin instalación | Se hace desde los ajustes de ChatGPT |
| Limitaciones | Detalles |
|---|---|
| Todo o nada | No se pueden elegir chats ni rangos de fechas |
| Estructura compleja | El JSON en árbol exige parsing profundo |
| Sin opciones de formato | Sin PDF, Markdown ni Word |
| Entrega lenta | De minutos a días |
| Contenido ausente | Chats temporales, hilos eliminados y algunos contenidos específicos de la IA pueden faltar |
En resumen: la exportación oficial es una red de seguridad, no una forma práctica de obtener datos estructurados bajo demanda.
4. Método 2: AI Exporter (ideal para el uso diario)
Transparencia: este es nuestro producto. A continuación, un repaso honesto de lo que puede y no puede hacer.
Por qué el JSON de AI Exporter supera al conversations.json oficial
| Dimensión | conversations.json oficial | JSON AI Exporter |
|---|---|---|
| Estructura | mapping en árbol, parsing complejo | Array plano de mensajes, iteración directa |
| Alcance | Masivo para toda la cuenta | Chat individual / mensajes parciales bajo demanda |
| Velocidad | De minutos a días | Instantáneo con un clic |
| Marcas de tiempo | Floats Unix | created_at legible por mensaje |
| Info del modelo | Dispersa en metadatos | model / displayModel / modelId en cada mensaje assistant |
| Tipos de contenido | Retraso en nuevas funciones | Array contents preserva varios tipos estructurados |
Cómo es el JSON de AI Exporter
El nivel superior es un array de mensajes (no metadata + mapping):
[
{
"id": "msg_001",
"chatGroupId": "group_abc",
"role": "user",
"model": "chatgpt",
"displayModel": "ChatGPT",
"contents": [
{ "type": "markdown", "content": "How do I read a CSV in Python and filter columns?" }
],
"created_at": "2026-04-15 14:30:45",
"updated_at": 1713175845000
},
{
"id": "msg_002",
"chatGroupId": "group_abc",
"role": "assistant",
"model": "chatgpt",
"displayModel": "ChatGPT",
"modelId": "GPT-4o",
"contents": [
{ "type": "markdown", "content": "You can use pandas:\n\n```python\nimport pandas as pd\ndf = pd.read_csv('data.csv')\n```" },
{ "type": "thinking", "content": "User needs a basic CSV read example..." },
{ "type": "sources", "sources": [{ "title": "pandas documentation", "url": "https://pandas.pydata.org", "domain": "pandas.pydata.org" }] }
],
"created_at": "2026-04-15 14:31:22",
"updated_at": 1713175882000
}
]Un array plano sobre el que puedes hacer un bucle — sin árboles anidados ni punteros padre/hijo.
Campos que más interesan a los usuarios
Por mensaje:
| Campo | Descripción |
|---|---|
role | user (tu mensaje) o assistant (respuesta de la IA) |
model / displayModel / modelId | Nombre de plataforma, nombre visible y versión del modelo (p. ej. GPT-4o, Claude Sonnet) |
created_at / updated_at | Hora del mensaje para ordenar y estadísticas |
chatGroupId | Agrupa un turno user/assistant para emparejar |
Array contents (contenido estructurado — el valor central de la exportación JSON):
| type | Qué se preserva |
|---|---|
markdown / text | Texto, bloques de código, fórmulas matemáticas |
thinking | Razonamiento / cadena de pensamiento |
sources | Citas de búsqueda web y Deep Research |
image / attachment | Imágenes y archivos subidos |
html_widget | Canvas / artefactos interactivos |
shopping_card / shopping_table | Tarjetas de recomendación y tablas comparativas de compras |
La exportación JSON conserva todos los datos estructurados independientemente de ajustes de visualización como «mostrar marcas de tiempo» en PDF o Markdown.
Cómo exportar JSON con AI Exporter
- Instala AI Exporter desde Chrome Web Store (también funciona en Edge y Firefox).
- Abre la conversación de ChatGPT que quieras exportar.
- Haz clic en el icono de la extensión → elige JSON.
- Opcional: selecciona mensajes concretos para exportar solo lo que necesitas.
- Opcional: activa «Copiar al portapapeles» para pegar el JSON directamente en un script o herramienta API.
Qué hacer con el JSON exportado
Los ejemplos siguientes usan el formato JSON de AI Exporter. Si usas la exportación oficial, extrae primero los mensajes del árbol mapping.
Estadísticas rápidas de la conversación en Python:
import json
from collections import Counter
with open("ChatGPT-my-conversation.json") as f:
messages = json.load(f)
roles = Counter(msg["role"] for msg in messages)
print(f"Tus preguntas: {roles.get('user', 0)}")
print(f"Respuestas de la IA: {roles.get('assistant', 0)}")
responses = [m for m in messages if m["role"] == "assistant" and m["contents"]]
longest = max(responses, key=lambda m: len(str(m["contents"])))
print(f"Respuesta más larga (caracteres): {len(str(longest['contents']))}")Extraer todos los bloques de código:
import json
import re
with open("ChatGPT-my-conversation.json") as f:
messages = json.load(f)
for msg in messages:
if msg["role"] != "assistant":
continue
for item in msg.get("contents", []):
if item.get("type") not in ("markdown", "text"):
continue
blocks = re.findall(r"```(\w+)?\n(.*?)```", item.get("content", ""), re.DOTALL)
for lang, code in blocks:
print(f"--- {lang or 'text'} ---")
print(code)Convertir al formato de fine-tuning de OpenAI (JSONL):
import json
with open("ChatGPT-my-conversation.json") as f:
messages = json.load(f)
training_data = []
for i in range(0, len(messages) - 1, 2):
user_msg, assistant_msg = messages[i], messages[i + 1]
if user_msg["role"] != "user" or assistant_msg["role"] != "assistant":
continue
user_text = " ".join(c.get("content", "") for c in user_msg.get("contents", []) if c.get("content"))
assistant_text = " ".join(c.get("content", "") for c in assistant_msg.get("contents", []) if c.get("content"))
if user_text and assistant_text:
training_data.append({
"messages": [
{"role": "user", "content": user_text},
{"role": "assistant", "content": assistant_text},
]
})
with open("training.jsonl", "w") as f:
for item in training_data:
f.write(json.dumps(item, ensure_ascii=False) + "\n")
print(f"Generados {len(training_data)} ejemplos de entrenamiento")Otras ventajas de AI Exporter
JSON es uno de varios formatos. Cambia la salida en la misma extensión cuando necesites documentos legibles:
| Formato | Ideal para |
|---|---|
| JSON | Análisis, migración, automatización, fine-tuning |
| Markdown | Obsidian, blogs, bases de conocimiento |
| Compartir, imprimir, archivar — mantiene resaltado de código, LaTeX, imágenes | |
| Word | Documentos de oficina para editar |
| Notion | Sincronización con un clic en la base de conocimiento |
| TXT / Imagen | Archivos ligeros, compartir visual |
Otras funciones principales:
- Exportación selectiva — chat completo, mensajes parciales o exportación al pasar el cursor sobre una respuesta
- Preservación de formato — bloques de código, tablas, LaTeX, Canvas, imágenes
- Multiplataforma — ChatGPT, Claude, Gemini, DeepSeek y más de 10 plataformas
- Procesamiento local — JSON, Markdown, TXT en el navegador, sin subida al servidor
- Plan gratuito — JSON, Markdown, TXT gratis; PDF, Word, Notion con límites diarios gratuitos
Exportación rápida de varias conversaciones (flujo con varias pestañas)
No hay botón oficial «exportar todos los chats», pero un flujo con varias pestañas gestiona muchas conversaciones con eficiencia:
- Cmd/Ctrl + clic en varios chats de la barra lateral de ChatGPT para abrirlos cada uno en una pestaña nueva.
- Preconfigura formato y carpeta de descarga (desactiva «Preguntar dónde guardar cada archivo» en el navegador).
- Por pestaña: Seleccionar → Exportar → Cerrar pestaña — unos dos clics cada una.
- ~20 chats en 3–5 minutos, cada archivo con nombre claro.
Limitaciones
- Sin botón «exportar toda la cuenta» al estilo oficial.
- El respaldo completo de la cuenta sigue combinando mejor con la exportación oficial.
- PDF, Word y Notion tienen límites diarios gratuitos (JSON, Markdown, TXT son gratis).
5. Método 3: exportación oficial + herramientas de conversión (archivo legible masivo)
Para usuarios técnicos, o cuando necesitas transformar cientos de chats antiguos en Markdown de una vez.
Cuándo usarlo
- Conversión masiva del historial completo en documentos legibles
- Importación a Obsidian o Logseq para una base de conocimiento
- No ideal para: guardar rápidamente la conversación en curso
Pasos
- Completa el Método 1 para obtener la exportación ZIP oficial.
- Descomprime y localiza
conversations.json. - Elige un convertidor:
- CLI:
npx chatgpt-to-markdown path/to/archive - Convertidor en navegador: ChatGPT Conversations to Markdown (procesamiento local, sin subida)
- App de escritorio: Univik y similares (soporte PDF / DOCX)
- CLI:
- Cada conversación pasa a ser un archivo
.mdindependiente.
Ventajas y limitaciones
| Ventajas | Limitaciones |
|---|---|
| Masivo de verdad, legible, bueno para migración puntual | Flujo en dos pasos, requiere cierta destreza técnica |
| Muchas herramientas open source, procesamiento local para privacidad | Calidad variable; bloques de código / tablas pueden convertirse de forma irregular |
| Sin exportación selectiva — se convierten todos los chats | |
| Los chats nuevos exigen repetir el proceso completo |
6. Comparación de los tres métodos
| Función | Exportación oficial | AI Exporter | Oficial + convertidor |
|---|---|---|---|
| Alcance | Todos los chats | Bajo demanda | Todos los chats |
| Estructura JSON | Mapping en árbol | Array plano de mensajes | Requiere parsear el JSON oficial |
| Formatos de salida | JSON / HTML | JSON / PDF / MD / Word / Notion etc. | Principalmente Markdown |
| Marcas de tiempo / nombres de modelo | Presentes pero difíciles de extraer | Legibles por mensaje | Depende del convertidor |
| Exportación selectiva | No | Sí (por mensaje) | No |
| Multiplataforma | Solo ChatGPT | ChatGPT + más de 10 plataformas | Solo ChatGPT |
| Conocimientos técnicos | Ninguno | Ninguno | Moderados |
| Exportar 20 chats | De minutos a días | ~3–5 minutos | Espera + conversión |
| Mejor para | Respaldo de seguridad | Exportación diaria + JSON estructurado | Archivo histórico masivo |
7. Flujo recomendado: combinar métodos
Paso 1: exportación oficial para respaldo completo
- Ajustes → Controles de datos → Exportar datos
- Guarda el ZIP en la nube o en disco externo
- Frecuencia sugerida: mensual, o antes de eliminar chats antiguos
Paso 2: AI Exporter para conversaciones importantes
Exporta justo después de una conversación valiosa, eligiendo el formato según el uso:
- Scripts / migración / fine-tuning → JSON
- Informes de investigación, base de conocimiento → Markdown
- Entregas a clientes → PDF
- Colaboración en equipo → sincronización con Notion
Paso 3 (opcional): conversión masiva del respaldo
Cuando necesites un archivo legible de todo el historial, usa el Método 3 para convertir en lote el ZIP oficial a Markdown.
8. ¿A qué formato exportar?
| Tu objetivo | Mejor formato | Mejor método |
|---|---|---|
| Respaldo completo de la cuenta (red de seguridad) | JSON (crudo oficial) | Exportación oficial |
| Scripts / fine-tuning / RAG | JSON (estructurado) | AI Exporter |
| Base de conocimiento (Obsidian / Notion) | Markdown | AI Exporter |
| Compartir con clientes / colegas | AI Exporter | |
| Necesitas editar después | Word | AI Exporter |
| Base de conocimiento en equipo | Notion | AI Exporter |
| Archivo legible masivo del historial | Markdown | Oficial + convertidor |
9. Preguntas frecuentes
P1: ¿ChatGPT puede exportar JSON directamente?
Sí, pero solo mediante la exportación oficial masiva (Settings → Data Controls → Export Data), que genera un archivo anidado con todas las conversaciones. Para JSON por conversación con estructura clara, usa AI Exporter.
P2: ¿En qué se diferencia el JSON de AI Exporter del conversations.json oficial?
AI Exporter genera un array plano de mensajes con role, model, modelId, created_at y contents estructurados, iterables directamente. La exportación oficial usa mapping en árbol con referencias padre/hijo, texto en parts[] y marcas de tiempo Unix float — requiere parsing significativo.
P3: ¿El JSON incluye nombres de modelos y marcas de tiempo?
Sí. Cada mensaje assistant tiene model, displayModel y modelId (p. ej. GPT-4o), y created_at registra la hora para ordenar y estadísticas por modelo.
P4: ¿Se preservan razonamiento, fuentes web y bloques de código?
Sí. El array contents de AI Exporter usa thinking, sources, markdown y otros tipos — mucho más completo que copiar y pegar.
P5: ¿La exportación JSON es gratuita?
Sí. La exportación JSON está disponible en la versión gratuita de AI Exporter — sin cuenta ni suscripción.
P6: ¿Puedo exportar solo las respuestas de la IA sin mis prompts?
Sí. Haz clic en Select y elige Answers para seleccionar solo respuestas de la IA, o marca/desmarca mensajes individualmente.
P7: ¿El JSON exportado sirve para la API de OpenAI o fine-tuning?
Sí. AI Exporter usa etiquetas user / assistant coherentes con la API — extrae el texto de contents como en el ejemplo de fine-tuning anterior.
P8: ¿AI Exporter puede exportar todos los chats en lote?
No hay exportación completa con un clic al estilo oficial, pero el flujo con varias pestañas permite exportar chats rápidamente uno a uno. Combínalo con la exportación oficial para respaldo completo de la cuenta.
P9: ¿Cuánto tarda la exportación oficial? ¿Qué pasa si expira el enlace?
Normalmente 20–30 minutos; más en cuentas con muchos chats. Los enlaces de descarga expiran a las 24 horas — solicita una nueva exportación si hace falta.
P10: ¿Las cuentas gratuitas de ChatGPT pueden exportar?
Sí. Tanto la exportación oficial como AI Exporter funcionan en cuentas gratuitas.
P11: ¿En qué se diferencia AI Exporter de ChatGPT Exporter?
Ambos soportan exportación JSON, pero AI Exporter cubre ChatGPT, Claude, Gemini, DeepSeek y más de 10 plataformas, además de Word, Notion y más — con contents que preserva razonamiento, fuentes de búsqueda, Canvas y otros tipos estructurados.
P12: ¿Con qué frecuencia hacer respaldo?
Haz exportación oficial completa mensualmente. Exporta conversaciones importantes con AI Exporter justo después — no esperes al respaldo mensual.
10. Conclusión
Ningún método cubre todo por sí solo — la estrategia combinada funciona mejor:
- Exportación oficial = red de seguridad para respaldo completo
- AI Exporter = formatos del día a día, especialmente el JSON estructurado más práctico
- Oficial + convertidor = archivo histórico legible masivo
👉 Empieza ahora: Instala AI Exporter y recuerda ejecutar regularmente la exportación oficial de datos.