Auditoría SEO — fibrolab.cl (re-audit v2)
Fecha: 2026-04-29 (segunda corrida del día tras commits/cambios en working tree)
URL: https://www.fibrolab.cl/
Tipo de negocio: Hybrid — Manufacturer + HomeAndConstructionBusiness + LocalBusiness + SAB nacional. Fábrica propia en La Pintana, instalación en todo Chile.
Stack: WordPress + WooCommerce + Rank Math + LiteSpeed Cache + GTM (GTM-W6DGGKK) + PixelYourSite Free 11.2.0.4
Idioma: es-CL (hreflang es-CL + x-default autorreferenciados)
NAP: Fibrolab · Los Álamos 2538, La Pintana, Región Metropolitana · +56 9 8225 6792 · RUT 77.424.952-4
SEO Health Score — 63 / 100
| Categoría | Peso | Score | Ponderado |
|---|---|---|---|
| Technical SEO | 22% | 74 | 16.28 |
| Content Quality / E-E-A-T | 23% | 55 | 12.65 |
| On-Page SEO | 20% | 62 | 12.40 |
| Schema / Datos estructurados | 10% | 62 | 6.20 |
| Performance (CWV proxy) | 10% | 70 | 7.00 |
| AI Search Readiness (GEO) | 10% | 52 | 5.20 |
| Imágenes | 5% | 75 | 3.75 |
| Total | ~63 |
Local SEO (informativo, fuera de fórmula): 58 / 100 — empeora 3 puntos vs ayer porque la verificación live confirmó que /contacto/ no existe (301 a home), eliminando el candidato natural para Google Maps embed.
Lectura del score: el sitio NO retrocedió; los subagentes encontraron issues nuevos (Merchant Center
hasMerchantReturnPolicy/shippingDetails, breadcrumb producto incompleto, URL/jacuzzi/mal escrita en llms.txt,og:type: articleen categorías,/contacto/301,/bordes/con noindex en lugar de 301) que el audit de ayer no detectó. Varios fixes críticos del audit anterior sí aterrizaron en código (ver sección "Fixes confirmados" más abajo).
Fixes confirmados desde audit anterior (✓)
Verificados en HTML/PHP live de hoy:
- Critical CSS inline + main CSS deferred —
functions.php:154-163y:297-310. CSS principal se carga conmedia="print" onload. - Google Fonts self-hosted (Montserrat + Nunito WOFF2 variables) —
functions.php:128-139. Poppins eliminado.preloadconcrossorigin. - jQuery
defer—functions.php:274-283, filtrofibrolab_defer_jquery_scriptsconfirmado en HTML live. - Rank Math
@idalias a#localbusiness—functions.php:842-854. Cero nodosOrganizationhuérfanos. - Deduplicación schema: WooCommerce
woocommerce_structured_data_productsuprimido + Rank Math Product/Article/BreadcrumbList suprimidos vía filtro. Cero duplicados detectados en URLs muestreadas. - Garantía dual aclarada en
/nosotros/(page-nosotros.php:168-169): "5 años estructural en piscinas nuevas / 1 año en reparación". - FAQ
/reparacion/reescrita con contenido técnico genuino: aparecen ahora rodamina, ISO-NPG, ASTM C581, CSM 300-450 g/m². El benchmark de calidad esperado. - Favicon resuelto en HTML (link rel=icon a icon-100x100.png), aunque
/favicon.icodirecto sigue 404. - llms.txt incluye
/reparacion/y/nosotros/que faltaban. Serviceschema completo en las 5 páginas:image,areaServed,provider @idvinculado a#localbusiness,offersconpriceCurrency: CLP.- Headers de seguridad: HSTS preload, CSP completa con
report-uri, X-Frame-Options, X-Content-Type-Options, Permissions-Policy, Referrer-Policy strict-origin-when-cross-origin.
Plan de acción priorizado
CRÍTICO (esta semana)
hasMerchantReturnPolicy+shippingDetailsausentes enProductOffer —functions.php:658-671. Google Merchant Center los exige desde 2024 para rich results de producto. Sin estos campos, ningún producto califica para Shopping Graph ni rich snippet de precio en SERP. Bloqueador comercial directo./contacto/no existe — devuelve 301 a home — Verificado live. Elimina el candidato natural para<iframe>Maps embed, formulario de contacto independiente, yContactPageschema. Crear página dedicada con: NAP completo, embed GBP, formulario, horario, schemaContactPage+Organization.contactPoint.- Sin política de privacidad ni Términos & Condiciones —
/politica-de-privacidad/,/terminos-y-condiciones/y/privacidad/devuelven HTTP 404. Footer sin enlaces legales. Ley 19.496 (Protección al Consumidor) exige información precontractual escrita para ventas sobre $100K CLP. Riesgo regulatorio activo con Sernac. Trustworthiness es el eje de mayor peso en E-E-A-T (30%). - Sin mención de Sernac ni derechos del consumidor — Cero ocurrencias de "Sernac", "consumidor", "Ley 19.496" en las 9 páginas analizadas. Gap QRG Sept-2025 para servicios financiados.
- Title home sin tilde:
<title>Fabrica de Piscinas FIBROLAB...debe ser "Fábrica". OG y Twitter arrastran el mismo error. Corregir en Rank Math → Inicio → Título SEO. - Meta description "6 años" vs OG "10 años" — dos valores distintos en mismo render.
foundingDate: 2020en schema indica ~6 años. Unificar en Rank Math → Inicio → Descripción General + Social. - Pasajes definitorios "first-40-words" ausentes en
/piscinas-de-fibra/,/spas/,/jacuzzi/,/reparacion/. Las 4 páginas abren con banner promocional ("Temporada Baja…") o lista de componentes en lugar de definición. Bloqueante #1 de citación AI Overviews / Perplexity / ChatGPT. - URL incorrecta en llms.txt:
/spa-y-jacuzzi/(que hace 301) en lugar de/jacuzzi/. NEW. Bloquea resolución de la entidad jacuzzi por ChatGPT. - Speakable schema ausente en todas las páginas — Una línea de JSON-LD apuntando al CSS selector del bloque definitorio (cuando exista) activa extracción confiable en Google AIO.
ALTO (2 semanas)
@typeLocalBusiness sinManufacturer—functions.php:349. Cambiar a["Manufacturer", "HomeAndConstructionBusiness", "LocalBusiness"]. Diferenciador vertical clave; Fibrolab fabrica producto propio.postalCode8830000incorrecto —functions.php:389. La Pintana opera en rango 8820xxx (Los Álamos 2538 ~ 8830426 según fuentes; el agente schema lo señaló 8830426, pero el agente local apunta 8820xxx; verificar oficialmente en Correos de Chile antes de sustituir). Postal code incorrecto rompe matching de citaciones agregadas.sameAssin URL del Google Business Profile —functions.php:411-414. Solo Facebook + Instagram. Agregarhttps://maps.app.goo.gl/<id>(URL pública del GBP). Prerequisito: reclamar/verificar el GBP.- Sin embed Google Maps en ningún template del sitio — Cero
<iframe>Maps en homepage, /nosotros/, ni en /contacto/ (que no existe). El signal de GBP de mayor peso, totalmente ausente. - Breadcrumb de producto incompleto —
/modelo/piscina-4-8-metros/emiteInicio → Piscina 4.8 Metros, falta nivel intermedioPiscinas de Fibra → /piscinas-de-fibra/. Bloquea rich results de breadcrumb. AggregateRatingno se emite — La lógica condicional enfunctions.php:429-440(home) y:674-713(productos) es correcta y policy-compliant, pero requiere reseñas WooCommerce aprobadas. Hoy hay 0. Importar 3-5 reviews reales vía el admin deinc/fl-reviews.php.- Tabla comparativa fibra vs hormigón vs proyectado ausente — #1 pasaje citable para query "qué piscina comprar Chile". Insertar tabla HTML en
/piscinas-de-fibra/y replicar enllms.txt. - Definición spa vs jacuzzi ausente — Alta demanda de búsqueda sin respuesta.
/spas/y/jacuzzi/coexisten con productos parcialmente solapados. Insertar bloque definitorio + tabla diferencial en al menos una de las dos. /spas/sin tabla de specs técnicas — 794 palabras pero cero números (jets, capacidad, kW, voltaje, dimensiones por modelo). FAQ responde "similar a un electrodoméstico grande" en lugar de cifras. Para productos $3.7M-$5.3M esto bloquea decisión informada./jacuzzi/thin content — ~430 palabras. Sin specs ni diferenciación./nosotros/sin equipo nombrado — 453 palabras (vs target 500-600). Sin nombres del equipo, CV del fundador, certificaciones SEC, número MINVU si aplica.- FAQ
/piscinas-de-fibra/con tono incongruente y "muchos años" — Texto auto-referencial mezclando 2ª/3ª persona ("Si quiere tener un bonito jardín…", "Eres un instalador?"). La frase "muchos años en el mercado" contradicefoundingDate: 2020. Reescribir con el mismo registro técnico de/reparacion/y/bombas-de-calor/. /financiamiento-salvum/sin CAE / tasas de referencia — Menciona "Forum Servicios Financieros S.A." pero sin Carga Anual Equivalente. Ley 19.496 Art. 37 lo exige en publicidad de crédito al consumo. NEW.- Testimonios sin comuna —
front-page.php:208-268. Los 10 testimonios (Felipe Faundez, Katherine Meller, Isabela Mora, Ernesto González, Gabriela López, Marco Soto, Sergio Ortega, Paola Olivares, Renato Díaz, Guillermo Bustos) tienen nombre+apellido pero ningún campolocation. La comuna es el geo-anchor local más fuerte en es-CL. Agregar'location' => 'Maipú, RM'al array y renderizar. - IndexNow key file 404 —
GET /<hex32>.txtdevuelve 404 conx-litespeed-tag: 074_HTTP.404. La lógica enfunctions.php:1626-1639es correcta, pero LiteSpeed Cache intercepta antes de WP. Excluir patrón/<hex>.txten LiteSpeed → Excluir → URI (regex). O bien crear el archivo físico en raíz. og:type: articleen/spas/y/jacuzzi/— Páginas de categoría deberían usarwebsiteoproduct. Rank Math asignaarticlepor defecto a non-front-page. Corregir en Rank Math por página → Social → OG Type. NEW.- GTM en
<head>— Aunquej.async=true, el snippet se inyecta víawp_head(). Mover awp_body_openreduce parser-block en INP móvil.
MEDIO (1 mes)
/bordes/connoindex, follow— Solución mínima pero incompleta para el duplicado vs/bordes-de-piscina/. Reemplazar por 301 permanente al canónico para consolidar señales de enlace.local-sitemap.xmlcon un único KML —locations.kmlno es página HTML indexable. Eliminar el sitemap o reemplazar la entrada por/nosotros/.post-sitemap.xmlcon lastmod 2024-11-17 — 17 meses sin posts. No tocar el sitemap (todos los posts existentes devuelven 200) pero publicar al menos 1 post antes de 2026-06-01 para refrescar.Disallow: /wp-json/wp/v2/usersdebajo delSitemap:— funcional pero estilísticamente mal. Reordenar dentro del bloqueUser-agent: *.longitudecon 4 decimales —functions.php:395. PHP serializa float-70.63280como-70.6328(pierde trailing zero). Cambiar a string'-70.63280'para forzar 5 decimales (~1.1 m de precisión).priceValidUntil = date('Y-12-31')—functions.php:665. La cadena'Y-12-31'produce hoy2026-12-31"por accidente" (PHP solo reemplazaY, los-12-31viajan como literal). El día 1 enero 2027 emitirá fecha pasada e invalidará el Offer. Cambiar adate('Y') . '-12-31'.selleren Product Offer —functions.php:666-669. Apunta aOrganizationhuérfana sin@id. Cambiar a{"@id": "https://www.fibrolab.cl/#localbusiness"}para vincular al grafo.Serviceschema conimagevacía en/bordes-de-piscina/—functions.php:549. Llenar URL real.WebPageausente en páginas de servicio interiores —/piscinas-de-fibra/,/spas/,/jacuzzi/,/bombas-de-calor/,/reparacion/no emiten nodoWebPage. Solo home y producto. Reduce profundidad del knowledge graph. NEW.hasMapausente del LocalBusiness — agregar misma URL del GBP.pys-version-scriptPixelYourSite conconsole.logen producción — Ruido. Filtrar víascript_loader_tago configurar PixelYourSite. NEW.llms.txtincompleto vs spec: agregar## Last-Updated: 2026-04-29, declaración de licencia (CC BY 4.0 o RSL), sección## FAQcon 3-5 Q&A (incluyendo diferencia spa vs jacuzzi y costo instalación),## Comparativa de Tipos de Piscina(replicar la tabla del sitio).- FAQPage JSON-LD ausente — Las 5 páginas con FAQ HTML no emiten markup. Aunque Google restringió rich result a gov/health desde Aug 2023, AI engines (Perplexity, ChatGPT, AIO) siguen extrayendo FAQPage estructurado. Ganancia AI marginal pero gratuita.
- Authoritativeness — sin equipo, sin prensa, sin YouTube — Listar 1-2 personas en
/nosotros/con rol y años de oficio. Crear/enlazar canal YouTube si existe (correlación 0.737 con citación AI). Buscar y citar 1 mención de prensa o asociación gremial chilena (CChC, Cámara de Comercio).
BAJO (backlog)
- Slider hero auto-rotate 3000 ms → subir a 5000-6000 ms.
- CSP con
unsafe-inline/unsafe-eval— inevitable con GTM/Woo, documentar. - Alt text de galerías genéricos ("Instalación Fibrolab N") — agregar comuna y modelo.
WebSite SearchActionya presente en home; agregar consistencia entre nombres de marca ennameyalternateName.- Tono FAQ
/piscinas-de-fibra/mezcla registro hiperformal con coloquial — homogeneizar. - Teléfono ausente del header móvil — para conversión local (call-to-call).
- Cabecera
Allow: /para Bingbot por hygiene (heredado de wildcard). - Citaciones tier 1-2 chilenas (PA.cl, Guialocal.com, Cylex Chile, Foursquare) — listar con NAP idéntico al del schema (post-corrección postalCode).
Detalle por categoría
1. Technical SEO — 74/100
Confirmados PASS:
- Critical CSS inlined, main CSS deferred (media=print onload).
- Google Fonts self-hosted con preload + crossorigin.
- jQuery con defer confirmado en HTML.
- Canonical autorreferenciado en /, /piscinas-de-fibra/, /spas/, /jacuzzi/.
- meta robots: index, follow en muestreo.
- Hreflang es-CL + x-default correctos para sitio monolingüe.
- HSTS preload, CSP completa, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy, X-XSS-Protection.
- Favicon HTML resuelto.
- HTTP/2 + LiteSpeed cache HIT.
- 79 imágenes en home, todas con width/height (CLS PASS).
Gaps activos: Title sin tilde (CRIT), meta desc 6 vs OG 10 años (CRIT), IndexNow key 404 (HIGH), GTM en head (HIGH), og:type: article en categorías (MEDIUM, NEW), robots.txt orden (LOW).
2. Content Quality / E-E-A-T — 55/100
| Eje | Score |
|---|---|
| Experience | 52 |
| Expertise | 68 |
| Authoritativeness | 38 |
| Trustworthiness | 48 |
Fortalezas: RUT visible, NAP consistente, 1.000+ instalaciones declaradas, foundingDate y dirección coherentes entre schema y contenido visible, contenido técnico genuinamente experto en /reparacion/ (rodamina, ISO-NPG, ASTM C581) y /bombas-de-calor/ (COP, kWh/m³, inverter), garantía dual aclarada en /nosotros/, financiamiento con entidad nombrada (Forum Servicios Financieros S.A. — Grupo BBVA).
Debilidades: Cero personal nombrado en /nosotros/, sin Sernac/política privacidad/T&C, FAQ /piscinas-de-fibra/ con tono incongruente y "muchos años" vs foundingDate 2020, /spas/ y /jacuzzi/ thin content sin specs numéricas, testimonios sin comuna, /financiamiento-salvum/ sin CAE/tasas legales.
3. Schema / Datos estructurados — 62/100
Bien hecho: Rank Math @id alineado a #localbusiness, deduplicación Woo+RM activa, @context HTTPS, URLs absolutas en todas las propiedades, Service schema completo con provider @id, WebSite SearchAction presente en home.
Gaps críticos: hasMerchantReturnPolicy + shippingDetails ausentes en Product (CRIT, blocker Merchant Center), Manufacturer no en @type, postalCode placeholder, sameAs sin GBP, breadcrumb producto incompleto (falta nivel intermedio), AggregateRating sin reseñas en BD, seller huérfano, WebPage ausente en interiores, Speakable ausente en todo el sitio, priceValidUntil con bug latente para 2027, longitude 4 decimales por float PHP.
4. AI Search Readiness (GEO) — 52/100
| Dimensión | Peso | Score |
|---|---|---|
| Citabilidad (pasajes definitorios) | 25% | 38 |
| Legibilidad estructural | 20% | 62 |
| Multi-modal (tablas) | 15% | 45 |
| Autoridad / brand signals | 20% | 28 |
| Accesibilidad técnica AI | 20% | 90 |
AI crawlers: GPTBot, OAI-SearchBot, ClaudeBot, PerplexityBot, Google-Extended explícitamente permitidos. CCBot bloqueado. Excelente.
Bloqueantes: Pasajes definitorios ausentes en 4/6 URLs analizadas (sólo / y parcial /bombas-de-calor/); URL /spa-y-jacuzzi/ errónea en llms.txt impide resolución de la entidad jacuzzi por ChatGPT; Speakable schema ausente; FAQPage JSON-LD ausente; sin tabla comparativa fibra-hormigón-proyectada (#1 pasaje citable de la categoría); brand authority débil (sin equipo, sin prensa, sin YouTube).
5. Sitemaps — 61/100
| Sitemap | URLs | Lastmod | Estado |
|---|---|---|---|
| post-sitemap.xml | 6 | 2024-11-17 | STALE 17 m |
| page-sitemap.xml | 11 | 2026-04-29 | Fresco |
| product-sitemap.xml | 29 | 2026-04-22 | Aceptable |
| local-sitemap.xml | 1 KML | 2026-04-29 | INVÁLIDO |
47 URLs totales, todas las muestreadas devuelven 200, canonicals correctos. Issues: /bordes/ con noindex (debe ser 301), local-sitemap con KML único, post-sitemap stale.
6. Local SEO — 58/100 (informativo)
| Dimensión | Peso | Score |
|---|---|---|
| GBP signals | 25% | 22 |
| Reviews y reputación | 20% | 55 |
| Local on-page | 20% | 68 |
| NAP / citaciones | 15% | 72 |
| Local schema | 10% | 78 |
| Local link / authority | 10% | 9 |
NAP consistente entre footer (+56 9 8225 6792) y schema (+56982256792 E.164). El gap principal es la ausencia total de embed Google Maps + sameAs GBP + página /contacto/.
7. Performance (CWV proxy, sin datos de campo) — ~70/100
Mejoras desde audit anterior cierran muchos gaps: jQuery defer, critical CSS inline, fonts self-hosted, todas las imágenes con width/height. HTML home 125 KB (verificar brotli activo: curl -H 'Accept-Encoding: br' -sI https://www.fibrolab.cl/ | grep content-encoding). Quedan: GTM en head (no body open), key IndexNow 404, optimizar caché para producto/categoría.
8. Imágenes — 75/100
Todas con width/height (CLS PASS). Pendiente: alt text genérico en galerías ("Instalación Fibrolab N") — agregar comuna + modelo.
Acciones inmediatas recomendadas (≤4 horas de trabajo, máximo retorno)
- (15 min) Rank Math → Inicio: corregir tilde en "Fábrica" + unificar "X años" entre meta description y OG description.
- (15 min) llms.txt: cambiar
/spa-y-jacuzzi/por/jacuzzi/, agregar## Last-Updated: 2026-04-29y## License: CC BY 4.0. - (20 min)
functions.php:349agregar'Manufacturer'. Línea:395cambiarlongitudea string. Línea:665cambiar adate('Y') . '-12-31'. Línea:666-669sellercon@id #localbusiness. - (30 min) Verificar postal code real de Los Álamos 2538 La Pintana en Correos de Chile y reemplazar
8830000en:389. - (30 min)
front-page.php:208-268agregar campolocation(comuna, RM) a cada uno de los 10 testimonios y renderizar. - (45 min) Insertar bloque definitorio (140-160 palabras) antes del grid de productos en
/piscinas-de-fibra/,/spas/,/jacuzzi/,/reparacion/. AgregarSpeakableJSON-LD apuntando al CSS selector del bloque. - (1 h) Insertar tabla comparativa fibra vs hormigón vs proyectado en
/piscinas-de-fibra/y replicarla enllms.txt. - (1 h) Agregar
hasMerchantReturnPolicy+shippingDetailsal Product Offer enfunctions.php:658-671(bloqueador Merchant Center).
Estos 8 fixes elevan el score estimado de 63 → ~74-78.
Limitaciones de esta auditoría
- Sin Python disponible localmente: no se ejecutaron los scripts de
pagespeed_check.py,crux_history.py,gsc_inspect.py,ga4_report.py. CWV reportado es proxy basado en HTML/recursos, no datos de campo CrUX/GSC. - Sin DataForSEO MCP: no se ejecutó geo-grid rank tracking (se omitió subagente seo-maps).
- Sin Lighthouse / Playwright: no hay validación de pintado above-the-fold ni screenshots.
- GBP live data (categoría primaria, número de reviews, posts, Q&A) no verificable sin acceso a la cuenta o herramienta paga.
- Citaciones Tier 1-2 chilenas (PA.cl, Guialocal, Cylex, Infobel) no verificadas.
- Postal code de Los Álamos 2538: dos agentes sugirieron rangos distintos (8820xxx vs 8830426); confirmar oficialmente con Correos de Chile antes de editar.
- Versión schema: re-verificar con Rich Results Test (search.google.com/test/rich-results) tras cada cambio en JSON-LD.