feat: improve seo, trust signals, and performance

This commit is contained in:
Manuel
2026-07-20 12:07:23 +02:00
parent 49f391ee49
commit faed590a66
27 changed files with 1444 additions and 153 deletions
@@ -0,0 +1,347 @@
# 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`
+133
View File
@@ -0,0 +1,133 @@
# PageSpeed priority list
Source reviewed:
- PageSpeed Insights desktop report for `https://mnq.elkazurrotaberna.es/`
- Existing audit artifact: `Google-SEO-Report-mnq.elkazurrotaberna.es-full.pdf`
## Scores
- Performance: 80
- Accessibility: 96
- Best Practices: 100
- SEO: 100
## Fix first
### 1. Remove or reduce render-blocking font requests
**Files**
- `src/layouts/MainLayout.astro`
**Change**
- Reduce Google Fonts weights/families.
- Replace Material Symbols webfont with inline/local SVGs if possible.
- Keep `preconnect` only if those remote font requests remain.
- Re-evaluate the global body fade if it delays perceived first paint.
**Why**
- Lighthouse reports render-blocking requests with ~1380 ms potential savings.
---
### 2. Add explicit image dimensions and tighten image delivery
**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`
**Change**
- Add `width` and `height` to page images.
- Verify above-the-fold images are not larger than their rendered size.
- Keep optimized formats consistent.
- Do not rely on CSS sizing alone for layout stability.
**Why**
- Lighthouse reports ~1423 KiB image savings.
- It also flags missing explicit image dimensions.
---
### 3. Shrink heavy assets in `public/images/`
**Files / folders**
- `public/images/`
- `public/images/generated/`
**Change**
- Replace or recompress large `.png` assets where a lighter format is acceptable.
- Prefer existing `.webp` variants where possible.
- Remove unused duplicates.
- Audit especially the heavier files such as `foto-corporativo.png`, `foto-bodas.png`, `foto-canapes.png`, `foto-plato-mnq.png`, and oversized logo assets.
**Why**
- The current image payload is a major part of the desktop performance loss.
---
### 4. Fix footer contrast
**Files**
- `src/components/SiteFooter.astro`
- `src/styles/components.css`
**Change**
- Increase footer text contrast.
- Reduce or remove low-opacity muted text in the footer.
- Review `.footer-bottom p`, `.footer-brand p`, and any `text-muted` + `opacity` combinations.
**Why**
- Lighthouse flags footer contrast issues.
---
### 5. Make WhatsApp links use the same accessible purpose
**Files**
- `src/components/SiteHeader.astro`
- `src/components/SiteFooter.astro`
**Change**
- Ensure identical WhatsApp destinations use a consistent accessible label.
- If visible text differs by context, normalize it with `aria-label`.
**Why**
- Lighthouse flags identical links with mismatched purpose/description.
---
### 6. Replace progress bar width animation with transform animation
**Files**
- `src/styles/animations.css`
- related update logic in `src/layouts/MainLayout.astro`
**Change**
- Stop animating `width` on `.scroll-progress`.
- Use `transform: scaleX(...)` with `transform-origin: left` instead.
**Why**
- Lighthouse flags non-composited animations.
---
### 7. Trim unused CSS
**Files**
- `src/styles/components.css`
- `src/styles/utilities.css`
- `src/styles/animations.css`
- `src/styles/layout.css`
**Change**
- Remove unused helpers, stale animations, and dead selectors.
**Why**
- Lighthouse reports unused CSS, but this is lower priority than fonts and images.
## Recommended implementation order
1. `src/layouts/MainLayout.astro`
2. image dimensions in page files
3. asset optimization in `public/images/`
4. footer contrast
5. WhatsApp link labeling
6. scroll progress animation
7. CSS cleanup
## Validation after each batch
1. `npm run check`
2. `npm run build`
3. Re-run desktop PageSpeed