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 de ChatGPT.
Hablamos, reformulamos, descartamos pistas, y en medio de decenas de mensajes aparece por fin un párrafo interesante.
En ese momento me gustaría poder decir simplemente:
Persiste esto.
Y seguir trabajando.
Y cinco días más tarde:
Sácame todo lo que he persistido.
Parece evidente.
Pero ChatGPT no funciona exactamente así.
El chat no es la memoria de ChatGPT
Este es seguramente el punto peor entendido.
La conversación que muestra la interfaz puede estar completa. Puedo recorrer los mensajes y recuperar 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:
- el transcript conservado y mostrado 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 conserva ciertos elementos útiles y que no debe entenderse como un almacenamiento exhaustivo de todo lo que se ha dicho.
FAQ oficial sobre la memoria de ChatGPT
Así que el transcript está completo para mí.
ChatGPT, en cambio, no ha conservado 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.
"Bookmark esto" no basta
Podría escribir:
Bookmark este párrafo.
Pero eso no crea un verdadero bookmark persistente.
Unos días después, puede que ChatGPT recupere lo que yo había seleccionado, o puede que sea incapaz de devolvérmelo palabra por palabra. No es lo bastante fiable para lo que necesito.
Quiero recuperar exactamente los pasajes que he decidido conservar.
Es esa necesidad la que justifica una persistencia externa.
No quiero guardar toda la conversación
La idea no es en absoluto copiar automáticamente cada mensaje.
Una conversación larga contiene mucho material intermedio:
- preguntas;
- pruebas;
- reformulaciones;
- vías abandonadas;
- respuestas sustituidas diez minutos después.
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 llamar sin más a mi API
Con mi suscripción a ChatGPT Plus de 20 $ al mes, no puedo pedirle a ChatGPT que llame a cualquier API externa.
ChatGPT sabe construir él mismo la URL de una API añadiéndole parámetros. Pero en ciertos casos, en cuanto la URL ha sido modificada o construida por él, la herramienta web se niega después a llamarla. El problema no está, por tanto, en fabricar la URL, sino en tener derecho a ejecutarla.
Yo quería seguir usando ChatGPT con normalidad, en particular 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 así, 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 después la página correspondiente, sus protecciones de navegación bloqueaban la operación.
Lo cual, al final, es bastante lógico.
Estaba intentando justamente sacar de forma automática 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 probé:
Persiste "AZERTY"
Y apareció una nueva línea:
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 limitarse a hacer 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.
Una simple orden:
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 eso cambiaba de una llamada a otra.
Dejar de buscar lo que ya se conoce
Así que puse directamente en la directriz 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 releas sus encabezados.
Quedaba todavía por determinar dónde escribir.
Mi primera solución consistía en insertar sistemáticamente la nueva entrada en la línea 2.
Era rápido, pero los datos quedaban entonces en orden inverso: los más recientes arriba.
Por suerte, Google Sheets dispone de un mecanismo de append.
Ya no hace falta buscar la última línea.
El proceso se convierte simplemente en:
Persiste
↓
append
↓
verificación
↓
respuesta
En mis pruebas, las llamadas a Google necesarias para escribir y releer 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 sin más:
Persistido.
sin saber qué se había escrito realmente.
Así que añadí una regla.
Después de cada escritura, ChatGPT debe releer 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 modo de empleo al principio de cada nueva conversación.
Así que lo añadí a 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 conversación nueva y escribir directamente:
Persiste nuestra última definición.
La directriz le indica entonces a ChatGPT qué significa el verbo Persiste y adónde enviar el contenido.
Mi directriz "PERSISTE"
Aquí va una versión anonimizada.
Hay que sustituir los tres valores entre <...> por los de tu propio Google Sheet. Puedes pedirle a ChatGPT que los encuentre, e incluso que cree el Google Sheet.
DIRECTRIZ "PERSISTE"
Cuando empiece una petición con "Persiste" o cuando pida explícitamente persistir una información, añade esa información en el Google Sheet configurado como store 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
Ante una orden "Persiste":
- no buscar el archivo;
- no leer sus metadatos;
- no releer sus encabezados;
- no buscar la última línea;
- no analizar su estructura antes de escribir;
- usar directamente los identificadores y la estructura conocidos.
No leer hasta después de escribir.
VERIFICACIÓN
Después del append:
1. Releer únicamente la entrada añadida.
2. Verificar el contexto y el contenido.
3. No confirmar la persistencia hasta después de esa verificación.
CONTENIDO
- Persistir el contenido pedido tal cual.
- No resumirlo antes de almacenarlo.
- No reformularlo ni corregirlo salvo petición explícita.
- Conservar en la medida de lo posible su estructura original.
RESPUESTA
Para un contenido corto:
Persistido ✓
Contexto: {context}
Estado: OK
Contenido:
{contenido efectivamente releído}
Para un contenido largo:
Persistido ✓
Contexto: {context}
Estado: OK
Resumen del contenido releído:
{resumen fiel en unas líneas}
El resumen atañe ú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 dirigida → respuesta
Evitar cualquier operación de Google Drive o Google Sheets que no sea imprescindible.
Esto no es una memoria para ChatGPT
No considero que este Google Sheet sea "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.
Pasa a ser 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.
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 señalarle:
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.