Sitio corporativo · Productora audiovisual
La JunglaSitio de productora con servicios, parrilla de programas y un blog que trabaja para las ventas
Sitio de una productora digital en Guayaquil: 7 páginas de servicio, 8 fichas de programa y un blog de 48 artículos, migrado de Next.js a Astro.
Tecnologías
- Astro 5
- React 19
- TypeScript
- Tailwind CSS v4
- Motion
- GSAP
- Astro Content Collections
- @astrojs/sitemap
- Docker + nginx
- Railway
- Google Analytics 4
- Microsoft Clarity

48
artículos de blog
8
fichas de programa
7
páginas de servicio
67
URLs en el sitemap
Mi rol
Desarrollo del sitio en Azirgo SAS: la primera versión en Next.js, la migración a Astro, el blog, las fichas de programa y el SEO técnico.
El problema
La Jungla hace dos cosas a la vez: vende producción - podcast, streaming, live shopping, cursos online, contenido para redes, alquiler de estudio - y produce su propia parrilla de programas. Son dos públicos distintos: la empresa que busca «productora en Guayaquil» o «cuánto cuesta producir un podcast», y la audiencia que quiere saber qué programa sale hoy. La primera versión era una home animada con una página de programas, sin páginas por servicio ni contenido que respondiera a esas búsquedas.
Qué construí
- Home editorial con fotografía real del estudio: servicios, galería detrás de cámaras, programas, bloque de confianza, FAQ y contacto.
- Siete landings de servicio - producción de podcast, alquiler de estudio, contenido para redes, contenido para marca personal, live shopping, streaming en vivo y cursos online -, cada una con pestañas hacia el resto de servicios.
- Menú de servicios desplegable con miniatura y descripción de cada uno.
- Página de programas y ocho fichas propias, con horario, portada, enlace al canal de YouTube, sitio del programa cuando existe y FAQ.
- Banda de parrilla en la home: los logos de los programas ordenados de lunes a domingo con su día y hora de estreno, en un carrusel que se detiene al pasar el cursor y queda quieto si el visitante prefiere menos movimiento.
- Blog de 48 artículos en siete categorías, con paginación, FAQ en cada artículo y artículos relacionados.
- Contacto con WhatsApp, correo y mapa, más un botón flotante de WhatsApp en todas las páginas que incluye en el mensaje la URL desde la que escribe el visitante.
- Datos estructurados: Organization y ProfessionalService con catálogo de servicios, LocalBusiness con horario, CreativeWorkSeries para cada programa, Service, Article, FAQPage, BreadcrumbList y ContactPage.
Cómo está estructurado
Astro 5 con salida estática y React solo donde hay animación, montado como islas. Programas y servicios son módulos de datos tipados que alimentan una ruta dinámica cada uno, y el blog es una colección de contenido en Markdown con su esquema validado. El build se sirve con nginx dentro de Docker en Railway.
- Home (/): hero, manifiesto, servicios, galería detrás de cámaras, banda de parrilla, programas, confianza, FAQ y contacto.
- Servicios: /servicios/produccion/[servicio], siete landings generadas desde un módulo de datos por servicio.
- Programas: /programas y /programas/[slug], ocho fichas leídas de un único registro de programas.
- Blog: /blog, /blog/[slug] y /blog/page/[n], con la paginación de 20 en 20 marcada noindex y fuera del sitemap.
- Contacto: /contacto con WhatsApp, correo, ubicación y un mapa que se inyecta solo cuando hace falta; más una 404 propia.
- Modelo de contenido: cada artículo es un archivo .md con título, título SEO opcional, descripción, fechas, categoría, portada, palabras clave, FAQ y CTA, validados con Zod.
- Datos compartidos: el registro de programas alimenta la banda de parrilla, la grilla de la home, cada ficha, su FAQ y su JSON-LD.
- Medición e integraciones: GA4 y Microsoft Clarity con carga diferida, WhatsApp flotante en todas las páginas y cabeceras de seguridad y caché definidas en nginx.
Un blog que trabaja para los servicios
Los 48 artículos no son un anexo: cada categoría del blog respalda una landing de servicio, y el enlazado va en las dos direcciones.
- Siete categorías - Podcast, Live Shopping, Marca Personal, Streaming, Cursos, Contenido Redes y Productora - alineadas con los servicios.
- Cada landing de servicio lista los artículos de su tema, del más reciente al más antiguo; antes el pilar no enlazaba hacia abajo y los artículos colgaban solo de la paginación.
- Cada artículo cierra con tres relacionados, primero los de su misma categoría.
- Los 48 llevan FAQ, que se muestra en la página y sale como FAQPage desde el mismo frontmatter.
- Un título SEO opcional por artículo permite mantener un H1 largo con gancho sin que Google lo corte en los resultados.
- lastmod real en el sitemap: la fecha de publicación o de revisión de cada artículo y la fecha del archivo fuente de cada página estática, en lugar de una fecha de build compartida.
- og:image siempre en 1200×630: un script deriva de cada portada su versión para compartir, porque las originales llegaban recortadas a WhatsApp, LinkedIn y X.
Por dentro del sitio

Página de programas con la parrilla de La Jungla. 
Landing del servicio de producción de podcast.
Decisiones técnicas
- Astro con salida estática y React solo en islas: el sitio es sobre todo contenido, así que el HTML sale listo del build, y los componentes animados que ya existían se montaron como islas en lugar de reescribirse.
- Programas y servicios como registros de datos tipados, con una ruta dinámica cada uno: sumar un programa es sumar una entrada, y esa entrada alimenta la banda de parrilla, la grilla, la ficha, su FAQ y su JSON-LD.
- El FAQ visible y el FAQPage salen siempre del mismo dato - en la home, en cada programa y en cada artículo -, porque un marcado que no coincide con lo que se ve es spam estructurado para Google.
- WhatsApp como canal principal: el botón flotante lleva la URL canónica de la página dentro del mensaje, así el equipo sabe de dónde viene cada contacto y WhatsApp muestra la vista previa de esa página.
- GA4 y Clarity se cargan en la primera interacción del visitante o 8 segundos después de la carga, con los eventos encolados mientras tanto: la medición no compite con el primer render.
- Política explícita para bots de IA en robots.txt - buscadores de respuesta y de entrenamiento, bot por bot - más un llms.txt con servicios, programas y artículos: el negocio vive de ser encontrado.
Retos
- Migrar de Next.js a Astro sin rehacer la interfaz: un reemplazo propio de next/image permitió montar los componentes existentes como islas sin tocarlos.
- Rendimiento: el CSS en línea llegaba a ~83 KB por página, Google Fonts bloqueaba el render ~750 ms en móvil y las islas encadenaban sus descargas. Se pasó a CSS externo cacheable, fuentes propias y precarga en paralelo de los módulos de cada isla.
- Programas que cambian de nombre y de URL: 301 en nginx, redirección de respaldo en Astro y las rutas viejas fuera del sitemap, para que los rastreadores no encuentren una redirección donde esperan una página.
- Cerrar los hallazgos de las auditorías SEO: canonical de la home sin barra final, previsualizaciones recortadas en 55 páginas y landings de servicio que no enlazaban a los artículos de su propio tema.
Resultado
El sitio está en producción con sus siete landings de servicio, las ocho fichas de programa y los 48 artículos del blog publicados y rastreables, 67 URLs en el sitemap con fechas reales de modificación, y cada contacto por WhatsApp llega con la página desde la que se escribió.