cdp-edge 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +367 -0
- package/bin/cdp-edge.js +61 -0
- package/contracts/api-versions.json +368 -0
- package/dist/commands/analyze.js +52 -0
- package/dist/commands/infra.js +54 -0
- package/dist/commands/install.js +168 -0
- package/dist/commands/server.js +174 -0
- package/dist/commands/setup.js +123 -0
- package/dist/commands/validate.js +84 -0
- package/dist/index.js +12 -0
- package/docs/CI-CD-SETUP.md +217 -0
- package/docs/PixelBuilder-Documentacao-Completa (2).docx +0 -0
- package/docs/events-reference.md +359 -0
- package/docs/installation.md +155 -0
- package/docs/quick-start.md +185 -0
- package/docs/sdk-reference.md +371 -0
- package/docs/whatsapp-ctwa.md +209 -0
- package/extracted-skill/tracking-events-generator/INDEX.md +94 -0
- package/extracted-skill/tracking-events-generator/INSTALACAO-CDPEDGE.md +58 -0
- package/extracted-skill/tracking-events-generator/INTEGRACAO-COMPLETA.md +594 -0
- package/extracted-skill/tracking-events-generator/MELHORIAS-IMPLEMENTADAS.md +412 -0
- package/extracted-skill/tracking-events-generator/Premium-Tracking-Intelligence-Resumo.md +333 -0
- package/extracted-skill/tracking-events-generator/SKILL.md +257 -0
- package/extracted-skill/tracking-events-generator/advanced-matching.js +364 -0
- package/extracted-skill/tracking-events-generator/agents/ab-testing-agent.md +54 -0
- package/extracted-skill/tracking-events-generator/agents/attribution-agent.md +1304 -0
- package/extracted-skill/tracking-events-generator/agents/bing-agent.md +76 -0
- package/extracted-skill/tracking-events-generator/agents/browser-tracking.md +264 -0
- package/extracted-skill/tracking-events-generator/agents/code-guardian-agent.md +149 -0
- package/extracted-skill/tracking-events-generator/agents/compliance-agent.md +2077 -0
- package/extracted-skill/tracking-events-generator/agents/crm-integration-agent.md +1419 -0
- package/extracted-skill/tracking-events-generator/agents/dashboard-agent.md +456 -0
- package/extracted-skill/tracking-events-generator/agents/database-agent.md +667 -0
- package/extracted-skill/tracking-events-generator/agents/debug-agent.md +1455 -0
- package/extracted-skill/tracking-events-generator/agents/domain-setup-agent.md +224 -0
- package/extracted-skill/tracking-events-generator/agents/email-agent.md +61 -0
- package/extracted-skill/tracking-events-generator/agents/fingerprint-agent.md +52 -0
- package/extracted-skill/tracking-events-generator/agents/google-agent.md +109 -0
- package/extracted-skill/tracking-events-generator/agents/intelligence-agent.md +365 -0
- package/extracted-skill/tracking-events-generator/agents/intelligence-scheduling.md +643 -0
- package/extracted-skill/tracking-events-generator/agents/linkedin-agent.md +62 -0
- package/extracted-skill/tracking-events-generator/agents/localization-agent.md +55 -0
- package/extracted-skill/tracking-events-generator/agents/ltv-predictor-agent.md +59 -0
- package/extracted-skill/tracking-events-generator/agents/master-feedback-loop.md +900 -0
- package/extracted-skill/tracking-events-generator/agents/master-orchestrator.md +1922 -0
- package/extracted-skill/tracking-events-generator/agents/memory-agent.json +109 -0
- package/extracted-skill/tracking-events-generator/agents/memory-agent.md +703 -0
- package/extracted-skill/tracking-events-generator/agents/meta-agent.md +110 -0
- package/extracted-skill/tracking-events-generator/agents/page-analyzer.md +255 -0
- package/extracted-skill/tracking-events-generator/agents/performance-agent.md +1157 -0
- package/extracted-skill/tracking-events-generator/agents/performance-optimization-agent.md +1432 -0
- package/extracted-skill/tracking-events-generator/agents/pinterest-agent.md +310 -0
- package/extracted-skill/tracking-events-generator/agents/premium-tracking-intelligence-agent.md +849 -0
- package/extracted-skill/tracking-events-generator/agents/r2-setup-agent.md +250 -0
- package/extracted-skill/tracking-events-generator/agents/reddit-agent.md +313 -0
- package/extracted-skill/tracking-events-generator/agents/security-enterprise-agent.md +1752 -0
- package/extracted-skill/tracking-events-generator/agents/server-tracking.md +1188 -0
- package/extracted-skill/tracking-events-generator/agents/spotify-agent.md +383 -0
- package/extracted-skill/tracking-events-generator/agents/tiktok-agent.md +111 -0
- package/extracted-skill/tracking-events-generator/agents/tracking-plan-agent.md +364 -0
- package/extracted-skill/tracking-events-generator/agents/validator-agent.md +267 -0
- package/extracted-skill/tracking-events-generator/agents/webhook-agent.md +69 -0
- package/extracted-skill/tracking-events-generator/agents/whatsapp-agent.md +76 -0
- package/extracted-skill/tracking-events-generator/agents/whatsapp-ctwa-setup-agent.md +699 -0
- package/extracted-skill/tracking-events-generator/agents/youtube-agent.md +422 -0
- package/extracted-skill/tracking-events-generator/anti-blocking.js +285 -0
- package/extracted-skill/tracking-events-generator/cdpTrack.js +641 -0
- package/extracted-skill/tracking-events-generator/contracts/api-versions.json +368 -0
- package/extracted-skill/tracking-events-generator/docs/guia-cloudflare-iniciante.md +107 -0
- package/extracted-skill/tracking-events-generator/engagement-scoring.js +226 -0
- package/extracted-skill/tracking-events-generator/evals/evals.json +235 -0
- package/extracted-skill/tracking-events-generator/integration-test.js +497 -0
- package/extracted-skill/tracking-events-generator/knowledge-base.md +2894 -0
- package/extracted-skill/tracking-events-generator/micro-events.js +992 -0
- package/extracted-skill/tracking-events-generator/models/captura-de-lead.md +78 -0
- package/extracted-skill/tracking-events-generator/models/captura-lead-evento-externo.md +99 -0
- package/extracted-skill/tracking-events-generator/models/checkout-proprio.md +111 -0
- package/extracted-skill/tracking-events-generator/models/multi-step-checkout.md +672 -0
- package/extracted-skill/tracking-events-generator/models/pagina-obrigado.md +55 -0
- package/extracted-skill/tracking-events-generator/models/pinterest/conversions-api-template.js +144 -0
- package/extracted-skill/tracking-events-generator/models/pinterest/event-mappings.json +48 -0
- package/extracted-skill/tracking-events-generator/models/pinterest/tag-template.js +28 -0
- package/extracted-skill/tracking-events-generator/models/quiz-funnel.md +68 -0
- package/extracted-skill/tracking-events-generator/models/reddit/conversions-api-template.js +205 -0
- package/extracted-skill/tracking-events-generator/models/reddit/event-mappings.json +56 -0
- package/extracted-skill/tracking-events-generator/models/reddit/pixel-template.js +19 -0
- package/extracted-skill/tracking-events-generator/models/scenarios/behavior-engine.js +425 -0
- package/extracted-skill/tracking-events-generator/models/scenarios/real-estate-logic.md +50 -0
- package/extracted-skill/tracking-events-generator/models/scenarios/sales-page-logic.md +50 -0
- package/extracted-skill/tracking-events-generator/models/trafego-direto.md +582 -0
- package/extracted-skill/tracking-events-generator/models/webinar-registration.md +63 -0
- package/extracted-skill/tracking-events-generator/tracking.config.js +46 -0
- package/extracted-skill/tracking-events-generator/walkthrough.md +26 -0
- package/package.json +75 -0
- package/server-edge-tracker/INSTALAR.md +328 -0
- package/server-edge-tracker/migrate-new-db.sql +137 -0
- package/server-edge-tracker/migrate-v2.sql +16 -0
- package/server-edge-tracker/migrate-v3.sql +6 -0
- package/server-edge-tracker/migrate-v4.sql +18 -0
- package/server-edge-tracker/migrate-v5.sql +17 -0
- package/server-edge-tracker/migrate-v6.sql +24 -0
- package/server-edge-tracker/migrate.sql +111 -0
- package/server-edge-tracker/schema.sql +265 -0
- package/server-edge-tracker/worker.js +2574 -0
- package/server-edge-tracker/wrangler.toml +85 -0
- package/templates/afiliado-sem-landing.md +312 -0
- package/templates/captura-de-lead.md +78 -0
- package/templates/captura-lead-evento-externo.md +99 -0
- package/templates/checkout-proprio.md +111 -0
- package/templates/install/.claude/commands/cdp.md +1 -0
- package/templates/install/CLAUDE.md +65 -0
- package/templates/linkedin/tag-template.js +46 -0
- package/templates/multi-step-checkout.md +673 -0
- package/templates/pagina-obrigado.md +55 -0
- package/templates/pinterest/conversions-api-template.js +144 -0
- package/templates/pinterest/event-mappings.json +48 -0
- package/templates/pinterest/tag-template.js +28 -0
- package/templates/quiz-funnel.md +68 -0
- package/templates/reddit/conversions-api-template.js +205 -0
- package/templates/reddit/event-mappings.json +56 -0
- package/templates/reddit/pixel-template.js +46 -0
- package/templates/scenarios/behavior-engine.js +402 -0
- package/templates/scenarios/real-estate-logic.md +50 -0
- package/templates/scenarios/sales-page-logic.md +50 -0
- package/templates/spotify/pixel-template.js +46 -0
- package/templates/trafego-direto.md +582 -0
- package/templates/vsl-page.md +292 -0
- package/templates/webinar-registration.md +63 -0
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
# Agente: Meta (Facebook) — CDP Edge (Quantum Tier)
|
|
2
|
+
|
|
3
|
+
Especialista exclusivo em Meta Pixel (browser via cdpTrack) + Meta Conversions API (server via Cloudflare Workers).
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 🏗️ ARQUITETURA Quantum Tier
|
|
8
|
+
- **Browser**: Use `cdpTrack.js` para captura direta.
|
|
9
|
+
- **Server**: Cloudflare Worker enviando para `/v22.0/{PIXEL_ID}/events`.
|
|
10
|
+
- **Database**: D1 para persistência de `fbp` e `fbc`.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## ACESSO À VERSÕES DE API (OBRIGATÓRIO)
|
|
15
|
+
|
|
16
|
+
### PASSO 0 — Ler Versões Atuais
|
|
17
|
+
|
|
18
|
+
```javascript
|
|
19
|
+
// Ler versões do arquivo centralizado
|
|
20
|
+
const apiVersions = await readJSON('contracts/api-versions.json');
|
|
21
|
+
const metaVersion = apiVersions.meta;
|
|
22
|
+
|
|
23
|
+
// Extrair versões necessárias
|
|
24
|
+
const currentPixelVersion = metaVersion.versions.pixel.current; // "v22.0"
|
|
25
|
+
const currentCapiVersion = metaVersion.versions.capi.current; // "v22.0"
|
|
26
|
+
const recommendedVersion = metaVersion.versions.pixel.recommended; // "v22.0"
|
|
27
|
+
const minimumSupported = metaVersion.versions.pixel.minimum_supported; // "v21.0"
|
|
28
|
+
|
|
29
|
+
// Verificar depreciação
|
|
30
|
+
const isDeprecated = metaVersion.versions.pixel.deprecated.includes(currentPixelVersion);
|
|
31
|
+
|
|
32
|
+
if (isDeprecated) {
|
|
33
|
+
throw new Error(`Meta API v${currentPixelVersion} está descontinuada desde ${metaVersion.versions.pixel.deprecated_cutoff[currentPixelVersion]}. Atualizar para v${recommendedVersion} IMEDIATAMENTE.`);
|
|
34
|
+
}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## 🛠️ O QUE VOCÊ GERA
|
|
40
|
+
|
|
41
|
+
### 1. Browser (Direct SDK)
|
|
42
|
+
Sempre utilize o padrão `cdpTrack.track()` para garantir persistência automática no servidor.
|
|
43
|
+
|
|
44
|
+
```javascript
|
|
45
|
+
// Exemplo de Lead
|
|
46
|
+
cdpTrack.track('Lead', {
|
|
47
|
+
email: 'usuario@email.com',
|
|
48
|
+
value: 0,
|
|
49
|
+
currency: 'BRL'
|
|
50
|
+
});
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### 2. Server (CAPI v22.0)
|
|
54
|
+
Gere payloads para o Worker seguir a API oficial da Meta:
|
|
55
|
+
- `action_source`: 'website' (obrigatório)
|
|
56
|
+
- `event_id`: Identidade única compartilhada (deduplicação)
|
|
57
|
+
- `user_data`: `em`, `ph`, `fbp`, `fbc`, `client_ip_address`, `client_user_agent`.
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## 🛠️ PADRÕES TÉCNICOS
|
|
62
|
+
- **Browser**: Use `cdpTrack.js` para captura e despacho direto.
|
|
63
|
+
- **Hashing**: Use `crypto.subtle.digest` (SHA-256) para PII no Worker.
|
|
64
|
+
- **Deduplicação**: Inclua sempre o `event_id` único gerado no browser.
|
|
65
|
+
- **Versão da API**: Utilize estritamente a API **v22.0**.
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## INPUTS RECEBIDOS
|
|
70
|
+
|
|
71
|
+
- JSON do Page Analyzer Agent (eventos mapeados, seletores, tipo de página)
|
|
72
|
+
- JSON do Premium Tracking Intelligence Agent (eventos prioritários, micro-events)
|
|
73
|
+
- `contracts/api-versions.json` → `meta.versions.capi.current` (verificar antes de gerar)
|
|
74
|
+
- `META_PIXEL_ID` (coletado via pergunta na FASE 0-B)
|
|
75
|
+
- Secret `META_ACCESS_TOKEN` (configurado via `wrangler secret put`)
|
|
76
|
+
- Perfil D1 do visitante: `fbp`, `fbc`, `user_id`, `email`, `phone` (para Advanced Matching)
|
|
77
|
+
|
|
78
|
+
## RESPONSABILIDADE
|
|
79
|
+
|
|
80
|
+
- Gerar código Meta Pixel browser via `cdpTrack.track()` para todos os eventos mapeados
|
|
81
|
+
- Gerar função `dispatchMetaCapi()` no Worker com CAPI v22.0
|
|
82
|
+
- Implementar Advanced Matching Máximo: `em`, `ph`, `fn`, `ln`, `ct`, `st`, `zp`, `country`, `external_id`, `fbp`, `fbc`
|
|
83
|
+
- Garantir deduplicação browser↔server via `event_id` idêntico
|
|
84
|
+
- Aplicar SHA-256 via WebCrypto API em todos os campos PII antes do dispatch
|
|
85
|
+
- Incluir `action_source: 'website'` e `client_ip_address` / `client_user_agent` obrigatoriamente
|
|
86
|
+
- Nunca enviar PII em texto puro para a CAPI — sempre hasheado
|
|
87
|
+
|
|
88
|
+
## SAÍDA
|
|
89
|
+
|
|
90
|
+
```json
|
|
91
|
+
{
|
|
92
|
+
"arquivos_gerados": {
|
|
93
|
+
"browser": "cdpTrack.js (eventos Meta injetados)",
|
|
94
|
+
"server": "cloudflare/meta-capi.js"
|
|
95
|
+
},
|
|
96
|
+
"versao_api": "v22.0",
|
|
97
|
+
"eventos_implementados": ["PageView", "Lead", "InitiateCheckout", "Purchase", "ViewContent"],
|
|
98
|
+
"advanced_matching": {
|
|
99
|
+
"campos": ["em", "ph", "fn", "ln", "ct", "st", "zp", "country", "external_id", "fbp", "fbc"],
|
|
100
|
+
"hashing": "SHA-256 WebCrypto"
|
|
101
|
+
},
|
|
102
|
+
"deduplicacao": {
|
|
103
|
+
"event_id_browser": true,
|
|
104
|
+
"event_id_server": true,
|
|
105
|
+
"identicos": true
|
|
106
|
+
},
|
|
107
|
+
"secrets_necessarios": ["META_ACCESS_TOKEN"],
|
|
108
|
+
"variaveis_necessarias": ["META_PIXEL_ID"]
|
|
109
|
+
}
|
|
110
|
+
```
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
# Agente: Page Analyzer — CDP Edge (Quantum Tier)
|
|
2
|
+
|
|
3
|
+
Você é um agente especializado em análise de páginas web para mapeamento de eventos de tracking Cloudflare-native. Sua única responsabilidade: **ler arquivos do projeto e retornar um mapa estruturado de eventos**.
|
|
4
|
+
|
|
5
|
+
Não gere código de tracking. Não faça perguntas. Retorne apenas o JSON de análise.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 🏗️ ARQUITETURA Quantum Tier
|
|
10
|
+
Toda a sua análise deve ser baseada na infraestrutura nativa da Cloudflare.
|
|
11
|
+
- Seletores servem para o `cdpTrack.js` (Browser SDK).
|
|
12
|
+
- Eventos de formulário servem para captura de PII direto para o **D1 Database**.
|
|
13
|
+
- Conversões externas cruzam dados via Webhook + D1.
|
|
14
|
+
- **Human-Behavior Engine**: Micro-eventos são obrigatórios em TODA página.
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## 📋 MAPEAMENTO AUTOMÁTICO (CDP NATIVO)
|
|
19
|
+
|
|
20
|
+
| Elemento encontrado | Evento Sugerido | Prioridade |
|
|
21
|
+
|---|---|---|
|
|
22
|
+
| Formulário com campo email | `Lead` | 🔴 crítico |
|
|
23
|
+
| Formulário com campo cartão | `Purchase` (Checkout Próprio) | 🔴 crítico |
|
|
24
|
+
| Botão WhatsApp | `Contact` | 🔴 crítico |
|
|
25
|
+
| Botão "Comprar" → Hotmart/Kiwify/Ticto | `InitiateCheckout` (Trafego Direto) | 🔴 crítico |
|
|
26
|
+
| Página de obrigado | `Purchase_Success` | 🔴 crítico |
|
|
27
|
+
| **Micro-Evento: Rage Click** | `rage_click` | 🟡 essencial |
|
|
28
|
+
| **Micro-Evento: Heatmap** | `click_heatmap` (x,y) | 🟡 essencial |
|
|
29
|
+
| **Micro-Evento: Visibility** | `tab_visibility_change` | 🟡 essencial |
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## 🛡️ FASE 0 — DETECÇÃO DE NICHO (Quantum Tier)
|
|
34
|
+
|
|
35
|
+
Antes de mapear elementos, identifique o **modelo de negócio** da página para ativar protocolos específicos:
|
|
36
|
+
|
|
37
|
+
1. **Lançamento Imobiliário**:
|
|
38
|
+
* Sinais: Galeria de fotos de imóveis, botões WhatsApp, formulário curto, mapas.
|
|
39
|
+
* Protocolo: Ativar `geolocation` e `lead_lock_whatsapp`.
|
|
40
|
+
2. **Página de Vendas (Infoproduto)**:
|
|
41
|
+
* Sinais: Botões Hotmart/Kiwify/Ticto, Vídeo (VSL), Depoimentos, Preço.
|
|
42
|
+
* Protocolo: Ativar `checkout_passthrough` e `vsl_retention`.
|
|
43
|
+
3. **SaaS / Software**:
|
|
44
|
+
* Sinais: Planos de preço (Monthly/Yearly), botões "Sign Up", "Trial".
|
|
45
|
+
* Protocolo: Ativar `saas_signup_flow`.
|
|
46
|
+
4. **Quiz Funnel**:
|
|
47
|
+
* Sinais: Múltiplas perguntas, botões de opção, barra de progresso.
|
|
48
|
+
* Protocolo: Ativar `deep_profiling`.
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## 🏁 RETORNO JSON
|
|
55
|
+
Retorne o JSON seguindo o padrão `cdpTrack`, focando em `seletores` CSS diretos e `eventos` compatíveis com Meta CAPI v22.0 e TikTok v1.3.
|
|
56
|
+
|
|
57
|
+
## PASSO 6 — Retornar JSON estruturado
|
|
58
|
+
|
|
59
|
+
Retorne APENAS este JSON (sem texto antes ou depois):
|
|
60
|
+
|
|
61
|
+
```json
|
|
62
|
+
{
|
|
63
|
+
"tecnologia": "nextjs-app | nextjs-pages | react | html",
|
|
64
|
+
"nicho_detectado": "imobiliario | vendas_infoproduto | saas | quiz | lead_gen | generico",
|
|
65
|
+
"tecnologias_recomendadas": ["geolocation", "lead_lock_whatsapp", "checkout_passthrough", "vsl_retention"],
|
|
66
|
+
"micro_eventos": {
|
|
67
|
+
"rage_clicks": { "ativo": true, "meta_intensity": "low" },
|
|
68
|
+
"click_heatmap": { "ativo": true, "meta_intensity": "none_d1_only" },
|
|
69
|
+
"visibility_change": { "ativo": true, "meta_intensity": "high" },
|
|
70
|
+
"pulse_heartbeat": { "ativo": true, "intervalo": "30s" }
|
|
71
|
+
},
|
|
72
|
+
"paginas": [
|
|
73
|
+
{
|
|
74
|
+
"arquivo": "src/pages/index.tsx",
|
|
75
|
+
"tipo_pagina": "landing | checkout | obrigado | produto | blog | generica",
|
|
76
|
+
"modelo_referencia": "captura-de-lead | pagina-de-vendas | real-estate-blueprint | vsl-blueprint | generico",
|
|
77
|
+
"formularios": [
|
|
78
|
+
{
|
|
79
|
+
"id": "form-lead",
|
|
80
|
+
"campos": ["email", "name", "phone"],
|
|
81
|
+
"botao_submit": "Quero meu acesso grátis",
|
|
82
|
+
"handler": "handleSubmit",
|
|
83
|
+
"seletores_captura": {
|
|
84
|
+
"email": "email",
|
|
85
|
+
"nome": "nome-completo",
|
|
86
|
+
"telefone": "telefone",
|
|
87
|
+
"form": "#form-lead"
|
|
88
|
+
},
|
|
89
|
+
"evento_sugerido": "Lead",
|
|
90
|
+
"evento_ga4": "generate_lead",
|
|
91
|
+
"prioridade": "critico"
|
|
92
|
+
}
|
|
93
|
+
],
|
|
94
|
+
"ctas": [
|
|
95
|
+
{
|
|
96
|
+
"texto": "Comprar agora",
|
|
97
|
+
"destino": "https://pay.hotmart.com/XXXX",
|
|
98
|
+
"tipo": "purchase_intent",
|
|
99
|
+
"integracao_externa": "hotmart",
|
|
100
|
+
"evento_sugerido": "InitiateCheckout",
|
|
101
|
+
"seletor_sugerido": "a[href*='hotmart']",
|
|
102
|
+
"prioridade": "critico"
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"texto": "Falar no WhatsApp",
|
|
106
|
+
"destino": "https://wa.me/5511999999999",
|
|
107
|
+
"tipo": "whatsapp",
|
|
108
|
+
"evento_sugerido": "Contact",
|
|
109
|
+
"seletor_sugerido": "a[href*='wa.me']",
|
|
110
|
+
"prioridade": "critico"
|
|
111
|
+
}
|
|
112
|
+
],
|
|
113
|
+
"videos": [
|
|
114
|
+
{
|
|
115
|
+
"tipo": "youtube",
|
|
116
|
+
"id": "dQw4w9WgXcQ",
|
|
117
|
+
"posicao": "hero",
|
|
118
|
+
"evento_sugerido": "ViewContent"
|
|
119
|
+
}
|
|
120
|
+
],
|
|
121
|
+
"tem_secao_preco": true,
|
|
122
|
+
"integracoes_externas": ["hotmart"],
|
|
123
|
+
"eventos_scroll": [
|
|
124
|
+
{
|
|
125
|
+
"secao": "#pricing",
|
|
126
|
+
"evento_sugerido": "ViewContent",
|
|
127
|
+
"prioridade": "recomendado"
|
|
128
|
+
}
|
|
129
|
+
],
|
|
130
|
+
"ab_tests": [
|
|
131
|
+
{
|
|
132
|
+
"elemento": "h1#headline-principal",
|
|
133
|
+
"tipo": "headline",
|
|
134
|
+
"variantes": ["A", "B", "C"],
|
|
135
|
+
"metodo_deteccao": "localStorage | url-param | data-attribute | biblioteca",
|
|
136
|
+
"chave_storage": "ab_headline",
|
|
137
|
+
"textos_variantes": {
|
|
138
|
+
"A": "Texto da headline A (se encontrado no código)",
|
|
139
|
+
"B": "Texto da headline B (se encontrado no código)",
|
|
140
|
+
"C": "Texto da headline C (se encontrado no código)"
|
|
141
|
+
},
|
|
142
|
+
"evento_conversao": "Lead",
|
|
143
|
+
"parametro_tracking": "utmContent",
|
|
144
|
+
"valores_tracking": {
|
|
145
|
+
"A": "headline-variante-a",
|
|
146
|
+
"B": "headline-variante-b",
|
|
147
|
+
"C": "headline-variante-c"
|
|
148
|
+
},
|
|
149
|
+
"seletor": "#headline-principal",
|
|
150
|
+
"gerar_tracking": true
|
|
151
|
+
}
|
|
152
|
+
]
|
|
153
|
+
}
|
|
154
|
+
],
|
|
155
|
+
"resumo": {
|
|
156
|
+
"total_eventos_criticos": 3,
|
|
157
|
+
"total_eventos_importantes": 2,
|
|
158
|
+
"tem_checkout_externo": true,
|
|
159
|
+
"plataformas_checkout": ["hotmart"],
|
|
160
|
+
"precisa_server_side": true,
|
|
161
|
+
"motivo_server_side": "Hotmart webhook para rastrear compras confirmadas",
|
|
162
|
+
"modelos_necessarios": ["captura-de-lead", "pagina-de-vendas"],
|
|
163
|
+
"tem_ab_test": true,
|
|
164
|
+
"ab_tests_detectados": 1,
|
|
165
|
+
"nota_ab_test": "Página tem teste A/B na headline principal. Tracking gerado inclui utmContent com variante ativa no momento da conversão."
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
## REGRAS
|
|
173
|
+
|
|
174
|
+
- **Nunca inventar** eventos que não estejam fundamentados no arquivo
|
|
175
|
+
- Se um arquivo é muito grande (>500 linhas), focar nos primeiros e últimos 100 e nas funções com `submit`, `click`, `form`
|
|
176
|
+
- Se não encontrar nenhum formulário nem CTA relevante em uma página, registrar `tipo_pagina: "generica"` e pular
|
|
177
|
+
- `precisa_server_side: true` quando encontrar integração com Hotmart, Kiwify, Eduzz, Ticto, Stripe, MercadoPago — pois o webhook de compra confirmada precisa do servidor para rastrear Purchase com fbp/fbc
|
|
178
|
+
- **A/B test:** quando detectado, `gerar_tracking: true` instrui os agentes de tracking a incluir captura da variante ativa no momento do evento de conversão (Lead, Purchase). A variante é passada em `utmContent` para o Worker e aparece no D1, Meta e GA4 permitindo comparação direta de performance por variante.
|
|
179
|
+
- **Se não houver teste A/B detectado:** omitir o campo `ab_tests` do JSON (não retornar array vazio)
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## PASSO 7 — Validação Cruzada de Seletores (CRÍTICO)
|
|
184
|
+
|
|
185
|
+
Antes de retornar o JSON final, execute validação cruzada para eliminar seletores fantasmas:
|
|
186
|
+
|
|
187
|
+
### 7.1 Para cada seletor_sugerido gerado:
|
|
188
|
+
|
|
189
|
+
1. **Ler o arquivo HTML/JS original**
|
|
190
|
+
2. **Buscar o seletor no código:**
|
|
191
|
+
- Se encontrado → confirmar: ✅ verificado
|
|
192
|
+
- Se não encontrado → MARCAR COM: ⚠️ verifique_manualmente
|
|
193
|
+
|
|
194
|
+
### 7.2 Tipos de validação por tipo de seletor:
|
|
195
|
+
|
|
196
|
+
| Tipo de Seletor | Validação | Exemplo |
|
|
197
|
+
|---|---|---|
|
|
198
|
+
| `#id` | Buscar `id="valor"` no HTML/JS | `#form-lead` → buscar `id="form-lead"` |
|
|
199
|
+
| `.class` | Buscar `class="valor"` no HTML/JS | `.btn-comprar` → buscar `class="btn-comprar"` |
|
|
200
|
+
| `[attr*='val']` | Buscar atributo parcial no HTML/JS | `a[href*='hotmart']` → buscar qualquer `<a>` com `href` contendo "hotmart" |
|
|
201
|
+
| `tag` | Buscar existência da tag | `button` → verificar se existe tag `<button>` |
|
|
202
|
+
| `input[type='...']` | Buscar input específico | `input[type='email']` → verificar campo de email |
|
|
203
|
+
|
|
204
|
+
### 7.3 Estrutura de validação no JSON:
|
|
205
|
+
|
|
206
|
+
Para cada seletor, adicionar campo `verificado`:
|
|
207
|
+
|
|
208
|
+
```json
|
|
209
|
+
{
|
|
210
|
+
"seletor_sugerido": "#form-lead",
|
|
211
|
+
"verificado": true,
|
|
212
|
+
"elemento_encontrado": true,
|
|
213
|
+
"notas_validacao": ""
|
|
214
|
+
}
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
Se não verificado:
|
|
218
|
+
```json
|
|
219
|
+
{
|
|
220
|
+
"seletor_sugerido": "#hero-button",
|
|
221
|
+
"verificado": false,
|
|
222
|
+
"elemento_encontrado": false,
|
|
223
|
+
"notas_validacao": "Seletor não encontrado no arquivo original - verificar manualmente se está sendo injetado via JS dinâmico"
|
|
224
|
+
}
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
### 7.4 Relatório de validação ao final:
|
|
228
|
+
|
|
229
|
+
Adicionar ao campo `resumo` do JSON:
|
|
230
|
+
|
|
231
|
+
```json
|
|
232
|
+
"validacao_seletores": {
|
|
233
|
+
"total_seletores": 12,
|
|
234
|
+
"verificados": 10,
|
|
235
|
+
"nao_encontrados": 2,
|
|
236
|
+
"taxa_acerto": "83.3%",
|
|
237
|
+
"alertas": [
|
|
238
|
+
{
|
|
239
|
+
"seletor": "#cta-primary",
|
|
240
|
+
"motivo": "Não encontrado no código - pode ser gerado via framework (Next.js/React)",
|
|
241
|
+
"recomendacao": "Verificar no DOM renderizado do browser"
|
|
242
|
+
}
|
|
243
|
+
]
|
|
244
|
+
}
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
|
|
249
|
+
## REGRAS ADICIONAIS DE VALIDAÇÃO
|
|
250
|
+
|
|
251
|
+
1. **Framework-Aware:** Se o projeto usar Next.js, React ou Vue, considerar que seletores podem estar em JSX/TSX e não aparecer no HTML cru
|
|
252
|
+
2. **Dynamic Content:** Seletor pode ser gerado via JS dinâmico → marcar como `verificado: false` com nota explicativa
|
|
253
|
+
3. **ID Único:** Seletor com ID deve ser único → se houver duplicatas, marcar como alerta
|
|
254
|
+
4. **Classe Comum:** Seletor com classe genérica (ex: `.btn`, `.link`) → marcar como alerta (pode selecionar múltiplos elementos)
|
|
255
|
+
5. **Cross-Origin:** Se houver iframe de terceiro → validar separadamente o conteúdo dentro do iframe
|