348 lines
9.9 KiB
Markdown
348 lines
9.9 KiB
Markdown
# Combined SEO priority roadmap
|
|
|
|
This document combines two sources reviewed on July 19, 2026:
|
|
- PageSpeed Insights desktop report for `https://mnq.elkazurrotaberna.es/`
|
|
- `docs/seo-audit/Google-SEO-Report-mnq.elkazurrotaberna.es-full.pdf`
|
|
|
|
It is intentionally split into:
|
|
- **Repo-verified issues**: confirmed from the current codebase
|
|
- **Production-only checks**: reported by the PDF/PageSpeed but require live-environment validation
|
|
|
|
---
|
|
|
|
## Current headline picture
|
|
- Performance: **80**
|
|
- Accessibility: **96**
|
|
- Best Practices: **100**
|
|
- SEO: **100**
|
|
- External full SEO PDF health score: **39/100**
|
|
|
|
Interpretation:
|
|
- Lighthouse says the site is technically decent at baseline.
|
|
- The PDF surfaces bigger **search readiness / local SEO / entity trust** gaps that Lighthouse does not score deeply.
|
|
|
|
---
|
|
|
|
## Tier 1 — Critical fixes
|
|
|
|
### 1. Add crawl and discovery files
|
|
**Status:** repo-verified missing
|
|
|
|
**Missing**
|
|
- `robots.txt`
|
|
- `sitemap.xml`
|
|
- `llms.txt`
|
|
|
|
**Why this is critical**
|
|
- Search engines and AI crawlers lack explicit discovery and policy signals.
|
|
- This is one of the highest-leverage technical SEO fixes on a small site.
|
|
|
|
**Files to add / touch**
|
|
- `public/robots.txt`
|
|
- sitemap generation setup in Astro
|
|
- `public/llms.txt`
|
|
|
|
**Recommended action**
|
|
- Add `robots.txt` with a `Sitemap:` directive.
|
|
- Generate a sitemap from the real route set.
|
|
- Add a concise `llms.txt` with business summary, services, contact, and canonical domain.
|
|
|
|
---
|
|
|
|
### 2. Add missing `<head>` SEO signals sitewide
|
|
**Status:** repo-verified missing
|
|
|
|
**Missing**
|
|
- canonical tags
|
|
- Open Graph tags
|
|
- explicit meta robots tags
|
|
- JSON-LD / structured data
|
|
|
|
**Why this is critical**
|
|
- The site currently has content, but weak machine-readable identity.
|
|
- Canonicalization and entity markup matter more here than another visual polish pass.
|
|
|
|
**Files to touch**
|
|
- `src/layouts/MainLayout.astro`
|
|
- possibly shared helpers/components if you extract metadata/schema logic
|
|
|
|
**Recommended action**
|
|
- Add self-referencing canonical tags.
|
|
- Add base OG tags (`og:title`, `og:description`, `og:type`, `og:url`, `og:image`).
|
|
- Add explicit `meta name="robots"` defaults, with special handling for legal pages if desired.
|
|
- Add sitewide JSON-LD for the business plus page-specific schema later.
|
|
|
|
---
|
|
|
|
### 3. Fix language/market mismatch
|
|
**Status:** repo-verified
|
|
|
|
**Current code**
|
|
- `src/layouts/MainLayout.astro` uses `lang="es-AR"`
|
|
|
|
**Why this is critical**
|
|
- The site targets Spain signals (`+34`, RGPD/legal context), not Argentina.
|
|
- This mismatch hurts consistency for SEO, accessibility, and AI interpretation.
|
|
|
|
**Files to touch**
|
|
- `src/layouts/MainLayout.astro`
|
|
- any copy using inconsistent register
|
|
|
|
**Recommended action**
|
|
- Change sitewide language to `es-ES`.
|
|
- Standardize tone/register across pages.
|
|
|
|
---
|
|
|
|
### 4. Fix the business identity trust gap
|
|
**Status:** partially repo-verified
|
|
|
|
**Repo-verified issues**
|
|
- `eventos@mnqcatering.com` appears in:
|
|
- `src/pages/contacto.astro`
|
|
- `src/pages/cookies.astro`
|
|
- `src/pages/privacidad.astro`
|
|
- Corporate client names in `src/pages/corporativo-business.astro` look like placeholders:
|
|
- `LUMINA`
|
|
- `Nordic Corp`
|
|
- `Apex Sol.`
|
|
|
|
**Why this is critical**
|
|
- A dead email domain or invented-looking client proof is poison for conversions and trust.
|
|
- This is not cosmetic. This is credibility.
|
|
|
|
**Files to touch**
|
|
- `src/pages/contacto.astro`
|
|
- `src/pages/cookies.astro`
|
|
- `src/pages/privacidad.astro`
|
|
- `src/pages/corporativo-business.astro`
|
|
|
|
**Recommended action**
|
|
- Verify the real contact domain and replace broken email references if needed.
|
|
- Remove fabricated-looking client names unless they are real and permissioned.
|
|
- Replace them with real logos, real brands, or no claim at all.
|
|
|
|
---
|
|
|
|
### 5. Add service-area and local intent signals
|
|
**Status:** repo gap strongly supported by PDF; should be treated as high-priority content work
|
|
|
|
**Why this is critical**
|
|
- The site needs explicit geography/service area to compete for local intent.
|
|
- Right now the strongest geo signal appears to be the phone prefix.
|
|
|
|
**Recommended action**
|
|
- Add a visible service-area section on homepage and contact page.
|
|
- Mention real cities/regions served.
|
|
- Reflect the same area in JSON-LD (`areaServed`).
|
|
|
|
**Likely files to touch**
|
|
- `src/pages/index.astro`
|
|
- `src/pages/contacto.astro`
|
|
- service pages under `src/pages/`
|
|
|
|
---
|
|
|
|
## Tier 2 — High-impact SEO and conversion improvements
|
|
|
|
### 6. Add `tel:` links and strengthen contact usability
|
|
**Status:** repo-verified missing
|
|
|
|
**Why**
|
|
- The PDF correctly flags phone numbers as plain text.
|
|
- Click-to-call is basic conversion hygiene.
|
|
|
|
**Files to touch**
|
|
- `src/pages/contacto.astro`
|
|
- `src/components/SiteFooter.astro`
|
|
- any page/header component showing the phone number
|
|
|
|
**Recommended action**
|
|
- Wrap visible phone numbers in `tel:` links.
|
|
- Keep formatting human-readable while normalizing href values.
|
|
|
|
---
|
|
|
|
### 7. Add FAQ and schema-backed informational sections
|
|
**Status:** supported by PDF; not yet implemented in repo
|
|
|
|
**Why**
|
|
- The site is heavily CTA-driven but thin on concrete buyer-answer content.
|
|
- FAQ helps SEO, AI retrieval, and lead qualification.
|
|
|
|
**Recommended action**
|
|
- Add short FAQ blocks on main commercial pages.
|
|
- Add FAQPage schema only for visible questions/answers.
|
|
|
|
**Likely files to touch**
|
|
- `src/pages/bodas-reales.astro`
|
|
- `src/pages/corporativo-business.astro`
|
|
- `src/pages/reuniones-familiares.astro`
|
|
- `src/pages/contacto.astro`
|
|
|
|
---
|
|
|
|
### 8. Add concrete facts: pricing, capacity, coverage, lead time
|
|
**Status:** supported by PDF; likely real gap
|
|
|
|
**Why**
|
|
- Premium tone without specifics creates trust friction.
|
|
- Visitors need qualifying information before filling a form or opening WhatsApp.
|
|
|
|
**Recommended action**
|
|
- Add readable prose covering:
|
|
- capacity ranges
|
|
- indicative pricing approach or starting-tier language
|
|
- coverage area
|
|
- booking lead time
|
|
|
|
**Most important page**
|
|
- `src/pages/reuniones-familiares.astro` appears weakest per the PDF.
|
|
|
|
---
|
|
|
|
## Tier 3 — Performance fixes with clear Lighthouse payoff
|
|
|
|
### 9. Remove or reduce render-blocking font requests
|
|
**Status:** repo-verified + PageSpeed-supported
|
|
|
|
**Files**
|
|
- `src/layouts/MainLayout.astro`
|
|
|
|
**Current issues**
|
|
- external Google Fonts stylesheet request
|
|
- external Material Symbols stylesheet request
|
|
|
|
**Recommended action**
|
|
- reduce font families/weights
|
|
- replace icon font with local/inline SVGs if feasible
|
|
- self-host fonts if the project keeps them
|
|
|
|
**Why**
|
|
- Lighthouse reports render-blocking request savings around **1380 ms**.
|
|
|
|
---
|
|
|
|
### 10. Fix image delivery and explicit dimensions
|
|
**Status:** repo-verified + PageSpeed-supported
|
|
|
|
**Files**
|
|
- `src/pages/index.astro`
|
|
- `src/pages/bodas-reales.astro`
|
|
- `src/pages/corporativo-business.astro`
|
|
- review also `src/pages/contacto.astro`, `src/pages/nosotros.astro`, `src/pages/reuniones-familiares.astro`
|
|
|
|
**Recommended action**
|
|
- add explicit `width` and `height`
|
|
- make sure above-the-fold assets are not oversized
|
|
- keep optimized formats consistent
|
|
- use lazy loading for non-hero images
|
|
|
|
**Why**
|
|
- Lighthouse reports image savings around **1423 KiB**.
|
|
- It also flags missing image dimensions.
|
|
|
|
---
|
|
|
|
### 11. Recompress and rationalize `public/images/`
|
|
**Status:** repo-verified
|
|
|
|
**Hotspots**
|
|
- several large `.png` files in `public/images/`
|
|
- oversized footer/logo assets relative to rendered size
|
|
|
|
**Recommended action**
|
|
- replace or recompress large PNGs
|
|
- prefer lighter WebP variants where acceptable
|
|
- remove duplicates not used in production
|
|
|
|
**Folders**
|
|
- `public/images/`
|
|
- `public/images/generated/`
|
|
|
|
---
|
|
|
|
### 12. Fix footer contrast
|
|
**Status:** repo-verified + Lighthouse-supported
|
|
|
|
**Files**
|
|
- `src/components/SiteFooter.astro`
|
|
- `src/styles/components.css`
|
|
|
|
**Current issue**
|
|
- footer text uses muted color plus low opacity
|
|
|
|
**Recommended action**
|
|
- increase contrast on footer copy
|
|
- reduce/remove low-opacity muted treatment
|
|
|
|
---
|
|
|
|
### 13. Normalize duplicated WhatsApp link labels
|
|
**Status:** repo-verified via Lighthouse finding
|
|
|
|
**Files**
|
|
- `src/components/SiteHeader.astro`
|
|
- `src/components/SiteFooter.astro`
|
|
|
|
**Recommended action**
|
|
- keep the same accessible purpose for identical WhatsApp destinations
|
|
- use `aria-label` if visible text differs by context
|
|
|
|
---
|
|
|
|
### 14. Replace width animation on the progress bar
|
|
**Status:** repo-verified + Lighthouse-supported
|
|
|
|
**Files**
|
|
- `src/styles/animations.css`
|
|
- `src/layouts/MainLayout.astro`
|
|
|
|
**Recommended action**
|
|
- stop animating `width`
|
|
- use `transform: scaleX(...)` with `transform-origin: left`
|
|
|
|
---
|
|
|
|
## Tier 4 — Production-only checks to verify before coding against them
|
|
These came from the PDF/PageSpeed/live-site observations but are **not provable from the repo alone**.
|
|
|
|
### Validate on production
|
|
- `www` behavior, redirects, and TLS coverage
|
|
- security headers (`HSTS`, `X-Content-Type-Options`, `X-Frame-Options`, `CSP`)
|
|
- gzip/brotli compression on HTML/CSS
|
|
- cookie banner overlapping the floating WhatsApp CTA
|
|
- broken/bleeding UI element near the top-left viewport
|
|
- live caching policy for `/images/*`
|
|
- whether the contact email domain truly fails resolution
|
|
- whether the unrelated parent domain relationship must be clarified publicly
|
|
|
|
These should be treated as a separate verification pass against the deployed site.
|
|
|
|
---
|
|
|
|
## Suggested implementation order
|
|
1. crawl/discovery files (`robots.txt`, sitemap, `llms.txt`)
|
|
2. canonical + OG + robots + base JSON-LD in `MainLayout.astro`
|
|
3. `lang` correction to `es-ES`
|
|
4. email/domain trust fix and corporate-proof cleanup
|
|
5. service-area content and `tel:` links
|
|
6. FAQ / concrete fact sections on service pages
|
|
7. font and image performance fixes
|
|
8. footer contrast and smaller accessibility cleanups
|
|
9. production header/caching/compression validation
|
|
|
|
---
|
|
|
|
## Minimum verification after each implementation batch
|
|
1. `npm run check`
|
|
2. `npm run build`
|
|
3. re-run desktop PageSpeed
|
|
4. manually inspect live `<head>` output and generated crawl files
|
|
|
|
---
|
|
|
|
## Related files already present
|
|
- `docs/seo-audit/Google-SEO-Report-mnq.elkazurrotaberna.es-full.pdf`
|
|
- `docs/seo-audit/pagespeed-priority-list.md`
|