feat: improve seo, trust signals, and performance
This commit is contained in:
@@ -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`
|
||||
Reference in New Issue
Block a user