Auditor de Página de Aterrizaje
Una auditoría que analiza la página y a las personas que llegan a ella. Cada hallazgo proviene de una llamada que ejecuta esta habilidad, y cada hallazgo muestra los números o el elemento de la página que lo respalda.
Antes de empezar
Necesitas tener conectado el MCP de InsightfulPipe. Google Analytics 4 y DataForSEO marcan el camino principal; las otras fuentes lo complementan.
- Llama a
query_contextsconrequest="accounts"para cada plataforma:google-analytics,google-search-console,dataforseo,screenshot,pagespeed-insightsygoogle-adssi la página recibe tráfico de pago. Anotaworkspace_id,brand_id, elproperty_idde GA4 y elsite_urlde Search Console. Si hay varias propiedades, pregunta qué sitio. - Llama a
query_contextsconrequest="actions_details"paraget_reportylist_key_events(google-analytics),search_analytics,onpage_instant_pages,capture,core-web-vitals,accessibility-seoygaql, y sigue las estructuras de cuerpo que devuelve. - Pide tres cosas, y usa los valores predeterminados si el usuario no sabe:
- La página. Por defecto: la página de aterrizaje con más sesiones en GA4 (paso 1).
- La única acción para la que existe la página (registrarse, comprar, reservar una demo, llamar, descargar). Por defecto: el destino del primer CTA en el hero.
- El tipo de página: página de aterrizaje de pago, página de inicio, página de ventas, precios, funcionalidad, producto, generación de leads, evento. Por defecto: inferirlo de la URL y la mezcla de tráfico, y decirlo.
Fechas. GA4 necesita uno o dos días para procesar un día, y un día que aún no se ha procesado muestra sesiones sin participación. Usa los últimos 28 días que terminan 2 días antes de hoy. Search Console se retrasa más: finaliza su ventana 3 días antes de hoy. Indica ambas ventanas al principio del informe.
Cómo ejecutar las consultas
Cada cuerpo siguiente pasa por query_data con la plataforma que nombra, más workspace_id y brand_id. Las fechas provienen de una ejecución de prueba: usa tus propias ventanas. La ruta / y https://example.com/ representan la página que auditas. Reglas que las APIs aplican o los datos requieren:
landingPagede GA4 es una ruta sin el host (/pricing). Las filas con un valor vacío o(not set)son sesiones sin una vista de página; exclúyelas de las clasificaciones de página y di cuántas había.- Los filtros de GA4 usan
dimensionFilterconfilter/stringFilter(matchTypeEXACT),inListFilter, o unandGroupde expresiones. - Search Console filtra por la URL completa, incluyendo el host y la barra inclinada final que usa el sitio.
- GAQL de Google Ads: cualquier cosa en
ORDER BYtambién debe estar enSELECT. El dinero está en_micros; divídelo por 1,000,000. custom_jsde DataForSEO se ejecuta en un modelo de página sin motor de diseño:getBoundingClientRect,innerHeighty los estilos calculados no están presentes, yNodeList.forEachfalla. Usa buclesforsimples y orden del DOM, mantén el script por debajo de unos 2,000 caracteres, y leecustom_js_client_exceptioncuando la respuesta esté vacía. Cada llamadaonpage_instant_pagesse factura: una por página.
Si una llamada falla, continúa. Marca lo que alimenta como desconocido, di qué llamada falló y por qué, y vuelve a intentar una herramienta de página fallida una vez al final. Nunca llenes un vacío con una suposición.
Paso 1. Selecciona la página y verifica el seguimiento
{"platform": "google-analytics", "action": "get_report", "property_id": "properties/<PROPERTY_ID>",
"dimensions": ["date"], "metrics": ["sessions", "engagedSessions", "keyEvents"],
"start_date": "2026-09-06", "end_date": "2026-10-05"}
Ejecuta esta verificación diaria durante los últimos 30 días hasta ayer.
- Cambio de seguimiento: si las sesiones de un día son al menos 5 veces la mediana de los 7 días anteriores, y los días siguientes se mantienen en ese nivel, la etiqueta cambió ese día (o al revés para una caída). Comienza la ventana en el primer día del nuevo nivel.
- Días no procesados: un día reciente con sesiones y 0 sesiones comprometidas aún no se ha procesado. Mantenlo fuera de la ventana.
- Ventana corta: si quedan menos de 7 días, la auditoría aún se ejecuta, pero di al principio del informe que las tasas son direccionales.
{"platform": "google-analytics", "action": "get_report", "property_id": "properties/<PROPERTY_ID>",
"dimensions": ["landingPage"],
"metrics": ["sessions", "engagedSessions", "engagementRate", "keyEvents", "averageSessionDuration"],
"start_date": "2026-10-01", "end_date": "2026-10-04",
"orderBys": [{"metric": {"metricName": "sessions"}, "desc": true}], "limit": 25}
Ejecuta el mismo informe con deviceCategory como única dimensión para la tasa de participación general del sitio. Si el usuario no nombró ninguna página, audita la página de aterrizaje con más sesiones y enumera las siguientes cuatro como candidatas para otra ejecución.
Paso 2. Medición: ¿se cuenta la conversión de la página?
{"platform": "google-analytics", "action": "list_key_events", "property_id": "properties/<PROPERTY_ID>"}
{"platform": "google-analytics", "action": "get_report", "property_id": "properties/<PROPERTY_ID>",
"dimensions": ["pagePath", "eventName"], "metrics": ["eventCount", "totalUsers"],
"start_date": "2026-10-01", "end_date": "2026-10-04",
"dimensionFilter": {"filter": {"fieldName": "pagePath", "stringFilter": {"matchType": "EXACT", "value": "/"}}}}
{"platform": "google-analytics", "action": "get_report", "property_id": "properties/<PROPERTY_ID>",
"dimensions": ["pagePath", "linkUrl", "outbound"], "metrics": ["eventCount"],
"start_date": "2026-10-01", "end_date": "2026-10-04",
"dimensionFilter": {"andGroup": {"expressions": [
{"filter": {"fieldName": "pagePath", "stringFilter": {"matchType": "EXACT", "value": "/"}}},
{"filter": {"fieldName": "eventName", "stringFilter": {"matchType": "EXACT", "value": "click"}}}]}}}
| Resultado | Cuándo |
|---|---|
| Medido | el informe de aterrizaje muestra eventos clave para la página, o se dispara un evento clave en ella |
| Parcialmente | solo se registran clics en CTA (un evento de clic cuyo linkUrl es el destino del CTA) |
| No medido | ninguno de los anteriores |
- Los eventos clave cuyos nombres contienen "test" o "qa" no cuentan. Informa cuántos se configuraron y cuántos se dispararon en la ventana.
- El evento
clickintegrado de GA4 registra solo enlaces salientes. Los enlaces dentro del sitio, y a dominios configurados para medición entre dominios, no se registran. Por lo tanto, ninguna fila de clic para el destino del CTA significa "no medido", nunca "nadie hizo clic". - Cuando la página no está medida, no hay tasa de conversión. Usa los proxies y etiquétalos como proxies: tasa de participación, la proporción de sesiones de la página que llegan a la ruta de conversión (paso 3), y desplazamiento al 90% (el evento
scrollintegrado; agregadeviceCategoryal informe de eventos para dividirlo por dispositivo, usuarios que se desplazaron versus usuarios que vieron).
Paso 3. Quién llega y adónde van después
{"platform": "google-analytics", "action": "get_report", "property_id": "properties/<PROPERTY_ID>",
"dimensions": ["landingPage", "sessionDefaultChannelGroup", "sessionSourceMedium"],
"metrics": ["sessions", "engagedSessions", "engagementRate"],
"start_date": "2026-10-01", "end_date": "2026-10-04",
"dimensionFilter": {"filter": {"fieldName": "landingPage", "stringFilter": {"matchType": "EXACT", "value": "/"}}}}
Ejecútalo de nuevo con deviceCategory en lugar de las dimensiones de canal, y una vez más con pagePath y la métrica sessions (top 10 por sesiones) para ver a dónde envía la página a las personas. La primera fila suele ser la página misma, por lo que 10 filas muestran 9 páginas siguientes. Luego:
- Fuentes: la proporción de sesiones de cada canal y su tasa de participación. Una fuente con 10 o más sesiones y 0 comprometidas es un problema de tráfico (un bot, un buscador de vistas previas o una etiqueta rota), no un problema de página. Señálalo y proporciona la tasa de participación de la página con y sin él.
- Dispositivos: la cuota móvil determina cuánto pesan los hallazgos móviles.
- Ruta de conversión: la proporción de sesiones que llegan a la página de precios, demo, registro o pago.
- Confirma tráfico de pago. Las sesiones
google / cpccuentan como Google Ads solo cuando la sesión tiene unsessionGoogleAdsCustomerId, o la cuenta de anuncios muestra clics en esta URL. De lo contrario, llámalas "pago no confirmado" y dilo.
{"platform": "google-analytics", "action": "get_report", "property_id": "properties/<PROPERTY_ID>",
"dimensions": ["landingPage", "sessionCampaignName", "sessionGoogleAdsCustomerId"], "metrics": ["sessions", "engagedSessions"],
"start_date": "2026-10-01", "end_date": "2026-10-04",
"dimensionFilter": {"andGroup": {"expressions": [
{"filter": {"fieldName": "landingPage", "stringFilter": {"matchType": "EXACT", "value": "/"}}},
{"filter": {"fieldName": "sessionSourceMedium", "stringFilter": {"matchType": "EXACT", "value": "google / cpc"}}}]}}}
Intención orgánica (Search Console):
{"platform": "google-search-console", "action": "search_analytics", "site_url": "https://example.com/",
"dimensions": ["query"], "start_date": "2026-09-06", "end_date": "2026-10-03", "row_limit": 25,
"dimension_filter_groups": [{"filters": [{"dimension": "page", "operator": "equals", "expression": "https://example.com/"}]}]}
Divide las consultas de marca (el nombre del negocio y sus errores ortográficos) del resto, y da la cuota de marca de los clics. Los visitantes de marca ya conocen el nombre: la página debe confirmarlo y dirigirlos. Las consultas sin marca llevan las palabras que el titular debería reflejar.
Coincidencia de mensajes de pago (Google Ads):
SELECT landing_page_view.unexpanded_final_url, metrics.clicks, metrics.cost_micros, metrics.conversions
FROM landing_page_view WHERE segments.date DURING LAST_30_DAYS ORDER BY metrics.clicks DESC LIMIT 20
SELECT ad_group_ad.ad.final_urls, ad_group_ad.ad.responsive_search_ad.headlines, metrics.clicks, metrics.impressions
FROM ad_group_ad WHERE segments.date DURING LAST_30_DAYS AND ad_group_ad.status = 'ENABLED'
ORDER BY metrics.clicks DESC LIMIT 20
SELECT ad_group.name, ad_group_criterion.keyword.text, ad_group_criterion.quality_info.post_click_quality_score,
ad_group_criterion.final_urls, metrics.clicks
FROM keyword_view WHERE segments.date DURING LAST_30_DAYS AND metrics.clicks > 0 ORDER BY metrics.clicks DESC LIMIT 50
Ejecuta estas a través de action="gaql" con el account_id. Si landing_page_view no tiene filas para la página, omite las otras dos: no hay tráfico de pago que coincidir. post_click_quality_score es la calificación de experiencia de página de aterrizaje de Google (por encima del promedio, promedio, por debajo del promedio) para la palabra clave. Las URL finales de las palabras clave suelen estar vacías porque se usa la URL del anuncio, así que vincula las palabras clave a la página a través del grupo de anuncios. Conserva los anuncios cuyas final_urls apuntan a la página y compara sus titulares con el H1 y la oferta de la página. Para Meta, LinkedIn u otros anuncios, o un correo electrónico que enlace a la página, pide al usuario que pegue el anuncio o correo (titular, cuerpo, oferta y CTA) y compáralo con la página de la misma manera: el H1 refleja el titular, cada oferta y afirmación está en la página, y el CTA de la página continúa el del anuncio. La habilidad ad-landing-page-match-scorer profundiza más, si está instalada.
Paso 4. Desmonta la página
{"platform": "dataforseo", "action": "onpage_instant_pages", "url": "https://example.com/", "enable_javascript": true,
"custom_js": "var o={seq:[],nav:0,links:document.links.length,forms:document.forms.length,inputs:document.querySelectorAll('input,select,textarea').length,imgs:0,noalt:0,vid:document.querySelectorAll('video,iframe').length,proof:{}};function E(l,f){for(var i=0;i<l.length;i++)f(l[i])}function t(e){return(e.textContent||'').replace(/\\s+/g,' ').trim()}function C(e){for(var p=e;p;p=p.parentNode){var n=(p.tagName||'').toLowerCase();if(n=='nav'||n=='header'||n=='footer')return 1}return 0}var f=0;E(document.querySelectorAll('h1,p'),function(e){if(e.tagName=='H1')f=1;else if(f==1&&t(e)){o.sub=t(e).slice(0,200);f=2}});E(document.querySelectorAll('h1,h2,h3,a[href],button'),function(e){var n=e.tagName.toLowerCase();if(n.charAt(0)=='h'){o.seq.push([n,t(e).slice(0,90)]);return}if(C(e))return;var c=(e.getAttribute('class')||'')+' '+(e.getAttribute('role')||'');if(n=='a'&&!/btn|button|cta|bg-/.test(c))return;var x=t(e).slice(0,50);if(x)o.seq.push(['cta',x,(e.getAttribute('href')||'').slice(0,80)])});E(document.querySelectorAll('header a[href],nav a[href]'),function(){o.nav++});E(document.querySelectorAll('img'),function(e){o.imgs++;if(!e.hasAttribute('alt'))o.noalt++});var x=t(document.body);o.words=x.split(' ').length;var p={testimonial:/testimonial|what .{0,12}say/i,rating:/★|\\d(\\.\\d)? ?\\/ ?5|g2|capterra|trustpilot/i,logos:/trusted by|used by|customers include/i,count:/\\d[\\d,]*\\+? (customers|users|teams|companies|marketers)/i,works_with:/works with|integrates with/i,security:/soc ?2|gdpr|encrypt/i,guarantee:/guarantee|refund|cancel anytime/i,faq:/faq|frequently asked/i};for(var k in p){var m=x.match(p[k]);o.proof[k]=m?m[0].slice(0,40):null}o;"}
custom_js_response devuelve la página en orden de lectura (seq: titulares y CTAs fuera del encabezado, navegación y pie de página), el primer párrafo después del H1 (sub), recuentos y la primera coincidencia para cada tipo de prueba. Léelo así:
- Hero: todo antes del primer
h2. Anota el H1, el subtítulo y los CTAs allí. - CTAs: solo los elementos con un destino (
href) son CTAs. Los botones sin uno son pestañas, acordeones o un banner de cookies. Cuenta los destinos distintos y anota si el principal vuelve después de la mitad de una página larga. - Prueba: una coincidencia es una pista, no un veredicto. Comprueba el texto a su alrededor antes de contarlo: un número en una demo de producto o un "seguro" en una respuesta de FAQ no es prueba. Los logotipos "Funciona con" muestran compatibilidad, no clientes.
- Salidas: recuento de enlaces de encabezado y navegación (
nav). En una página de aterrizaje de pago, cada uno es una salida. - Formularios:
formseinputs. - De la respuesta estándar:
meta.title,meta.htags,meta.content.plain_text_word_count, los índices de legibilidad ychecks(no_h1_tag,has_render_blocking_resources,no_image_alt,title_too_long).no_image_altpuede ser verdadero mientras el script encuentra un atributo alt, porquechecksrevisa las imágenes en el HTML renderizado, no solo las que encontró el script.
Paso 5. Renderiza la página en escritorio y móvil
Captura de pantalla del escritorio completo:
{"platform": "screenshot", "action": "capture", "url": "https://example.com/", "viewport": {"width": 1440, "height": 900}, "full_page": true}
Captura de pantalla de la ventana gráfica móvil:
{"platform": "screenshot", "action": "capture", "url": "https://example.com/", "viewport": {"width": 375, "height": 812}, "full_page": false}
Métricas de velocidad de página (escritorio):
{"platform": "pagespeed-insights", "action": "core-web-vitals", "url": "https://example.com/", "strategy": "desktop"}
Métricas de velocidad de página (móvil):
{"platform": "pagespeed-insights", "action": "core-web-vitals", "url": "https://example.com/", "strategy": "mobile"}
Verificación de accesibilidad y SEO:
{"platform": "pagespeed-insights", "action": "accessibility-seo", "url": "https://example.com/", "strategy": "desktop"}
Qué buscar en las capturas de pantalla
Escritorio (ancho de 1440 píxeles):
- Doblez: la línea donde los usuarios deben desplazarse. Mide la altura de la ventana gráfica (unos 800 píxeles) desde la parte superior. ¿El H1, el subtítulo y el CTA principal son visibles sin desplazarse? ¿El CTA principal está por encima del pliegue?
- Espacio en blanco: ¿el texto se extiende a lo ancho de la página (más de 60-70 caracteres por línea), o hay márgenes anchos? ¿Los párrafos tienen espacio para respirar?
- Jerarquía visual: ¿el H1 es claramente el elemento más grande? ¿Los H2 son más pequeños? ¿Los CTAs se destacan de los enlaces de texto normal?
- Peso de los CTAs: (el CTA principal es visualmente dominante) o (el CTA principal compite con enlaces de navegación, otros botones o imágenes). El CTA debería ser, con diferencia, el elemento con más color y contraste en la ventana gráfica inicial.
Móvil (ancho de 375 píxeles):
- Toque: ¿están los botones a al menos 48 píxeles de alto? ¿Hay suficiente espacio entre los enlaces para que un dedo golpee el correcto?
- Lectura: ¿el tamaño del texto del cuerpo es de al menos 16 píxeles (el mínimo de iOS y Android para que el navegador no haga zoom)? ¿Las líneas tienen 40-60 caracteres?
- Desplazamiento del hero: ¿se ve inmediatamente el H1 y el CTA, o está el menú de hamburguesa y el logotipo ocupando la mitad de la pantalla?
Paso 6. Evalúa la página contra los siete pilares
Cada pilar obtiene una puntuación del 1 al 10. Una puntuación del 5 es el punto de referencia: una empresa SaaS típica en una página de aterrizaje de pago. Las puntuaciones son ordinales: un 6 es mejor que un 5, pero un 10 es raro.
| Pilar | Qué mide | Ponderación en la puntuación general | Coopera con |
|---|---|---|---|
| Seguimiento | Si la conversión se mide correctamente; si el seguimiento de CTA funciona; manejo de etiquetas rotas | 15% | Paso 2 |
| Tráfico | Calidad de la fuente (orgánico vs. pago vs. directo); engagement por canal; puntuación de calidad de anuncios; ajuste del mensaje del anuncio; tasa de rebote de búsqueda (profundidad de desplazamiento) | 15% | Paso 3 |
| Intención | Ajuste entre la consulta de búsqueda y el H1; cobertura de palabras clave no relacionadas; porcentaje de clics de marca; consultas perdidas (términos con clics pero sin impresiones para esta página); ajuste del anuncio de pago y la página; claridad de la oferta | 15% | Paso 3 |
| Estructura | Hero (H1, subtítulo, CTA); presencia y colocación del CTA principal; peso de los CTAs; cantidad de opciones; punto de elección (demasiados CTAs compitiendo); navegación (salidas); disposición y ritmo del contenido; agrupación de características; manejo de la prueba; formularios (longitud, fricción); pie de página (enlaces, CTAs) | 20% | Pasos 4, 5 |
| Prueba | Testimonios (específicos del rol, numerados, con nombre); calificaciones (G2, Capterra); estudios de caso; logotipos de clientes; recuentos de usuarios; premios; garantías; certificaciones de seguridad; premios; sellos de confianza; escasez/urgencia | 15% | Paso 4 |
| Velocidad | LCP (pintura con el contenido más grande); TBT (tiempo total de bloqueo); CLS (cambio de diseño acumulativo); recursos que bloquean el renderizado; optimización de imágenes; peso de la página; diferimiento de JS | 10% | Paso 5 |
| Móvil | Capacidad de toque; tamaño de fuente; espacio para lectura; visibilidad del hero; rendimiento móvil; resultados de la prueba de amigabilidad móvil | 10% | Pasos 4, 5 |
Puntúa cada pilar una vez, con una justificación de una línea. Por ejemplo: "Estructura: 4. El H1 es débil (8 palabras, sin verbo), no hay subtítulo, el CTA está debajo de 3 párrafos de texto," o "Velocidad: 7. LCP 1.8 s en escritorio, pero la página carga 3 scripts de análisis que no son del core." La puntuación general es el promedio ponderado de los pilares. Redondea la puntuación general al número entero más cercano.
Paso 7. Ejecuta el revisor y escribe el informe
Después de la puntuación, llama al revisor para cada pilar. El revisor toma el pilar, el valor actual y el contexto (las filas de datos y las observaciones que llevaron a la puntuación) y devuelve:
- Correcciones: hasta 5 cosas que arreglar, ordenadas por impacto. Cada una con una frase corta y una línea modificada para la página.
- Reescrituras: para el H1, el subtítulo, las secciones de prueba, los CTAs, el pie de página y cualquier elemento de página que el revisor considere que necesita cambio, versión que el usuario puede copiar y pegar.
Guarda el JSON del revisor tal como se devuelve para depuración.
Luego escribe el informe de auditoría. Comienza con un resumen ejecutivo: la puntuación general, el tipo de página, las fuentes de datos utilizadas (y perdidas) y lo que el usuario debe hacer primero. Sigue con una tabla que muestre la puntuación de cada pilar y las 3 correcciones principales. Luego, una página por pilar, con la sección de datos, la justificación de la puntuación y las correcciones. Termina con el apéndice técnico: ventanas de fechas, advertencias de datos, fallos de API y el JSON del revisor.
La longitud del informe debe coincidir con la gravedad del problema: un 9 en velocidad no necesita 3 párrafos; un 3 en estructura sí. No alabes; corrige. Los halagos no convierten.
Nota sobre los datos de Google Ads
El informe de Google Ads solo es posible si list_accounts de google-ads devuelve una cuenta para el brand_id y esa cuenta tiene un customer_id activo. Omite la sección de anuncios si la cuenta no existe o no muestra clics.
Ejemplo de salida
(No incluido - la salida de muestra es la versión en inglés. La salida real estará en el idioma de la solicitud del usuario.)