wizz-method 1.17.0 → 1.18.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 +1 -1
- package/package.json +5 -2
- package/removals.txt +3 -0
- package/skills-registry.yaml +65 -13
- package/src/bmm-skills/1-analysis/wizz-agent-analyst/customize.toml +1 -1
- package/src/bmm-skills/1-analysis/wizz-set-feature/SKILL.md +41 -37
- package/src/bmm-skills/2-plan-workflows/wizz-agent-pm/customize.toml +1 -1
- package/src/bmm-skills/2-plan-workflows/wizz-agent-ux-designer/customize.toml +1 -1
- package/src/bmm-skills/3-solutioning/wizz-agent-architect/customize.toml +1 -1
- package/src/bmm-skills/4-implementation/wizz-agent-dev/customize.toml +1 -1
- package/src/modules/lowticket/README.md +55 -0
- package/src/modules/lowticket/module.yaml +31 -0
- package/src/modules/lowticket/skills/lowticket-funil/SKILL.md +112 -0
- package/src/modules/lowticket/skills/lowticket-funil/references/copy-das-paginas.md +75 -0
- package/src/modules/lowticket/skills/lowticket-funil/references/mapa-do-funil.md +71 -0
- package/src/modules/lowticket/skills/lowticket-metodologia/CATALOGO.md +352 -0
- package/src/modules/lowticket/skills/lowticket-metodologia/SKILL.md +62 -0
- package/src/modules/lowticket/skills/lowticket-metodologia/knowledge/01-principios.md +12 -0
- package/src/modules/lowticket/skills/lowticket-metodologia/knowledge/02-diagnostico-funil.md +83 -0
- package/src/modules/lowticket/skills/lowticket-metodologia/knowledge/03-campanha-bidcap.md +95 -0
- package/src/modules/lowticket/skills/lowticket-metodologia/knowledge/04-criativos.md +66 -0
- package/src/modules/lowticket/skills/lowticket-metodologia/knowledge/04a-criativos-ia.md +79 -0
- package/src/modules/lowticket/skills/lowticket-metodologia/knowledge/04b-criativos-formatos.md +152 -0
- package/src/modules/lowticket/skills/lowticket-metodologia/knowledge/05-oferta.md +51 -0
- package/src/modules/lowticket/skills/lowticket-metodologia/knowledge/06-pagina-vendas.md +175 -0
- package/src/modules/lowticket/skills/lowticket-metodologia/knowledge/06a-instagram.md +138 -0
- package/src/modules/lowticket/skills/lowticket-metodologia/knowledge/07-funil-upsell.md +73 -0
- package/src/modules/lowticket/skills/lowticket-metodologia/knowledge/08-pesquisa-publico.md +14 -0
- package/src/modules/lowticket/skills/lowticket-metodologia/knowledge/09-especialista-coproducao.md +41 -0
- package/src/modules/lowticket/skills/lowticket-metodologia/knowledge/10-levantar-caixa.md +49 -0
- package/src/modules/lowticket/skills/lowticket-metodologia/knowledge/11-checklist-roi.md +36 -0
- package/src/modules/lowticket/skills/lowticket-metodologia/knowledge/12-mineracao-ofertas.md +63 -0
- package/src/modules/lowticket/skills/lowticket-metodologia/knowledge/12a-mineracao-veredito.md +78 -0
- package/src/modules/lowticket/skills/lowticket-metodologia/knowledge/12b-fabrica-de-ofertas.md +178 -0
- package/src/modules/lowticket/skills/lowticket-metodologia/knowledge/13-benchmarks-vsl.md +10 -0
- package/src/modules/lowticket/skills/lowticket-metodologia/knowledge/14-vocabulario.md +55 -0
- package/src/modules/lowticket/skills/lowticket-metodologia/knowledge/15-como-estender.md +35 -0
- package/src/modules/lowticket/skills/lowticket-metodologia/knowledge/INDEX.md +45 -0
- package/src/modules/lowticket/skills/lowticket-metodologia/knowledge/guardrails.md +33 -0
- package/src/modules/lowticket/skills/lowticket-metodologia/knowledge/pontos-em-aberto.md +42 -0
- package/src/modules/lowticket/skills/lowticket-metodologia/references/swipe-file.md +38 -0
- package/src/modules/lowticket/skills/lowticket-minerador/SKILL.md +115 -0
- package/src/modules/lowticket/skills/lowticket-minerador/references/rubrica.md +75 -0
- package/src/modules/lowticket/skills/lowticket-pagina/SKILL.md +106 -0
- package/src/modules/lowticket/skills/lowticket-pagina/references/metas-e-medicao.md +70 -0
- package/src/modules/lowticket/skills/lowticket-pagina/references/padroes-de-codigo.md +148 -0
- package/src/modules/lowticket/skills/lowticket-trafego/SKILL.md +88 -0
- package/src/modules/lowticket/skills/lowticket-trafego/references/formato-do-diagnostico.md +56 -0
- package/src/modules/lowticket/skills/lowticket-trafego/references/reguas.md +72 -0
- package/src/modules/wizz/README.md +1 -1
- package/src/modules/wizz/_shared/cerebro.md +35 -1
- package/src/modules/wizz/_shared/communication-rules.md +8 -1
- package/src/modules/wizz/_shared/token-economy.md +7 -10
- package/src/modules/wizz/agents/wizz-ads/customize.toml +1 -1
- package/src/modules/wizz/agents/wizz-copy/customize.toml +1 -1
- package/src/modules/wizz/agents/wizz-designer/customize.toml +1 -1
- package/src/modules/wizz/agents/wizz-growth/customize.toml +1 -1
- package/src/modules/wizz/agents/wizz-maestro/SKILL.md +1 -1
- package/src/modules/wizz/agents/wizz-maestro/customize.toml +1 -1
- package/src/modules/wizz/agents/wizz-memoria/SKILL.md +1 -1
- package/src/modules/wizz/agents/wizz-qa/customize.toml +1 -1
- package/src/modules/wizz/agents/wizz-seo/customize.toml +1 -1
- package/src/modules/wizz/agents/wizz-social/customize.toml +1 -1
- package/src/modules/wizz/overrides/wizz-agent-analyst.toml +2 -2
- package/src/modules/wizz/overrides/wizz-agent-architect.toml +2 -2
- package/src/modules/wizz/overrides/wizz-agent-dev.toml +1 -1
- package/src/modules/wizz/overrides/wizz-agent-pm.toml +1 -1
- package/src/modules/wizz/overrides/wizz-agent-tech-writer.toml +1 -1
- package/src/modules/wizz/overrides/wizz-agent-ux-designer.toml +1 -1
- package/src/skills-lib/analytics-tracking/SKILL.md +2 -0
- package/src/skills-lib/analytics-tracking/references/utm-taxonomy.md +92 -0
- package/src/skills-lib/cerebro/SKILL.md +20 -17
- package/src/skills-lib/cerebro/references/comandos-pesquisa-e-memoria.md +96 -0
- package/src/skills-lib/cerebro/references/comandos-rotina-e-captura.md +25 -6
- package/src/skills-lib/cerebro/references/comandos-sessao.md +61 -37
- package/src/skills-lib/premium-landing-ui-researcher/references/source-first-protocol.md +1 -1
- package/src/skills-lib/tracking-audit/SKILL.md +78 -0
- package/src/skills-lib/tracking-audit/references/modo-diagnostico.md +72 -0
- package/src/skills-lib/tracking-audit/references/modo-implantacao.md +89 -0
- package/src/skills-lib/tracking-audit/references/utm-e-atribuicao.md +75 -0
- package/src/skills-lib/wizz-offer-forge/SKILL.md +27 -2
- package/src/skills-lib/wizz-offer-forge/references/plano-de-medicao.md +74 -0
- package/src/skills-lib/wizz-router/SKILL.md +1 -1
- package/src/skills-lib/wizz-router/references/routing-table-flat.md +1 -1
- package/tools/installer/commands/trace-report.js +1 -1
- package/tools/installer/modules/skills-lib.js +7 -1
- package/wizz-modules.yaml +17 -0
- package/src/skills-lib/cerebro/references/comandos-pesquisa-e-sync.md +0 -44
- package/src/skills-lib/graphify/.graphify_version +0 -1
- package/src/skills-lib/graphify/SKILL.md +0 -1199
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# Comandos de Pesquisa e Memoria: /prospect, /memoria
|
|
2
|
+
|
|
3
|
+
Carregue este arquivo ao executar `/prospect` ou `/memoria`. Antes de tudo, releia a REGRA DE OURO e a seção Vault no SKILL.md principal — esses comandos dependem delas.
|
|
4
|
+
|
|
5
|
+
## /prospect
|
|
6
|
+
|
|
7
|
+
**Objetivo:** pesquisar e registrar prospect.
|
|
8
|
+
|
|
9
|
+
**Passos:**
|
|
10
|
+
1. Receber nome/empresa + objetivo (tudo de uma vez)
|
|
11
|
+
2. Pesquisar via web search (setor, presença digital, dores, oportunidades)
|
|
12
|
+
3. Write direto em `_prospects/YYYY-MM-DD-[slug].md`
|
|
13
|
+
4. Resumo executivo para o usuário (não precisa estar no arquivo)
|
|
14
|
+
|
|
15
|
+
**Template `_prospects/YYYY-MM-DD-[slug].md`:**
|
|
16
|
+
```markdown
|
|
17
|
+
# [Nome / Empresa]
|
|
18
|
+
> Data: [data] | Objetivo: [tipo] | Status: pesquisado
|
|
19
|
+
|
|
20
|
+
## Perfil
|
|
21
|
+
- Setor / Tamanho / Produto / Público-alvo
|
|
22
|
+
|
|
23
|
+
## Presença digital
|
|
24
|
+
- Site / Redes / Ads ativos
|
|
25
|
+
|
|
26
|
+
## Oportunidade e ângulo de abordagem
|
|
27
|
+
[o que oferecer e como entrar]
|
|
28
|
+
|
|
29
|
+
## Próximo passo
|
|
30
|
+
- [ ] [ação]
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## /memoria
|
|
34
|
+
|
|
35
|
+
**Objetivo:** ler (e alimentar) a auto-memória do projeto a partir de **qualquer**
|
|
36
|
+
plataforma, não só do Claude Code.
|
|
37
|
+
|
|
38
|
+
A auto-memória guarda as duas linhas que não moram no vault: **armadilha de stack /
|
|
39
|
+
bug não-óbvio** e **preferência de trabalho / correção do usuário**. No Claude Code ela
|
|
40
|
+
carrega sozinha no início da sessão. Em Codex, OpenCode e Gemini não carrega nada, mas
|
|
41
|
+
o dado está lá: é um diretório comum de arquivos `.md` no disco local. Este comando é a
|
|
42
|
+
ponte de leitura. Não existe segunda cópia dos fatos — a fonte continua sendo uma só.
|
|
43
|
+
|
|
44
|
+
### Passo 1 — resolver o diretório de memória
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
PROJ_DIR="$(pwd)"
|
|
48
|
+
SLUG="$(printf '%s' "$PROJ_DIR" | sed 's/[/.]/-/g')"
|
|
49
|
+
MEM="$HOME/.claude/projects/$SLUG/memory"
|
|
50
|
+
# fallback: o slug histórico nem sempre normaliza espaço e ponto do mesmo jeito
|
|
51
|
+
[ -d "$MEM" ] || MEM="$(ls -d "$HOME"/.claude/projects/*"$(basename "$PROJ_DIR")"/memory 2>/dev/null | head -1)"
|
|
52
|
+
echo "$MEM"
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Diretório inexistente = projeto sem auto-memória. Siga sem travar; não é problema a corrigir.
|
|
56
|
+
|
|
57
|
+
### Passo 2 — carregar só o índice
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
cat "$MEM/MEMORY.md"
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
O índice tem teto de 8 KB e é 1 linha por memória. **Nunca leia os arquivos individuais
|
|
64
|
+
em bloco.** Abra um arquivo só quando a linha do índice for relevante ao pedido da vez:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
grep -rln "termo" "$MEM" --include="*.md" | head -5 # depois Read só o que casar
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
`_archive/` fica fora do índice de propósito. Só entre nele quando o índice não tiver a resposta.
|
|
71
|
+
|
|
72
|
+
### Passo 3 — gravar (mesma pasta, mesmo formato)
|
|
73
|
+
|
|
74
|
+
Vale o Dever de Memória e o teto: **40 memórias e 8 KB de índice por projeto**. Antes de
|
|
75
|
+
criar, `grep` no destino; se o fato já existe, atualize o arquivo que existe.
|
|
76
|
+
|
|
77
|
+
```markdown
|
|
78
|
+
---
|
|
79
|
+
name: <slug-em-kebab-case>
|
|
80
|
+
description: <resumo de uma linha, é o que decide a relevância na recuperação>
|
|
81
|
+
metadata:
|
|
82
|
+
type: user | feedback | project | reference
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
<o fato. Para feedback/project, siga com as linhas **Why:** e **How to apply:**.
|
|
86
|
+
Ligue memórias relacionadas com [[nome-da-outra]].>
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Depois de escrever o arquivo, acrescente 1 linha ao `MEMORY.md`:
|
|
90
|
+
`- [Título](arquivo.md) — gancho`
|
|
91
|
+
|
|
92
|
+
### Limites honestos
|
|
93
|
+
|
|
94
|
+
- É **pull, não push**: fora do Claude Code nada carrega sozinho, o agente precisa rodar o comando.
|
|
95
|
+
- Vale só para agente rodando na **mesma máquina**. Agente remoto não enxerga este disco.
|
|
96
|
+
- O teto e a poda continuam valendo igual, venha a escrita de qual plataforma vier.
|
|
@@ -36,19 +36,38 @@ Carregue este arquivo ao executar `/dia`, `/dump`, `/decisao` ou `/conteudo`. An
|
|
|
36
36
|
|
|
37
37
|
## /decisao
|
|
38
38
|
|
|
39
|
-
**Objetivo:** registrar decisão.
|
|
39
|
+
**Objetivo:** registrar decisão. 1 grep antes, nenhum Read.
|
|
40
40
|
|
|
41
41
|
**Passos:**
|
|
42
42
|
1. Receber descrição + alternativas + projeto (perguntar tudo de uma vez se não passado)
|
|
43
|
-
2.
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
43
|
+
2. **Grep antes de gravar** (obrigatório, 1 bash call):
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
grep -ril "<2 ou 3 palavras do tema>" "$VAULT/_decisions/" | head -5
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
- Achou decisão sobre o mesmo tema: **não crie arquivo novo**. Abra o que existe e decida entre dois caminhos:
|
|
50
|
+
- a decisão nova **substitui** a antiga → marque a antiga com `status: superseded` e `supersedida_por: <slug novo>`, e crie a nova com `supersede: <slug antigo>`
|
|
51
|
+
- a decisão nova **detalha** a antiga → edite a antiga, não crie a segunda
|
|
52
|
+
- Não achou nada: siga para o passo 3.
|
|
53
|
+
|
|
54
|
+
3. Write direto em `_decisions/YYYY-MM-DD-[slug].md` (template abaixo)
|
|
55
|
+
4. `grep -n "## Decisões recentes" "$VAULT/CEREBRO.md"` → linha
|
|
56
|
+
5. Edit para inserir referência wiki-link logo abaixo dessa linha
|
|
57
|
+
6. Se há projeto: `grep -n "## Decisões" "$VAULT/projetos/$PROJ.md"` → Edit 1 linha
|
|
47
58
|
|
|
48
59
|
**Template `_decisions/YYYY-MM-DD-[slug].md`:**
|
|
49
60
|
```markdown
|
|
61
|
+
---
|
|
62
|
+
data: YYYY-MM-DD
|
|
63
|
+
projeto: [nome]
|
|
64
|
+
tema: [2 a 4 palavras-chave separadas por vírgula, é por elas que o grep acha]
|
|
65
|
+
status: ativa
|
|
66
|
+
supersede: [slug da decisão que esta substitui, ou omitir]
|
|
67
|
+
supersedida_por: [preenchido depois, quando outra decisão substituir esta]
|
|
68
|
+
---
|
|
69
|
+
|
|
50
70
|
# [Título]
|
|
51
|
-
> Data: [data] | Projeto: [[projetos/nome]] | Status: ativa
|
|
52
71
|
|
|
53
72
|
## Decisão
|
|
54
73
|
[1-2 linhas]
|
|
@@ -2,11 +2,30 @@
|
|
|
2
2
|
|
|
3
3
|
Carregue este arquivo ao executar `/iniciar`, `/ver` ou `/salvar`. Antes de tudo, releia a REGRA DE OURO e a seção Vault no SKILL.md principal — esses comandos dependem delas.
|
|
4
4
|
|
|
5
|
+
## O bloco Estado
|
|
6
|
+
|
|
7
|
+
Todo arquivo em `projetos/` começa com um bloco `## Estado` de no **máximo 12 linhas**, logo abaixo do título. Ele é sobrescrito a cada `/salvar` e é a única coisa que o `/ver` precisa ler.
|
|
8
|
+
|
|
9
|
+
```markdown
|
|
10
|
+
## Estado
|
|
11
|
+
- **Fase:** [em que ponto o projeto está, 1 linha]
|
|
12
|
+
- **Stack:** [1 linha]
|
|
13
|
+
- **Onde parou:** [1 linha]
|
|
14
|
+
- **Próximo passo:** [1 linha, a primeira coisa a fazer ao voltar]
|
|
15
|
+
- **Bloqueio:** [1 linha, ou "nenhum"]
|
|
16
|
+
- **Última sessão:** [YYYY-MM-DD] — [1 linha]
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Por que 12 linhas: o `/ver` vira 1 Read de 14 linhas em vez de um tail de 60. E o bloco fica no topo, onde qualquer humano abrindo a nota também lê primeiro.
|
|
20
|
+
|
|
21
|
+
O que **não** entra no bloco: histórico, decisão, aprendizado, lista longa de pendências. Histórico é a tabela `Sessões`; decisão é `_decisions/`; aprendizado é a auto-memória do agente; a lista completa de pendências é a seção `O que falta`.
|
|
22
|
+
|
|
5
23
|
## /iniciar
|
|
6
24
|
|
|
7
25
|
**Objetivo:** configurar projeto novo. Só cria arquivos — não lê nada além do CEREBRO.md mínimo.
|
|
8
26
|
|
|
9
27
|
**Passos:**
|
|
28
|
+
|
|
10
29
|
1. Descobrir vault (ver seção Vault)
|
|
11
30
|
2. `grep -c "$PROJ" "$VAULT/CEREBRO.md"` → verificar se projeto já existe (0 = novo)
|
|
12
31
|
3. Se novo: entrevistar em 1 mensagem (organização, info essencial, estilo, modo)
|
|
@@ -15,21 +34,27 @@ Carregue este arquivo ao executar `/iniciar`, `/ver` ou `/salvar`. Antes de tudo
|
|
|
15
34
|
6. Confirmar
|
|
16
35
|
|
|
17
36
|
**Template `projetos/[nome].md`:**
|
|
37
|
+
|
|
18
38
|
```markdown
|
|
19
39
|
# [Nome] — Estado Atual
|
|
20
40
|
> Atualizado: [data]
|
|
21
41
|
|
|
42
|
+
## Estado
|
|
43
|
+
- **Fase:** [fase]
|
|
44
|
+
- **Stack:** [stack]
|
|
45
|
+
- **Onde parou:** [1 linha]
|
|
46
|
+
- **Próximo passo:** [1 linha]
|
|
47
|
+
- **Bloqueio:** nenhum
|
|
48
|
+
- **Última sessão:** [data] — [1 linha]
|
|
49
|
+
|
|
22
50
|
## Preferências
|
|
23
51
|
- Organização: [resposta]
|
|
24
52
|
- Info essencial: [resposta]
|
|
25
53
|
- Estilo: [resposta]
|
|
26
54
|
- Modo: [registro / sugestivo]
|
|
27
55
|
|
|
28
|
-
##
|
|
29
|
-
[
|
|
30
|
-
|
|
31
|
-
## Onde parou
|
|
32
|
-
-
|
|
56
|
+
## Contexto
|
|
57
|
+
[o que o bloco Estado não cabe: stack detalhada, restrições, links]
|
|
33
58
|
|
|
34
59
|
## O que falta
|
|
35
60
|
- [ ]
|
|
@@ -41,6 +66,7 @@ Carregue este arquivo ao executar `/iniciar`, `/ver` ou `/salvar`. Antes de tudo
|
|
|
41
66
|
```
|
|
42
67
|
|
|
43
68
|
**Template bloco em CEREBRO.md:**
|
|
69
|
+
|
|
44
70
|
```markdown
|
|
45
71
|
### [Nome] [emoji]
|
|
46
72
|
- **Stack:** [stack]
|
|
@@ -51,20 +77,14 @@ Carregue este arquivo ao executar `/iniciar`, `/ver` ou `/salvar`. Antes de tudo
|
|
|
51
77
|
|
|
52
78
|
## /ver
|
|
53
79
|
|
|
54
|
-
**Objetivo:** mostrar estado atual rápido. Máximo: 1 Read.
|
|
80
|
+
**Objetivo:** mostrar estado atual rápido. Máximo: 1 Read de 14 linhas.
|
|
55
81
|
|
|
56
82
|
**Passos:**
|
|
57
|
-
1. `wc -l "$VAULT/projetos/$PROJ.md"` → total de linhas
|
|
58
|
-
2. Read com `offset=(n-60)`, `limit=60` → pega Onde parou + O que falta + Sessões
|
|
59
|
-
3. Retornar em formato condensado:
|
|
60
83
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
O que falta: [checkboxes]
|
|
66
|
-
Última sessão: [1 linha]
|
|
67
|
-
```
|
|
84
|
+
1. Read `projetos/[nome].md` com `limit=14` (o bloco Estado está no topo)
|
|
85
|
+
2. Devolver o bloco quase como está, sem reescrever
|
|
86
|
+
|
|
87
|
+
**Arquivo antigo, sem bloco Estado no topo:** cai no caminho lento uma única vez — `wc -l` e Read das últimas 60 linhas — e ao devolver, ofereça criar o bloco. Aceito, o próximo `/ver` volta a custar 1 Read curto.
|
|
68
88
|
|
|
69
89
|
## /salvar
|
|
70
90
|
|
|
@@ -73,6 +93,7 @@ O que falta: [checkboxes]
|
|
|
73
93
|
**Passos (executar em ordem, sem desvios):**
|
|
74
94
|
|
|
75
95
|
**1. Localizar projeto e bloco no CEREBRO.md (1 bash call)**
|
|
96
|
+
|
|
76
97
|
```bash
|
|
77
98
|
VAULT=~/Documents/projects/Obsidian\ Vault
|
|
78
99
|
PROJ=construcao # inferir do diretório atual ou contexto
|
|
@@ -80,43 +101,46 @@ grep -n "### \|Última sessão\|Pendente" "$VAULT/CEREBRO.md" | grep -A2 -i "$PR
|
|
|
80
101
|
wc -l "$VAULT/projetos/$PROJ.md"
|
|
81
102
|
```
|
|
82
103
|
|
|
83
|
-
**2. Ler
|
|
84
|
-
|
|
85
|
-
-
|
|
104
|
+
**2. Ler o topo e o fim do arquivo do projeto (2 Reads curtos)**
|
|
105
|
+
|
|
106
|
+
- topo: `limit=14` → bloco Estado
|
|
107
|
+
- fim: `offset = (total_linhas - 40)`, `limit = 40` → O que falta e tabela Sessões
|
|
86
108
|
|
|
87
109
|
**3. Construir as alterações na memória, depois aplicar (Edits atômicos)**
|
|
88
110
|
|
|
89
|
-
Em `projetos/[nome].md
|
|
111
|
+
Em `projetos/[nome].md`:
|
|
112
|
+
|
|
113
|
+
- **Sobrescrever o bloco `## Estado`** inteiro, mantendo os mesmos 6 campos e o teto de 12 linhas. Não empilhar bloco novo: o histórico é a tabela.
|
|
114
|
+
- Atualizar a seção `O que falta` (marcar o que saiu, acrescentar o que entrou).
|
|
115
|
+
- Acrescentar 1 linha ao fim da tabela `Sessões`:
|
|
116
|
+
|
|
90
117
|
```markdown
|
|
91
|
-
|
|
92
|
-
- [item 1]
|
|
93
|
-
- [item 2]
|
|
118
|
+
| [data] | [resumo 1 linha] |
|
|
94
119
|
```
|
|
95
120
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
Adicionar linha na tabela Sessões (append na última linha da tabela).
|
|
121
|
+
Arquivo sem bloco `## Estado`: criar agora, logo abaixo do título, com o que a sessão apurou.
|
|
99
122
|
|
|
100
123
|
**4. Atualizar bloco do projeto em CEREBRO.md (1 Edit)**
|
|
124
|
+
|
|
101
125
|
- Usar grep do passo 1 para saber as linhas exatas
|
|
102
126
|
- Edit cirúrgico apenas nas linhas "Última sessão" e "Pendente"
|
|
103
127
|
|
|
104
|
-
**5.
|
|
105
|
-
-
|
|
106
|
-
- Editar apenas: data no cabeçalho, pendências em "O que falta", commit hash se mudou
|
|
128
|
+
**5. Se houve decisão relevante:** criar arquivo em `_decisions/` (ver `comandos-rotina-e-captura.md` para o frontmatter e a regra de grep-antes-de-gravar).
|
|
129
|
+
Aprendizado técnico (armadilha de stack, bug não óbvio, pegadinha de ambiente) **não vai para o vault**: vai para a auto-memória do agente. No vault ninguém lia. No Claude Code ela carrega sozinha no início da sessão; em Codex, OpenCode e Gemini o caminho de leitura é o `/memoria` (ver `comandos-pesquisa-e-memoria.md`).
|
|
107
130
|
|
|
108
|
-
**6.
|
|
109
|
-
```markdown
|
|
110
|
-
| [data] | [projeto] | [resumo 1 linha] |
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
**7. Se houve decisão ou aprendizado relevante:** criar arquivo em `_decisions/` ou `_learnings/` (Write direto, sem Read prévio).
|
|
131
|
+
**6. Higiene do índice (compactação)**
|
|
114
132
|
|
|
115
|
-
**8. Higiene do índice (compactação)**
|
|
116
133
|
```bash
|
|
117
134
|
wc -l "$VAULT/CEREBRO.md"
|
|
118
135
|
```
|
|
136
|
+
|
|
119
137
|
- Se > 150 linhas: mover o conteúdo mais antigo/menos essencial (projeto ✅ concluído ou ❌ descontinuado com histórico longo, ou entradas de "Decisões recentes" além das ~15 mais novas) para `_index/cerebro-archive.md`, deixando no lugar só 1 linha de referência `[[_index/cerebro-archive]]`. Nunca apagar, só mover.
|
|
120
138
|
- Se ≤ 150 linhas: pular este passo.
|
|
121
139
|
|
|
122
|
-
|
|
140
|
+
```bash
|
|
141
|
+
grep -c "^| " "$VAULT/projetos/$PROJ.md"
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
- Tabela Sessões com mais de 15 linhas: mover as mais antigas para `_index/cerebro-archive.md`, sob `## Sessões antigas — [projeto]`, deixando as 15 mais novas no arquivo do projeto. Nunca apagar, só mover.
|
|
145
|
+
|
|
146
|
+
**7. Confirmar em 2 linhas** o que foi salvo.
|
|
@@ -35,7 +35,7 @@ Antes de qualquer rede ou MCP, inspecionar o que o usuário já tem:
|
|
|
35
35
|
|
|
36
36
|
1. **Pasta `modelos lp/` (ou equivalente)**: rodar `find ~ -maxdepth 6 -type d -iname "modelos*lp*"` para localizar. Listar subpastas, ler package.json e README.md de cada projeto promissor. Identificar quais já tem Lenis, GSAP, R3F, OGL, Embla, Framer Motion, shaders prontos.
|
|
37
37
|
2. **Projeto atual do usuário**: se houver, listar dependências instaladas (`cat package.json`) e componentes/utilities existentes que podem ser reaproveitados.
|
|
38
|
-
3. **Cérebro / vault do usuário**: usar grep nos arquivos do vault (`projetos/`, `
|
|
38
|
+
3. **Cérebro / vault do usuário**: usar grep nos arquivos do vault (`projetos/`, `_decisions/`) para achar padrões técnicos já documentados em projetos anteriores.
|
|
39
39
|
|
|
40
40
|
Saída desta fase: lista de **componentes, libs e padrões reaproveitáveis** com path absoluto.
|
|
41
41
|
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: tracking-audit
|
|
3
|
+
description: Auditoria e diagnóstico de rastreamento de resposta direta em dois modos. Modo implantação valida pixel, CAPI, domínio verificado, eventos priorizados, template de UTM com ID, repasse do parâmetro nativo pelo checkout, higiene de nomenclatura e compra-teste por caminho. Modo diagnóstico lê as transições do funil contra a régua, separa problema de medição de problema de conversão e diz qual transição está furando. Use quando alguém perguntar "por que a venda não bate com o gerenciador", "onde está furando o funil", "meu pixel está certo?", "as UTMs estão corretas?", "o tráfego orgânico está inflado", "qual dado falta pra eu decidir", ou antes de subir campanha nova. NÃO use para desenhar plano de medição de SaaS/produto (use analytics-tracking), para decidir bid e orçamento (use paid-ads) nem para criar a oferta (use wizz-offer-forge).
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Tracking Audit
|
|
7
|
+
|
|
8
|
+
Auditoria de rastreamento para oferta de resposta direta. Uma hora aqui evita 30 dias de campanha medida errado.
|
|
9
|
+
|
|
10
|
+
A skill faz duas coisas e nada além: **valida o que foi instalado** e **diz onde o funil está furando**. Ela não cria oferta, não decide bid e não escreve copy.
|
|
11
|
+
|
|
12
|
+
## Passo 0 — Achar a régua (obrigatório, sempre)
|
|
13
|
+
|
|
14
|
+
Benchmark sem origem é chute. Antes de qualquer análise, resolva de onde vêm os números, nesta ordem:
|
|
15
|
+
|
|
16
|
+
1. **Skill `lowticket-metodologia` instalada?** Se sim, ela tem precedência. Leia a entrada de diagnóstico de funil no INDEX dela e use os benchmarks de lá. Declare na resposta: "régua: metodologia low ticket".
|
|
17
|
+
2. **O projeto tem histórico próprio?** Trinta dias de dados reais do mesmo público valem mais que qualquer benchmark de mercado. Use a mediana do próprio histórico como linha de base.
|
|
18
|
+
3. **Nenhum dos dois?** Peça ao usuário. Não invente faixa, não use número de memória, não cite benchmark sem dizer de onde saiu.
|
|
19
|
+
|
|
20
|
+
> Regra anti-invenção: todo número que aparecer no relatório tem fonte declarada, ou vira PENDÊNCIA. Um relatório com faixa inventada é pior que nenhum relatório, porque parece medido.
|
|
21
|
+
|
|
22
|
+
## Escolher o modo
|
|
23
|
+
|
|
24
|
+
| O pedido é... | Modo | Referência |
|
|
25
|
+
|---|---|---|
|
|
26
|
+
| Vou subir campanha, está tudo instalado? | implantação | `references/modo-implantacao.md` |
|
|
27
|
+
| Está rodando e o número não fecha | diagnóstico | `references/modo-diagnostico.md` |
|
|
28
|
+
| A venda não bate com o gerenciador | diagnóstico, começando por atribuição | `references/utm-e-atribuicao.md` |
|
|
29
|
+
| Como monto as UTMs desta conta | implantação, só a parte de tags | `references/utm-e-atribuicao.md` |
|
|
30
|
+
|
|
31
|
+
Em dúvida entre os dois: se existe dado rodando, é diagnóstico. Implantação é para o que ainda não subiu.
|
|
32
|
+
|
|
33
|
+
## Os princípios que decidem no empate
|
|
34
|
+
|
|
35
|
+
- **O banco próprio é a fonte de verdade.** Gerenciador e Analytics perdem venda (bloqueador, iOS, cookie recusado). O número oficial vem do banco alimentado por webhook da plataforma de pagamento. Quando as duas fontes divergem, a divergência é o achado, não um erro de leitura.
|
|
36
|
+
- **O pixel mede o pixel.** Connect rate é o instante em que o `PageView` dispara, não o instante em que a pessoa vê a oferta. Subir o pixel sem consertar a página é maquiagem de métrica.
|
|
37
|
+
- **Atribuir por ID, não por nome.** A UTM carrega nome e ID. Renomear campanha não pode quebrar a atribuição.
|
|
38
|
+
- **Orgânico não é canal, é ausência de UTM.** O balde "organic" é destaque sem tag, direct e recompra. Taguear tudo e ver o orgânico cair é a prova da origem real.
|
|
39
|
+
- **Higiene de nomenclatura é infraestrutura.** Nome de campanha sujo não se conserta depois: a plataforma continua servindo o nome antigo em cache para o que já foi entregue.
|
|
40
|
+
- **Diagnóstico é do fim para o começo.** Sempre. Recuperar venda iniciada é dinheiro que já era seu; mexer em criativo com checkout furando é desperdício.
|
|
41
|
+
|
|
42
|
+
## Entradas que a auditoria precisa
|
|
43
|
+
|
|
44
|
+
Peça de uma vez, não uma por uma:
|
|
45
|
+
|
|
46
|
+
- URL da página de vendas e da página de checkout
|
|
47
|
+
- Plataforma de checkout e de pagamento
|
|
48
|
+
- Print ou export do gerenciador com: cliques no link, visitas à página, checkouts iniciados, compras, valor gasto, valor atribuído
|
|
49
|
+
- Acesso (ou print) do painel de atribuição, quando existir
|
|
50
|
+
- O template de UTM que está colado hoje no campo de parâmetros de URL
|
|
51
|
+
|
|
52
|
+
Faltou item: siga com o que dá e liste o que falta em PENDÊNCIAS. Nunca preencha buraco de dado com estimativa.
|
|
53
|
+
|
|
54
|
+
## Saída
|
|
55
|
+
|
|
56
|
+
Um relatório em markdown, sempre com estas quatro partes:
|
|
57
|
+
|
|
58
|
+
1. **Achados por severidade.** `CRÍTICO` (o dado está errado e a decisão em cima dele também), `ALTO` (perde venda ou perde atribuição), `MÉDIO` (higiene, vai doer depois), `BAIXO` (melhoria).
|
|
59
|
+
2. **A transição que está furando**, com a taxa real calculada e a régua ao lado, sempre com a fonte da régua.
|
|
60
|
+
3. **O que consertar, em ordem**, seguindo a hierarquia do modo diagnóstico. Um item por linha, com quem resolve (dev, checkout, criativo, página).
|
|
61
|
+
4. **Plano de tags pronto para colar**, quando o modo for implantação ou quando a auditoria encontrar UTM errada.
|
|
62
|
+
|
|
63
|
+
Feche com **PENDÊNCIAS**: o que não deu para verificar e o que precisa de acesso ou de dado que não veio.
|
|
64
|
+
|
|
65
|
+
## Ferramentas
|
|
66
|
+
|
|
67
|
+
- Inspeção de página: CLI `agent-browser`. Nunca Playwright.
|
|
68
|
+
- Nada mais é obrigatório. A auditoria funciona lendo print e página.
|
|
69
|
+
|
|
70
|
+
## Quando delegar
|
|
71
|
+
|
|
72
|
+
| Situação | Vai para |
|
|
73
|
+
|---|---|
|
|
74
|
+
| O furo é a página (LCP, mobile, blocos) | `page-cro` |
|
|
75
|
+
| O furo é o criativo | `ad-creative` |
|
|
76
|
+
| O furo é bid, orçamento ou estrutura de campanha | `paid-ads` |
|
|
77
|
+
| Precisa desenhar medição de produto ou SaaS | `analytics-tracking` |
|
|
78
|
+
| A oferta em si não fecha | `wizz-offer-forge` |
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# Modo diagnóstico
|
|
2
|
+
|
|
3
|
+
Está rodando e o número não fecha. Este modo descobre **qual transição está furando** e separa problema de medição de problema de conversão.
|
|
4
|
+
|
|
5
|
+
Régua: leia o Passo 0 do `SKILL.md`. Cada faixa citada no relatório declara de onde veio.
|
|
6
|
+
|
|
7
|
+
## As 5 transições
|
|
8
|
+
|
|
9
|
+
Base do funil é a visita à página, igual a 100%. A taxa real de cada transição é a etapa dividida pela **anterior**, nunca pela base.
|
|
10
|
+
|
|
11
|
+
| # | Transição | O que ela revela |
|
|
12
|
+
|---|---|---|
|
|
13
|
+
| 1 | Cliques no anúncio → Visitas na página | Saúde técnica: velocidade, redirect, SSL, mobile, disparo do `PageView` |
|
|
14
|
+
| 2 | Visitas → Checkout iniciado | Casamento entre criativo, página e oferta |
|
|
15
|
+
| 3 | Checkout iniciado → Venda iniciada | Atrito de checkout: campos, meios de pagamento, frete, taxa surpresa |
|
|
16
|
+
| 4 | Venda iniciada → Aprovada (PIX) | Recuperação: lembrete, prazo, instrução |
|
|
17
|
+
| 5 | Venda iniciada → Aprovada (cartão) | Recusa: antifraude, parcelamento, emissor |
|
|
18
|
+
|
|
19
|
+
Sempre diagnosticar **do fim para o começo**.
|
|
20
|
+
|
|
21
|
+
## Hierarquia do que atacar primeiro
|
|
22
|
+
|
|
23
|
+
Se dá para mexer em uma coisa só:
|
|
24
|
+
|
|
25
|
+
1. **Venda iniciada → aprovada.** O ROI mais rápido do funil. Esse dinheiro já era seu.
|
|
26
|
+
2. **Checkout iniciado → venda iniciada.** Ajuste barato, ganho grande.
|
|
27
|
+
3. **Visitas → checkout.** Página e criativo. Mais lento e mais caro; só depois que o checkout está resolvido.
|
|
28
|
+
4. **Cliques → visitas.** Técnico. Chama dev.
|
|
29
|
+
|
|
30
|
+
Ordem de prioridade das métricas: vendas > checkout iniciado > CPC > hook rate > hold rate > CPM. Não se mexe em CPC se a página não converte. Não se mexe em CPA se o checkout está furando.
|
|
31
|
+
|
|
32
|
+
## Medição contra conversão
|
|
33
|
+
|
|
34
|
+
Antes de dizer "a conversão caiu", prove que a **medição** está de pé. As três perguntas:
|
|
35
|
+
|
|
36
|
+
| Sintoma | Se for medição | Se for conversão |
|
|
37
|
+
|---|---|---|
|
|
38
|
+
| Cliques muito acima das visitas | `PageView` não dispara, ou dispara tarde | Página fora do ar, redirect quebrado |
|
|
39
|
+
| Venda no banco e não no gerenciador | Falta CAPI, falta domínio verificado, iOS | Nada: a venda existe |
|
|
40
|
+
| Venda no gerenciador e não no banco | Deduplicação ausente, evento duplicado | Nada: a venda não existe |
|
|
41
|
+
| Orgânico subindo sozinho | Rota sem UTM | Recompra e boca a boca de verdade |
|
|
42
|
+
| Atribuição some ao renomear campanha | Atribuição por nome, não por ID | Nada |
|
|
43
|
+
|
|
44
|
+
Regra prática: se as duas fontes discordam, a discordância **é** o achado. Nunca escolha a fonte que confirma a tese.
|
|
45
|
+
|
|
46
|
+
## Qual dado falta para decidir
|
|
47
|
+
|
|
48
|
+
Parte do trabalho é dizer o que não dá para responder ainda. Formato:
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
PENDÊNCIA: não dá para separar atrito de checkout de desistência de preço.
|
|
52
|
+
Falta: evento AddPaymentInfo.
|
|
53
|
+
Custo de instalar: baixo.
|
|
54
|
+
O que muda quando existir: a transição 3 vira duas, e o conserto deixa de ser chute.
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Nunca invente o número que falta. Um "provavelmente uns 30%" contamina a decisão inteira.
|
|
58
|
+
|
|
59
|
+
## ROI verdadeiro contra ROI falso
|
|
60
|
+
|
|
61
|
+
- **ROI falso:** valor atribuído pelo gerenciador dividido pelo gasto do gerenciador. Conta venda que não entrou e ignora venda que entrou sem atribuição.
|
|
62
|
+
- **ROI verdadeiro:** faturamento aprovado no banco próprio, menos taxa da plataforma e menos reembolso, dividido pelo gasto real do período.
|
|
63
|
+
|
|
64
|
+
Sempre reporte os dois lado a lado. A diferença entre eles é o tamanho do buraco de medição.
|
|
65
|
+
|
|
66
|
+
## Leitura de print do gerenciador
|
|
67
|
+
|
|
68
|
+
Métricas que precisam aparecer no print para o diagnóstico rodar:
|
|
69
|
+
|
|
70
|
+
cliques no link, visualizações da página, checkouts iniciados, compras (ou resultados quando a campanha otimiza para compra), valor gasto, valor atribuído.
|
|
71
|
+
|
|
72
|
+
Faltou alguma: diga qual e o que ela impede de calcular. Não estime.
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# Modo implantação
|
|
2
|
+
|
|
3
|
+
Checklist executável para antes de subir campanha. Roda de cima para baixo. Cada item tem um jeito de verificar, não é declaração de fé.
|
|
4
|
+
|
|
5
|
+
Régua: leia o Passo 0 do `SKILL.md` antes. Sem régua declarada, o relatório sai sem número.
|
|
6
|
+
|
|
7
|
+
## 1. Página e carregamento
|
|
8
|
+
|
|
9
|
+
| Verificar | Como | Reprova quando |
|
|
10
|
+
|---|---|---|
|
|
11
|
+
| Página abre no mobile real | `agent-browser` em viewport de celular | Layout quebra ou bloco some |
|
|
12
|
+
| Tempo até o conteúdo principal | PageSpeed Insights, aba mobile | Fora da meta declarada pela régua do projeto |
|
|
13
|
+
| Redirect | Abrir o link do anúncio sem encurtador no meio | Qualquer salto extra ou loop |
|
|
14
|
+
| SSL | Cadeado e certificado válido no domínio final | Aviso do navegador |
|
|
15
|
+
|
|
16
|
+
Furou aqui: é trabalho de dev. Não mexa em criativo antes de resolver.
|
|
17
|
+
|
|
18
|
+
## 2. Pixel e servidor
|
|
19
|
+
|
|
20
|
+
| Verificar | Como | Reprova quando |
|
|
21
|
+
|---|---|---|
|
|
22
|
+
| Pixel presente na página | Extensão de debug da plataforma ou console | Não dispara `PageView` |
|
|
23
|
+
| Posição do disparo | Ver se o `PageView` sobe antes do conteúdo visível | Dispara em `onload` tardio: infla connect rate e mente sobre a visita |
|
|
24
|
+
| Evento de conversão do lado do servidor (CAPI) | Painel de qualidade da plataforma | Só navegador, sem servidor |
|
|
25
|
+
| Deduplicação | `event_id` igual entre navegador e servidor | Sem `event_id`: a mesma venda conta duas vezes |
|
|
26
|
+
| Domínio verificado | Painel de negócio da plataforma | Não verificado: perde atribuição em iOS |
|
|
27
|
+
|
|
28
|
+
> O pixel mede o pixel. Um connect rate bonito com página lenta é métrica maquiada, não conversão.
|
|
29
|
+
|
|
30
|
+
## 3. Eventos priorizados
|
|
31
|
+
|
|
32
|
+
Instale nesta ordem. Os quatro primeiros são obrigatórios; os outros entram quando o funil tiver a etapa.
|
|
33
|
+
|
|
34
|
+
1. `PageView` — visita à página de vendas
|
|
35
|
+
2. `ViewContent` — chegou ao bloco de oferta (não é o mesmo que abrir a página)
|
|
36
|
+
3. `InitiateCheckout` — clicou para comprar
|
|
37
|
+
4. `Purchase` — venda aprovada, com valor e moeda
|
|
38
|
+
5. `AddPaymentInfo` — preencheu pagamento, separa atrito de checkout de desistência de preço
|
|
39
|
+
6. `Lead` — captura, quando existir etapa de lead
|
|
40
|
+
7. `Subscribe` ou evento de recorrência, quando existir
|
|
41
|
+
8. Evento próprio de upsell ou order bump, quando existir
|
|
42
|
+
|
|
43
|
+
Regra: evento sem valor monetário em `Purchase` inutiliza ROAS. Evento duplicado inutiliza tudo.
|
|
44
|
+
|
|
45
|
+
## 4. Tags e atribuição
|
|
46
|
+
|
|
47
|
+
Ver `utm-e-atribuicao.md` para os templates. O que a implantação precisa provar:
|
|
48
|
+
|
|
49
|
+
- O template de UTM está colado no campo de parâmetros de URL do anúncio, não no destino do anúncio.
|
|
50
|
+
- Cada parâmetro carrega nome **e** ID.
|
|
51
|
+
- O parâmetro nativo da plataforma de checkout (quando existir) recebe a mesma informação empacotada, porque o checkout nem sempre repassa `utm_*`.
|
|
52
|
+
- Nenhum nome de campanha, conjunto ou anúncio contém `|`, `#`, `&` ou `?`.
|
|
53
|
+
- O padrão de nomenclatura está escrito em algum lugar que a próxima pessoa lê.
|
|
54
|
+
|
|
55
|
+
## 5. Repasse pelo checkout
|
|
56
|
+
|
|
57
|
+
Este é o item que mais falha e o mais fácil de esquecer.
|
|
58
|
+
|
|
59
|
+
1. Abra a página com uma UTM de teste na URL.
|
|
60
|
+
2. Clique para comprar.
|
|
61
|
+
3. Na página de checkout, confirme que os parâmetros chegaram (URL, campo escondido ou painel da plataforma).
|
|
62
|
+
4. Confirme que o webhook de venda entrega esses parâmetros para o destino final (banco, planilha, painel de atribuição).
|
|
63
|
+
|
|
64
|
+
Quebrou entre 2 e 3: o checkout não repassa. Use o parâmetro nativo.
|
|
65
|
+
Quebrou entre 3 e 4: o problema é a integração, não a tag.
|
|
66
|
+
|
|
67
|
+
## 6. Compra-teste por caminho
|
|
68
|
+
|
|
69
|
+
Cada rota de entrada recebe uma compra real de teste antes de investir:
|
|
70
|
+
|
|
71
|
+
- anúncio
|
|
72
|
+
- link da bio
|
|
73
|
+
- story
|
|
74
|
+
- destaque
|
|
75
|
+
- direct ou conversa
|
|
76
|
+
|
|
77
|
+
Para cada rota, registre: a venda apareceu no banco, apareceu no painel de atribuição, e apareceu com a origem certa. Rota que não passa nas três é rota cega.
|
|
78
|
+
|
|
79
|
+
## 7. Fechamento
|
|
80
|
+
|
|
81
|
+
Antes de liberar a subida, o relatório precisa responder sim para as cinco:
|
|
82
|
+
|
|
83
|
+
1. A visita é medida no instante certo?
|
|
84
|
+
2. A venda chega ao banco próprio?
|
|
85
|
+
3. A venda sabe de qual anúncio veio, por ID?
|
|
86
|
+
4. O orgânico é o que sobra depois de tudo taguear, e não um balde de preguiça?
|
|
87
|
+
5. Existe pelo menos uma compra-teste aprovada por rota?
|
|
88
|
+
|
|
89
|
+
Qualquer "não" vira achado `CRÍTICO` ou `ALTO`. Nada sobe com um `CRÍTICO` aberto.
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# UTM e atribuição
|
|
2
|
+
|
|
3
|
+
O cimento de todo o resto. Se a tag está errada, o funil inteiro mede ficção.
|
|
4
|
+
|
|
5
|
+
## A regra central
|
|
6
|
+
|
|
7
|
+
Cada parâmetro carrega **nome e ID**, separados por um delimitador fixo. O nome existe para humano ler; o ID existe para a atribuição sobreviver a renomeação.
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
utm_campaign={{campaign.name}}|{{campaign.id}}
|
|
11
|
+
utm_medium={{adset.name}}|{{adset.id}}
|
|
12
|
+
utm_content={{ad.name}}|{{ad.id}}
|
|
13
|
+
utm_term={{placement}}
|
|
14
|
+
utm_source=<plataforma>
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Cole no campo **parâmetros de URL** do anúncio, nunca no destino.
|
|
18
|
+
|
|
19
|
+
## Redundância no parâmetro nativo
|
|
20
|
+
|
|
21
|
+
Muito checkout não repassa `utm_*` para o webhook de venda. Quando a plataforma de checkout tem parâmetro próprio (por exemplo `xcod`, `src` ou `sck`), empacote a mesma informação lá também, com um separador longo e improvável:
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
xcod=<origem><SEP><campaign.name>|<campaign.id><SEP><adset.name>|<adset.id><SEP><ad.name>|<ad.id><SEP><placement>
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
O separador precisa ser uma string que nunca apareça em nome de campanha. Escolha uma vez e nunca mude: mudar quebra o histórico.
|
|
28
|
+
|
|
29
|
+
## Delimitadores proibidos em nomes
|
|
30
|
+
|
|
31
|
+
Nunca use `|`, `#`, `&` ou `?` em nome de campanha, conjunto ou anúncio. São delimitadores da própria string de tag.
|
|
32
|
+
|
|
33
|
+
Violou: **recriar a campanha**. Renomear não resolve, porque a plataforma continua servindo o nome antigo em cache para as impressões já entregues.
|
|
34
|
+
|
|
35
|
+
Padrão de nome que não dá problema: minúscula, sem acento, palavras separadas por hífen ou underscore, campos em ordem fixa. Escreva o padrão em algum lugar. Padrão que só existe na cabeça de alguém não é padrão.
|
|
36
|
+
|
|
37
|
+
## Outras plataformas
|
|
38
|
+
|
|
39
|
+
O formato é o mesmo em toda plataforma de mídia: macro nativa da plataforma preenchendo `utm_*`, mais o empacotamento no parâmetro nativo do checkout quando ele existir.
|
|
40
|
+
|
|
41
|
+
| Plataforma | O que muda |
|
|
42
|
+
|---|---|
|
|
43
|
+
| Meta | Macros `{{campaign.name}}`, `{{campaign.id}}`, `{{adset.*}}`, `{{ad.*}}`, `{{placement}}` |
|
|
44
|
+
| Google | Macros entre chaves simples, mais `{lpurl}?` na frente e `keyword`, `device`, `network` |
|
|
45
|
+
| TikTok, Kwai, Taboola | Mesma estrutura, nomes de macro próprios da plataforma |
|
|
46
|
+
|
|
47
|
+
Antes de escrever o template de uma plataforma, confirme o nome exato da macro na documentação dela. Macro errada entrega a string literal `{{campaign.id}}` na URL, e ninguém percebe até a primeira venda.
|
|
48
|
+
|
|
49
|
+
Existe variação a mais quando há cloaker na frente do checkout: um conector extra para não quebrar a string. Confirme com quem instalou o cloaker.
|
|
50
|
+
|
|
51
|
+
## O balde do orgânico
|
|
52
|
+
|
|
53
|
+
"Orgânico" não é canal. É tudo que chegou sem tag: destaque do Instagram sem UTM, link na bio sem UTM, direct, recompra, boca a boca.
|
|
54
|
+
|
|
55
|
+
Diagnóstico: tague **todas** as rotas próprias (bio, destaque, story, direct, e-mail, grupo) e observe o orgânico cair. O que sobrar depois disso é orgânico de verdade. O tamanho da queda é a prova de quanto o balde estava mentindo.
|
|
56
|
+
|
|
57
|
+
Padrão sugerido para rota própria:
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
utm_source=instagram&utm_medium=<bio|destaque|story|direct>&utm_campaign=<nome-do-destaque-ou-post>
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Primeiro toque
|
|
64
|
+
|
|
65
|
+
Último clique é o padrão de quase toda ferramenta, e ele esconde qual anúncio **apresentou** a oferta. Guarde o primeiro toque no seu banco (primeira UTM vista pelo visitante, com data) e compare com o último. Multi-toque simples, dois campos, resolve a maior parte das decisões de criativo.
|
|
66
|
+
|
|
67
|
+
## Conferência rápida
|
|
68
|
+
|
|
69
|
+
Cinco checagens que pegam quase todo erro de tag:
|
|
70
|
+
|
|
71
|
+
1. Abra o anúncio em preview e leia a URL final: tem macro literal sobrando?
|
|
72
|
+
2. A UTM sobrevive ao redirect até o checkout?
|
|
73
|
+
3. O webhook de venda entrega os campos ao banco?
|
|
74
|
+
4. Dois anúncios diferentes geram `utm_content` diferentes?
|
|
75
|
+
5. Renomear um anúncio quebra a atribuição? Se quebrar, está atribuindo por nome.
|