Archivo accesible en HTTP 200. Contiene directiva Sitemap: https://www.misitioweb.com/sitemap-index.xml. Las directivas de bloqueo (Disallow: /wp-admin/, Disallow: /wp-includes/) son correctas y no afectan páginas indexables ni recursos de renderizado. Ninguna página estratégica bloqueada.
/sitemap-index.xml accesible y referenciado en robots.txt. Sin embargo, el único sitemap hijo incluido es /sitemap-0.xml, que contiene exclusivamente las 12 páginas estáticas. Los 28 artículos del blog existen en /sitemap-posts.xml pero ese archivo no aparece en ningún sitemap índice. Googlebot no descubrirá los posts de forma sistemática.
sitemap-index.xml apuntando a /sitemap-posts.xml. En WordPress con Yoast o RankMath se hace desde la configuración del plugin. Verificar en Google Search Console que ambos sitemaps se procesan correctamente.Las páginas de categoría listan todos sus artículos en una sola página sin paginación numérica, infinite scroll ni botón "cargar más". Con 14 posts en la categoría mayor, el volumen no requiere paginación. Criterio no aplicable.
Se verificaron todos los destinos de los enlaces internos de las 14 páginas analizadas. Las 12 URLs del sitemap retornan HTTP 200, incluyendo /servicios, /nosotros, /contacto, /privacidad, /terminos y /blog. No se detectaron respuestas 4xx ni 5xx.
http://misitioweb.com responde HTTP 503 Service Unavailable sin header Location. El mismo comportamiento en http://www.misitioweb.com. La consolidación www→non-www funciona en HTTPS (https://www.misitioweb.com → 301 → https://misitioweb.com/) y el certificado SSL está vigente. Sin embargo, cualquier bot o usuario que acceda vía HTTP plano llega a un error 503.
Location: https://misitioweb.com/ a cualquier petición en el puerto 80. En Cloudflare se activa con "Always Use HTTPS" en SSL/TLS → Edge Certificates.11 de las 12 URLs del sitemap reciben al menos un enlace interno desde el menú o el footer. Solo /contacto/gracias (página de confirmación de formulario) carece de enlaces internos, lo cual es aceptable. Porcentaje de páginas huérfanas: 8.3%, muy por debajo del umbral del 30%.
WordPress con Elementor genera HTML estático completamente renderizado en servidor. El HTML inicial contiene el <h1> visible, los menús con texto, todas las secciones de contenido y el footer con enlaces. No hay <div id="root"> ni <div id="app"> vacíos. Googlebot puede rastrear e indexar todo el contenido sin ejecutar JavaScript.
Todas las páginas analizadas incluyen <link rel="canonical"> self-referencing correcto. Verificados: Homepage → https://www.misitioweb.com/, /servicios → https://www.misitioweb.com/servicios, /blog/como-mejorar-tu-posicionamiento-en-google → URL correcta. Sin canonicals cruzados.
Implementación sólida de JSON-LD. Homepage: WebSite + Organization (name, url, logo, telephone, address). Páginas de servicio: Service con descripción y proveedor. Posts de blog: Article + FAQPage con preguntas y respuestas estructuradas. Nota menor: el schema WebSite declara "url": "misitioweb.com" sin protocolo https://. Sin impacto grave, pero recomendamos corregirlo.
La mayoría de títulos están en el rango correcto (30-65 chars). Se detectan dos anomalías:
| Página | Título | Chars | Estado |
|---|---|---|---|
| / | Servicios digitales para tu empresa - misitioweb | 49 | ✓ |
| /servicios | Servicios - misitioweb | 22 | Corto |
| /nosotros | Quiénes somos y cuál es nuestra misión como empresa de soluciones digitales - misitioweb | 89 | Largo |
| /blog/primer-articulo | Cómo optimizar tu sitio web en 5 pasos - misitioweb | 53 | ✓ |
/servicios a mínimo 35 chars con keyword (ej. "Servicios digitales para empresas — misitioweb"). Acortar /nosotros a máximo 65 chars eliminando texto redundante.Las meta descriptions existen en todas las páginas pero son sistemáticamente cortas en las páginas de servicio. El rango óptimo es 120-160 caracteres. Los posts de blog sí están dentro del rango correcto.
| Página | Longitud | Estado |
|---|---|---|
| / | 98 chars | Corta |
| /servicios | 87 chars | Corta |
| /nosotros | 91 chars | Corta |
| /contacto | 103 chars | Corta |
| /blog/primer-articulo | 148 chars | ✓ |
100% de imágenes en formato WebP. width y height declarados en todos los <img>, previniendo CLS. loading="lazy" aplicado solo en imágenes below-the-fold; la imagen hero carga eager (correcto). Alt texts descriptivos y únicos. Nota menor: el alt de la imagen hero tiene un espacio inicial innecesario (" Imagen principal").
Todas las URLs siguen buenas prácticas: solo minúsculas, palabras separadas por guiones, sin parámetros ?p= ni IDs numéricos, estructura semántica coherente. Ejemplos: /servicios/consultoria-digital, /blog/como-mejorar-tu-posicionamiento-en-google. No se detectan guiones bajos ni caracteres especiales sin codificar.
| Métrica | Valor (móvil) | Umbral | Estado |
|---|---|---|---|
| LCP | 2.8s | < 2.5s | Mejorar |
| CLS | 0.02 | < 0.1 | ✓ |
| TBT | 180ms | < 200ms | ✓ |
El LCP de 2.8s supera ligeramente el umbral óptimo de 2.5s. Con 2 métricas en verde el criterio pasa el umbral MSV, pero el LCP merece atención. El TTFB es de 180ms: el cuello de botella no está en el servidor sino en la carga de recursos. Probablemente la imagen hero no tiene fetchpriority="high".
fetchpriority="high" y <link rel="preload" as="image"> en el <head> para la imagen hero. Revisar si hay scripts de terceros bloqueando el render.Meta viewport presente con width=device-width e initial-scale=1. El CSS usa media queries responsivos y unidades relativas (clamp(), rem, em). Sin elementos de ancho fijo mayor a 600px sin overflow controlado. Performance Score móvil: 72/100. Nota menor: la etiqueta <meta name="viewport"> aparece duplicada; el navegador usa la última. Recomendamos eliminar la duplicada.
La estructura de interlinking es sólida para las páginas principales: menú y footer enlazan todas las páginas de servicio con anchor texts descriptivos. Sin embargo, /servicios/consultoria-premium no recibe ningún enlace interno desde ninguna otra página del sitio. Es una página isla que no recibe equity de links, aunque está en el sitemap. Adicionalmente, algunos anchor texts del footer son genéricos ("Más información", "Haz clic aquí") sin contexto semántico.
/servicios/consultoria-premium desde /servicios con anchor text que incluya la keyword del servicio. Reemplazar anchors genéricos del footer por el nombre real de cada sección.H1 presente y único en todas las páginas. Homepage: <h1>Soluciones digitales para hacer crecer tu negocio</h1>. /servicios: <h1>Nuestros servicios</h1>. Posts de blog: H1 con el título completo del artículo. Jerarquía H1 → H2 → H3 coherente sin saltos de nivel. Los H1 contienen la keyword principal de cada página.
Sintaxis incorrecta en og:title y og:description: el código usa property:"og:title" (dos puntos en lugar de signo igual) en vez de property="og:title". Los scrapers de Facebook, LinkedIn y WhatsApp no parsean estas etiquetas. Las previsualizaciones aparecen vacías en todos los compartidos.
og:url vacío en todas las páginas: <meta property="og:url"> sin atributo content. Twitter Cards incompleto: twitter:title, twitter:description e twitter:image existen como etiquetas pero sin atributo content. Solo og:image y twitter:card tienen sintaxis y contenido correctos.
property:"og:title" a property="og:title" en el componente <head>. Añadir content con el valor correcto a og:url, twitter:title, twitter:description e twitter:image. Verificar en Facebook Sharing Debugger y Twitter Card Validator.Todas las páginas tienen contenido sustancial. Homepage: múltiples secciones con descripciones de servicios, propuesta de valor y logos de clientes. Más de 600 palabras útiles. Páginas de servicio: especificaciones, características y FAQ con más de 400 palabras. Posts de blog: artículos completos con FAQPage structured data. No se detecta contenido duplicado entre páginas similares.