Documento técnico · Sitio web corporativo
Arquitectura y operación de yoysimulators.com
Cómo está construido el sitio, cómo publica marketing sus cambios con asistencia de IA sin escribir código, y qué garantías de SEO, AEO y seguridad da ese flujo.
1Resumen
yoysimulators.com es un sitio estático: cada página se genera como un archivo HTML completo antes de publicarse y se sirve desde un hosting estático. No hay servidor de aplicación, base de datos ni panel de administración expuesto a internet. El sitio tiene 34 páginas en 3 idiomas (inglés, español y francés), 102 URLs en total, incluido el blog.
El contenido de cada página vive en un archivo de datos por idioma. Los elementos de SEO (title, meta description, canonical, hreflang, datos estructurados, sitemap y redirecciones) se generan desde esos datos con plantillas, así que nadie los escribe a mano en cada página.
2Arquitectura
El sitio tiene cuatro piezas. Ninguna ejecuta código en el servidor cuando un visitante abre una página.
| Pieza | Tecnología | Función |
|---|---|---|
| Repositorio | GitHub, yoyTeam/yoysimulators-web | Fuente única del sitio: contenido, plantillas, estilos e historial completo de cambios. |
| Generador | Eleventy 3 | Convierte los datos de cada página en HTML final, aplicando las plantillas de SEO y diseño. |
| Validación continua | GitHub Actions | Construye el sitio y corre las validaciones en cada propuesta de cambio. Si alguna falla, el cambio no se puede publicar. |
| Hosting | Hosting estático (ver opciones abajo) | Sirve los archivos con HTTPS y cabeceras de seguridad, y genera una URL de vista previa para cada propuesta. |
Opciones de hosting
El resultado de la generación es un conjunto de archivos HTML estándar, así que el sitio no depende de un proveedor. Hay dos opciones evaluadas, y el sitio, el flujo de publicación y las validaciones son los mismos en ambas:
| Opción | Ventajas | A considerar |
|---|---|---|
| Instancia propia en Oracle Cloud (OCI) | Infraestructura donde yoy ya opera sus sistemas, control total del servidor y de los registros de acceso. | El servidor web y su actualización quedan a cargo del área web. |
| Plataforma de hosting estático con CDN (por ejemplo, Cloudflare Pages) | Distribución global, vistas previas por propuesta y reversión integradas, sin servidor que mantener. | La configuración vive en la cuenta del proveedor. |
Cambiar de una opción a otra no requiere tocar el contenido ni las plantillas: se publican los mismos archivos en otro destino.
Así está organizado el contenido dentro del repositorio:
src/content/es/mining.json título, meta description, secciones y bloques de la página "Minería" en español src/content/en/mining.json la misma página en inglés src/content/fr/mining.json la misma página en francés src/_data/routes.json URL de cada página por idioma y redirecciones 301 src/_data/robots.json política de rastreo, incluidos los bots de IA src/_includes/ plantillas: cabecera, pie, secciones, bloques, SEO CONTENIDO.md reglas que sigue la IA al editar (sección 4)
Marketing y la IA trabajan solo en src/content/ y, para URLs nuevas, en routes.json. Las plantillas las mantiene el área web, y un cambio en ellas se aplica de una vez a todas las páginas.
3Cómo se publica un cambio
Un ejemplo real de pedido de marketing:
"En la página de Minería en español, agrega este párrafo después del bloque de CAEX Master, con esta imagen. Usa como keyword principal 'simulador de extintores', ajusta el title y la meta description, y replica el cambio en inglés y francés."
- La IA prepara el cambio marketing + IA
Edita los archivos de contenido de los tres idiomas siguiendo
CONTENIDO.md, sube la imagen con su texto alternativo y abre una propuesta de cambio (pull request) con un resumen en lenguaje simple. - Validación automática GitHub Actions
Se construye el sitio completo y corren las validaciones de la sección 7. Si algo falla, la propuesta queda bloqueada y el error indica qué página y qué elemento arreglar.
- Vista previa hosting
Se genera una URL privada con el sitio tal como quedaría. Marketing revisa el resultado en escritorio y en móvil.
- Aprobación marketing o área web
Una persona autorizada aprueba la propuesta. Los cambios de contenido los aprueba marketing; los que tocan plantillas o redirecciones, el área web.
- Publicación automática
Al aprobar, el cambio pasa a la rama principal y el sitio se publica en menos de dos minutos. El sitemap se actualiza en la misma publicación.
- Reversión si hace falta cualquier aprobador
Si algo no quedó bien, se revierte ese cambio puntual desde GitHub o se vuelve a publicar la versión anterior. Ninguna de las dos opciones requiere al área web.
Para quien prefiera editar viendo la página, existe además un editor visual propio (yoysimulators-cms) que publica por el mismo flujo: construye, valida, registra el cambio y permite volver a una versión anterior desde el editor.
Blog
Un post nuevo es un archivo de contenido más. La IA arma el post con su título, extracto, fecha, autor, imagen destacada, etiquetas y versiones por idioma. El sitio agrega solo la tarjeta en el listado del blog, la URL, el sitemap y los datos estructurados de artículo.
4Reglas para la IA
El archivo CONTENIDO.md, en la raíz del repositorio, es el contexto que recibe cualquier asistente de IA (Claude, Gemini o ChatGPT) antes de editar. Está versionado: si la agencia SEO recomienda un cambio de criterio, se actualiza ahí y rige desde el siguiente pedido. Resumen de lo que exige:
- Alcance: editar solo archivos de contenido. No tocar plantillas, estilos, scripts ni cabeceras.
- Estructura: un solo H1 por página, con la keyword principal. Jerarquía H2 y H3 sin saltos.
- Metadatos: title de hasta 60 caracteres, meta description de 140 a 160 y slug estable. Cambiar una URL existente exige una redirección 301 en
routes.json. - Imágenes: texto alternativo descriptivo en el idioma de la página, formato WebP o JPG, peso máximo definido y ancho y alto declarados.
- Idiomas: todo cambio se replica en los tres idiomas o se marca explícitamente como pendiente de traducción.
- Estilos: usar solo los bloques y variantes del sistema de diseño de yoy. No escribir CSS ni HTML libre.
- Enlaces: enlaces internos con la URL del mismo idioma. Los externos se abren en otra pestaña.
- Keywords: la lista vigente por página, entregada por la agencia SEO, vive en el mismo archivo.
Estas reglas no dependen de que la IA las cumpla. Las que se pueden medir también son validaciones automáticas (sección 7), así que un cambio que las rompa no llega a publicarse.
5SEO técnico
Cada página se entrega como HTML completo, con el contenido visible en el código fuente, sin depender de JavaScript. Es el formato que los buscadores leen con menos esfuerzo. Todo lo siguiente se genera en cada publicación:
| Elemento | Cómo se genera |
|---|---|
<title> y meta description | Desde los datos de la página, por idioma. |
| Canonical | Automático, apuntando a la URL propia de cada idioma. |
| hreflang (es, en, fr, x-default) | Automático desde routes.json. Las tres versiones siempre se enlazan entre sí. |
Atributo lang | Por idioma, en cada página. |
| Datos estructurados JSON-LD | Organization y WebSite en todo el sitio, Product en las fichas de simuladores, Article en el blog y BreadcrumbList en todas las páginas. |
| Open Graph y Twitter Cards | Título, descripción e imagen para compartir en redes, tomados de los datos de la página. |
| sitemap.xml | Regenerado en cada publicación, con alternates por idioma. |
| robots.txt | Desde robots.json, con la política de bots de IA que defina el equipo SEO. |
| Redirecciones 301 | Desde routes.json. Se conservan las 129 URLs heredadas de Squarespace y Weglot, incluidas etiquetas del blog y rutas antiguas. |
| Página 404 | Responde con código 404 real y en el idioma de la URL, para no generar contenido duplicado. |
| Detección de idioma | Si alguien llega a una página en inglés con el navegador en español o francés, se le lleva a esa versión. Si elige otro idioma en el selector, se respeta su elección. Los rastreadores siempre reciben la URL solicitada. |
Las imágenes son etiquetas <img> normales con texto alternativo, dimensiones y carga diferida. Google las indexa igual que en cualquier CMS, porque lo que evalúa es el HTML resultante, no la herramienta que lo produjo.
6AEO: optimización para motores de respuesta
Los asistentes de IA (ChatGPT, Gemini, Perplexity, Google AI Overviews) leen el sitio igual que un buscador, con una diferencia: muchos de sus rastreadores no ejecutan JavaScript. Un sitio estático les entrega todo el contenido en la primera respuesta.
- Contenido legible sin JavaScript: textos, encabezados, listas y tablas vienen en el HTML.
- Datos estructurados: el JSON-LD de la sección 5 describe qué es cada simulador, para qué industria sirve y quién lo fabrica.
- Preguntas frecuentes: hay un bloque de FAQ con su marcado FAQPage para las páginas donde marketing quiera responder preguntas directas.
- Política de rastreo: el acceso de cada bot de IA se controla en
robots.json, según lo que decida el equipo SEO. - Velocidad: las páginas se entregan ya generadas, sin tiempo de procesamiento en el servidor.
7Controles de calidad
Estas validaciones corren en cada propuesta de cambio y deben pasar todas para que el cambio se publique. No dependen de revisión humana.
| Validación | Qué comprueba |
|---|---|
| Estructura SEO | En las 102 URLs: un solo H1, title y description presentes, canonical correcto, 4 hreflang que apuntan a la misma página en cada idioma. |
| HTML e imágenes | Atributos bien formados (por ejemplo, comillas sin escapar en un texto alternativo), texto alternativo completo e imágenes que existen. |
| Recursos externos | Solo se cargan recursos de dominios autorizados. Nada queda apuntando a Squarespace ni a servicios desconocidos. |
| Diseño móvil | Se renderiza cada página en un navegador real a ancho de teléfono y se detectan desbordes y elementos superpuestos. |
| Redirecciones | Todas las URLs heredadas responden 301 hacia su destino, sin cadenas ni bucles. |
| Blog | Tarjetas visibles, imagen destacada y cabecera correctas en cada post. |
| Consentimiento | Ninguna herramienta de medición ni píxel publicitario se carga antes de que el visitante acepte. |
| Seguridad | La política de seguridad de contenido (CSP) no bloquea nada legítimo y las cabeceras cumplen los límites del hosting. |
| Datos estructurados | El JSON-LD es válido y consistente con el contenido visible de la página. |
Estos controles ya encontraron errores reales. Por ejemplo, detectaron 26 textos alternativos con comillas sin escapar en 9 páginas en español, que habían quedado de una traducción asistida anterior. Hoy un error así impide publicar.
8Seguridad y continuidad
- Superficie mínima: no hay base de datos, login público, plugins ni servidor que parchar. Los ataques habituales a WordPress o a CMS alojados no tienen dónde entrar.
- Cabeceras de seguridad: HTTPS obligatorio, CSP con lista cerrada de scripts, protección contra incrustación en otros sitios y política de referrer.
- Cuentas: hosting y GitHub con autenticación de dos factores obligatoria. Solo personas autorizadas aprueban publicaciones.
- Historial completo: cada cambio queda con autor, fecha y diferencias exactas. Nada se sobrescribe sin registro.
- Respaldo: el repositorio contiene el sitio completo. Se puede reconstruir y publicar en cualquier proveedor de hosting estático en minutos.
- Privacidad: banner de consentimiento en los tres idiomas (Consent Mode v2 de Google), con enlace a la política de privacidad de yoy y su anexo para el sitio.
- Sin dependencia de una persona: la publicación ocurre en GitHub y en el hosting, no en un equipo local. Este documento y los manuales del repositorio describen cada procedimiento.
9Roles y responsabilidades
| Rol | Responsable de | No necesita |
|---|---|---|
| Marketing | Textos, keywords, imágenes, posts del blog, metadatos. Aprueba sus propios cambios de contenido. | Saber programar ni pedir cada cambio a TI. |
| Asistente de IA | Convertir el pedido en cambios que cumplan CONTENIDO.md y abrir la propuesta. | Acceso a producción. Solo propone. |
| Agencia SEO | Estrategia de keywords, auditorías y criterios de CONTENIDO.md. Revisa URLs de vista previa cuando lo pida. | Acceso al código. Sus criterios se incorporan como reglas y validaciones. |
| Área web / TI | Plantillas, sistema de diseño, validaciones, seguridad, redirecciones y auditoría periódica. | Intervenir en cambios de contenido del día a día. |
10Comparación con HubSpot CMS
La alternativa propuesta es alojar las páginas en HubSpot Content Hub. Esta tabla compara ambas opciones para este sitio en particular:
| Criterio | Sitio estático (actual) | HubSpot Content Hub |
|---|---|---|
| Edición por marketing | Con asistente de IA, o en el editor visual propio. | Editor visual de HubSpot, sin IA integrada al flujo de yoy. |
| SEO técnico | Completo y verificado en cada publicación (secciones 5 y 7). | Bueno. Algunas funciones de SEO y multi-idioma dependen del plan contratado. |
| Validación antes de publicar | Automática, bloquea errores. | Revisión manual del editor. |
| Historial y reversión | Completo, por cambio, sin límite. | Historial de revisiones por página. |
| Costo | Sin licencia de CMS. Hosting estático y GitHub dentro de los planes actuales. | Licencia mensual por plan y usuarios. Funciones avanzadas en planes superiores. |
| Portabilidad | HTML estándar. Se mueve a cualquier hosting. | Temas en HubL, lenguaje propio de HubSpot. Salir implica rehacer el sitio. |
| Migración | Ya realizada. Diseño idéntico al original, auditado. | Rehacer 102 URLs, reconstruir el diseño y volver a auditar. |
| Formularios, CRM y tracking | HubSpot, integrado. | HubSpot, nativo. |
HubSpot sigue siendo la herramienta de marketing en ambos casos. La diferencia está solo en dónde viven las páginas y cómo se controla su calidad técnica.
11Riesgos y mitigaciones
| Riesgo | Mitigación |
|---|---|
| La IA introduce un error de HTML o SEO. | Las validaciones automáticas bloquean la publicación y la vista previa permite revisarla antes. |
| Un cambio publicado sale mal. | Reversión en un clic. Cada publicación anterior queda guardada. |
| Se cambia una URL y se pierde posicionamiento. | Toda URL eliminada o renombrada exige una redirección 301, y la validación lo comprueba. |
| La IA no respeta el estilo de marca. | Solo puede usar bloques del sistema de diseño. HTML y CSS libres no pasan la validación. |
| Marketing queda sin apoyo técnico. | El flujo no requiere al área web para contenido. Hay manuales en el repositorio y un canal de soporte para casos nuevos. |
| Cambian los criterios de SEO o AEO. | Se actualizan CONTENIDO.md y las validaciones. Una mejora en una plantilla llega a las 102 URLs a la vez. |
12Evidencia medida
Resultado de revisar las 36 URLs de la auditoría SEO en el sitio original (Squarespace con Weglot) y en el sitio nuevo:
| Criterio (36 URLs) | Squarespace | Sitio nuevo |
|---|---|---|
| Canonical correcto por idioma | 0 / 36 | 36 / 36 |
| hreflang completo y recíproco | 0 / 36 | 36 / 36 |
Atributo lang del idioma real | 0 / 36 | 36 / 36 |
| Un solo H1 | 25 / 36 | 36 / 36 |
| Sin traducción por script de terceros (Weglot) | 0 / 36 | 36 / 36 |
Estas cifras se pueden verificar en cualquier momento con el código fuente de cada URL o con las herramientas de la agencia.
13Estado de implementación
Este documento describe el sistema completo. Al 29-09-2026, este es el estado de cada parte:
| Componente | Estado |
|---|---|
| Sitio estático, 102 URLs, diseño idéntico al original | Implementado |
| Canonical, hreflang, lang, sitemap, robots, 404 real | Implementado |
| Redirecciones de las 129 URLs heredadas | Implementado |
| Detección de idioma del navegador | Implementado |
| Consentimiento, GA4 y tracking de HubSpot | Implementado |
| Cabeceras de seguridad y CSP | Implementado (CSP en modo reporte hasta el lanzamiento) |
| Validaciones automáticas de SEO, HTML, móvil, blog y consentimiento | Implementado |
| Editor visual con publicación, historial y reversión | Implementado (en piloto, sobre el sitio de pruebas) |
| Validación en GitHub Actions y vistas previas por propuesta | En implementación |
| Datos estructurados JSON-LD, Open Graph y bloque FAQ | En implementación |
CONTENIDO.md con las reglas para la IA | En implementación |
| Piloto de publicación con marketing | Pendiente |
| Cambio de DNS de yoysimulators.com | Pendiente, coordinado con la agencia SEO |