Auditoría SEO de /transportation/

24 de agosto de 2026 · contra PLAN-SEO-FINAL-WIC-2026-06-30 · 123 agentes, 57 hallazgos en bruto, 24 confirmados tras verificación adversarial

15corregidos y verificados
11 500 → 2 460 msLCP en perfil móvil Lighthouse
374 KBde Google Maps retirados
7pendientes de tu visto bueno

Corregido

Cada uno con la medición que lo destapó y lo que se cambió. Todo está ya en vivo y verificado en la página real.

altaRendimiento

El hero (elemento LCP) lo difería LiteSpeed

Qué se midió. El fetchpriority="high" iba puesto sobre un GIF de 1×1: la foto se pedía después de domInteractive. LCP medido en perfil móvil Lighthouse: 11 500 ms.

Arreglado. data-no-lazy="1" en la cabecera. LCP ahora 2 460 ms (presupuesto 2 500).

altaRendimiento

Google Maps se cargaba en una página sin ningún mapa

Qué se midió. 374,5 KB comprimidos / 1,32 MB en memoria — la petición más pesada y la primera en arrancar. Ni un solo contenedor de mapa en el DOM.

Arreglado. Se retira la cola google-maps sólo en esta página.

mediaArquitectura

Las 10 fichas colgaban de /explore/, que es noindex

Qué se midió. 10 de 10 BreadcrumbList declaraban como padre https://whatsincabo.com/explore/ (noindex, follow), mientras el hub indexable no aparecía en la jerarquía.

Arreglado. wic-breadcrumb-schema.php admite ahora un hub por tipo. Las 10 apuntan a /transportation/.

mediaContenido

El texto decía que «la mayoría» hace servicio compartido

Qué se midió. La taxonomía propia del sitio dice 4 de 10 (TransCabo, Cabo Transfers, Cabo Airport Shuttle, Browns). Lo decían el artículo y la pregunta frecuente.

Arreglado. Cifra real en los dos sitios, con los cuatro nombres, y cada tarjeta declara ahora si lleva shuttle.

mediaContenido

Cero autoría, cero fecha, cero fuentes

Qué se midió. El gate de publicación del plan pide «author/editorial team» (L1104) y «fuentes visibles» (L1108). Un grep de editorial / updated / sources sobre el texto de la página devolvía 0.

Arreglado. Firma editorial enlazada a /about-us/, fecha de última revisión tomada de la fecha real de la página, y de dónde sale cada dato.

mediaSchema

Ninguna entidad editorial en el marcado

Qué se midió. 0 Organization, 0 publisher, 0 author. Las páginas hermanas sí los emiten.

Arreglado. publisher + nodo Organization con el mismo @id del resto del sitio, dateModified y enlace CollectionPage↔ItemList. Sin reactivar el rich snippet de Rank Math.

mediaContenido

Las 10 tarjetas decían «Cabo San Lucas»

Qué se midió. Incluida la de Cabo T&T, cuyo propio texto dice que la empresa es de San José del Cabo. Las diez cubren el mismo núcleo, así que la etiqueta no distinguía nada.

Arreglado. Etiqueta nueva: tipo de servicio + hasta dónde llega más allá del núcleo. Seis dicen «Across Los Cabos», cuatro «Los Cabos + East Cape, Todos Santos & La Paz».

mediaImágenes

Las 10 fotos de tarjeta sin srcset ni sizes

Qué se midió. Un único fichero de 768 px para todos los dispositivos, con width/height escritos a mano que no eran los del fichero.

Arreglado. Generadas con srcset y un sizes por foto calculado sobre el recorte (cover), no sobre el hueco, y sobre los tres regímenes medidos de la rejilla (3, 2 y 1 columna).

mediaImágenes

WordPress anteponía sizes="auto" y se saltaba ese cálculo

Qué se midió. Desde WP 6.7, sizes="auto" manda usar el ancho de caja — justo el número equivocado con object-fit: cover. Además marcaba la foto de la primera empresa como candidata a LCP.

Arreglado. Desactivados wp_img_tag_add_auto_sizes y wp_get_loading_optimization_attributes en esta página.

bajaContenido

4 de 10 descripciones cortadas a mitad de palabra

Qué se midió. «…regional tran…», «…point-to-point transportation i…». Corte por número de caracteres.

Arreglado. Corte por palabra completa.

bajaMovil

8 cadenas del trayecto desaparecían a ≤1100 px

Qué se midió. Las 4 zonas y las 4 descripciones de las paradas. Ese texto no existía en ninguna otra parte de la página, así que se iba sin equivalente.

Arreglado. Una frase bajo el trayecto que lo recoge entero y se lee a cualquier ancho.

bajaAccesibilidad

El trayecto decía «scroll sideways» y no se desliza

Qué se midió. tabindex="0", role="group" y ese aria-label, con scrollWidth == clientWidth medido de 320 a 1920 px. Parada de teclado que no llevaba a nada e instrucción falsa.

Arreglado. Los tres atributos fuera.

mediaAccesibilidad

«Read more» seguía visible y enfocable tras ocultarse

Qué se midió. boton.hidden = true perdía contra un display: inline-flex. Medido: 131×49 px, tabulable, con el foco puesto y aria-expanded="true".

Arreglado. [hidden] { display: none !important }. Verificado: 0×0 y display: none tras pulsar.

mediaAccesibilidad

Ningún indicador de foco en los enlaces de la página

Qué se midió. Se compararon píxel a píxel los recortes con foco y sin foco: idénticos en los enlaces del artículo, en el CTA y en las semillas.

Arreglado. Contorno de 3 px con el mismo verde que ya usan el muro y las guías; crema sobre la franja oscura.

bajaAccesibilidad

Contraste 3,25:1 en «(SJD)»

Qué se midió. rgba(30,26,23,.5) sobre el fondo real #f4f4f4. AA pide 4,5:1.

Arreglado. Subido a .66. Medido ahora en 5,34:1.

Pendiente — toca al sitio entero o necesita material

No los he tocado a propósito: o cambian el tema y el pie de todas las páginas, o son una decisión tuya, o hacen falta ficheros que no tengo.

altaRendimiento

41 hojas de estilo bloqueando el render, 90,8 % del CSS sin usar

Qué se midió. 817 KB de CSS analizado, 75,5 KB realmente usados. 32 de las 41 hojas del <head> sin media query. Tres de ellas son de WooCommerce y esta página no tiene tienda.

Por qué no lo he tocado. Es configuración de LiteSpeed (CCSS/UCSS por plantilla) y afecta a TODO el sitio. Necesito tu visto bueno antes de tocarlo.

altaRendimiento

676 KB de fuentes por carga, de las que 59,5 KB son las de la marca

Qué se midió. Inter de WooCommerce 319 KB + Material Icons 126 KB + un SEGUNDO Inter desde Google 47 KB (la misma familia bajada dos veces).

Por qué no lo he tocado. Quitar la Inter de WooCommerce y cambiar Material Icons por SVG es un cambio de tema, no de esta página.

mediaAccesibilidad

No hay landmark <main> ni enlace de salto

Qué se midió. 10 paradas de teclado en escritorio y 12 en móvil antes del primer enlace del contenido.

Por qué no lo he tocado. Es el chrome compartido: el arreglo sirve para todo el sitio y hay que hacerlo en el tema.

mediaMovil

El buscador global se sale de la pantalla entre 321 y 396 px

Qué se midió. A 360 px queda 1 px visible de 38; a 340 px, cero. Lo empujan las señales WIC del header.

Por qué no lo he tocado. Header compartido. El rescate CSS existe pero arranca a 320 px en vez de a 404.

mediaMovil

Colisión de texto en el pie entre 768 y 880 px

Qué se midió. «Transportation» se monta sobre la columna de al lado; hasta 12 px de solape medidos con los rectángulos reales de texto.

Por qué no lo he tocado. Pie compartido de Elementor.

mediaIndexación

El hub y la guía de aeropuerto compiten por lo mismo

Qué se midió. Las dos son index, las dos están en el sitemap y listan las mismas 10 fichas (intersección 100 %).

Por qué no lo he tocado. Es una decisión editorial tuya: lo natural es que el hub sea el directorio y la guía el criterio de elección, y que la guía deje de repetir el listado entero.

mediaImágenes

Dos fotos de tarjeta se siguen pintando por encima de su resolución

Qué se midió. Cabo Airport Shuttle (494×305) y Cabo Baja Limousines (500×320). Las otras ocho ya están servidas correctas.

Por qué no lo he tocado. No hay recorte posible sin inventar píxeles: hacen falta ficheros nuevos de esas dos empresas.

Capturas reales

PC 1440 · tablet 834 · móvil 390, tomadas de la página en vivo como invitado.

Cabecera y página completa — PC 1440
Cabecera y página completa — PC 1440
Página completa — tablet 834
Página completa — tablet 834
Página completa — móvil 390
Página completa — móvil 390
Trayecto y la frase nueva — PC
Trayecto y la frase nueva — PC
La frase que recoge lo que se ocultaba — PC
La frase que recoge lo que se ocultaba — PC
Trayecto — móvil (el «(SJD)» ya con contraste)
Trayecto — móvil (el «(SJD)» ya con contraste)
Firma editorial y procedencia — PC
Firma editorial y procedencia — PC
Firma editorial — móvil
Firma editorial — móvil
Preguntas con la cifra real y la firma editorial debajo — PC
Preguntas con la cifra real y la firma editorial debajo — PC
Lo mismo en móvil
Lo mismo en móvil
Tarjeta nueva — PC
Tarjeta nueva — PC
Tarjeta nueva — móvil
Tarjeta nueva — móvil
«Read more» antes de pulsar — móvil
«Read more» antes de pulsar — móvil
Tras pulsar: el botón desaparece de verdad
Tras pulsar: el botón desaparece de verdad