Commits
La IA entra en los Ajustes: proveedores, SEO y artículos automáticos
Configuración de proveedores IA, depuración de 500 y 429, SEO por artículo
Hoy ha sido el día de la IA: configuración de proveedores en el panel y dos fases nuevas. La web queda a un paso de una redacción semiautomática completa.
Ajustes de IA: proveedores, usos y tono
Nueva sección en /admin/ajustes/ia con tres pestañas. En Proveedores hay presets precargados (configuraciones ya preparadas para OpenAI, Mistral, Groq, OpenRouter, Gemini, Z.ai, Minimax y Ollama), URL base editable, clave enmascarada al guardarla y un botón «Cargar modelos» que detecta qué sabe hacer cada modelo. En Usos decides qué modelo hace cada cosa: crear contenido, imágenes, escáner de visión, traducción o voz. Y Tono guarda los prompts (las instrucciones que reciben los modelos) de tono, audiencia y estructura de artículos.
Los 500 del camino
La depuración dejó tres arreglos. AIService no guardaba la conexión a la base de datos y los textos alternativos automáticos de las imágenes daban 500 (error interno del servidor). La URL del asset (el fichero, en este caso) solo existía en el esquema y el router, el que reparte las peticiones, la generaba mal. Y la regla más útil: probar por HTTP, no solo llamando al servicio. Los 500 solo aparecían por el camino del router.
Minimax y el dominio equivocado
La clave de Minimax no funcionaba. La cuenta es de la plataforma internacional (minimax.io) y el preset apuntaba a minimaxi.com, la china. Lo diagnosticé probando la clave contra los tres dominios del proveedor sin exponerla: respuesta correcta solo en .io, con 8 modelos. De regalo, los errores de proveedor ahora muestran la respuesta real en lugar de un 502 genérico (un «servicio no disponible» que no explica nada).
Clave tecleada, clave guardada
Arreglar «enviar lo que se teclea» rompió el flujo tras recargar la página. El formulario vacío enviaba una clave vacía y el backend (la parte del servidor) la prefería a la guardada. Lógica corregida: lo tecleado tiene prioridad; lo que falta, se toma de lo guardado.
El tier gratuito y sus 429
Los lotes de visión reventaban el límite de peticiones del tier gratuito (el plan de pago cero): 429: demasiadas peticiones seguidas. Pausa entre llamadas y errores por imagen dentro de la respuesta. Gemini 2.5 Flash se gastaba el presupuesto de tokens (las piezas de texto que procesa el modelo) «pensando»: el thinking viene activado por defecto, y las descripciones salían cortadas. Presupuesto subido a 2.000, escáner movido a flash-lite y pool de límites separado. Y Ollama Cloud respondió 402 sin créditos: la visión queda reasignada a un Gemini gratuito.
SEO por artículo
Columnas nuevas de meta título, descripción e imagen social. En el rail del editor (el editor nuevo llegó con Crepe fuera, BlockNote dentro) hay contadores de caracteres y una puntuación SEO sobre 100, con checklist de 10 comprobaciones. El asistente IA ofrece meta, resumen, slug (la dirección corta del artículo), revisión y reescritura con los prompts de Tono que ya tenía guardados. La página pública incluye JSON-LD de Article (datos estructurados que los buscadores saben leer).
Crear según la competencia
Flujo completo: palabra clave, competidores (con Tavily o URLs pegadas), extracción de cada página, análisis IA y artículo nuevo. Prueba real con «historia del café» y Wikipedia: borrador de 9.462 caracteres, 8 apartados y meta SEO completa en 63 segundos. Mistral saturó la cuota global del tier gratuito: contenido reasignado a MiniMax. Es el camino inverso de De mi texto al borrador.
Imagen destacada con IA
Cada artículo puede generar su imagen destacada: se resume el texto, se compone el prompt con el estilo guardado en Tono y se genera con el modelo de imágenes. La web la publica y la usa como og:image de respaldo (la imagen que aparece al compartir el enlace). Detalle curioso: la escena salía en chino porque Minimax deriva al chino. System prompt (la instrucción fija que acompaña cada llamada) forzando castellano y solucionado.
Pendiente de mi parte: la clave de Tavily para el modo automático de búsqueda.