Saltar al contenido

Caso · Web + SEO

Una web que para Google no existía.

Centro de yoga «Praktika» — мобильная версия

Sacamos al centro de yoga de un Bitrix infectado y reconstruimos la web en Django con renderizado en servidor. Integramos un sistema de reservas propio y llevamos 116 páginas del noindex al buscador y a las respuestas de IA.

Cheboksary · dos salas · 24 disciplinas · 18 instructores · 4000+ clientes en 20 años.

Centro de yoga «Praktika» — десктоп

¿Quieres un proyecto similar?

Completa un breve briefing — volvemos con plan y presupuesto.

En breve: Veinte años de trabajo, dos salas, 24 disciplinas, 18 instructores y más de cuatro mil clientes. Y una web que los buscadores no veían: la vieja instalación de Bitrix estaba infectada y además devolvía en cada respuesta la directiva noindex. Por mucho contenido que hubiera allí, para Google y Yandex el centro simplemente no existía. Reconstruimos el proyecto desde cero sobre Django, integramos un sistema de reservas propio y abrimos a indexación 116 páginas.

Cliente: centro de yoga «Praktika», Cheboksary · Categoría: web + SEO

¿Qué es lo esencial del proyecto?

  • Había 0 páginas indexadas, ahora hay 116. Toda la web estaba bajo noindex, para el buscador no existía.
  • El Bitrix infectado se sustituyó por Django limpio, sin una sola línea de código heredado.
  • Sistema de reservas propio con calendario en el panel y sincronización horaria del horario desde Yandex Calendar.
  • 1132 preguntas de FAQ con marcado en 110 páginas: todo ese texto vivo lo acumuló el centro en veinte años.
  • HTML de 26 KB, respuesta en 0,4 segundos, gzip y HTTPS.
  • Todas las direcciones antiguas conservadas, incluidas las .php: los enlaces de publicaciones viejas siguen funcionando.

¿Con qué está hecho el proyecto?

Backend:
Python, Django 5.2 con renderizado en servidor, Phusion Passenger.
Base de datos:
MySQL 8, migrada desde una 5.7 heredada. En hosting compartido el driver estándar no compila, así que se usa PyMySQL puro.
Infraestructura:
nginx, Apache, Passenger, HTTPS con Let's Encrypt, gzip, redirección forzada a HTTPS.
Reservas:
aplicación Django propia, el panel funciona como interfaz de trabajo del personal.
Integraciones:
importación del horario desde Yandex Calendar por iCal, Yandex Metrica, cron.
SEO y GEO:
JSON-LD @graph, sitemap.xml, robots.txt, llms.txt y llms-full.txt.

El renderizado en servidor no se eligió por moda. El HTML se entrega ya montado, así que tanto los robots de búsqueda como los rastreadores de IA, que apenas ejecutan JavaScript, ven todo el contenido y el marcado de inmediato.

¿Cómo empezó todo?

El centro llegó con una queja que se oye a menudo: «tenemos web y no trae clientes». Detrás suele haber textos flojos o carga lenta. Aquí la causa era otra y bastante peor.

Primero, el motor estaba infectado. La vieja instalación de Bitrix llevaba años sin actualizarse y alojaba código malicioso. Segundo, toda la web devolvía en la cabecera la directiva noindex, nofollow. Es decir, funcionaba con normalidad, mostraba horarios y precios, pero para los buscadores no existía.

Curar algo así no tiene sentido: los mismos agujeros devuelven el mismo problema. El proyecto se reconstruyó entero, el contenido se llevó a un registro único y la web antigua se retiró sin dejar el dominio caído.

¿Qué se ha implementado?

🌐 ¿Qué hay en la web?

  • 116 páginas: portada, catálogo de 24 disciplinas, 18 páginas personales de instructores, servicios, precios, contactos, blog
  • Horario a tres semanas vista con desplazamiento por días y diseño móvil
  • Blog de 50 artículos sobre yoga para consultas de búsqueda e informativas
  • Bloque «Próximas prácticas» en la portada, en vivo, desde la misma fuente que el horario
  • Registro único de contenido: páginas, disciplinas, instructores, textos, palabras clave y metadatos se editan en un solo sitio, los duplicados son imposibles por diseño

🗓 ¿Cómo funciona el sistema de reservas?

  • El calendario de clases como pantalla principal del panel, una clase se crea con un clic
  • Salas con aforo, instructores, fichas de disciplinas, control de plazas sin condiciones de carrera
  • Importación del horario desde Yandex Calendar para ambas sedes, automática cada hora
  • Separación entre «el calendario no cargó» y «no hay clases»: la persona ve un estado correcto y no un error alarmante

🔍 ¿Qué se hizo en SEO técnico y marcado?

  • Title propio de 30 a 60 caracteres y description de 120 a 160 en las 116 páginas, cero duplicados
  • Canonical, indexación correcta, Open Graph y Twitter Card en cada página
  • JSON-LD @graph: Organization, dos sedes como LocalBusiness con direcciones y horarios, WebSite, WebPage, Service para las disciplinas, Person para los instructores, FAQPage, BreadcrumbList, Article
  • Migas de pan semánticas en 115 páginas, ligadas al esquema
  • Bloques FAQ: 1132 preguntas en 110 páginas, con marcado construido del mismo texto que ve la persona
  • Mapa del sitio, robots.txt, llms.txt y llms-full.txt como mapa de contenido para los buscadores con IA

🖼 ¿Cómo se resolvieron las redes sociales y la accesibilidad?

  • 116 tarjetas de 1200×630 para compartir: foto más franja corporativa con logotipo, generadas por script
  • Etiquetas en los campos de formulario, nombres accesibles para enlaces-icono y botones, marcado correcto de las imágenes decorativas

🚚 ¿Cómo fueron la migración y el lanzamiento?

  • El Bitrix infectado y sus bases se eliminaron, la web antigua se retiró sin caída del dominio
  • Todas las direcciones anteriores se conservan, incluidas las .php
  • Recorrimos el sitio en siete etapas: indexación, metadatos, marcado, migas, esquema de páginas, accesibilidad, contenido
  • Revisamos la web en vivo por las 116 páginas hasta dos pasadas limpias seguidas
  • Retiramos el noindex, abrimos el sitio a los buscadores y preparamos el mapa para Webmaster y Search Console

¿Cuál es el resultado?

IndicadorAntesDespués
Páginas abiertas a indexación0, toda la web bajo noindex116
MotorBitrix infectadoDjango 5.2, código limpio
Title y description propiosno116 de 116, 0 duplicados
Marcado Schema.orginexistente8+ tipos de entidades, @graph conectado
FAQ con marcadono1132 preguntas en 110 páginas
Tarjetas para redeslogotipo genérico116 tarjetas de 1200×630
Sistema de reservasnocalendario en panel y sincronización horaria
Auditoría técnica—0 hallazgos críticos en 116 páginas

¿No sabes por dónde empezar?

Analizamos tu caso en una consulta gratuita y proponemos una solución.

Más sobre este caso

La historia completa de este proyecto — cómo una sola línea de código escondió un negocio de 20 años de Google durante cuatro años, y qué hicimos.

Análisis en LinkedIn

Análisis técnico relacionado: cómo dejar entrar a los crawlers de IA correctos y bloquear a los scrapers — firma Web Bot Auth, verificación por IP y por qué necesitas ambas.

Leer el artículo

¿Cuánto cuesta según la tarifa?

17 posicionesPlazo: ~1 mes
Por separado (à la carte)€2300
Ahorro del pack−€1200
Pack llave en mano€1100

Precios según nuestra tarifa. Cada módulo por separado cuesta más: integraciones, gestión, overhead. Como proyecto único en un solo backend sale más barato. El presupuesto exacto, tras el briefing.

Cuantas más funciones, más conviene el pack

Por separadoPrecio del pack
Минимум · €390Стандарт · €1490€2300−€1200Este proyecto€1100Volumen de funciones →17Coste, €

Por unidades el coste crece de forma lineal. En pack llega a una meseta: arquitectura común, un solo backend, reutilización de código. Por eso, a más funciones, mayor es la diferencia y tu ahorro. Este proyecto (41 funciones) ya está en la meseta.

«Lo que veo con más frecuencia es una idea repartida por toda la página. La respuesta está, pero se arma con cuatro párrafos dispersos de arriba abajo. Una persona seguirá leyendo y la reunirá. Un modelo coge el primer tercio y se va.»

Evgenii Slepinin, founder of SEO7, systems architect

Preguntas frecuentes

¿Por qué cambiar Bitrix por Django?

El Bitrix antiguo estaba infectado con código malicioso y totalmente cerrado a la indexación. Django aportó una plataforma limpia y gestionable con renderizado en servidor y un sistema de reservas propio.

¿La web estuvo mucho tiempo inaccesible durante la migración?

No. La nueva web se levantó en paralelo, el dominio se cambió sin caída y todas las URL antiguas se conservaron.

¿Qué fallaba en la web antigua?

Corría sobre una versión obsoleta e infectada de Bitrix y emitía en el `<head>` la directiva `noindex, nofollow`: para los buscadores la web simplemente no existía.

¿Dejarán de funcionar los enlaces antiguos (incluidos los .php)?

No. Todas las URL anteriores, incluidas las `.php`, se conservaron con redirecciones — los enlaces antiguos no se pierden.

¿Qué es el renderizado en servidor y por qué importa para el SEO y la búsqueda con IA?

El HTML se entrega ya montado, no se ensambla con scripts. Los robots de búsqueda y los rastreadores de IA, que apenas ejecutan JavaScript, ven todo el contenido y el marcado de inmediato.

¿Cómo funciona el sistema de reservas?

Es una aplicación Django propia: calendario de clases en el panel, salas con aforo, instructores y control del límite de plazas sin condiciones de carrera. Una clase se crea con un clic.

¿De dónde sale el horario de la web?

Se importa desde un calendario externo para ambas sedes, automáticamente cada hora. Si el calendario no carga, el usuario ve un estado correcto, no un error.

¿Qué son las 1132 preguntas de FAQ y para qué sirven?

Bloques de FAQ en 110 páginas con marcado FAQPage. Se construye a partir del mismo texto que ve el usuario y aumenta la probabilidad de aparecer en bloques de respuesta y en la búsqueda con IA.

¿Por qué son 116 páginas?

Todas las páginas se construyen desde un registro único de contenido: home, 24 disciplinas, 18 instructores, servicios, precios, contactos y un blog de 50 artículos. Los duplicados son imposibles por diseño.

¿Está la web preparada para la búsqueda con IA (ChatGPT, Perplexity)?

Sí. El renderizado en servidor, el marcado Schema.org y el mapa llms.txt / llms-full.txt dan a los rastreadores de IA una estructura de contenido clara. Es una base técnica, no una garantía de aparecer en las respuestas.

¿Quién gestiona ahora el contenido?

El propio centro, a través del panel de administración de Django. Páginas, disciplinas, instructores, textos y metadatos se editan de forma centralizada en un único registro.

¿Qué pasa con la seguridad tras la infección?

El Bitrix infectado y sus bases de datos se eliminaron sin una sola línea de código heredado. La nueva web funciona por HTTPS con redirección HTTP→HTTPS.

¿Qué aporta el marcado Schema.org?

Un JSON-LD @graph coherente con 8+ tipos (Organization, dos sedes como LocalBusiness, Service, Person, FAQPage, BreadcrumbList, Article) ayuda a los buscadores y a la IA a entender qué negocio y qué páginas tienen delante.

¿Qué viene después del lanzamiento?

Retiramos el `noindex`, abrimos la web a los buscadores y preparamos el sitemap para enviarlo a Search Console. Después llega la acumulación de indexación y datos.

Proyectos relacionados.

¿Listo para tu proyecto?

Déjanos tu solicitud — calculamos plazos y precio para tu negocio.