Auditar y optimizar SEO de OMZONE: meta tags, structured data, local SEO Puerto Vallarta, Open Graph, sitemap, keywords, hreflang, Core Web Vitals, headings y accesibilidad de contenido público.
Ejemplos concretos:
copywriter o contentreact-components.instructions.mdresponsive-auditortask-doc-writer.github/instructions/seo.instructions.mdindex.html revisado — meta tags basesrc/components/common/SEOHead.jsx revisado — componente SEOsrc/hooks/useSEO.js revisado — hooks de structured datapublic/sitemap.xml y public/robots.txt revisadosscripts/generate-sitemap.mjs revisado — generación dinámicasrc/pages/public/ revisadasPaso 1 — Revisar index.html base
Verificar presencia de:
<html lang="en"> (idioma principal)og:site_name, og:type, twitter:card)Paso 2 — Revisar SEOHead component
Verificar que SEOHead.jsx:
{keyword} — OMZONE, ≤60 charsnoindex para páginas no indexablesPaso 3 — Revisar StructuredData component
Verificar que:
@context y @type<head> vía HelmetPaso 4 — Auditar cada página pública
Para cada archivo en src/pages/public/, verificar:
| Criterio | Check |
|---|---|
<SEOHead> presente | ¿Usa el componente? |
| Title único | ¿No se repite con otra página? |
| Title ≤60 chars | ¿Se verá completo en SERP? |
| Title incluye keyword | ¿Contiene keyword relevante? |
| Description única | ¿No es la default genérica? |
| Description ≤155 chars | ¿No se trunca? |
| Description incluye ubicación | ¿Menciona PV/BdB cuando aplica? |
| Canonical URL | ¿URL absoluta correcta? |
| OG image | ¿Tiene imagen 1200×630? |
Solo un <h1> | ¿Heading hierarchy correcta? |
| Alt en imágenes | ¿Todas las <img> tienen alt descriptivo? |
| Links internos | ¿Hay links a otras páginas del sitio? |
Paso 5 — Auditar páginas dinámicas (experiencias, publicaciones)
Verificar en useSEO.js:
useExperienceSEO genera title desde seoTitle o publicNameseoDescription o shortDescriptionogImageId o heroImageIdPara publicaciones:
usePublicationSEO genera tipo "article"/p/Paso 6 — Verificar señales de local SEO
Checklist de local SEO para Puerto Vallarta / Bahía de Banderas:
| Señal | Estado | Acción |
|---|---|---|
Geo meta tags en <head> | geo.region=MX-JAL, geo.placename=Puerto Vallarta, coordenadas | |
| Organization JSON-LD | En layout público, con address PV, geo coords, areaServed | |
| Ubicación en meta descriptions | Mencionar PV/BdB en descriptions de páginas relevantes | |
| Ubicación en titles | Al menos home y experiences deben mencionarla | |
| Event JSON-LD con location | Slots con location deben inyectar Place en structured data | |
| NAP consistente | Nombre, Address, Phone iguales en toda la web | |
| Google Business Profile | Verificar que existe y es consistente (fuera de scope de código) |
Paso 7 — Verificar keyword integration
Revisar que las keywords target aparecen naturalmente en:
Keywords target principales:
wellness experiences Puerto Vallartawellness retreat Bahia de Banderassound healing Puerto Vallartameditation retreat Mexicoholistic wellness Riviera NayaritPaso 8 — Verificar sitemap
scripts/generate-sitemap.mjs incluye todas las páginas estáticas<lastmod> refleja fecha realrobots.txtPaso 9 — Verificar robots.txt
Allow: /)/admin/*, /portal/*, /checkout/*, etc.)Paso 10 — Verificar performance SEO
loading="lazy" below the foldPaso 11 — Generar reporte de hallazgos
Formato del reporte:
## SEO Audit Report — OMZONE
### Score: X/10
### Critical Issues (bloquean indexación)
- [ ] Issue description → fix
### High Priority (impactan ranking)
- [ ] Issue description → fix
### Medium Priority (mejoran posicionamiento)
- [ ] Issue description → fix
### Low Priority (nice to have)
- [ ] Issue description → fix
### Local SEO Status
- Geo tags: ✅/❌
- Organization schema: ✅/❌
- Location in content: ✅/❌
- NAP consistency: ✅/❌
### Pages Audited
| Page | Title OK | Desc OK | Canonical | OG | Schema | H1 |
| ---- | -------- | ------- | --------- | --- | ------ | --- |
| Home | ✅/❌ | ... | ... | ... | ... | ... |