Podcast · Entretenimiento
QUÉ FOMO!Sitio de un podcast de tres hosts, con episodios, fichas propias y un juego para el público en vivo
Sitio en Astro para QUÉ FOMO!, podcast de entretenimiento con tres hosts: ficha por host, episodios con minuto a minuto y contacto que termina en WhatsApp.
Tecnologías
- Astro 7
- TypeScript
- GSAP + ScrollTrigger
- WebGL (GLSL)
- @astrojs/sitemap
- qrcode-generator
- sharp
- Node.js + sirv
- Docker
- Railway
- Google Analytics 4
- Microsoft Clarity
- JSON-LD

9
URLs en el sitemap
3
fichas de host
2
episodios publicados
25
capítulos con marca de tiempo
Mi rol
Diseño y desarrollo del sitio en Azirgo SAS para la productora La Jungla: sistema visual a partir del manual de marca, estructura de contenido, SEO técnico, medición y despliegue.
El problema
QUÉ FOMO! es un podcast de conversación sin filtros entre tres amigas, y su contenido vive en YouTube e Instagram. Pero un buscador no puede leer un video, un perfil de Instagram no explica quién es cada host, y los invitados, las marcas y la prensa no tenían una puerta clara por donde escribir. Hacía falta una casa propia para el programa que se sintiera tan ruidosa como el show y que, a la vez, hiciera que cada episodio valiera por sí mismo en buscadores.
Qué construí
- Home con el concepto del programa, las tres hosts, la estructura en tres bloques (Qué pasó!, Tema de la semana y La dinámica), lo que pasa fuera del set, preguntas frecuentes y una llamada final a seguir el programa.
- Sección de hosts con una ficha propia para Emilia, Gaby y Lili: su papel en la mesa - la que provoca, la que reacciona y la que explota -, su historia, sus rasgos, sus redes y los temas que domina.
- Archivo de episodios con el más reciente destacado arriba y, por capítulo, una página con resumen largo, temas, invitados, marcas que acompañaron la grabación y el minuto a minuto por bloques.
- Reproductor que no carga YouTube hasta que se le da play, y capítulos que saltan al segundo exacto del video sin salir de la página.
- Contacto sin backend: el formulario arma el mensaje con nombre, email, motivo (invitado, auspicio, colaboración o prensa) y la URL de origen, y abre WhatsApp con todo escrito. Un botón flotante de WhatsApp acompaña todas las páginas.
- La ruleta: un juego para el público durante la grabación, con un código de 4 dígitos dentro de un QR que se proyecta en pantalla y una rueda que cada persona gira desde su teléfono, sin servidor ni base de datos.
- Imágenes sociales de 1200x630 para las secciones, cada host y cada episodio, y todos los favicons, generados por script a partir del logotipo y las fotos.
Cómo está estructurado
Es un sitio estático en Astro 7. Todo el contenido sale de dos módulos de datos en TypeScript - uno con los textos, las hosts, los bloques y la FAQ, y otro con los episodios - y se sirve desde un contenedor Docker con un servidor Node mínimo en Railway, detrás de Cloudflare.
- Rutas: la home, /episodios y la página de cada capítulo, /hosts y la ficha de cada host, y /contacto; /ruleta y /ruleta-pantalla quedan fuera del sitemap. La sección pasó de /host a /hosts con redirecciones, para no dejar enlaces muertos.
- Del video al sitio: cada episodio guarda el ID de YouTube, la fecha y la duración reales, el resumen largo, los capítulos con su segundo de inicio, los temas, los invitados, las marcas y las hosts que salen. La miniatura se baja de YouTube y se convierte a webp.
- Un grafo JSON-LD compartido - Organization con La Jungla como organización madre, WebSite, WebPage y BreadcrumbList - al que cada página suma lo suyo: PodcastSeries y FAQPage en la home, Person y ProfilePage en las hosts, PodcastEpisode y VideoObject con sus capítulos como Clip en los episodios, y ContactPage en contacto.
- Canonical, Open Graph, Twitter Card, hreflang y robots con max-image-preview:large salen de un solo layout. El robots.txt y el sitemap toman el dominio de una variable de entorno en build, sin URLs escritas a mano, y el robots.txt da la bienvenida explícita a GPTBot, PerplexityBot y ClaudeBot.
- El número de WhatsApp vive en un solo lugar y alimenta el formulario, el botón flotante, el pie y el ContactPoint del schema. Cada mensaje sale con la URL de la página, para saber desde dónde escribió la persona.
- Identidad visual: colores muestreados del logotipo oficial (rosa, lima, tinta y crema, con azul y amarillo de acento), Anton, Fredoka y DM Sans, fondos GLSL animados en el hero y la promesa, y titulares con micro-animaciones GSAP al pasar el mouse.
- Caché pensada para que lo nuevo se vea al momento: los archivos con hash se guardan un año y el resto revalida contra su ETag. Sin cabecera, el edge aplicaba cuatro horas y las fotos nuevas de las hosts no aparecían.
La ruleta: un juego en vivo sin servidor
Para las grabaciones con público se construyó un juego que corre entero en el navegador y no guarda nada de nadie en ningún servidor.
- La pantalla inventa un código de 4 dígitos al cargar y lo mete dentro del QR; el teléfono lo lee de su propia URL, por eso no hace falta backend.
- Cada persona gira su ruleta una sola vez, y el giro se guarda en el propio teléfono para que no pierda el premio si recarga sin querer.
- La rueda es un SVG generado en build, así que se ve aunque el JavaScript no cargue. El QR se dibuja en el navegador, sin logo encima, para que la cámara lo lea a la primera y desde lejos.
- Entre 4 y 12 gajos configurables desde un solo archivo, cada uno con su texto, emoji, color y tipo: premio, reto o consuelo.
- Modo pantalla para proyectar en el TV: un código nuevo con la barra espaciadora, el botón o al recargar.
- Las dos rutas llevan noindex en el HTML y en la cabecera X-Robots-Tag, pero no se bloquean en robots.txt: si un rastreador no puede entrar, nunca llega a leer el noindex.
Por dentro del sitio

Ficha de host con su historia, rasgos y redes. 
Página de capítulo con resumen, datos y el video.
Decisiones técnicas
- Los episodios viven en un arreglo tipado y no en un CMS: publicar uno es añadir un bloque al principio, y /episodios y la página del capítulo se generan solas. El primero del arreglo es el destacado, así que no hay nada más que tocar.
- El reproductor no monta el iframe de YouTube hasta el play, y usa youtube-nocookie. Cargarlo de entrada traía medio megabyte de scripts de terceros y sus cookies a una página que la mayoría abre para leer el resumen; así pesa lo que pesa la miniatura.
- La transcripción no se publica nunca: sirve para escribir el resumen y los capítulos, y ahí se queda. Tampoco se inventan citas ni se afinan marcas de tiempo que la fuente no da, y la fecha y la duración se copian de la propia página del video, nunca se estiman.
- La ruleta no tiene backend a propósito: el código viaja dentro del QR y la validación la hace la host, comparando los 4 dígitos del teléfono con los de la pantalla. Todos los gajos pesan lo mismo porque cualquier peso quedaría escrito en el código público del sitio.
- La analítica - GA4 y Clarity - no se dispara fuera del dominio real: en localhost o en una IP de la red local se corta, para que las pruebas no se cuelen como visitas y ensucien las métricas.
Retos
- Llevar a la web una marca muy ruidosa - rosa y lima, fondos animados, fotos recortadas que sangran fuera del marco - sin castigar el rendimiento: los fondos son shaders GLSL sin librerías, todo el movimiento respeta prefers-reduced-motion y la página se ve completa sin JavaScript.
- Diseñar un juego en vivo que no sirva de nada manipular aunque no haya servidor: la seguridad está en el paso humano, el sorteo usa crypto.getRandomValues sin sesgo y cada código caduca a las dos horas, para que un QR viejo visto en Instagram no dé premios.
- Que el sitio se sintiera completo desde el lanzamiento, con apenas los primeros episodios publicados: el peso lo llevan las hosts, el formato y las preguntas frecuentes, y la sección de episodios crece sola con cada capítulo.
Resultado
El sitio está en producción con la home, las tres fichas de host, el archivo de episodios y el contacto por WhatsApp. Cada capítulo nuevo entra como un bloque de datos y aparece con su página, su imagen social, sus datos estructurados y su entrada en el sitemap. La ruleta quedó lista para las grabaciones en sus rutas directas, fuera del índice, mientras su sección en la home sigue desactivada.