Saltar al contenido
weekly21 de junio de 2026·6 min

La semana que rebautizamos un juego, montamos un bot de Discord y dejamos a Hezu indexable

Semana de movimientos visibles: Family Quest pasa a llamarse Juntale, Ganga24 estrena bot de Discord y comunidad de Cazagangas, Hezu activa SSR para sus respuestas compartidas, Chordna se hace PWA y se quita Gemini de encima. Por debajo, un montón de fontanería de la que nadie habla pero sin la cual nada funciona.

Hay semanas de arquitectura y semanas de tráfico. Esta ha sido las dos a la vez, lo cual normalmente acaba mal pero esta vez ha salido bastante bien.

Entre el 15 y el 21 de junio cayeron 109 commits repartidos entre seis repos. Family Quest dejó de llamarse así, Ganga24 abrió Discord, Hezu por fin sirve sus páginas compartidas en SSR de verdad, Chordna se volvió instalable y dejó de quemar cuota de Gemini, y SOFI arregló media docena de cosas que llevaban semanas dando guerra en silencio. Vamos por partes.

Juntale: el rebrand que estaba pidiendo a gritos

Family Quest pasa a llamarse Juntale. El nombre no es casualidad — el juego va de hacer cosas juntos en familia y "Family Quest" sonaba a app educativa de 2014. El cambio toca código, configs, docs, y sobre todo DNS: ahora juntale.com (apex y www) entra por el tunnel de Cloudflare con CORS configurado, y juntale.sixsevenapps.com queda como ingress nuevo del subdominio. El alias juntale ya está en los CLAUDE.md globales por si alguien (yo) lo escribe sin pensar.

Detalle aburrido pero importante: cuando rebautizas un proyecto a medias, lo siguiente que rompes es siempre la misma cosa — los dashboards. Por eso a media semana cayó el commit en Observio para añadir el dashboard de tráfico por zona de Cloudflare con Juntale incluida desde el día uno. Mejor invertir veinte minutos ahora que descubrir el viernes que llevas tres días sin métricas.

Ganga24: comunidad, no solo bot

Dos FEATs grandes que llevaban semanas en draft entraron en producción casi a la vez. FEAT-041 abre el canal de UGC vía el bot trainer: la gente manda "su chollo" por Telegram y el bot lo procesa como una oferta más. Es la primera vez que Ganga24 tiene contenido que no viene de un scraper, y eso cambia la dinámica del producto — pasa de ser un agregador a ser un sitio donde la gente participa.

FEAT-042 es el bot de Discord en contenedor aislado que republica ofertas por categoría a una comunidad pública. El rol de miembro se llama Cazagangas (sí, lo cambiamos a medio camino porque "member" sonaba a foro de phpBB). La tabla discord_replicated controla qué ofertas ya pasaron por allí para no spamear duplicados.

El detalle técnico que merece la pena: el extractor de product_name ignoraba títulos de hook del canal, así que muchas ofertas entraban con nombres como "🔥 OFERTÓN DEL DÍA". Ahora hay un filtro que descarta esos patrones antes de que lleguen al pipeline de IA, y de paso se evita que Gemini truncara JSON cuando le pasábamos prompts demasiado largos. Lo de Gemini truncando silenciosamente es uno de esos bugs que solo descubres mirando logs con paciencia.

En la parte sucia: añadimos un re-check diferido anti-rotación de ASIN (FEAT-043), que mira si Amazon ha cambiado el producto detrás de un ID al cabo de unas horas. Pasa más de lo que uno querría.

Hezu: por fin SSR en /i/

Las respuestas compartidas (hezu.es/i/...) llevaban meses renderizando en cliente. Funcionaba, sí, pero Google no las indexaba bien y los previews en redes salían vacíos. Esta semana activamos SSR en producción para esas URLs (FEAT-039 H-6), lo cual significa que ahora una respuesta compartida es una página real con su HTML servido, su Open Graph y su título correcto desde el primer byte.

Mientras tanto se hizo limpieza analítica considerable: quitamos el contenedor de GTM y consolidamos todo en un único path de gtag directo. Menos código, menos puntos de fallo, menos cosas raras cuando alguien con un adblocker entra a la web. Y arreglamos el escape de tráfico a la propiedad GA4 de PRE que llevaba semanas contaminando los datos de producción — el típico bug que descubres mirando datos a las dos semanas y piensas "¿desde cuándo está esto así?".

Lo del scaffold de consent para pixels de marketing (Meta + Google Ads) entró y salió en la misma semana. Revertido el mismo día. La feature estaba bien pero faltaba decisión de producto sobre cuándo encender Meta Pixel, así que mejor no merge silencioso. Volverá cuando tenga sentido.

Chordna: PWA, SEO y adiós Gemini

Dos hitos: PWA instalable con modo offline (FEAT-036) y eliminación completa del consumo de Gemini API moviéndolo todo a Claude Max (FEAT-035). Lo segundo es decisión de coste pura — Gemini se estaba comiendo presupuesto sin aportar nada que Claude no hiciera igual o mejor para este caso.

Luego dos rondas de SEO/GEO en cadena: FEAT-037 pre-renderiza el contenido de las pestañas profundas para crawlers y LLMs (las pestañas que se cargan con JS no las ve nadie que no sea un navegador real), y FEAT-038 fue un paquete de quick wins. Detalle de la última: el robots.txt estático tenía un Crawl-delay heredado que estaba estrangulando a los crawlers buenos. Fuera. Y añadimos Allow explícito para los feeds GEO.

En la trastienda, findStudioAlbumWithTrack ahora usa la API BROWSE de MusicBrainz en vez de SOLR — más fiable, menos rate-limits. El reemplazo de while(true) por una flag keepPaging fue puro lint, pero queda mejor leído.

SOFI: la semana de los adjuntos

SOFI tuvo una semana de fontanería pesada alrededor de los adjuntos de email. Ahora descarga adjuntos de Gmail y los sube a la carpeta de Drive familiar, que estaban yéndose a /tmp (es decir, a la nada cada vez que el contenedor reiniciaba). El default del root ahora apunta al Drive compartido Sara-Jesús con su curso correspondiente del Classroom, los adjuntos de email van a <root>/email/ directo sin hijo intermedio, y la cola persiste en disco con SOFI_QUEUE_DIR.

Un fix más sutil: el cron download_queued reutiliza el ClassroomScraper.login() para tener cookies cross-domain válidas. Sin eso, intentar descargar un adjunto de Classroom desde un cron daba 302 a login.

Y un fix de comportamiento que merece mención: el resumen vespertino ahora trata "hoy" como pasado, así que no te recuerda cosas que ya vencieron a las nueve de la mañana cuando son las ocho de la tarde. Pequeño, pero es de esos detalles que separan una app de un "asistente" de verdad.

Lo que se quedó en el horno

En ai-platform fueron 25 commits casi todos sobre conerator (el motor de contenido): pool multi-proveedor Pexels+Gemini por pilar, auto-publish de pilares editoriales a Postiz, banco de música de fondo generada con Lyria, y media docena de fixes para que el copy generator dejara de meter "Publicidad" en piezas editoriales donde no toca. Pathtrip estrenó su UI web (FEAT-004 API + FEAT-005 SPA) — ya no es solo CLI.

Nada de hype esta semana. Solo cosas que ahora funcionan que antes no, y un par de nombres nuevos que pegan mejor.