From b084aeff6e941160130948bda4780c4139662601 Mon Sep 17 00:00:00 2001 From: manue Date: Tue, 15 Sep 2026 10:19:00 +0200 Subject: [PATCH] fix(seo): exclude noindex aviso-legal page from sitemap; add full audit report Sitemap filter was excluding cookies/ and privacidad/ but not aviso-legal/, even though that page is marked noindex,follow -- a noindexed page has no business being listed for crawl discovery. Also adds docs/seo-audit/mnqcatering.com-audit/ -- the full multi-agent SEO audit run this session against the corrected live domain (www.mnqeventos.es), including the FULL-AUDIT-REPORT.md, ACTION-PLAN.md, and per-category findings files. --- astro.config.mjs | 5 +- .../mnqcatering.com-audit/ACTION-PLAN.md | 37 ++++ .../FULL-AUDIT-REPORT.md | 81 +++++++++ .../mnqcatering.com-audit/findings/content.md | 142 +++++++++++++++ .../mnqcatering.com-audit/findings/geo.md | 161 ++++++++++++++++++ .../mnqcatering.com-audit/findings/local.md | 135 +++++++++++++++ .../findings/performance.md | 112 ++++++++++++ .../mnqcatering.com-audit/findings/schema.md | 161 ++++++++++++++++++ .../mnqcatering.com-audit/findings/sitemap.md | 87 ++++++++++ .../mnqcatering.com-audit/findings/sxo.md | 149 ++++++++++++++++ .../findings/technical.md | 126 ++++++++++++++ .../mnqcatering.com-audit/findings/visual.md | 49 ++++++ 12 files changed, 1244 insertions(+), 1 deletion(-) create mode 100644 docs/seo-audit/mnqcatering.com-audit/ACTION-PLAN.md create mode 100644 docs/seo-audit/mnqcatering.com-audit/FULL-AUDIT-REPORT.md create mode 100644 docs/seo-audit/mnqcatering.com-audit/findings/content.md create mode 100644 docs/seo-audit/mnqcatering.com-audit/findings/geo.md create mode 100644 docs/seo-audit/mnqcatering.com-audit/findings/local.md create mode 100644 docs/seo-audit/mnqcatering.com-audit/findings/performance.md create mode 100644 docs/seo-audit/mnqcatering.com-audit/findings/schema.md create mode 100644 docs/seo-audit/mnqcatering.com-audit/findings/sitemap.md create mode 100644 docs/seo-audit/mnqcatering.com-audit/findings/sxo.md create mode 100644 docs/seo-audit/mnqcatering.com-audit/findings/technical.md create mode 100644 docs/seo-audit/mnqcatering.com-audit/findings/visual.md diff --git a/astro.config.mjs b/astro.config.mjs index ad7459b..13cc3a6 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -10,7 +10,10 @@ export default defineConfig({ }), integrations: [ sitemap({ - filter: (page) => !page.endsWith('/cookies/') && !page.endsWith('/privacidad/'), + filter: (page) => + !page.endsWith('/cookies/') && + !page.endsWith('/privacidad/') && + !page.endsWith('/aviso-legal/'), }), ], }); diff --git a/docs/seo-audit/mnqcatering.com-audit/ACTION-PLAN.md b/docs/seo-audit/mnqcatering.com-audit/ACTION-PLAN.md new file mode 100644 index 0000000..5c7f084 --- /dev/null +++ b/docs/seo-audit/mnqcatering.com-audit/ACTION-PLAN.md @@ -0,0 +1,37 @@ +# Plan de acción priorizado — MNQ Catering y Evento + +## Fase 0 — Ya hecho, pendiente de un solo paso tuyo +- [x] Corregir dominio canónico en todo el código (commit `a6692b7`) +- [x] Corregir `@type` de schema inválido (`CateringService` → `CateringBusiness`) +- [ ] **Desplegar a producción** — sin esto, nada de lo de hoy tiene efecto real. Es el único paso que falta para resolver ~15 hallazgos de golpe (dominio, sitemap, robots, OG, canonical). + +## Fase 1 — Críticos (esta semana) +- [ ] Desplegar el commit `a6692b7` (ver Fase 0) +- [ ] Quitar `/aviso-legal/` del filtro de exclusión inverso en `astro.config.mjs` (está `noindex` pero sigue en el sitemap) +- [ ] Quitar el `` duplicado de Google Fonts en `MainLayout.astro` (regresión: re-bloquea el render que el preload ya había resuelto) +- [ ] Revisar por qué el CSS de `/aviso-legal` (24KB) se está bundleando sitewide — probable leak de Astro +- [ ] Agregar headers de seguridad (HSTS, X-Content-Type-Options, X-Frame-Options, CSP) a nivel de hosting/reverse-proxy +- [ ] Habilitar compresión gzip/brotli en el servidor + +## Fase 2 — Alto impacto (próximas 2-3 semanas, necesita datos tuyos) +- [ ] Agregar rango de precio ("desde X€ por persona" o similar) — bloqueador #1 de conversión y de citabilidad IA según 3 auditores independientes +- [ ] Agregar rango de capacidad (mínimo/máximo de invitados) por tipo de evento +- [ ] Agregar antelación mínima de reserva +- [ ] Mencionar "Málaga" y zona de cobertura explícitamente en el texto visible de cada página (hoy: cero menciones) +- [ ] Unificar "MNQ Catering y Evento" vs "y Eventos" en todo el sitio (header/footer vs. resto) +- [ ] Corregir la CSS que retrasa el LCP del `

` del hero (animation-delay de 500ms en `hero-enter-2`) + +## Fase 3 — Contenido y autoridad (mes 2) +- [ ] Completar Google Business Profile (dirección, categoría, fotos) — ver `docs/seo-audit/publicacion-buscadores-checklist.md` +- [ ] Agregar coordenadas `geo` al schema una vez fijado el pin en GBP +- [ ] Agregar perfiles sociales reales (`sameAs`) si existen +- [ ] Nombrar y dar credenciales al "Chef Ejecutivo" mencionado (hoy sin nombre ni bio) — señal de E-E-A-T +- [ ] Verificar que el venue de testimonio citado ("Castillo de Viñuelas") sea correcto — parece ser de Madrid, no Málaga +- [ ] Replicar el patrón FAQ (bueno para AEO) en homepage, no solo en /contacto +- [ ] Reescribir el párrafo "cobertura confirmada caso a caso" que se repite casi idéntico en 5 páginas + +## Fase 4 — Monitoreo continuo +- [ ] Verificar Search Console tras el deploy (indexación real de las 6 páginas) +- [ ] Re-correr Lighthouse tras aplicar Fase 1-2 +- [ ] Medir `/corporativo-business` con Lighthouse (no se completó en esta auditoría por límite de tiempo) +- [ ] Confirmar comportamiento del apex `mnqeventos.es` sin `www` (no respondió durante esta auditoría, verificar redirect) diff --git a/docs/seo-audit/mnqcatering.com-audit/FULL-AUDIT-REPORT.md b/docs/seo-audit/mnqcatering.com-audit/FULL-AUDIT-REPORT.md new file mode 100644 index 0000000..4a31f1f --- /dev/null +++ b/docs/seo-audit/mnqcatering.com-audit/FULL-AUDIT-REPORT.md @@ -0,0 +1,81 @@ +# Auditoría SEO completa — MNQ Catering y Evento + +Fecha: 2026-09-15 +Sitio auditado: **https://www.mnqeventos.es** (dominio real y registrado) + +## ⚠️ Nota metodológica crítica + +Esta auditoría arrancó apuntando a `mnqcatering.com` porque es el dominio que +usa todo el código fuente (`astro.config.mjs`, schema, footer, etc.) y los +últimos commits del repo. A mitad de auditoría se confirmó — vía `dig`, +`whois` y `curl`/WebFetch independientes — que **`mnqcatering.com` nunca fue +registrado**: WHOIS devuelve "No match", no tiene NS, no resuelve. El dominio +real, registrado y sirviendo tráfico ahora mismo es **`www.mnqeventos.es`**. + +Se corrigió el rumbo a mitad de auditoría: cada especialista fue re-dirigido +contra `www.mnqeventos.es`. El código del repo ya fue corregido en el commit +`a6692b7` (dominio canónico + un bug real de schema.org encontrado en la +auditoría), **pero ese fix todavía no está desplegado en producción** — el +sitio en vivo sigue sirviendo el build viejo, con todas las referencias +internas (canonical, OG, JSON-LD, sitemap, robots.txt) apuntando al dominio +muerto. + +**Esto es, en sí mismo, el hallazgo más severo de toda la auditoría**: hasta +que se despliegue, cada motor de búsqueda y cada IA que respete la +canonicalización va a asociar el contenido con una URL que no existe. + +## Resumen ejecutivo + +**SEO Health Score: ~52/100 (estado actualmente en vivo)** + +Este número reflejaría **~65-70/100 solo con desplegar** el fix ya +commiteado (dominio + schema), sin escribir una línea de código nueva. El +resto (contenido, precios, GBP) sí requiere trabajo adicional. + +| Categoría | Score | Nota | +|---|---|---| +| Técnico | 58/100 | Bueno en fuente; roto en vivo por el dominio no desplegado | +| Contenido | 32/100 | Contenido "thin", cero cifras concretas (precio/capacidad) | +| Schema / structured data | 62/100 (medido antes del fix) | `@type` inválido corregido hoy, pendiente de deploy | +| Sitemap | 25/100 (en vivo) → ~75 post-deploy | Cadena de sitemap 100% rota en vivo por el dominio | +| Performance (Lighthouse real) | ~78-84/100 | Bueno, con un LCP evitable por CSS de animación | +| Visual/mobile | No verificable | Limitación de red del sandbox, no defecto del sitio | +| AEO / GEO (IA) | 46/100 | Permisivo con AI crawlers, pero sin señales de marca | +| SEO local | 22/100 (en vivo) | Sin dirección/ciudad visible en el sitio en vivo hoy | +| SXO (experiencia de búsqueda) | 59/100 | Estructura de página correcta, sin ancla de precio/zona | + +### Top 5 críticos +1. **El fix de dominio ya commiteado no está desplegado** — deploy pendiente, cero código nuevo necesario. +2. **Cero mención de "Málaga" o de la dirección en el sitio en vivo** — ni en texto ni en schema. +3. **Cero cifras de precio/capacidad/antelación** en ninguna página — el bloqueador #1 de conversión y de citabilidad por IA. +4. `@type: "CateringService"` no es un tipo válido de schema.org — corregido hoy a `CateringBusiness`, pendiente de deploy. +5. El sitemap y el robots.txt en vivo apuntan a `sitemap-0.xml` del dominio muerto — cadena de descubrimiento rota. + +### Top 5 quick wins (una vez desplegado) +1. Deploy del commit `a6692b7` — resuelve dominio, schema, sitemap, robots.txt, OG de un saque. +2. Agregar "Málaga" + rango de precio "desde X€" en homepage y páginas de servicio (bloqueado solo por falta de esos datos reales, no de código). +3. Quitar el `` duplicado de Google Fonts que re-bloquea el render (regresión de un fix anterior). +4. Excluir `/aviso-legal/` del sitemap (ya está `noindex` pero sigue listada). +5. Unificar "MNQ Catering y Evento" vs "y Eventos" (inconsistencia de nombre de marca en header/footer vs. resto del sitio). + +## Detalle por categoría + +Cada archivo tiene evidencia completa (curl/dig/whois, snippets, tablas de severidad): + +- [`findings/technical.md`](findings/technical.md) — robots, sitemap, canonicals, headers de seguridad, TLS +- [`findings/content.md`](findings/content.md) — E-E-A-T, thin content, citabilidad IA +- [`findings/schema.md`](findings/schema.md) — JSON-LD, tipo inválido corregido, recomendaciones +- [`findings/sitemap.md`](findings/sitemap.md) — estructura, aviso-legal, trailing slash +- [`findings/performance.md`](findings/performance.md) — Lighthouse real, LCP, CSS duplicado +- [`findings/visual.md`](findings/visual.md) — bloqueado por limitación de red del sandbox +- [`findings/geo.md`](findings/geo.md) — AEO/GEO, llms.txt, AI crawlers +- [`findings/local.md`](findings/local.md) — NAP, GBP (pendiente, reconocido), schema local +- [`findings/sxo.md`](findings/sxo.md) — SERP real, personas, page-type match + +## Seguridad de headers (hallazgo transversal) + +Ninguna respuesta del sitio en vivo trae HSTS, X-Content-Type-Options, +X-Frame-Options, CSP ni Referrer-Policy, y no hay compresión gzip/brotli en +el HTML. Esto es de capa de hosting/reverse-proxy, no de código Astro — hay +que revisarlo donde esté corriendo el servidor (Docker/nixpacks + lo que sea +que haga de proxy delante). diff --git a/docs/seo-audit/mnqcatering.com-audit/findings/content.md b/docs/seo-audit/mnqcatering.com-audit/findings/content.md new file mode 100644 index 0000000..b963e79 --- /dev/null +++ b/docs/seo-audit/mnqcatering.com-audit/findings/content.md @@ -0,0 +1,142 @@ +# Content Quality Audit — mnqcatering.com + +Scope: E-E-A-T, readability, thin content, duplication, AI citation readiness for the 6 commercial pages (`/`, `/nosotros`, `/bodas-reales`, `/corporativo-business`, `/reuniones-familiares`, `/contacto`). + +## Methodology note / critical caveat + +**The live site could not be fetched during this audit.** `www.mnqcatering.com` and `mnqcatering.com` returned `NXDOMAIN` both from the local resolver and when queried directly against `8.8.8.8` (Google public DNS) on 2026-09-15 — this is a real, non-sandboxed DNS failure, not a tool limitation (general internet access and DNS resolution for other domains worked fine in the same environment). If this is still true in production, it is a **critical, audit-blocking issue in its own right**: no amount of content quality matters if the domain doesn't resolve — Googlebot, ChatGPT/Perplexity crawlers, and users get nothing. This should be verified independently and flagged to whichever category owns DNS/hosting/technical SEO; it is out of scope for this content-only review to diagnose further. + +Given the fetch failure, this audit is based on the **Astro page source** (`src/pages/*.astro`) in the repo, which renders the copy 1:1 (no client-side content injection observed — FAQ arrays and structured data are server-rendered at build time). Word counts below are computed programmatically from the actual rendered text nodes (frontmatter, `