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.
This commit is contained in:
2026-09-15 10:19:00 +02:00
parent a6692b7540
commit b084aeff6e
12 changed files with 1244 additions and 1 deletions
@@ -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, `<style>`, `<script>`, and JSX expressions stripped), not from source line/byte counts.
---
## Summary
The site has real trust scaffolding — a genuine street address, a real phone number, `CateringService` + `FAQPage` schema.org markup, legal pages (aviso legal/privacidad/cookies), and what appear to be genuine team/kitchen photos rather than stock imagery. But every one of the 6 commercial pages is **severely thin** (well under half of Google's topical-coverage floor for its page type), the four FAQ blocks are **generic and evasive rather than fact-bearing**, the "coverage is confirmed case-by-case" paragraph is **repeated near-verbatim five times** across five different pages, and — most importantly for AI-citability — **there is still no pricing anchor, no capacity range, and no lead-time/booking-window figure anywhere on the site**. This was flagged as a gap in a prior audit round; based on the current source, it has not been resolved. An AI assistant can correctly confirm "yes, MNQ does weddings in Málaga," but cannot answer any of the three questions a prospective customer (or an AI Overview) actually needs — how much, how many guests, how far in advance to book.
**Content Quality Score: 32/100**
**AI Citation Readiness Score: 24/100**
---
## Findings
### 1. Thin content on every commercial page (HIGH severity)
Word counts of visible body copy (FAQ text included where present):
| Page | Words (measured) | Page-type floor | % of floor |
|---|---|---|---|
| `/` (homepage) | ~287 | 500 | 57% |
| `/nosotros` (about — E-E-A-T critical) | ~291 | ~500 (treated as homepage-tier) | 58% |
| `/bodas-reales` (service) | ~391 (319 body + 72 FAQ) | 800 | 49% |
| `/corporativo-business` (service) | ~387 (307 body + 80 FAQ) | 800 | 48% |
| `/reuniones-familiares` (service) | ~414 (347 body + 67 FAQ) | 800 | 52% |
| `/contacto` | ~266 (191 body + 75 FAQ) | ~400–500 (lighter bar) | 53–67% |
None of the three actual service pages reach even 55% of the 800-word topical-coverage floor Google's guidelines describe for service pages. `/nosotros` — the single most important page for demonstrating Experience/Expertise — is barely 291 words and names no one.
**Recommendation:** Each service page needs genuinine topical expansion, not filler: a real sample menu or format breakdown per service type, 2–3 detailed case studies with real numbers (guest count, venue, service style), and a named chef/team-lead bio with real credentials on `/nosotros`.
### 2. No pricing, capacity, or lead-time facts anywhere (HIGH severity — this is the prior-round gap, still open)
Every page repeats variations of "se calcula/valora según..." without ever landing on a number. Representative quotes:
- Homepage: *"Cada proyecto se valora de forma individual. Confirmamos la viabilidad según la fecha, el número de asistentes, el tipo de servicio y el desplazamiento necesario..."*
- `/bodas-reales`: *"Propuesta económica: se calcula según menú, servicio, menaje, tiempos y desplazamiento."*
- `/corporativo-business`: *"Presupuesto: siempre se calcula a medida según servicio, menaje, personal y desplazamiento."*
- `/reuniones-familiares` FAQ: *"¿Cómo se prepara el presupuesto? Se ajusta al número estimado de invitados, al formato del servicio, al menaje necesario y al desplazamiento previsto."*
Checked explicitly via grep across all page source: zero occurrences of "€", "precio", "desde [number]", any guest-count range (e.g. "20–500 invitados"), any stated minimum/maximum group size, or any lead-time figure ("reserve con X semanas/meses"). This is unchanged from what a prior audit round already flagged.
**Why this matters for AI citability:** an AI Overview or ChatGPT answer to "cuánto cuesta un catering de boda en Málaga" or "¿cuántos invitados puede cubrir MNQ?" cannot be constructed from this content — there is nothing to lift. Even an indicative range ("desde 65€/invitado", "de 20 a 400 comensales", "recomendamos reservar con 2–3 meses de antelación") would be directly quotable and would materially change AI-citation odds. Right now the honest answer any AI tool can give is "contact them to find out," which is a weak, low-value citation.
### 3. FAQ content is generic and non-committal, not fact-bearing (MEDIUM-HIGH severity)
`FAQPage` schema is present on 4 pages (`bodas-reales`, `corporativo-business`, `reuniones-familiares`, `contacto`) as stated, but the answers dodge the question rather than answering it. Example — `/bodas-reales`:
> Q: *"¿El presupuesto incluye solo comida?"*
> A: *"La propuesta puede contemplar cocina, servicio, menaje y necesidades de montaje, según lo que requiera la celebración."*
This never actually says yes or no, nor gives a typical inclusion list. Same pattern on `/corporativo-business`:
> Q: *"¿Cómo valoran la cobertura de un evento de empresa?"*
> A: *"La confirmamos según disponibilidad de fecha, desplazamiento, complejidad logística del espacio y necesidades reales de producción."*
This is the kind of FAQ answer an AI system will *not* select to quote, because it contains no extractable fact — it's a description of a process, not an answer. Compare to what would actually be citable: "Sí, la propuesta incluye siempre cocina y servicio de sala; menaje y decoración se cotizan aparte salvo que se solicite el paquete completo."
Also note the FAQ *questions* themselves are near-duplicated across pages: "¿Cómo se confirma/valora la cobertura/viabilidad?" appears, reworded, on `/bodas-reales`, `/corporativo-business`, `/reuniones-familiares`, and `/contacto`. "¿Cómo se prepara/calcula el presupuesto?" appears on 3 of the 4. This is templated content with the labels swapped, not four independently useful FAQ sections.
### 4. Repeated near-duplicate paragraph across 5 pages (MEDIUM severity)
The "we confirm coverage case-by-case, based on date/location/guest count/format/travel" paragraph is reused, reworded, on every single commercial page:
- Homepage: *"La cobertura final se valida caso a caso para asegurar montaje, tiempos de servicio y desplazamiento coherentes con el evento."*
- `/bodas-reales`: *"Viabilidad: la confirmamos tras revisar disponibilidad y condiciones del espacio."*
- `/corporativo-business`: *"Cobertura confirmada: La viabilidad final se valida según desplazamiento, montaje necesario y condicionantes del espacio."*
- `/reuniones-familiares`: *"Cobertura confirmada: La viabilidad se revisa caso a caso para asegurar que el espacio y la logística estén alineados con la experiencia que promete MNQ."*
- `/contacto`: *"No trabajamos con una cobertura automática ni con propuestas cerradas. Cada servicio se estudia según la ubicación del evento, la fecha disponible, el volumen de invitados y las necesidades reales de montaje o servicio."*
Individually each is fine; together, five near-identical restatements of the same non-answer read as templated boilerplate rather than distinct topical coverage per page — a pattern the Sept 2025 QRG flags as a low-quality-AI-content marker ("repetitive structure across pages"). The three-card layout (label + one sentence, "we assess X case by case") is also structurally identical across `/` , `/corporativo-business`, and `/reuniones-familiares`.
### 5. No named expertise signal — "Chef Ejecutivo" is mentioned but never identified (HIGH severity for Expertise/Authoritativeness)
Grep across all page source for "año", "experiencia", "fundad", "premio", "certificad", "chef" returns exactly one hit: `/reuniones-familiares.astro` line 278, *"Reunión con nuestro Chef Ejecutivo para definir el concepto gastronómico"* — no name, no bio, no photo caption identifying who this is, no prior restaurant/culinary pedigree, no years of experience, no certifications, no press mentions, no awards. `/nosotros` — the page whose entire job is to carry Expertise/Experience signals — never names a single person; the hero photo alt text is *"Responsable de MNQ acompañando la puesta a punto..."* (a role, not a name).
**Recommendation:** name the chef/founder, state actual years of experience or prior kitchens, add a real bio and headshot with credentials. This is the single highest-leverage E-E-A-T fix available.
### 6. Testimonials are unverifiable and one is geographically inconsistent with the brand's core claim (MEDIUM severity — needs owner verification)
Testimonials use first names only, no last names, no photos, no link to a verifiable source (Google Business Profile, Bodas.net, etc.):
- *"Isabel & Marcos — Boda en Hacienda del Sol"* (homepage)
- *"Elena & Carlos — Finca La Montaña, Junio 2023"* / *"Patricia & Javier — Castillo de Viñuelas, Septiembre 2023"* (`/bodas-reales`)
**Flag for owner verification, not asserted as fact (could not browse to confirm live):** "Castillo de Viñuelas" is, per general knowledge, a well-known events venue in Tres Cantos, near Madrid — not in Málaga province. If MNQ's business is positioned as Málaga-based catering, a testimonial citing a Madrid-region venue either (a) represents a genuine out-of-area booking worth stating explicitly ("also available for destination weddings outside Málaga"), or (b) is placeholder/generic copy not tied to a real MNQ event — which would actively undermine local E-E-A-T if discovered by a prospective client or a fact-checking AI system. This is worth a direct check with the business owner before the next content pass.
No client company logos are shown on `/corporativo-business` despite claiming galas/lanzamientos "de alto nivel" for named-sounding brands.
### 7. Readability (LOW severity — this is a genuine strength)
Spanish sentence structure across all 6 pages is clean: short-to-medium sentences, no dense jargon, no run-on subordinate clauses. Business/process vocabulary ("desplazamiento", "menaje", "montaje", "briefing") is appropriate for the catering-industry audience and not overused. Marketing copy tends toward generic-premium adjectives ("excelencia", "exclusivo", "inolvidable", "de autor") but doesn't cross into incomprehensible fluff. This is the one area needing no changes.
### 8. What already works well
- Real, verifiable NAP: phone `+34 678 17 15 13` and street address `Calle Camino Vivero, 6, 29014, Málaga` are consistent across footer, `/contacto`, and `CateringService` schema (`src/layouts/MainLayout.astro`) — good baseline Trustworthiness signal.
- `CateringService` + `FAQPage` JSON-LD is correctly implemented and machine-parseable (structured data itself is not the audit's finding — see `geo.md` / technical findings for schema-specific review).
- Legal transparency pages exist (`aviso-legal`, `privacidad`, `cookies`) — a real trust signal most small local competitors skip.
- Team/kitchen photography on `/nosotros` (`mnq-team-service.jpg`, `mnq-team-kitchen.webp`, etc.) appears to be genuine operational photography rather than stock — a real Experience signal, just uncaptioned with names.
- `areaServed` in schema is honestly scoped to Málaga city + province rather than an inflated national claim — a good-faith trust choice, consistent with the git history ("add local business address and area served signals").
- Format lists per service type (e.g. bodas: *"cóctel, banquete, recena o una combinación"*; corporate: *"coffee break, cóctel, comida de empresa, cena institucional"*) are concrete and non-generic — these are genuinely useful, specific facts and should be the template for how pricing/capacity/lead-time facts get added.
---
## AI-citability test results
- **"¿Hace MNQ bodas en Málaga?"** — Answerable and citable. `/bodas-reales` + schema `serviceType`/`areaServed` support a clean, correct answer.
- **"¿Cómo reservo a MNQ para un evento corporativo?"** — Partially answerable: WhatsApp (`+34 678 17 15 13`), a contact form, and the specific info to send (fecha, ubicación, horario, asistentes, formato) are all stated on `/corporativo-business` and `/contacto`. This is citable at a shallow "how to start" level.
- **"¿Cuánto cuesta / cuántos invitados puede cubrir / con cuánta antelación reservar?"** — Not answerable from current content. No price anchor, no capacity range, no lead-time figure exists anywhere in the source. This is the highest-priority content gap for AI citation readiness.
---
## Scores
| Factor | Weight | Score /100 | Notes |
|---|---|---|---|
| Experience | 20% | 35 | Real team photos, but no named individuals, no dated case studies |
| Expertise | 25% | 25 | Unnamed "Chef Ejecutivo," zero credentials/years/certifications anywhere |
| Authoritativeness | 25% | 20 | No press, no awards, no third-party review links, one geographically-inconsistent testimonial venue to verify |
| Trustworthiness | 30% | 50 | Real NAP + legal pages + schema, undercut by zero pricing transparency and unverifiable testimonials |
| **E-E-A-T weighted** | | **33/100** | |
**Content Quality Score: 32/100**
**AI Citation Readiness Score: 24/100**
## Priority recommendations (highest impact first)
1. Add at least indicative pricing (a "desde X€/invitado" range or 2–3 worked examples), a capacity range, and a lead-time recommendation to every service page and the FAQ blocks — this is the single biggest lever for both thin-content and AI-citability.
2. Name and credential the chef/founder on `/nosotros`; convert the unnamed "Chef Ejecutivo" mention into a real bio.
3. Rewrite the 4 FAQ blocks so each answer states a concrete fact/number instead of describing the internal evaluation process.
4. De-duplicate the "coverage confirmed case-by-case" paragraph — keep one clear statement of the qualification process (e.g. on `/contacto`) and use the space on service pages for page-specific substance (sample menus, format detail, case studies) instead.
5. Verify (with the business owner) the "Castillo de Viñuelas" testimonial location before the next content pass, and add real last names/photos or a link to a verifiable review source for all testimonials.
6. Independently confirm whether the DNS `NXDOMAIN` observed for `www.mnqcatering.com` / `mnqcatering.com` during this audit (2026-09-15, confirmed against both local resolver and `8.8.8.8`) reflects current production state — if so, this blocks all crawling/AI-citation regardless of content fixes.