Spark Creative Solutions · Módulo 1
Módulo 1 · 7 nov 2026
Mejora recursiva de tu asistente de IA: la configuración de mínimo crédito
Para mi clase y mis amigos. Escrito a partir de un día de trabajo en la propia configuración de Dan, 7 de noviembre de 2026. Funciona con Claude, ChatGPT o Gemini, en Windows o Mac; nada de esto requiere que seas programador. Cada paso dice dónde está la cosa en cada aplicación.
Por qué funciona
La mayoría de tus créditos no se gastan en pensar. Se van por cuatro fugas, y todas se pueden cerrar en una tarde.
- Cada plugin, conector y herramienta que tienes activado se carga en cada mensaje, lo uses o no. Veinte herramientas ociosas te cuestan en cada turno de cada chat.
- Capturas de pantalla. Cada vez que tu asistente mira tu pantalla o maneja un navegador por imágenes, paga cientos de veces más que por leer texto.
- Volver a explicar. Cada chat nuevo que empieza a ciegas te hace escribir tu situación otra vez, y hace que el asistente busque en su memoria y en chats viejos para ponerse al día. Esa búsqueda cuesta más que tu mensaje.
- Tareas programadas que leen todo cada mañana en el modelo más caro, para producir una página que nunca abres.
La única idea detrás de toda la configuración: tu asistente lee un archivo pequeño al empezar y escribe otro pequeño al terminar. Lo demás es podar. La cuenta de Dan pasó de cuatro ejecuciones pesadas cada mañana a una, y de "dime otra vez dónde estábamos" a un archivo de 300 tokens que el asistente lee antes de hablar. Los mismos movimientos funcionan en Claude, ChatGPT y Gemini, porque son hábitos y archivos, no funciones.
Qué necesitas y cuánto cuesta
Un plan de pago de un asistente, su aplicación de escritorio gratuita, una carpeta en tu ordenador, y unos 40 minutos. Todo lo demás de esta guía es gratis.
| Qué | Costo | Notas |
|---|---|---|
| Plan del asistente | el nivel de pago estándar de una sola aplicación (Claude Pro, ChatGPT Plus o Google AI Pro) | Los niveles gratuitos sirven para los hábitos de archivos pero limitan el uso intenso. Pasa a un nivel superior solo si tocas el límite casi todos los días. Nunca dos planes de pago a la vez. |
| Aplicación de escritorio de ese asistente | gratis | Necesaria para leer una carpeta de tu ordenador. Windows y Mac. |
| Un editor de texto | gratis | Bloc de notas en Windows, TextEdit en Mac, u Obsidian (gratis, mejor, opcional). |
| Cuenta de Google | gratis | Para la automatización gratuita (Apps Script) del paso 6 y el ayudante barato del paso 5. |
| Python | gratis | Solo para el script opcional del pulso en el paso 4. Mac lo trae; en Windows se instala desde python.org en dos clics. |
| Límite de gasto | 0 | Ponlo el primer día: un tope mensual, recarga automática desactivada. El tope es lo que hace seguro experimentar. |
Asume Windows salvo que tengas un Mac; cada paso de abajo tiene las dos versiones. El teléfono sirve para leer, no para esta configuración.
Paso 1, podar
Diez minutos, y el mayor ahorro individual de la lista. Todo lo que está activado se carga en cada mensaje.
- Abre los ajustes de la aplicación y mira los plugins, conectores, integraciones, GPTs o extensiones que tienes activados. Desactiva todo lo que no hayas usado en las últimas dos semanas. Lo vuelves a activar en un clic cuando lo necesites.
- Conserva un conector de automatización, no dos. Si tienes IFTTT y Zapier, quédate con el que tenga algo real dentro.
- Memoria: pide a tu asistente que te muestre lo que recuerda ("exporta todo lo que recuerdas de mí, por categoría"). Borra lo que esté mal o viejo. Dile con palabras claras qué conservar: tu nombre, tu trabajo, las reglas que quieres que siga. Buena memoria significa explicar menos; memoria vieja significa respuestas equivocadas con mucha seguridad.
- Gasto: busca la página de facturación, pon un límite mensual, desactiva la recarga automática. Si tus recargas del mes pasado superaron por mucho el precio del plan fijo, el siguiente nivel sale más barato que los créditos.
Dónde está. Claude: Settings, luego Connectors y Plugins; la memoria en Settings, Memory. ChatGPT: Settings, luego Apps and connectors; la memoria en Personalization, Manage memories. Gemini: Settings, luego Apps; la memoria en Saved info. Los límites de gasto están en la página de facturación de cada aplicación, o en la consola de API si usas una.
Paso 2, la carpeta base y los tres archivos
Crea una carpeta que tu asistente siempre pueda ver, y guarda en ella tres archivos de texto pequeños. Este es todo el sistema de continuidad; cabe en 40 líneas.
Crea una carpeta en tu directorio personal llamada ops. En la aplicación de escritorio del asistente, conéctala (Claude: el botón +, Add folder; ChatGPT: Settings, Work with apps o el selector de carpetas de la aplicación de escritorio; Gemini: una carpeta de Google Drive cumple la misma función, porque Gemini lee Drive). Luego crea dentro estos tres archivos con cualquier editor de texto.
| Archivo | Qué contiene | Quién lo escribe |
|---|---|---|
NOW.md | Dónde estás ahora mismo: en qué trabajas, lo último que terminaste, el siguiente paso, la única cosa que espera por ti. 20 líneas máximo. | Tú, en un minuto, al empezar y al terminar un bloque de trabajo. O el script del pulso del paso 4, automáticamente. |
handoff.md | Dos líneas por sesión: fecha, qué se hizo, qué sigue. La entrada más nueva arriba. | El asistente, al final de cada chat de trabajo, cuando dices "escribe el handoff". |
hands.md | Una lista para marcar con las cosas que solo tú puedes hacer: una contraseña que escribir, un archivo que compartir, un botón que pulsar. | El asistente añade; tú marcas. |
Las plantillas de los tres están en el apéndice. La regla que los hace funcionar: nada en estos archivos es secreto, nada es largo, y el asistente los lee antes de hacer cualquier otra cosa.
Si usas Obsidian, pon la carpeta dentro de tu bóveda. El plugin Local REST API de Obsidian, más una línea en la configuración de escritorio de Claude, permite al asistente leer y escribir la bóveda sin adjuntar una carpeta cada vez; eso es un proyecto de una tarde para más adelante, no para el primer día.
Paso 3, el Proyecto Ops y la instrucción de apertura
Crea un Proyecto (Claude: Project; ChatGPT: Project o un GPT personalizado; Gemini: un Gem, o en cuentas personales a partir del 17 de noviembre de 2026, una entrada de Saved info más una carpeta de Drive fijada) y pega esto como sus instrucciones:
On the first turn of every chat, before anything else, read ops/NOW.md, ops/handoff.md and ops/hands.md. Open by saying in one line where I am and what I was doing, then take my message. No screenshots and no searching old chats until those three files are read.
At the end of a working session, when I say "write the handoff", add two lines to the top of ops/handoff.md: the date, what was done, what is next. Anything that needs my own hands goes as a tick-box line into ops/hands.md.
Style: concise, no moralising, no numbered lists, no em dashes. Ask before anything that cannot be undone: sending, deleting, sharing, publishing, paying. Never type a password; I type those.
Copiar: ops-project-instructions.txt (en inglés; la instrucción funciona igual en español, tradúcela con tu asistente si lo prefieres)
Adjunta la carpeta ops al Proyecto mismo, no a un chat suelto, para que cada chat nuevo la vea. Haz casi todo tu trabajo dentro de este único Proyecto. La ceguera entre Proyectos que tienen casi todas las aplicaciones deja de importar cuando tu trabajo vive en un solo sitio.
El efecto: un chat nuevo no te cuesta nada empezarlo. El asistente abre con "Ibas por la mitad del borrador del boletín, el Takeout sigue corriendo y la impresora necesita papel", y tú sigues.
Paso 4, el pulso (opcional, la parte que parece magia)
Un script diminuto reescribe NOW.md cada cinco minutos con lo que estás haciendo de verdad, para que nunca tengas que actualizarlo a mano. Registra tres cosas: la aplicación en primer plano y el título de su ventana, los archivos que tocaste en los últimos 15 minutos, y el principio de hands.md y handoff.md. Nada sale de tu ordenador y nunca toma una captura de pantalla.
La privacidad viene de fábrica, no añadida después. El script lleva una lista corta de aplicaciones cuyos títulos de ventana nunca se registran (gestores de contraseñas, Signal, banca) y se salta cualquier ventana de navegación privada. Si una aplicación no está en la lista permitida, solo se registra su nombre. Edita esas listas antes de instalar.
- Windows: guarda
pulse.ps1del apéndice enops, abre el Programador de tareas, Crear tarea básica, desencadenador "Al iniciar sesión", acción "Iniciar un programa":powershell.exe -ExecutionPolicy Bypass -File "C:\Users\tu\ops\pulse.ps1", y en las propiedades de la tarea ponla a repetirse cada 5 minutos. Un diálogo, listo. - Mac: guarda
pulse.pyeinstall-pulse.commanddel apéndice enops, haz doble clic en el archivo.commanduna vez, pulsa OK en los dos avisos de permisos.
Comprueba que funciona: abre NOW.md a los cinco minutos. Si la primera línea lleva la hora, el bucle está cerrado, y desde ahora cada chat abre sabiendo dónde estás.
Si usas Gemini: apunta la salida del script a una carpeta de Drive en vez de una local, y Gemini la lee desde ahí.
Paso 5, ayudantes baratos
Tu asistente principal es el caro. Dale la lectura pesada a uno más barato y devuélvele solo el resultado.
- Archivos largos. Nunca pegues un PDF de 200 páginas en tu chat principal. Pide a un modelo barato que lo resuma primero (el nivel gratuito de Gemini en AI Studio, o el nivel gratuito de cualquiera de las tres aplicaciones), y luego dale a tu asistente principal el resumen de dos páginas. Diez veces más barato, a menudo mejor, porque el asistente principal ahora razona sobre un resumen limpio.
- Segundas opiniones. Para una decisión, una respuesta fuerte vale más que cuatro. Usa varios modelos solo cuando quieras que discrepen, y entonces pide una síntesis.
- Pega texto, nunca subas archivos. Un archivo subido a un servicio multimodelo puede quedarse en su almacenamiento sin botón de borrar; Dan lo aprendió de la manera cara. Pega el texto que quieres que lean, limpio de nombres, direcciones, salud y datos de clientes, y nada más. Los niveles gratuitos pueden usar lo que pegas para entrenar, así que la limpieza no es opcional.
- El único script que vale la pena tener, para los curiosos técnicos: un archivo Python de 40 líneas con tu clave de Gemini en un archivo al lado, que resume cualquier documento desde la línea de comandos para que tu asistente principal nunca tenga que cargarlo. La versión de Dan es
council.py; pídesela. Un límite de gasto en la clave, unos pocos euros al mes, hace que sea seguro olvidarse de ella.
Dónde está. Claves de Gemini: AI Studio, API keys; el nivel de pago cuesta céntimos y Google declara que los datos del nivel de pago no se usan para entrenar. Claves de Claude y ChatGPT: sus consolas de desarrollador, misma idea, mismos límites. No hace falta el primer día.
Paso 6, tareas programadas que se ganan su lugar
Una tarea programada es un chat que corre sin ti. Cuesta lo mismo que un chat, cada día, para siempre, así que cada una tiene que pagarse sola.
- Conserva las que te llegan como una notificación que de verdad lees. Una línea por la mañana con el calendario de hoy y los dos correos que importan vale la pena. Una página preciosa que nunca abres, no.
- Pon cada tarea en el modelo más barato que pueda hacerla. Leer una lista y filtrarla es trabajo para un modelo pequeño. Leer recibos y acertar las cantidades necesita un modelo mediano. Casi nada necesita el modelo más grande con temporizador.
- Los trabajos basados en reglas no necesitan modelo. Etiquetar y archivar correo de remitentes conocidos es un filtro de Gmail. Vigilar una carpeta compartida por si otro edita es un Google Apps Script de seis líneas con temporizador, gratis, y ve quién editó, cosa que el asistente no puede. Las comprobaciones del calendario son una expresión regular. Pide a tu asistente que escriba el script; tú lo pegas en script.google.com y pulsas Permitir una vez.
- Una vez al mes, lista las tareas y pregunta de cada una: ¿la leí la semana pasada? Si no, córtala o redúcela a la mitad.
Dónde está. Claude: tareas programadas, visibles en la barra lateral, cada una con su propio modelo. ChatGPT: Tasks. Gemini: Scheduled actions. Google Apps Script funciona para los tres, porque vive en tu cuenta de Google, no en el asistente.
La cuenta de Dan antes y después de una auditoría: cuatro ejecuciones pesadas entre semana en el modelo más grande pasaron a una; dos vigilancias de carpeta al día pasaron a un script gratis; el resto pasó a modelos pequeños. La misma información llegándole, una fracción de los créditos.
Las reglas de seguridad que viajan con todo esto
No son prudencia por prudencia. Cada una existe porque saltársela una vez le costó a alguien tiempo o privacidad de verdad.
- Las contraseñas y las claves de API las escribes tú, en un archivo en tu propio ordenador, nunca en un chat. Una clave pegada en un chat vive en esa transcripción. Si pasa, crea una clave nueva y borra la vieja el mismo día.
- Nada irreversible sin tu sí: no enviar, borrar, compartir, publicar ni pagar. Pon esta línea en las instrucciones de tu Proyecto y el asistente preguntará cada vez.
- A los modelos externos, texto pegado, nunca archivos. Limpia antes nombres, direcciones, salud, dinero y datos de clientes. Ten una lista de palabras que nunca deben salir de tu máquina y revisa el texto contra ella antes de pegar.
- Las carpetas llamadas Privado siguen privadas. Dile al asistente qué carpetas no puede leer nunca, y pon esa lista también en las instrucciones del Proyecto.
- Los títulos de ventana y los archivos recientes son un registro de tu vida. Mantén honesta la lista de exclusión del pulso, y deja
NOW.mdfuera de todo lo que compartas. - Una negativa del sistema de permisos del asistente no es un obstáculo que rodear. Es el sistema haciendo su trabajo; ese paso va a tu lista
hands.md. - Que tus palabras sigan siendo tuyas. Cuando reenvíes algo que escribió el asistente, dilo. Cuando redacte por ti, conserva tu puntuación y tu voz; el pulido es lo que delata.
Los quince minutos semanales
Esto es lo que lo hace recursivo: el asistente mejora su propia configuración, contigo como la mano que hace clic.
Una vez a la semana, abre el Proyecto Ops y di: "Lee hands.md y handoff.md. Dime qué estoy pagando que no usé esta semana, qué tuviste que preguntarme dos veces, y qué único cambio ahorraría más créditos. Luego actualiza las instrucciones del Proyecto con lo que acordemos." Marca lo que puedas en hands.md mientras piensa.
Tres preguntas mantienen honesto el bucle:
- ¿Qué volví a explicar esta semana? Esa es una línea que falta en las instrucciones del Proyecto o en la memoria.
- ¿Qué capturó o buscó el asistente que un archivo le podría haber dicho? Esa es una línea que falta en
NOW.md. - ¿Qué corrió con temporizador que nunca leí? Esa es una tarea que cortar.
Escribe las respuestas en las instrucciones, no en tu cabeza. En un mes la configuración te queda como un guante y la factura de créditos es una fracción de lo que era. Después enséñaselo a un amigo; explicarlo es como descubres qué partes sigues haciendo por costumbre.
Sin rayas largas en ninguna parte, sin listas numeradas, tu propia puntuación en todo lo que envíes como tú. Cambio y fuera, con cariño.
Apéndice: plantillas y scripts para copiar
Los tres archivos, como deberían verse el primer día. Cada uno también se puede descargar; clic derecho, guardar en ops. Los archivos están en inglés; funcionan igual, y traducirlos con tu asistente es un buen primer ejercicio.
NOW.md
# NOW.md
Working on: the newsletter draft, section 3
Last finished: sent the invoice to the printer
Next: proofread section 3, then export the PDF
Waiting on me: reply to the landlord about Thursday
Descargar: NOW.md
handoff.md
# handoff.md (newest on top)
2026-11-07 Set up the ops folder, Project and pulse. Next: prune the plugins, set the spend cap.
Descargar: handoff.md
hands.md
# hands.md: things only I can do
- [ ] set the monthly spend limit and turn auto-reload off
- [ ] connect the ops folder to the Project
Descargar: hands.md
Pulso para Windows: pulse.ps1
Guárdalo en ops, prográmalo con el Programador de tareas cada 5 minutos. Edita primero las dos listas de arriba.
# pulse.ps1: rewrites ops\NOW.md with what you are doing. Nothing leaves this computer.
$ops = "$HOME\ops"
$deny = @("1Password","Bitwarden","KeePass","Signal","Passwords") # never logged at all
$titleOk = @("Claude","ChatGPT","Code","Obsidian","chrome","msedge","firefox","WINWORD","EXCEL","notepad","explorer","WhatsApp","OUTLOOK","Zoom") # window title logged only for these
Add-Type @"
using System; using System.Runtime.InteropServices;
public class W { [DllImport("user32.dll")] public static extern IntPtr GetForegroundWindow();
[DllImport("user32.dll")] public static extern uint GetWindowThreadProcessId(IntPtr h, out uint pid); }
"@
$h = [W]::GetForegroundWindow(); $procId = 0; [W]::GetWindowThreadProcessId($h, [ref]$procId) | Out-Null
$p = Get-Process -Id $procId -ErrorAction SilentlyContinue
$app = if ($p) { $p.ProcessName } else { "unknown" }; $title = ""
if ($deny -contains $app) { $app = "[private app]" }
elseif ($titleOk -contains $app -and $p.MainWindowTitle -and $p.MainWindowTitle -notmatch "InPrivate|Incognito|Private") { $title = $p.MainWindowTitle.Substring(0, [Math]::Min(90, $p.MainWindowTitle.Length)) }
$since = (Get-Date).AddMinutes(-15)
$files = Get-ChildItem "$HOME\Documents","$HOME\Desktop","$HOME\Downloads",$ops -Recurse -File -ErrorAction SilentlyContinue |
Where-Object { $_.LastWriteTime -gt $since -and $_.FullName -notmatch "\\Private\\|Signal|\\\.git\\|node_modules|NOW\.md" } |
Sort-Object LastWriteTime -Descending | Select-Object -First 8
$lines = @("# NOW (auto, $(Get-Date -Format 'ddd dd MMM HH:mm'), pulse.ps1, read this first)", "Active: $app" + $(if ($title) { " `"$title`"" } else { "" }))
$lines += "Files touched (last 15 min):"
if ($files) { $files | ForEach-Object { $lines += " " + $_.FullName.Replace($HOME, "~") } } else { $lines += " none" }
foreach ($f in @("hands.md","handoff.md")) { if (Test-Path "$ops\$f") { $lines += "From ${f}:"; Get-Content "$ops\$f" | Where-Object { $_.Trim() -and -not $_.StartsWith("#") } | Select-Object -First 5 | ForEach-Object { $lines += " $_" } } }
$lines | Select-Object -First 22 | Set-Content "$ops\NOW.md" -Encoding UTF8
Descargar: pulse.ps1
Pulso para Mac: pulse.py más install-pulse.command
Guarda los dos en ops, haz doble clic en el .command una vez.
#!/usr/bin/env python3
# pulse.py: rewrites ops/NOW.md with what you are doing. Nothing leaves this computer.
import os, subprocess, datetime, re
HOME = os.path.expanduser("~"); OPS = os.path.join(HOME, "ops")
DENY = {"Signal", "Passwords", "1Password", "Keychain Access", "Bitwarden", "Messages", "Photos"}
TITLE_OK = {"Claude", "ChatGPT", "Obsidian", "Google Chrome", "Safari", "Finder", "Pages", "Numbers", "TextEdit", "Notes", "Mail", "WhatsApp", "Zoom", "Code"}
EXCLUDE = ("/Private", "Signal", "/.git", "node_modules", "/Library/", "NOW.md")
def osa(s):
try: return subprocess.run(["osascript", "-e", s], capture_output=True, text=True, timeout=8).stdout.strip()
except Exception: return ""
app = osa('tell application "System Events" to get name of first application process whose frontmost is true')
title = ""
if app in DENY: app = "[private app]"
elif app in TITLE_OK:
title = osa('tell application "System Events" to tell (first application process whose frontmost is true) to get name of front window')[:90]
if re.search(r"incognito|private", title, re.I): title = "[private window]"
files = []
for d in ("Documents", "Desktop", "Downloads", "ops"):
r = subprocess.run(["mdfind", "-onlyin", os.path.join(HOME, d), "kMDItemFSContentChangeDate >= $time.now(-900)"], capture_output=True, text=True)
files += [p for p in r.stdout.splitlines() if os.path.isfile(p) and not any(x in p for x in EXCLUDE)]
files = sorted(set(files), key=os.path.getmtime, reverse=True)[:8]
lines = ["# NOW (auto, %s, pulse.py, read this first)" % datetime.datetime.now().strftime("%a %d %b %H:%M"), "Active: %s%s" % (app or "unknown", ' "%s"' % title if title else "")]
lines.append("Files touched (last 15 min):"); lines += [" " + p.replace(HOME + "/", "~/") for p in files] or [" none"]
for f in ("hands.md", "handoff.md"):
p = os.path.join(OPS, f)
if os.path.exists(p):
lines.append("From %s:" % f); lines += [" " + l.rstrip() for l in open(p, encoding="utf-8") if l.strip() and not l.startswith("#")][:5]
open(os.path.join(OPS, "NOW.md"), "w", encoding="utf-8").write("\n".join(lines[:22]) + "\n")
Descargar: pulse.py
#!/bin/bash
# install-pulse.command: runs pulse.py every 5 minutes via launchd. Double-click once.
OPS="$HOME/ops"; PL="$HOME/Library/LaunchAgents/com.me.pulse.plist"; mkdir -p "$HOME/Library/LaunchAgents"
cat > "$PL" <<PLIST
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"><dict><key>Label</key><string>com.me.pulse</string>
<key>ProgramArguments</key><array><string>/usr/bin/python3</string><string>$OPS/pulse.py</string></array>
<key>StartInterval</key><integer>300</integer><key>RunAtLoad</key><true/></dict></plist>
PLIST
launchctl bootout "gui/$(id -u)/com.me.pulse" 2>/dev/null; launchctl bootstrap "gui/$(id -u)" "$PL" && echo "installed"
python3 "$OPS/pulse.py" && cat "$OPS/NOW.md"
Descargar: install-pulse.command
Gems de Gemini, si los tienes en una cuenta personal de Google: expórtalos antes del 17 de noviembre de 2026 (Google Takeout, desmarcar todo, marcar solo "Gemini"); las instrucciones salen como texto que puedes pegar en un Proyecto o en una entrada de Saved info.