Auditor de Página de Destino
Uma auditoria que analisa a página e as pessoas que chegam até ela. Cada descoberta vem de uma chamada que esta skill executa, e cada descoberta mostra os números ou o elemento da página por trás dela.
Antes de começar
Você precisa ter o MCP do InsightfulPipe conectado. Google Analytics 4 e DataForSEO conduzem o caminho principal; as outras fontes complementam.
- Chame
query_contextscomrequest="accounts"para cada plataforma:google-analytics,google-search-console,dataforseo,screenshot,pagespeed-insightsegoogle-adsse a página receber tráfego pago. Anoteworkspace_id,brand_id, oproperty_iddo GA4 e osite_urldo Search Console. Se houver várias propriedades, pergunte qual site. - Chame
query_contextscomrequest="actions_details"paraget_reportelist_key_events(google-analytics),search_analytics,onpage_instant_pages,capture,core-web-vitals,accessibility-seoegaql, e siga as formas do corpo que ele retorna. - Pergunte por três coisas e use os padrões se o usuário não souber:
- A página. Padrão: a página de destino com mais sessões no GA4 (etapa 1).
- A única ação para a qual a página existe (inscrever-se, comprar, agendar uma demonstração, ligar, baixar). Padrão: o destino do primeiro CTA no hero.
- O tipo de página: página de destino paga, homepage, página de vendas, preços, funcionalidade, produto, geração de leads, evento. Padrão: inferir a partir da URL e da mistura de tráfego, e informar isso.
Datas. O GA4 precisa de um ou dois dias para processar um dia, e um dia que ainda não foi processado mostra sessões sem engajamento. Use os últimos 28 dias terminando 2 dias antes de hoje. O Search Console tem mais atraso: termine sua janela 3 dias antes de hoje. Informe ambas as janelas no topo do relatório.
Como executar as consultas
Cada corpo abaixo passa por query_data com o nome da plataforma, mais workspace_id e brand_id. As datas vêm de uma execução de teste: use suas próprias janelas. O caminho / e https://example.com/ representam a página que você está auditando. Regras que as APIs impõem ou que os dados exigem:
- GA4
landingPageé um caminho sem o host (/pricing). Linhas com valor vazio ou(not set)são sessões sem visualização de página; exclua-as das classificações de página e informe quantas existiam. - Filtros do GA4 usam
dimensionFiltercomfilter/stringFilter(matchTypeEXACT),inListFilterou umandGroupde expressões. - Search Console filtra pela URL completa, incluindo o host e a barra final que o site usa.
- Google Ads GAQL: qualquer coisa em
ORDER BYtambém deve estar emSELECT. Valores monetários estão em_micros; divida por 1.000.000. - DataForSEO
custom_jsé executado em um modelo de página sem mecanismo de layout:getBoundingClientRect,innerHeighte estilos computados não estão disponíveis, eNodeList.forEachfalha. Use loopsforsimples e ordem do DOM, mantenha o script com menos de cerca de 2.000 caracteres e leiacustom_js_client_exceptionquando a resposta estiver vazia. Cada chamadaonpage_instant_pagesé faturada: uma por página.
Se uma chamada falhar, continue. Marque o que ela alimenta como desconhecido, informe qual chamada falhou e por que, e tente novamente uma ferramenta de página que falhou uma vez no final. Nunca preencha uma lacuna com um palpite.
Etapa 1. Escolher a página e verificar o rastreamento
{"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"}
Execute esta verificação diária nos últimos 30 dias até ontem.
- Mudança de rastreamento: se as sessões de um dia forem pelo menos 5 vezes a mediana dos 7 dias anteriores, e os dias seguintes permanecerem nesse nível, a tag mudou naquele dia (ou o contrário para uma queda). Inicie a janela no primeiro dia do novo nível.
- Dias não processados: um dia recente com sessões e 0 sessões engajadas ainda não foi processado. Mantenha-o fora da janela.
- Janela curta: se restarem menos de 7 dias, a auditoria ainda é executada, mas informe no topo do relatório que as taxas são direcionais.
{"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}
Execute o mesmo relatório com deviceCategory como a única dimensão para a taxa de engajamento geral do site. Se o usuário não nomeou nenhuma página, audite a página de destino com mais sessões e liste as próximas quatro como candidatas para outra execução.
Etapa 2. Medição: a conversão da página está sendo contada?
{"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 | Quando |
|---|---|
| Medida | o relatório de destino mostra eventos-chave para a página, ou um evento-chave é disparado nela |
| Parcialmente | apenas cliques no CTA são registrados (um evento de clique cujo linkUrl é o destino do CTA) |
| Não medida | nenhum dos dois |
- Eventos-chave cujos nomes contenham "test" ou "qa" não contam. Informe quantos foram configurados e quantos foram disparados na janela.
- O evento
clickintegrado do GA4 registra apenas links de saída. Links dentro do site e para domínios configurados para medição entre domínios não são registrados. Portanto, nenhuma linha de clique para o destino do CTA significa "não medido", nunca "ninguém clicou". - Quando a página não é medida, não há taxa de conversão. Use os proxies e rotule-os como proxies: taxa de engajamento, a parcela das sessões da página que atingem o caminho de conversão (etapa 3) e rolagem de 90% (o evento
scrollintegrado; adicionedeviceCategoryao relatório de eventos para dividi-lo por dispositivo, usuários que rolaram contra usuários que visualizaram).
Etapa 3. Quem chega e para onde vão em seguida
{"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": "/"}}}}
Execute novamente com deviceCategory no lugar das dimensões de canal, e mais uma vez com pagePath e a métrica sessions (top 10 por sessões) para ver para onde a página envia as pessoas. A primeira linha geralmente é a própria página, então 10 linhas mostram 9 páginas seguintes. Então:
- Origens: a parcela de sessões de cada canal e sua taxa de engajamento. Uma origem com 10 ou mais sessões e 0 engajadas é um problema de tráfego (um bot, um buscador de pré-visualização ou uma tag quebrada), não um problema de página. Sinalize-o e forneça a taxa de engajamento da página com e sem ele.
- Dispositivos: a parcela mobile define quanto peso as descobertas mobile têm.
- Caminho de conversão: a parcela de sessões que atingem a página de preços, demonstração, inscrição ou checkout.
- Confirme tráfego pago. Sessões
google / cpccontam como Google Ads apenas quando a sessão tem umsessionGoogleAdsCustomerId, ou a conta de anúncios mostra cliques nesta URL. Caso contrário, chame-as de "pago não confirmado" e informe isso.
{"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"}}}]}}}
Intenção 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/"}]}]}
Divida as consultas de marca (o nome da empresa e seus erros de ortografia) do restante e forneça a parcela de cliques da marca. Visitantes da marca já conhecem o nome: a página precisa confirmá-lo e direcioná-los. Consultas que não são de marca carregam as palavras que o título deve ecoar.
Correspondência de mensagem paga (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
Execute-as através de action="gaql" com o account_id. Se landing_page_view não tiver linhas para a página, pule as outras duas: não há tráfego pago para corresponder. post_click_quality_score é a classificação de experiência da página de destino do Google (acima da média, média, abaixo da média) para a palavra-chave. As URLs finais da palavra-chave geralmente estão vazias porque a URL do anúncio é usada, então associe palavras-chave à página através do grupo de anúncios. Mantenha os anúncios cujas final_urls apontam para a página e compare seus títulos com o H1 e a oferta da página. Para Meta, LinkedIn ou outros anúncios, ou um e-mail que linka para a página, peça ao usuário para colar o anúncio ou e-mail (título, corpo, oferta e CTA) e compare-o com a página da mesma forma: o H1 ecoa o título, toda oferta e alegação estão na página, e o CTA da página continua o do anúncio. A skill ad-landing-page-match-scorer aprofunda-se nisso, se instalada.
Etapa 4. Desmontar a 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 retorna a página em ordem de leitura (seq: headings e CTAs fora do cabeçalho, navegação e rodapé), o primeiro parágrafo após o H1 (sub), contagens e a primeira correspondência para cada tipo de prova. Leia assim:
- Hero: tudo antes do primeiro
h2. Observe o H1, o subtítulo e os CTAs ali. - CTAs: apenas elementos com um destino (
href) são CTAs. Botões sem um são abas, acordeões ou um banner de cookies. Conte os destinos distintos e observe se o principal retorna após o meio de uma página longa. - Prova: uma correspondência é uma pista, não um veredito. Verifique o texto ao redor antes de contá-la: um número em uma demonstração de produto ou um "seguro" em uma resposta de FAQ não é prova. Logotipos "Funciona com" mostram compatibilidade, não clientes.
- Saídas: contagem de links de cabeçalho e navegação (
nav). Em uma página de destino paga, cada um é uma saída. - Formulários:
formseinputs. - Da resposta padrão:
meta.title,meta.htags,meta.content.plain_text_word_count, os índices de legibilidade echecks(no_h1_tag,has_render_blocking_resources,no_image_alt,title_too_long).no_image_altpode ser verdadeiro enquanto o script encontra um atributo alt, se os atributos vazios não forem contados como presentes.
Captura de tela:
{"platform": "screenshot", "action": "capture", "url": "https://example.com/", "viewport_width": 1280}
Com a imagem,
- Acima da dobra: veja o que aparece na janela de 1280px de largura.
- O corte inicial: role para baixo até que a seção de preços, o formulário ou o CTA principal apareça, depois volte para cima. Esse ponto é onde o usuário vê a proposta de valor e tem que escolher: continuar ou sair. Meça quantos cabeçalhos, blocos de texto e CTAs estão acima desse corte.
Etapa 5. Velocidade e mobile
{"platform": "pagespeed-insights", "action": "core-web-vitals", "url": "https://example.com/", "strategy": "desktop"}
{"platform": "pagespeed-insights", "action": "core-web-vitals", "url": "https://example.com/", "strategy": "mobile"}
{"platform": "pagespeed-insights", "action": "accessibility-seo", "url": "https://example.com/", "strategy": "desktop"}
{"platform": "dataforseo", "action": "onpage_instant_pages", "url": "https://example.com/", "enable_javascript": true}
Das principais métricas da web: anote o LCP, INP, CLS. Se 'mobile' tiver uma classificação 'Poor', digitalize diagnostics para render-blocking-resources, uses-responsive-images e unminified-javascript. Acessibilidade e SEO são da API lighthouse, que retorna categories, audits com score, e details com items, description. Anote:
- Acessibilidade: qualquer auditoria com pontuação < 0,9, ou auditorias
ARIA,contrast,focus,label,tab-orderelink-name. - SEO: os títulos (
meta.description,meta.titledeonpage_instant_pages),http-status-code(deve ser 200) e índice de legibilidade.
Mobile:
{"platform": "screenshot", "action": "capture", "url": "https://example.com/", "viewport_width": 390}
Com a imagem, responda a estas perguntas de verificação:
- O H1 e o CTA principal estão visíveis sem pinçar ou rolar? (Os primeiros 320px verticais com um viewport de 390px de largura.)
- A fonte tem pelo menos 16px? (O iOS aumenta o zoom se for menor.)
- O botão do CTA tem pelo menos 48px de altura? (A diretriz de toque do Google.)
- Espaçamento: os elementos não se sobrepõem e os alvos de toque não se tocam?
Etapa 6. Estruturar a auditoria: sete pilares
Para cada um, atribua uma pontuação de 1 a 5 e explique o porquê.
| Pilar | O que alimenta | Baseia-se em |
|---|---|---|
| Rastreamento | A tag está íntegra? A janela é limpa? | Etapa 1 |
| Conversão | A conversão é medida? A página tem um evento-chave? | Etapa 2. Se não medida, as proxies: taxa de engajamento, caminho de conversão, rolagem de 90% |
| Tráfego | As fontes são relevantes? Origem inorgânica? | Etapa 3: origens, intenção orgânica e correspondência de anúncios |
| Dispositivos | A página funciona para o tráfego que recebe? | Etapa 3 compartilhamento de dispositivos; Etapa 5 verificação mobile |
| Caminho | Para onde os usuários vão? Eles seguem o caminho de conversão? | Etapa 3: páginas de saída, caminho de conversão |
| Conteúdo e prova | O H1 corresponde à intenção? O CTA é claro? Prova social suficiente? | Etapa 4: hero, CTAs, prova, saídas |
| Técnico | Velocidade, acessibilidade e SEO | Etapa 5: Core Web Vitals, Lighthouse, mobile |
O que é uma pontuação 5
Rastreamento 5: Nenhuma mudança de tag nos últimos 30 dias. A janela está limpa (dias não processados removidos). Nenhuma sessão de (not set) para landingPage. A página de destino com tráfego mais alto está sendo auditada.
Conversão 5: O evento-chave desejado aparece no relatório de página de destino com um nome que não seja de teste e está disparando. A taxa de conversão está disponível. (Se a página não puder ser medida, a conversão nunca pode ser 5.)
Tráfego 5: Tráfego pago confirmado com correspondência de anúncio. As palavras-chave de intenção orgânica aparecem no H1 e no título. A taxa de engajamento da origem inorgânica é a mesma do tráfego geral. Sem tráfego de bot detectado.
Dispositivos 5: A verificação mobile é aprovada (H1 e CTA acima da dobra, fonte ≥ 16px, altura do CTA ≥ 48px, sem sobreposição). Não há lacuna significativa entre as taxas de engajamento desktop e mobile.
Caminho 5: Uma parcela significativa de sessões (pelo menos 20% ou mais) atinge uma página de conversão (preços, demonstração, checkout). A página de saída principal não é "sair para pesquisar o concorrente" — ela vai para uma página de produto, artigo ou página de conversão.
Conteúdo e prova 5: O H1 e a oferta correspondem às palavras-chave de intenção. Os CTAs estão acima da dobra e no meio da página. A prova social inclui depoimentos ou logotipos que o script detecta; a classificação (estrelas, G2) está presente; a garantia ou segurança é mencionada.
Técnico 5: LCP < 2,5s, INP < 200ms, CLS < 0,1. Nenhum recurso de bloqueio de renderização (ou poucos, e eles estão abaixo da dobra). Pontuações de acessibilidade e SEO do Lighthouse > 0,9. Nenhum problema no_h1_tag, title_too_long, no_image_alt.
O que é uma pontuação 1
Rastreamento 1: A tag mudou no período, ou dias não processados não são reconhecidos, ou a página auditada não é a página de destino com tráfego mais alto, ou sessões (not set) são incluídas.
Conversão 1: A página não é medida, e nem os proxies puderam ser recuperados (sem evento de clique, sem dados de rolagem).
Tráfego 1: O tráfego parece artificial: mais de 10% das origens são tráfego de bot (sem engajamento, com 10 ou mais sessões). A taxa de engajamento geral está abaixo de 20%.
Dispositivos 1: A verificação mobile falha em todos os itens, e a taxa de engajamento mobile está abaixo de 15%.
Caminho 1: Menos de 5% das sessões atingem uma página de conversão. A página de saída principal é o cabeçalho ou o link de navegação (os usuários saem sem se envolver).
Conteúdo e prova 1: O script não encontra H1 (ou o meta retorna no_h1_tag). Nenhuma prova social, CTA ou formulário. A contagem de palavras está abaixo de 100.
Técnico 1: LCP > 4s, CLS > 0,25. has_render_blocking_resources é verdadeiro. Pontuações de acessibilidade e SEO < 0,5.
Etapa 7. Priorizar correções com reescritas
Liste as correções classificadas por pontuação do pilar. Abaixo de cada pilar, liste correções que melhorariam a pontuação, com uma reescrita sugerida.
Para cada reescrita, diga:
- O elemento (título, H1, H2, CTA, subheadline, parágrafo, texto do link).
- O que está lá agora.
- O problema (muito longo, nenhuma palavra de ação, não corresponde à intenção).
- A reescrita.
- A fonte que a informa (intenção orgânica da etapa 3 para o H1, anúncio pago para o CTA, etc.).
Modelo:
### [Pilar] (pontuação: X/5)
**Problema:** [descrição curta]
**Correção:** [o que mudar]
**Reescrita:**
> Atual: ...
> Novo: ...
**Fonte:** [Etapa/fonte que gerou a descoberta]
Relatório final
O relatório deve conter:
- Resumo executivo: a página, o público, a ação e o tipo. As janelas de dados.
- Tabela de pontuação dos pilares: pontuação 1–5 com breve explicação. As tabelas de problemas de tráfego e medição.
- Detalhes de tráfego: origens, engajamento, problema de bot, intenção orgânica, correspondência de anúncio.
- Análise da página: hero, CTAs, prova, formulários, saídas, acima da dobra, análise técnica (Core Web Vitals, Lighthouse, acessibilidade, SEO, mobile).
- Correções com reescritas: lista classificada por lacuna de pilar (a maior diferença para 5 primeiro).
- Próximas etapas: se a página não for medida, instruções de configuração do GTM. Se houver problema de tag, troca de propriedade do GA4. Se a verificação mobile falhar, mudanças de CSS. Se a prova estiver faltando, adicione à página.
Conteúdo truncado
A Seção 4 e a Etapa 5–7 referem-se a scripts de dados mais longos e instruções de análise que foram truncados aqui. Eles seguem o mesmo padrão. Se um script de dados retornar vazio ou o caminho não existir, pule essa parte e rotule-a como não disponível.
Nota sobre o custom_js: O script longo deve primeiro ser depurado em um console do navegador com a página alvo antes de ser executado através da API. Encurte-o se custom_js_client_exception aparecer.
Nota sobre tráfego pago não confirmado: Se as sessões google / cpc existem mas não podem ser atribuídas a uma conta de anúncios, marque-as como pago não confirmado e use a intenção orgânica como substituta para correspondência de mensagem.