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
Portada del sitio de La Jungla, productora digital de podcast, video y streaming en Guayaquil
  • 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

  • La Jungla: Página de programas con la parrilla de La Jungla
    Página de programas con la parrilla de La Jungla.
  • La Jungla: Landing del servicio de producción de podcast
    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ó.

¿Necesitas algo parecido?

Cuéntame qué estás construyendo y te respondo con alcance, stack y una fecha realista.