Escrito originalmente en francés. Traducido por IA — se ha preservado el sentido, no la prosa.
A menudo trabajo varios días dentro de la misma conversación con ChatGPT.
Hablamos, reformulamos, abandonamos pistas, y en medio de decenas de mensajes aparece por fin un párrafo interesante.
En ese momento me gustaría simplemente poder decir:
Persiste esto.
Y seguir trabajando.
Y cinco días más tarde:
Sácame todo lo que he persistido.
Parece obvio.
Pero ChatGPT no funciona realmente así.
El chat no es la memoria de ChatGPT
Este es probablemente el punto peor comprendido.
La conversación que se muestra en la interfaz puede estar completa. Puedo desplazarme por los mensajes y encontrar lo que nos dijimos tres días antes.
Pero eso no significa que ChatGPT disponga también de todos esos mensajes palabra por palabra cuando responde.
Hay que distinguir:
- la transcripción conservada y mostrada en la interfaz;
- lo que el modelo puede utilizar realmente para producir su respuesta;
- la memoria de ChatGPT, que no conserva cada conversación palabra por palabra.
OpenAI explica que la memoria guarda ciertos elementos útiles y que no debe considerarse un almacenamiento exhaustivo de todo lo que se ha dicho.
FAQ oficial sobre la memoria de ChatGPT
La transcripción está completa para mí.
ChatGPT, en cambio, no ha guardado necesariamente palabra por palabra los pasajes que me interesan.
Y eso es justo lo que necesito.
Si hoy selecciono tres párrafos importantes, quiero poder volver cinco días más tarde y recuperar exactamente esos tres párrafos.
"Guarda esto como marcador" no basta
Podría escribir:
Guarda este párrafo como marcador.
Pero eso no crea un marcador realmente persistente.
Unos días más tarde, puede que ChatGPT encuentre lo que yo había seleccionado, como puede ser incapaz de devolvérmelo palabra por palabra. No es lo bastante fiable para lo que necesito.
Quiero recuperar exactamente los pasajes que decidí conservar.
Es esa necesidad la que justifica una persistencia externa.
No quiero guardar toda la conversación
El objetivo no es en absoluto copiar automáticamente cada mensaje.
Una conversación larga contiene mucho material intermedio:
- preguntas;
- pruebas;
- reformulaciones;
- pistas abandonadas;
- respuestas sustituidas diez minutos más tarde.
Solo quiero sacar del flujo los pocos fragmentos que tienen valor.
Por ejemplo:
Persiste nuestra última definición.
o:
Persiste esto.
La decisión de conservar sigue siendo humana.
Primera idea: una API
Mi primer reflejo fue el clásico.
Construir un pequeño servicio PHP capaz de recibir texto y añadirlo a un archivo Markdown.
Algo así:
ChatGPT
↓
API
↓
Markdown
Así que desarrollé (o más bien Claude Code) un pequeño Remote Persistence Store.
El servidor sabía:
- crear distintos contextos;
- añadir contenido;
- devolver el Markdown;
- dar algunos datos sobre el estado del contexto.
Técnicamente, todo funcionaba.
El problema estaba en otra parte.
Con ChatGPT Plus no puedo simplemente llamar a mi API
Con mi suscripción a ChatGPT Plus de 20 $ al mes, no puedo pedirle sin más a ChatGPT que llame a cualquier API externa.
ChatGPT sabe construir él mismo una URL de API añadiéndole parámetros. Pero en algunos casos, en cuanto la URL ha sido modificada o construida por él, la herramienta web se niega después a llamarla. El problema no es fabricar la URL, sino tener derecho a ejecutarla.
Yo quería seguir usando ChatGPT con normalidad, sobre todo desde el móvil.
Había que encontrar otro camino.
Segundo intento: hacer trampa
ChatGPT sabe consultar páginas web.
Así que intenté esconder una operación de escritura detrás de lo que parecía una simple consulta de página web.
En lugar de enviar:
POST /persist
construí una URL del tipo:
https://mi-servidor.example/persist
?context=mi-contexto
&content=mi-texto
Para ChatGPT, la petición parecía simplemente:
Consulta esta página web.
Para mi servidor:
Recupera los parámetros y escríbelos en disco.
Convertía a propósito una escritura en una falsa lectura.
No era muy elegante.
Pero para un prototipo personal habría servido perfectamente.
Y del lado del servidor funcionaba.
- Desde un navegador: ningún problema.
- Con
curl: ningún problema.
Pero en cuanto ChatGPT tenía que tomar el contenido de nuestra conversación, construir dinámicamente esa nueva URL y consultar la página correspondiente, sus protecciones de navegación bloqueaban la operación.
Lo cual, al final, es bastante lógico.
Estaba intentando precisamente sacar automáticamente contenido de la conversación hacia mi propio servidor, disfrazando la escritura de consulta de una página web.
Mirar lo que ChatGPT ya sabe hacer
Entonces cambié de pregunta.
En lugar de buscar:
¿Cómo consigo que ChatGPT llame a mi servidor?
busqué:
¿Dónde sabe escribir ya ChatGPT?
En mi caso: Google Sheets.
Creé una hoja extremadamente simple:
created_at | context | content
Y luego probé:
Persiste "AZERTY"
Y apareció una nueva fila:
2026-09-12T15:20:44+02:00 | Remote Persistence Store | AZERTY
Esta vez, el texto había salido realmente de la conversación.
Existía con independencia de ChatGPT.
Google Sheets como bandeja de salida
No era mi arquitectura ideal.
Al principio quería:
ChatGPT → API → Markdown
Ahora tenía:
ChatGPT → Google Sheets
Pero Google Sheets no tiene por qué ser mi almacenamiento definitivo.
Puede hacer simplemente de outbox.
Una bandeja de salida en la que ChatGPT deposita la información que he decidido conservar.
Después podré hacer:
ChatGPT
↓
Google Sheets
↓
script
↓
Markdown
↓
Obsidian / Git / otra IA
El problema importante estaba resuelto: sacar una información precisa de la conversación.
Primera versión: casi 50 segundos
Funcionaba, pero era atrozmente lento.
Un simple comando:
Persiste "test"
podía tardar casi 50 segundos en escribir tres celdas.
El problema venía de que ChatGPT redescubría casi todo cada vez.
- Buscaba el archivo.
- Recuperaba sus metadatos.
- Comprobaba la pestaña.
- Miraba las columnas.
- Buscaba dónde escribir.
Y solo entonces añadía los datos.
Y nada de todo eso cambiaba entre dos llamadas.
Dejar de buscar lo que ya se conoce
Así que añadí directamente en la instrucción toda la información fija:
- el identificador del Spreadsheet;
- el identificador del Sheet;
- el nombre de la pestaña;
- las tres columnas;
- su significado.
Y sobre todo:
No busques el archivo. No leas sus metadatos. No vuelvas a leer sus encabezados.
Quedaba por determinar dónde escribir.
Mi primera solución consistía en insertar sistemáticamente la nueva entrada en la fila 2.
Era rápido, pero los datos quedaban entonces ordenados al revés: los más recientes arriba.
Por suerte, Google Sheets dispone de un mecanismo de append.
Ya no hace falta buscar la última fila.
El proceso se convierte simplemente en:
Persiste
↓
append
↓
verificación
↓
respuesta
En mis pruebas, las llamadas a Google necesarias para escribir y volver a leer se hacen ahora en uno o dos segundos acumulados.
El tiempo total de respuesta de ChatGPT sigue siendo variable, pero estamos muy lejos de los casi 50 segundos de la primera versión.
Así que el problema no era realmente Google Sheets.
El problema era que la IA redescubría cada vez un contexto ya conocido.
Verificar después de escribir
Tampoco quería que ChatGPT me mostrara simplemente:
Está persistido.
sin saber qué se había escrito realmente.
Así que añadí una regla.
Después de cada escritura, ChatGPT debe volver a leer la entrada que acaba de añadir.
Para un texto corto, muestra lo que ha releído realmente:
Persistido ✓
Contexto: Remote Persistence Store
Estado: OK
Contenido:
AZERTY
Para un contenido mucho más largo, muestra solo un resumen fiel del contenido releído.
Lo importante es que la confirmación llegue después de la verificación.
intención
→ escritura
→ relectura
→ verificación
→ confirmación
Tener "Persiste" disponible en todos mis chats
Evidentemente, no quería pegar todo este manual de uso al principio de cada nueva conversación.
Así que lo añadí en las Instrucciones personalizadas de ChatGPT.
En la web:
Configuración
→ Personalización
→ Instrucciones personalizadas
También hay que conectar Google Drive a ChatGPT para que pueda acceder a la hoja.
Una vez configurados los dos elementos, puedo empezar una nueva conversación y escribir directamente:
Persiste nuestra última definición.
La instrucción le indica entonces a ChatGPT qué significa el verbo Persiste y adónde enviar el contenido.
Mi instrucción "PERSISTE"
Esta es una versión anonimizada.
Hay que sustituir los tres valores entre <...> por los de tu propia hoja de Google. Puedes pedirle a ChatGPT que los encuentre, e incluso que cree la hoja.
DIRECTRIZ "PERSISTE"
Cuando empiece una petición con "Persiste" o pida explícitamente persistir una información, añade esa información en la hoja de Google configurada como almacén de persistencia.
GOOGLE SHEET
Spreadsheet ID: <SPREADSHEET_ID>
Sheet: <SHEET_NAME>
Sheet ID: <SHEET_ID>
Estructura fija:
A = created_at
B = context
C = content
INTERPRETACIÓN
- "Persiste xxx" = persistir xxx.
- "Persiste nuestro último intercambio" = persistir el contenido pertinente del último intercambio.
- "Persiste tu última respuesta" = persistir la última respuesta.
- "Persiste este texto" = persistir el texto explícitamente indicado.
- "Persiste en {contexto} xxx" = usar {contexto} como context.
- Si no se indica ningún contexto, deducir un nombre corto y pertinente a partir del tema en curso.
- No pedir confirmación si la petición es clara.
ESCRITURA
1. Determinar created_at con la fecha y la hora actuales.
2. Usar directamente el Spreadsheet ID y el Sheet conocidos.
3. Usar un append nativo de Google Sheets.
4. Añadir exactamente:
created_at | context | content
OPTIMIZACIÓN
Durante un comando "Persiste":
- no buscar el archivo;
- no leer sus metadatos;
- no volver a leer sus encabezados;
- no buscar la última fila;
- no analizar su estructura antes de la escritura;
- usar directamente los identificadores y la estructura conocidos.
Hacer una lectura solo después de la escritura.
VERIFICACIÓN
Después del append:
1. Releer únicamente la entrada añadida.
2. Comprobar el contexto y el contenido.
3. Confirmar la persistencia solo después de esa verificación.
CONTENIDO
- Persistir el contenido solicitado tal cual.
- No resumirlo antes de almacenarlo.
- No reformularlo ni corregirlo salvo petición explícita.
- Conservar en lo posible su estructura original.
RESPUESTA
Para un contenido corto:
Persistido ✓
Contexto: {context}
Estado: OK
Contenido:
{contenido realmente releído}
Para un contenido largo:
Persistido ✓
Contexto: {context}
Estado: OK
Resumen del contenido releído:
{resumen fiel en unas pocas líneas}
El resumen afecta únicamente a la confirmación.
El contenido almacenado sigue siendo íntegro.
En caso de fallo:
Persistencia fallida ✗
Contexto: {context}
Estado: ERROR
Problema:
{descripción corta del error}
PRIORIDAD
append directo → verificación específica → respuesta
Evitar cualquier operación de Google Drive o Google Sheets que no sea imprescindible.
Esto no es una memoria para ChatGPT
No considero esta hoja de Google como "la memoria de ChatGPT".
Es mucho más simple.
Es un sitio exterior en el que puedo decidir que un fragmento de conversación merece conservarse.
Durante una discusión:
buscamos
→ probamos
→ reformulamos
→ algo se vuelve interesante
En ese momento:
Persiste esto.
El fragmento sale del flujo.
Se vuelve recuperable con independencia de lo que ChatGPT tenga todavía en contexto dentro de cinco días.
Del flujo al capital
Técnicamente, todo esto acaba escribiendo tres celdas en una hoja de cálculo.
Esa no es la parte interesante.
Lo que me interesa es el gesto.
Una conversación con una IA produce muchísima información temporal.
No todo necesita sobrevivir.
Pero algunas cosas merecen pasar del flujo a algo duradero.
No quiero pedirle a ChatGPT que lo memorice todo.
Quiero poder indicarle:
Esto sí cuenta.
Y después:
Persiste esto.
La conversación sigue siendo el espacio en el que trabajo.
Lo que extraigo de ella puede empezar a convertirse en capital informacional.
Para saber más
Del archivo único al sistema de contextos: por qué la memoria de un LLM no cabe en un solo documento Bajo el capó de mi motor de contexto: cómo una IA recuerda una misión Añadir una memoria de sesión como en OpenClaw El entregable ya no es el capital