zark-seo 1.0.0 → 1.1.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/bin/cli.js CHANGED
@@ -49,7 +49,7 @@ async function copyDir(src, dest) {
49
49
  }
50
50
 
51
51
  async function appendNoteToContextFiles(targetRoot, skillsDirName) {
52
- const note = `\n\n## SEO & GEO Skills (ZARK)\nEste projeto tem o **ZARK SEO & GEO Skills Stack** instalado em \`${skillsDirName}/\` — 13 skills especialistas (1 orquestrador + 12 especialistas) em SEO Local, SEO de conteúdo e GEO (otimização para LLMs).\n\n**Como usar:**\n- Em pedidos amplos ("monta plano de SEO completo", "cliente novo chegou", "como começo SEO") → consulte \`${skillsDirName}/seo-orchestrator-SKILL.md\` que roteia pra sequência correta.\n- Em pedidos específicos ("auditoria do site", "criar schema", "otimizar GBP", "página de cidade", "GEO/LLM SEO") → consulte a skill correspondente em \`${skillsDirName}/\`.\n- Lista completa de skills + pipelines documentados em \`${skillsDirName}/README.md\`.\n\nCada skill tem frontmatter \`name\` + \`description\` com triggers naturais — Claude Code roteia automaticamente; em outros clientes (Cursor/Codex/Aider) a IA usa o README como índice.\n\nFoco BR (CNPJ, CEP, +55, diretórios BR, idioma PT-BR). Stack derivado de auditoria real (não teórico).\n`;
52
+ const note = `\n\n## SEO & GEO Skills (ZARK)\nEste projeto tem o **ZARK SEO & GEO Skills Stack** instalado em \`${skillsDirName}/\` — 14 skills (1 orquestrador + 13 especialistas) em SEO Local, SEO técnico, SEO de conteúdo e GEO (otimização para LLMs).\n\n**Como usar:**\n- Em pedidos amplos ("monta plano de SEO completo", "cliente novo chegou", "como começo SEO") → consulte \`${skillsDirName}/seo-orchestrator-SKILL.md\` que roteia pra sequência correta.\n- Em pedidos específicos ("auditoria do site", "criar schema", "otimizar GBP", "página de cidade", "GEO/LLM SEO") → consulte a skill correspondente em \`${skillsDirName}/\`.\n- Lista completa de skills + pipelines documentados em \`${skillsDirName}/README.md\`.\n\nCada skill tem frontmatter \`name\` + \`description\` com triggers naturais — Claude Code roteia automaticamente; em outros clientes (Cursor/Codex/Aider) a IA usa o README como índice.\n\nFoco BR (CNPJ, CEP, +55, diretórios BR, idioma PT-BR). Stack derivado de auditoria real (não teórico).\n`;
53
53
 
54
54
  const candidates = [
55
55
  path.join(targetRoot, '.ai-context', 'CONTEXT.md'),
@@ -79,7 +79,7 @@ async function appendNoteToContextFiles(targetRoot, skillsDirName) {
79
79
  function printHelp(version) {
80
80
  banner(`zark-seo v${version}`);
81
81
  console.log(` ${c.bold('Comandos:')}\n`);
82
- console.log(` ${c.green('init')} ${c.dim('[pasta]')} instala 13 skills SEO/GEO (default: ./seo-skills)`);
82
+ console.log(` ${c.green('init')} ${c.dim('[pasta]')} instala 14 skills SEO/GEO (default: ./seo-skills)`);
83
83
  console.log(` ${c.green('help')} mostra esta ajuda`);
84
84
  console.log(` ${c.green('version')} mostra a versão\n`);
85
85
  console.log(` ${c.bold('Uso:')}`);
@@ -87,14 +87,14 @@ function printHelp(version) {
87
87
  console.log(` npx zark-seo init ./skills ${c.dim('# instala em ./skills')}`);
88
88
  console.log(` npx zark-seo init --force ${c.dim('# sobrescreve se já existe')}\n`);
89
89
  console.log(` ${c.bold('Filosofia:')}`);
90
- console.log(` 13 skills (1 orquestrador + 12 especialistas) em SEO Local, conteúdo e GEO.`);
90
+ console.log(` 14 skills (1 orquestrador + 13 especialistas) em SEO Local, técnico, conteúdo e GEO.`);
91
91
  console.log(` Cada skill tem frontmatter com triggers naturais — Claude Code roteia auto;`);
92
92
  console.log(` em outros clientes a IA usa o README como índice. Foco mercado brasileiro.\n`);
93
93
  console.log(` ${c.bold('Skills incluídas:')}`);
94
94
  console.log(` ${c.dim('Orquestrador:')} seo-orchestrator`);
95
95
  console.log(` ${c.dim('Diagnóstico:')} seo-local-auditor · competitor-gap-analyzer`);
96
96
  console.log(` ${c.dim('Local SEO:')} gbp-optimizer · service-area-page-builder · citations-builder-br`);
97
- console.log(` ${c.dim('Técnico:')} schema-jsonld-builder · meta-tags-optimizer · core-web-vitals-fixer`);
97
+ console.log(` ${c.dim('Técnico:')} schema-jsonld-builder · meta-tags-optimizer · core-web-vitals-fixer · seo-technical-engineer`);
98
98
  console.log(` ${c.dim('Conteúdo:')} topical-authority-architect · seo-content-writer-br`);
99
99
  console.log(` ${c.dim('Off-site:')} review-acquisition-engine`);
100
100
  console.log(` ${c.dim('LLM/GEO:')} geo-llm-optimizer ★\n`);
@@ -147,7 +147,7 @@ async function runInit(args) {
147
147
  }
148
148
 
149
149
  console.log('');
150
- console.log(c.green(`✓ 13 skills instaladas em ${skillsDirName}/`));
150
+ console.log(c.green(`✓ 14 skills instaladas em ${skillsDirName}/`));
151
151
  console.log('');
152
152
  console.log(c.bold('Próximo passo:'));
153
153
  console.log(` ${c.dim('•')} Diga pra IA: "leia ${skillsDirName}/README.md e use as skills SEO/GEO conforme contexto"`);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "zark-seo",
3
- "version": "1.0.0",
4
- "description": "ZARK SEO & GEO Skills Stack — install via `npx zark-seo init` to drop 13 SEO/GEO specialist skills (Local SEO, content, GEO/LLM optimization) as REFERENCE for AI in any project. Brazilian market focus, derived from real ZARK audits.",
3
+ "version": "1.1.0",
4
+ "description": "ZARK SEO & GEO Skills Stack — install via `npx zark-seo init` to drop 14 SEO/GEO specialist skills (1 orchestrator + 13 specialists in Local SEO, technical SEO, content, GEO/LLM optimization) as REFERENCE for AI in any project. Brazilian market focus, derived from real ZARK audits.",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "zark-seo": "bin/cli.js"
@@ -1,6 +1,6 @@
1
1
  # 🚀 ZARK SEO & GEO Skills Stack
2
2
 
3
- Stack completo de 12 skills especialistas em SEO Local, SEO de conteúdo e GEO (Generative Engine Optimization) para o mercado brasileiro. Cada skill é autocontida, especialista em uma frente específica, e foi desenhada pra ser composta com as demais.
3
+ Stack completo de **13 skills especialistas** (+ 1 orquestrador) em SEO Local, SEO técnico, SEO de conteúdo e GEO (Generative Engine Optimization) para o mercado brasileiro. Cada skill é autocontida, especialista em uma frente específica, e foi desenhada pra ser composta com as demais.
4
4
 
5
5
  > **Contexto de criação:** desenvolvido pela ZARK em maio de 2026 a partir de auditoria real (Limppetec) que evidenciou os gaps mais comuns de SEO em PMEs brasileiras. As skills incorporam o stack ZARK Chat / n8n / Evolution API / Supabase para automação operacional.
6
6
 
@@ -22,6 +22,7 @@ Stack completo de 12 skills especialistas em SEO Local, SEO de conteúdo e GEO (
22
22
  | 10 | `competitor-gap-analyzer` | Análise competitiva em 3 dimensões | "analisar concorrentes", "gap analysis", "espionar concorrente" |
23
23
  | 11 | `citations-builder-br` | Cadastro em diretórios BR com NAP consistente | "cadastrar em diretórios", "NAP", "citations", "presença online" |
24
24
  | 12 | `geo-llm-optimizer` | Otimização para LLMs (ChatGPT, Claude, Gemini, Perplexity) ★ | "GEO", "aparecer no ChatGPT", "ranking em IA", "LLM SEO" |
25
+ | 13 | `seo-technical-engineer` | SEO técnico avançado (indexação, crawl, JS rendering, migração, robots/sitemap, GSC errors) | "site não indexa", "Search Console com erro", "JavaScript SEO", "migrar domínio", "Crawled not indexed", "robots.txt", "Soft 404" |
25
26
 
26
27
  ★ = moat competitivo ZARK em 2026
27
28
 
@@ -37,7 +38,8 @@ Cliente chegou. Empresa com presença digital fraca ou nenhuma. Aplicar nessa or
37
38
  Semana 1 ┌─ 1. seo-local-auditor (diagnóstico inicial)
38
39
  └─ 10. competitor-gap-analyzer (contextualizar gaps)
39
40
 
40
- Semana 2-3 ┌─ 3. gbp-optimizer (60% do ranking Local)
41
+ Semana 2-3 ┌─ 13. seo-technical-engineer (fundação técnica: indexação, rendering, sitemap)
42
+ ├─ 3. gbp-optimizer (60% do ranking Local)
41
43
  ├─ 2. schema-jsonld-builder (fundação de entidade)
42
44
  └─ 6. core-web-vitals-fixer (performance se aplicável)
43
45
 
@@ -65,6 +67,7 @@ Trimestral ─ 1. seo-local-auditor (re-auditoria)
65
67
  ─ 10. competitor-gap-analyzer (mercado mudou)
66
68
  ─ 11. citations-builder-br (manutenção NAP)
67
69
  ─ 12. geo-llm-optimizer (re-medir BMR/SOV)
70
+ ─ 13. seo-technical-engineer (re-check GSC, indexação, redirects)
68
71
 
69
72
  Semestral ─ 6. core-web-vitals-fixer (validar performance)
70
73
  ─ 7. topical-authority-architect (refresh de estratégia)
@@ -84,7 +87,8 @@ Estrutura ┌─ 4. service-area-page-builder (páginas de cidade)
84
87
  Por página ┌─ 5. meta-tags-optimizer (title/desc/OG)
85
88
  └─ 2. schema-jsonld-builder (schema apropriado)
86
89
 
87
- Pré-launch ┌─ 6. core-web-vitals-fixer (validar performance)
90
+ Pré-launch ┌─ 13. seo-technical-engineer (robots.txt, sitemap, rendering, redirects)
91
+ ├─ 6. core-web-vitals-fixer (validar performance)
88
92
  └─ 1. seo-local-auditor (checklist final)
89
93
 
90
94
  Pós-launch ┌─ 3. gbp-optimizer (vincular ao site)
@@ -114,7 +118,13 @@ Mês 7-12 └─ 12. geo-llm-optimizer (Wikipedia se elegível, aw
114
118
 
115
119
  | Cliente disse... | Skill principal | Skills complementares |
116
120
  |---|---|---|
117
- | "Meu site não aparece no Google" | 1 | 3, 6, 11 |
121
+ | "Meu site não aparece no Google" | 13 | 1, 3, 6 |
122
+ | "Site React/Vue/Next não rankeia" | 13 | 6, 5 |
123
+ | "Search Console com 'Crawled not indexed'" | 13 | 1, 8 |
124
+ | "Quero migrar de domínio sem perder ranking" | 13 | 5, 2, 11 |
125
+ | "Mudei de HTTP pra HTTPS / www pra non-www" | 13 | — |
126
+ | "Site grande, só 10% das páginas estão indexadas" | 13 | 6 |
127
+ | "Auditoria SEO geral" | 1 | 3, 6, 11 |
118
128
  | "Quero rankear em [cidade]" | 4 | 1, 3, 11 |
119
129
  | "Como aparecer mais no Google Meu Negócio?" | 3 | 9, 11 |
120
130
  | "Preciso de mais reviews" | 9 | 3 |
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: seo-orchestrator
3
- description: Meta-skill que ROTEIA pedidos amplos ou ambíguos de SEO/GEO para a sequência correta de skills especialistas do stack ZARK. Use SEMPRE que o pedido do usuário for genérico, abrangente, ou quando ele não souber por onde começar — exemplos de triggers "cliente novo chegou", "o que faço pra rankear esse site", "monta um plano de SEO completo", "minha empresa precisa aparecer no Google", "ajuda essa empresa do zero", "preciso de tudo de SEO", "estratégia completa de SEO", "como começar SEO", "auxilia esse cliente", "não sei o que fazer", "por onde começo", "monta o plano", "faz a estratégia", "executa SEO completo". Acionar TAMBÉM quando o pedido envolve múltiplas frentes (auditoria + execução + conteúdo + GEO) ou quando há necessidade de planejamento sequencial. NÃO acionar quando o usuário pediu uma skill específica ("cria schema", "auditoria do site", "escreve um post") — nesses casos, vá direto pra skill especialista. Essa skill orquestra; não executa diretamente. Sempre delega pras skills especialistas (1-12) e coordena ordem, contexto e cronograma.
3
+ description: Meta-skill que ROTEIA pedidos amplos ou ambíguos de SEO/GEO para a sequência correta de skills especialistas do stack ZARK. Use SEMPRE que o pedido do usuário for genérico, abrangente, ou quando ele não souber por onde começar — exemplos de triggers "cliente novo chegou", "o que faço pra rankear esse site", "monta um plano de SEO completo", "minha empresa precisa aparecer no Google", "ajuda essa empresa do zero", "preciso de tudo de SEO", "estratégia completa de SEO", "como começar SEO", "auxilia esse cliente", "não sei o que fazer", "por onde começo", "monta o plano", "faz a estratégia", "executa SEO completo". Acionar TAMBÉM quando o pedido envolve múltiplas frentes (auditoria + execução + conteúdo + GEO) ou quando há necessidade de planejamento sequencial. NÃO acionar quando o usuário pediu uma skill específica ("cria schema", "auditoria do site", "escreve um post") — nesses casos, vá direto pra skill especialista. Essa skill orquestra; não executa diretamente. Sempre delega pras skills especialistas (1-13) e coordena ordem, contexto e cronograma.
4
4
  ---
5
5
 
6
6
  # SEO Orchestrator — Padrão ZARK
@@ -16,7 +16,7 @@ Meta-skill que coordena o stack ZARK SEO/GEO. Recebe pedido amplo, faz diagnóst
16
16
  - Tradutora de pedidos vagos em sequências executáveis
17
17
 
18
18
  **NÃO é:**
19
- - Substituta das 12 skills especialistas (sempre delega)
19
+ - Substituta das 13 skills especialistas (sempre delega)
20
20
  - Auditoria por si só (delega pra skill 1)
21
21
  - Geradora de output técnico final (delega pra skills específicas)
22
22
  - Skill pra pedidos pontuais e específicos (esses vão direto pra skill apropriada)
@@ -35,7 +35,7 @@ Meta-skill que coordena o stack ZARK SEO/GEO. Recebe pedido amplo, faz diagnóst
35
35
 
36
36
  5. **Detectar dependências.** Skill 11 (citations) sem GBP otimizado é desperdício — orchestrator move skill 3 antes.
37
37
 
38
- 6. **Realismo de cronograma.** Não propor "13 skills numa sessão". Distribuir em batches realistas.
38
+ 6. **Realismo de cronograma.** Não propor "14 skills numa sessão". Distribuir em batches realistas.
39
39
 
40
40
  7. **Delegação sempre.** Orchestrator nunca produz schema, conteúdo ou auditoria — delega pra skills.
41
41
 
@@ -136,6 +136,7 @@ Sessão 1: Diagnóstico
136
136
  [skill 10] competitor-gap-analyzer
137
137
 
138
138
  Sessão 2: Fundação técnica
139
+ [skill 13] seo-technical-engineer (indexação, rendering, robots/sitemap)
139
140
  [skill 6] core-web-vitals-fixer (se performance ruim)
140
141
  [skill 2] schema-jsonld-builder
141
142
  [skill 5] meta-tags-optimizer (páginas existentes)
@@ -172,6 +173,7 @@ Trimestral:
172
173
  [skill 10] re-análise competitiva
173
174
  [skill 11] manutenção de citations
174
175
  [skill 12] re-medição GEO
176
+ [skill 13] re-check técnico (GSC, indexação, redirects)
175
177
  [skill 7] refresh estratégia conteúdo
176
178
 
177
179
  Semestral:
@@ -194,6 +196,7 @@ Estrutura de páginas:
194
196
  [skill 2] schema-jsonld-builder (cada página)
195
197
 
196
198
  Pré-launch técnico:
199
+ [skill 13] seo-technical-engineer (robots/sitemap/rendering/redirects)
197
200
  [skill 6] core-web-vitals-fixer
198
201
  [skill 1] seo-local-auditor (checklist final)
199
202
 
@@ -497,9 +500,9 @@ Orchestrator não confunde contextos. Pede confirmação: "É pra Limppetec ou G
497
500
  **Pedido fora do escopo (design, dev, copy de venda):**
498
501
  Orchestrator declara fora de escopo. Sugere como ZARK pode resolver com outras competências (design, dev, ads) que não são do stack SEO/GEO.
499
502
 
500
- ## Conexão com as 12 skills
503
+ ## Conexão com as 13 skills
501
504
 
502
- Orchestrator é a **camada superior** que coordena as 12. Não substitui nenhuma:
505
+ Orchestrator é a **camada superior** que coordena as 13. Não substitui nenhuma:
503
506
 
504
507
  | Skill | Quando orchestrator aciona |
505
508
  |---|---|
@@ -515,6 +518,7 @@ Orchestrator é a **camada superior** que coordena as 12. Não substitui nenhuma
515
518
  | 10. competitor-gap-analyzer | Cliente novo / antes de plano de conteúdo / trimestral |
516
519
  | 11. citations-builder-br | Após Skill 3 / cliente sem presença em diretórios |
517
520
  | 12. geo-llm-optimizer | Cliente com fundação pronta / vetor competitivo |
521
+ | 13. seo-technical-engineer | Indexação travada, JS SEO, migração de domínio, GSC errors, pré-launch de site novo, re-check trimestral técnico |
518
522
 
519
523
  ## Exemplos de invocação esperada
520
524
 
@@ -0,0 +1,907 @@
1
+ ---
2
+ name: seo-technical-engineer
3
+ description: SEO técnico avançado para sites, sistemas web e aplicações — diagnostica e corrige problemas de indexação, crawlability, renderização (JavaScript SEO), arquitetura de URL, redirecionamentos, migrações de domínio, sitemap.xml, robots.txt, hreflang, canonical, paginação, faceted navigation, Search Console issues, e tudo que envolve fazer um sistema ser rastreado, renderizado e indexado corretamente pelo Google. Use SEMPRE que o usuário pedir para "site não indexa", "Google não acha minha página", "problema no Search Console", "erro de indexação", "robots.txt", "sitemap.xml", "canonical", "redirect 301", "migrar domínio", "mudar de HTTP para HTTPS", "site React não rankeia", "JavaScript SEO", "site Next.js", "SSR vs SSG", "rendering", "Soft 404", "Crawled not indexed", "Discovered not indexed", "página com redirect", "noindex", "hreflang", "paginação SEO", "filtros não rankeiam", "ecommerce indexação", "URLs com parâmetros", "trailing slash", "www vs non-www", "log file analysis", "Googlebot", "crawl budget", "site grande não indexa todas as páginas", "disavow", "manual action", "penalidade", "recovery", "estrutura de URL", "arquitetura de site", "depth de cliques", "internal linking técnico", "soft 404", "x-robots-tag", "HTTP headers SEO". Acionar também quando outras skills (1, 6, 2) detectarem gargalo técnico que exige aprofundamento. Trabalha como engenheiro de SEO sênior — entrega diagnóstico técnico em camadas e código pronto pra colar em servidor (nginx, apache, htaccess, next.config.js, robots.txt, sitemap).
4
+ ---
5
+
6
+ # SEO Technical Engineer — Padrão ZARK
7
+
8
+ Skill de SEO técnico avançado pra sites, sistemas e aplicações web. Trabalha como engenheiro de SEO sênior — diagnostica em camadas, corrige na raiz, e produz código pronto pra colar em produção.
9
+
10
+ ## Por que essa skill existe
11
+
12
+ SEO técnico é **fundação invisível**. Cliente que tem GBP perfeito, conteúdo excelente, schema completo e reviews ótimas — mas tem `robots.txt` bloqueando o site, `noindex` acidental, ou JavaScript não renderizando pro Googlebot — **não rankeia nada**. Os 13 skills anteriores otimizam superfície; essa skill otimiza fundação.
13
+
14
+ Em 2026, com a popularização de frameworks JavaScript (React, Vue, Next.js, Angular, Svelte), sistemas SaaS, e e-commerces complexos, problemas técnicos de SEO viraram o **maior bloqueador silencioso** de ranking. Site que parece "ok" pra humano frequentemente é incompreensível pro Googlebot.
15
+
16
+ ## Princípios não-negociáveis
17
+
18
+ 1. **Diagnóstico em 5 camadas antes de prescrição.** Acessibilidade → Crawlability → Renderability → Indexability → Rankability. Pular camada gera fix superficial.
19
+
20
+ 2. **Inspeção real, não suposição.** Skill executa `curl -I`, simula Googlebot, verifica robots.txt, lê sitemap, busca `site:` no Google. Não inventa diagnóstico.
21
+
22
+ 3. **Código pronto pra colar.** Output não é "ajuste seu robots.txt" — é o conteúdo exato do robots.txt pra esse caso.
23
+
24
+ 4. **Reconhecer limites.** Sem acesso ao servidor, algumas coisas não dão pra resolver. Skill instrui o que pedir ao dev/hospedagem.
25
+
26
+ 5. **JavaScript SEO requer rigor.** Site React/Vue/Next/Angular renderizando client-side é caso especial. Skill diagnostica modo de renderização.
27
+
28
+ 6. **Migrações exigem plano de rollback.** Migração mal feita destrói anos de ranking. Skill nunca migra sem checklist + monitoramento.
29
+
30
+ 7. **Search Console é a fonte de verdade.** Cliente sem acesso ao GSC é cego. Skill instrui setup primeiro, antes de diagnóstico profundo.
31
+
32
+ 8. **Cada framework tem armadilhas próprias.** WordPress + Elementor difere de Next.js que difere de Shopify. Skill conhece cada um.
33
+
34
+ 9. **Honestidade sobre tempo de impacto.** Fix técnico não traz ranking em 24h. Re-crawl + re-index leva 1-30 dias. Reranking leva 30-90 dias.
35
+
36
+ 10. **Não substitui auditoria.** Skill 1 (`seo-local-auditor`) faz diagnóstico holístico; Skill 13 faz aprofundamento técnico. Complementam-se.
37
+
38
+ ## Fluxo de execução
39
+
40
+ ### Etapa 1 — Coleta inicial
41
+
42
+ Antes de qualquer diagnóstico, levante:
43
+
44
+ **Acesso e contexto:**
45
+ - URL principal do site/sistema
46
+ - Cliente tem acesso ao Google Search Console (GSC)?
47
+ - Cliente tem acesso ao servidor / FTP / cPanel / hospedagem?
48
+ - Stack técnico:
49
+ - CMS (WordPress, Wix, Shopify, custom)
50
+ - Framework (Elementor, Next.js, Vue, React, Angular, Astro, Hugo)
51
+ - Hospedagem (qual provedor)
52
+ - Servidor (nginx, apache, IIS, edge)
53
+ - CDN (Cloudflare? outro?)
54
+ - Site novo ou existente?
55
+ - Mudou algo recentemente (migração, redesign, plugin)?
56
+
57
+ **Sintoma específico:**
58
+ - O que o cliente está vendo?
59
+ - Search Console mostra erros? Quais?
60
+ - Comparativo: o que rankeava antes vs agora?
61
+ - Páginas específicas com problema?
62
+
63
+ Se faltar acesso ao GSC, **antes de mais nada** instrua o cliente a configurar. Sem GSC, diagnóstico é parcial.
64
+
65
+ ### Etapa 2 — Diagnóstico em 5 camadas
66
+
67
+ Execute em ordem. Não pular.
68
+
69
+ #### CAMADA 1 — ACESSIBILIDADE
70
+
71
+ **Pergunta:** o Googlebot consegue chegar no servidor?
72
+
73
+ **Checks:**
74
+
75
+ 1. **DNS funcional?**
76
+ - `dig dominio.com.br` ou `nslookup dominio.com.br`
77
+ - Resolve em IP válido?
78
+
79
+ 2. **Servidor responde?**
80
+ - `curl -I https://dominio.com.br`
81
+ - Status 200 OK?
82
+ - Tempo de resposta razoável (< 3s)?
83
+
84
+ 3. **HTTPS configurado corretamente?**
85
+ - Certificado válido?
86
+ - HSTS ativo?
87
+ - Redirect HTTP → HTTPS funciona?
88
+
89
+ 4. **robots.txt acessível e correto?**
90
+ - `https://dominio.com.br/robots.txt` retorna 200?
91
+ - Conteúdo NÃO bloqueia `User-agent: Googlebot`?
92
+ - Erro comum: `Disallow: /` (bloqueia tudo)
93
+ - Erro comum: `Disallow: /wp-admin/` ok, mas `Disallow: /wp-content/` quebra imagens
94
+
95
+ 5. **Server returns código correto?**
96
+ - Páginas que existem retornam 200
97
+ - Páginas removidas retornam 410 ou 404 (não 200 com mensagem "página não encontrada")
98
+ - Páginas movidas retornam 301
99
+ - **Cuidado com Soft 404** (página de erro com status 200)
100
+
101
+ #### CAMADA 2 — CRAWLABILITY
102
+
103
+ **Pergunta:** o Googlebot consegue navegar e descobrir todas as páginas?
104
+
105
+ **Checks:**
106
+
107
+ 1. **sitemap.xml existe e está correto?**
108
+ - `https://dominio.com.br/sitemap.xml` retorna 200?
109
+ - XML válido (não erro de parse)?
110
+ - Lista todas as URLs importantes?
111
+ - Não lista URLs com noindex?
112
+ - Lista canonical URLs (não versões com parâmetro)?
113
+ - `lastmod` atualizado em mudanças recentes?
114
+ - Tamanho < 50.000 URLs por sitemap (limite Google)?
115
+ - Se site grande: tem sitemap-index?
116
+
117
+ 2. **Sitemap registrado no GSC?**
118
+ - Cliente confirma no Search Console → Sitemaps?
119
+ - Status: Sucesso, sem erros?
120
+
121
+ 3. **Internal linking funciona?**
122
+ - Cada página importante tem links pra ela de pelo menos 1 outra página?
123
+ - Páginas órfãs (sem links internos apontando) — Google pode nem descobrir
124
+ - Depth de cliques: nenhuma página importante a mais de 3-4 cliques da home
125
+
126
+ 4. **Redirects funcionam?**
127
+ - Cadeia de redirects: A → B → C → D quebra crawl budget
128
+ - Idealmente: A → D direto (1 redirect, não 3)
129
+ - 301 vs 302 vs 307 vs 308: usar `301` pra mudanças permanentes
130
+ - Verificar com `curl -I` ou `curl -IL`
131
+
132
+ 5. **Crawl budget otimizado?**
133
+ - URLs com parâmetros gerando infinitas variações?
134
+ - Pages de filtros gerando combinatorial explosion?
135
+ - URLs de busca interna sendo indexadas?
136
+
137
+ 6. **Paginação correta?**
138
+ - `rel="next"` e `rel="prev"` foram depreciados pelo Google em 2019
139
+ - Páginas paginadas (2, 3, 4) devem ter canonical próprio (não apontar pra página 1)
140
+ - Cada página com title diferenciado
141
+
142
+ #### CAMADA 3 — RENDERABILITY (CRÍTICO PRA SITES JS)
143
+
144
+ **Pergunta:** o Googlebot consegue VER o conteúdo da página?
145
+
146
+ **Checks pra site WordPress + Elementor (server-rendered):**
147
+
148
+ 1. **View source mostra conteúdo?**
149
+ - `curl https://dominio.com.br/pagina | grep "[texto chave]"`
150
+ - Se conteúdo aparece no HTML cru → ok
151
+ - Se HTML cru mostra `<div id="root"></div>` vazio → problema!
152
+
153
+ **Checks pra site React/Vue/Next/Angular (potencialmente client-rendered):**
154
+
155
+ 1. **Modo de renderização identificado:**
156
+ - **CSR (Client-Side Rendering):** HTML cru vazio, JS popula. **PROBLEMA SEO crítico em sites Vue/React puro sem SSR.**
157
+ - **SSR (Server-Side Rendering):** servidor renderiza, manda HTML completo. **OK pra SEO.**
158
+ - **SSG (Static Site Generation):** páginas pré-buildadas em HTML. **Melhor cenário SEO.**
159
+ - **ISR (Incremental Static Regeneration, Next.js):** SSG + revalidação. **OK pra SEO.**
160
+ - **Dynamic Rendering:** servidor detecta Googlebot, manda HTML pré-renderizado; usuário pega CSR. **Funcional mas desencorajado em 2026.**
161
+
162
+ 2. **Mobile-first rendering:**
163
+ - Google avalia mobile há anos
164
+ - Site renderiza ok no mobile?
165
+ - Conteúdo visível sem scroll horizontal?
166
+ - JavaScript executa em mobile dentro do limite de tempo do Googlebot?
167
+
168
+ 3. **Lazy loading de conteúdo crítico:**
169
+ - Texto importante NÃO deve ser lazy-loaded
170
+ - Imagens above-the-fold NÃO devem ter `loading="lazy"`
171
+ - Conteúdo dependente de scroll/interação não é indexável
172
+
173
+ 4. **Tools de validação:**
174
+ - **Google Search Console → Inspect URL** — mostra HTML renderizado pelo Googlebot
175
+ - **Mobile-Friendly Test** — confirma renderização mobile
176
+ - **Rich Results Test** — confirma schema e renderização
177
+ - **Manual:** `curl -A "Googlebot/2.1" https://dominio.com.br` vs `curl https://dominio.com.br` — comparar
178
+
179
+ 5. **Frameworks específicos:**
180
+
181
+ **Next.js:**
182
+ - Usa SSR/SSG por default (App Router). Verifica se páginas estão usando `'use server'` corretamente
183
+ - Páginas marcadas `'use client'` precisam ter SSR do shell
184
+ - Metadata API (Next 13+) gera meta tags server-side
185
+
186
+ **Vue.js (puro):**
187
+ - SPA sem SSR é problema SEO. Recomendar Nuxt.js
188
+ - Se Nuxt: confirmar modo SSR/SSG ativado em `nuxt.config.js`
189
+
190
+ **React (puro):**
191
+ - SPA sem framework SSR é problema. Recomendar Next.js, Remix ou Gatsby
192
+ - Create React App (CRA) puro = ruim pra SEO
193
+
194
+ **Angular:**
195
+ - SPA sem SSR é problema. Recomendar Angular Universal
196
+
197
+ **Svelte:**
198
+ - SPA puro = ruim. Recomendar SvelteKit (SSR/SSG)
199
+
200
+ #### CAMADA 4 — INDEXABILITY
201
+
202
+ **Pergunta:** o Google quer indexar essas páginas?
203
+
204
+ **Checks:**
205
+
206
+ 1. **`noindex` em meta robots ou x-robots-tag:**
207
+ - `<meta name="robots" content="noindex, follow">` impede indexação
208
+ - `x-robots-tag: noindex` no header HTTP idem
209
+ - Cuidado: WordPress tem opção "Discourage search engines" que adiciona noindex em TUDO. Erro frequente em sites migrados de staging.
210
+
211
+ 2. **Canonical correto:**
212
+ - `<link rel="canonical" href="...">` em toda página
213
+ - Aponta pra si mesma (versão preferida) OU pra página master
214
+ - Erro grave: canonical apontando pra página diferente da que se quer indexar
215
+ - Erro: canonical apontando pra HTTP quando site é HTTPS
216
+ - Erro: canonical relativo (`/pagina`) em vez de absoluto (`https://...`)
217
+ - Páginas paginadas: canonical pra si mesma, não pra página 1
218
+
219
+ 3. **Duplicate content:**
220
+ - Versões com/sem www, http/https, trailing slash, parâmetros
221
+ - Cada variação deveria redirecionar pra canonical
222
+ - Conteúdo igual em URLs diferentes = canonical apontando pra master
223
+
224
+ 4. **Hreflang (sites multi-idioma):**
225
+ - Tag presente em todas as variações de idioma
226
+ - Auto-referência (cada versão lista a si própria)
227
+ - Reciprocidade (versão PT aponta pra EN e vice-versa)
228
+ - Códigos corretos: `pt-BR`, `en-US`, `es-ES`
229
+ - x-default pra versão padrão
230
+
231
+ 5. **Qualidade percebida pelo Google:**
232
+ - Conteúdo thin (< 300 palavras em página de serviço)
233
+ - Conteúdo duplicado de outro site
234
+ - Páginas geradas automaticamente sem valor
235
+ - Páginas com 1 linha de conteúdo + 1000 anúncios
236
+
237
+ #### CAMADA 5 — RANKABILITY
238
+
239
+ **Pergunta:** se indexado, vai rankear?
240
+
241
+ Essa camada cruza com Skills 7, 8, 10:
242
+
243
+ - Conteúdo cobre intenção da busca?
244
+ - Site tem autoridade temática?
245
+ - Concorrentes dominam? Como?
246
+ - Sinais de E-E-A-T presentes?
247
+
248
+ Skill 13 não aprofunda camada 5 — delega pra skills de conteúdo/estratégia.
249
+
250
+ ### Etapa 3 — Diagnóstico do Google Search Console
251
+
252
+ Cliente tem GSC? Skill interpreta os relatórios principais:
253
+
254
+ #### Página "Indexação de páginas" (Coverage)
255
+
256
+ **Páginas indexadas:**
257
+ - Quantidade
258
+ - Cresceu ou caiu nos últimos 30 dias?
259
+
260
+ **Páginas NÃO indexadas — interpretar cada motivo:**
261
+
262
+ | Motivo no GSC | Significado | Ação |
263
+ |---|---|---|
264
+ | **Crawled - currently not indexed** | Google viu mas não quis indexar | Melhorar qualidade do conteúdo, internal linking, autoridade do site |
265
+ | **Discovered - currently not indexed** | Google descobriu URL mas ainda não rastreou | Aguardar (crawl budget) ou submeter manualmente via Inspect URL |
266
+ | **Excluded by 'noindex' tag** | Página tem noindex (intencional ou bug) | Verificar se noindex é intencional; se não, remover |
267
+ | **Soft 404** | Página retorna 200 mas Google detectou que é página de erro | Corrigir conteúdo ou retornar 404 real |
268
+ | **Not found (404)** | Página retorna 404 | Restaurar página se importante, ou criar 301 pra alternativa |
269
+ | **Page with redirect** | URL redireciona pra outra | Ok se intencional; URL final precisa estar indexada |
270
+ | **Blocked by robots.txt** | robots.txt bloqueia | Verificar se bloqueio é intencional |
271
+ | **Alternate page with proper canonical tag** | URL tem canonical apontando pra outra | Comportamento correto |
272
+ | **Duplicate without user-selected canonical** | Google escolheu canonical sozinho | Definir canonical explícito |
273
+ | **Duplicate, Google chose different canonical than user** | Google ignorou seu canonical | Investigar por que Google preferiu outra |
274
+ | **URL is not on Google** (status genérico) | URL não está indexada | Investigar motivo específico |
275
+
276
+ #### Página "Experiência" (Core Web Vitals)
277
+
278
+ Delega pra Skill 6 (`core-web-vitals-fixer`).
279
+
280
+ #### Página "Aprimoramentos" (Enhancements)
281
+
282
+ - Erros de schema (delega pra Skill 2 — `schema-jsonld-builder`)
283
+ - Mobile usability (verificar viewport, tap targets, font size)
284
+ - Sitemap (verificar status: success / errors / warnings)
285
+
286
+ #### Página "Performance" (Search Analytics)
287
+
288
+ - Queries onde o site aparece
289
+ - Pages que recebem cliques
290
+ - Países/dispositivos
291
+ - Comparativo com período anterior
292
+
293
+ ### Etapa 4 — Casos específicos comuns
294
+
295
+ #### Caso 1: Site não está sendo indexado
296
+
297
+ **Diagnóstico em ordem:**
298
+
299
+ 1. `site:dominio.com.br` no Google → quantos resultados?
300
+ - 0 resultados → site totalmente fora do índice
301
+ - Poucos resultados → indexação parcial
302
+ - Muitos resultados → indexação ok, problema é ranking
303
+
304
+ 2. `https://dominio.com.br/robots.txt` → bloqueio?
305
+
306
+ 3. `curl -I https://dominio.com.br` → status 200? HTTPS ok?
307
+
308
+ 4. View source da home → `<meta name="robots" content="noindex">`?
309
+
310
+ 5. Search Console → Inspect URL → status?
311
+
312
+ 6. Sitemap submetido? Status no GSC?
313
+
314
+ **Soluções comuns:**
315
+
316
+ ```
317
+ # Caso "Discourage search engines" ativado no WordPress
318
+ Settings → Reading → desmarcar "Discourage search engines from indexing this site"
319
+ + remover meta noindex se estiver hardcoded no tema
320
+
321
+ # Caso robots.txt bloqueia tudo
322
+ User-agent: *
323
+ Allow: /
324
+
325
+ Sitemap: https://dominio.com.br/sitemap.xml
326
+
327
+ # Caso noindex em todas as páginas (header HTTP)
328
+ # Verificar no .htaccess ou nginx.conf se há:
329
+ # Header set X-Robots-Tag "noindex"
330
+ # REMOVER
331
+ ```
332
+
333
+ #### Caso 2: Site React/Vue não rankeia
334
+
335
+ **Diagnóstico:**
336
+
337
+ 1. `curl https://dominio.com.br` → HTML mostra conteúdo ou vazio?
338
+ - Vazio = problema crítico
339
+ - Tem conteúdo = ok
340
+
341
+ 2. Search Console → Inspect URL → "View tested page" → "HTML" → Googlebot vê conteúdo?
342
+
343
+ 3. Identificar framework e modo de renderização
344
+
345
+ **Soluções por framework:**
346
+
347
+ ```javascript
348
+ // Next.js — garantir SSR/SSG em páginas críticas
349
+ // app/page.tsx (App Router) - SSR por default
350
+ export default async function Home() {
351
+ const data = await fetch('...', { cache: 'force-cache' });
352
+ return <div>{/* conteúdo */}</div>;
353
+ }
354
+
355
+ // Pra SSG em rotas dinâmicas
356
+ export async function generateStaticParams() {
357
+ return [{ slug: 'pagina-1' }, { slug: 'pagina-2' }];
358
+ }
359
+
360
+ // pages/[slug].tsx (Pages Router) - SSR
361
+ export async function getServerSideProps(context) {
362
+ // busca dados
363
+ return { props: { data } };
364
+ }
365
+
366
+ // Ou SSG
367
+ export async function getStaticProps() {
368
+ // busca dados em build time
369
+ return { props: { data } };
370
+ }
371
+ ```
372
+
373
+ ```javascript
374
+ // Vue/Nuxt — confirmar modo no nuxt.config.js
375
+ export default {
376
+ ssr: true, // SSR ativado
377
+ target: 'static', // ou 'server'
378
+ // ...
379
+ }
380
+ ```
381
+
382
+ ```javascript
383
+ // React puro sem framework SSR
384
+ // Recomendação: migrar pra Next.js ou Remix
385
+ // Solução alternativa: dynamic rendering via prerender.io ou rendertron
386
+ ```
387
+
388
+ #### Caso 3: Migração de domínio
389
+
390
+ **Checklist obrigatório:**
391
+
392
+ ```markdown
393
+ ## Pré-migração (1-2 semanas antes)
394
+ - [ ] Backup completo do site antigo
395
+ - [ ] Lista exaustiva de todas as URLs do site antigo (Screaming Frog ou Sitebulb)
396
+ - [ ] Mapa de URL antiga → URL nova (redirect map)
397
+ - [ ] Validação do redirect map (todas as URLs antigas têm destino na nova)
398
+ - [ ] Site novo pronto, em staging, indexado como noindex
399
+ - [ ] Search Console configurado pro domínio novo
400
+ - [ ] Google Analytics configurado pro domínio novo
401
+ - [ ] Avisar GSC: Settings → Change of Address (preparar)
402
+
403
+ ## Dia da migração
404
+ - [ ] Implementar 301 redirects (.htaccess, nginx.conf, ou middleware)
405
+ - [ ] Atualizar sitemap.xml no domínio novo
406
+ - [ ] Submeter sitemap no GSC do domínio novo
407
+ - [ ] Remover noindex do domínio novo
408
+ - [ ] Verificar redirects funcionando: curl -IL https://antigo.com.br
409
+ - [ ] Confirmar SSL no domínio novo
410
+ - [ ] Notificar parceiros (atualizar backlinks importantes)
411
+
412
+ ## Pós-migração (primeiras 4 semanas)
413
+ - [ ] Monitorar GSC do domínio antigo (espera erros 404)
414
+ - [ ] Monitorar GSC do domínio novo (espera crescimento de indexação)
415
+ - [ ] Settings → Change of Address no GSC antigo, apontando pro novo
416
+ - [ ] Acompanhar ranking de keywords principais (queda esperada 10-30%)
417
+ - [ ] Verificar Analytics de tráfego (queda esperada 10-30%)
418
+ - [ ] Atualizar GBP com novo site (Skill 3)
419
+ - [ ] Atualizar citations principais com novo URL (Skill 11)
420
+ - [ ] Manter redirects 301 por no mínimo 6-12 meses
421
+
422
+ ## Recuperação esperada
423
+ - Semana 1-2: queda de 20-40% de tráfego
424
+ - Semana 3-6: recuperação parcial
425
+ - Semana 7-12: ranking estabiliza
426
+ - Mês 4-6: alcança ou supera ranking pré-migração
427
+
428
+ ## Bandeira vermelha (algo deu errado)
429
+ - Queda > 50% após semana 4
430
+ - Sumiu do índice
431
+ - Manual action no GSC
432
+ ```
433
+
434
+ #### Caso 4: Mudança HTTP → HTTPS
435
+
436
+ ```apache
437
+ # .htaccess (Apache)
438
+ RewriteEngine On
439
+ RewriteCond %{HTTPS} off
440
+ RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
441
+ ```
442
+
443
+ ```nginx
444
+ # nginx
445
+ server {
446
+ listen 80;
447
+ server_name dominio.com.br www.dominio.com.br;
448
+ return 301 https://$server_name$request_uri;
449
+ }
450
+ ```
451
+
452
+ Depois:
453
+ - Atualizar `sitemap.xml` com URLs HTTPS
454
+ - Verificar canonical aponta pra HTTPS
455
+ - HSTS header pra forçar HTTPS no navegador
456
+ - Submeter `https://dominio.com.br` como nova propriedade no GSC
457
+
458
+ #### Caso 5: www vs non-www
459
+
460
+ Escolher UMA versão como canônica. Redirecionar a outra com 301.
461
+
462
+ ```apache
463
+ # Forçar www
464
+ RewriteEngine On
465
+ RewriteCond %{HTTP_HOST} ^dominio\.com\.br$
466
+ RewriteRule ^(.*)$ https://www.dominio.com.br/$1 [L,R=301]
467
+ ```
468
+
469
+ ```apache
470
+ # Forçar non-www (mais comum hoje)
471
+ RewriteEngine On
472
+ RewriteCond %{HTTP_HOST} ^www\.dominio\.com\.br$
473
+ RewriteRule ^(.*)$ https://dominio.com.br/$1 [L,R=301]
474
+ ```
475
+
476
+ #### Caso 6: E-commerce — facetas e filtros
477
+
478
+ E-commerces geram explosão de URLs com filtros (`/categoria?cor=azul&tamanho=m&preco=100`). Solução padrão:
479
+
480
+ ```html
481
+ <!-- URLs com facetas: canonical pra categoria mãe -->
482
+ <link rel="canonical" href="https://dominio.com.br/categoria">
483
+
484
+ <!-- OU noindex em variações de filtro -->
485
+ <meta name="robots" content="noindex, follow">
486
+ ```
487
+
488
+ **Páginas que devem indexar (canonical pra si):**
489
+ - Categorias principais
490
+ - Subcategorias importantes
491
+ - Combinações de filtro com volume de busca real (ex: "tênis nike masculino" pode merecer página própria)
492
+
493
+ **Páginas que NÃO devem indexar:**
494
+ - Filtros combinatórios sem busca
495
+ - URLs com parâmetro de ordenação (`?sort=price`)
496
+ - Carrinho, login, checkout
497
+ - Páginas de busca interna
498
+
499
+ #### Caso 7: Páginas órfãs
500
+
501
+ Página existe mas nenhuma outra linka pra ela = Google pode nem descobrir.
502
+
503
+ **Diagnóstico:** Screaming Frog → "Orphaned URLs" report.
504
+
505
+ **Solução:** adicionar página ao menu, breadcrumb, footer, ou linkar contextualmente de outras páginas.
506
+
507
+ #### Caso 8: Pagination
508
+
509
+ Páginas tipo `/blog?page=2`, `/blog?page=3`:
510
+
511
+ - **Não use** `rel="next"` e `rel="prev"` (depreciados pelo Google em 2019)
512
+ - Cada página tem canonical pra si mesma (não pra página 1)
513
+ - Cada página tem title único: "Blog - Página 2 | Marca"
514
+ - Considerar paginação por URL semântica: `/blog/page/2`
515
+
516
+ #### Caso 9: Internacionalização
517
+
518
+ Site PT + EN + ES. Estrutura recomendada (em ordem de preferência):
519
+
520
+ 1. **Subdiretórios:** `dominio.com.br/pt`, `dominio.com.br/en` — mais simples, autoridade concentrada
521
+ 2. **Subdomínios:** `pt.dominio.com`, `en.dominio.com` — mais separação, autoridade dividida
522
+ 3. **ccTLDs:** `dominio.com.br`, `dominio.com.us` — máxima separação, autoridade totalmente separada
523
+
524
+ Hreflang em todas as versões:
525
+
526
+ ```html
527
+ <link rel="alternate" hreflang="pt-BR" href="https://dominio.com.br/pt/">
528
+ <link rel="alternate" hreflang="en-US" href="https://dominio.com.br/en/">
529
+ <link rel="alternate" hreflang="es-ES" href="https://dominio.com.br/es/">
530
+ <link rel="alternate" hreflang="x-default" href="https://dominio.com.br/">
531
+ ```
532
+
533
+ #### Caso 10: Crawl budget de site grande
534
+
535
+ Sites com 50k+ páginas têm limite de crawl. Sintomas:
536
+ - Páginas demoram pra aparecer no índice
537
+ - Mudanças demoram pra refletir
538
+ - Páginas antigas continuam indexadas mesmo após exclusão
539
+
540
+ **Soluções:**
541
+ - Bloquear via robots.txt URLs sem valor (filtros, parâmetros)
542
+ - Otimizar internal linking (priorizar páginas importantes)
543
+ - Submeter sitemap segmentado por prioridade
544
+ - 410 (não 404) em páginas removidas (sinaliza pro Google parar de tentar)
545
+ - Páginas com baixo valor: noindex + follow
546
+
547
+ ## Catálogo de templates prontos
548
+
549
+ ### robots.txt — padrão WordPress
550
+
551
+ ```
552
+ User-agent: *
553
+ Allow: /
554
+
555
+ # Bloquear áreas administrativas
556
+ Disallow: /wp-admin/
557
+ Disallow: /wp-includes/
558
+ Disallow: /wp-login.php
559
+ Disallow: /xmlrpc.php
560
+ Disallow: /readme.html
561
+ Disallow: /license.txt
562
+
563
+ # Permitir admin-ajax (necessário pra plugins)
564
+ Allow: /wp-admin/admin-ajax.php
565
+
566
+ # Bloquear arquivos sensíveis
567
+ Disallow: /wp-content/uploads/wpforms/
568
+ Disallow: /?s=
569
+ Disallow: /search/
570
+ Disallow: /*?replytocom
571
+
572
+ # Permitir CSS, JS, imagens (CRÍTICO pro Googlebot renderizar)
573
+ Allow: /wp-content/uploads/
574
+ Allow: /wp-content/plugins/*.css
575
+ Allow: /wp-content/plugins/*.js
576
+ Allow: /wp-content/themes/*.css
577
+ Allow: /wp-content/themes/*.js
578
+
579
+ # Sitemap
580
+ Sitemap: https://dominio.com.br/sitemap.xml
581
+ Sitemap: https://dominio.com.br/sitemap-news.xml
582
+ ```
583
+
584
+ ### robots.txt — padrão Next.js / SPA
585
+
586
+ ```
587
+ User-agent: *
588
+ Allow: /
589
+
590
+ # Bloquear APIs e área administrativa
591
+ Disallow: /api/
592
+ Disallow: /admin/
593
+ Disallow: /_next/static/
594
+
595
+ # Permitir assets críticos
596
+ Allow: /_next/static/css/
597
+ Allow: /_next/static/chunks/
598
+
599
+ # Sitemap
600
+ Sitemap: https://dominio.com.br/sitemap.xml
601
+ ```
602
+
603
+ ### sitemap.xml — estrutura básica
604
+
605
+ ```xml
606
+ <?xml version="1.0" encoding="UTF-8"?>
607
+ <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
608
+ <url>
609
+ <loc>https://dominio.com.br/</loc>
610
+ <lastmod>2026-05-12</lastmod>
611
+ <changefreq>weekly</changefreq>
612
+ <priority>1.0</priority>
613
+ </url>
614
+ <url>
615
+ <loc>https://dominio.com.br/sobre</loc>
616
+ <lastmod>2026-04-15</lastmod>
617
+ <changefreq>monthly</changefreq>
618
+ <priority>0.8</priority>
619
+ </url>
620
+ <!-- mais URLs -->
621
+ </urlset>
622
+ ```
623
+
624
+ ### sitemap-index.xml (sites grandes, > 50k URLs)
625
+
626
+ ```xml
627
+ <?xml version="1.0" encoding="UTF-8"?>
628
+ <sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
629
+ <sitemap>
630
+ <loc>https://dominio.com.br/sitemap-pages.xml</loc>
631
+ <lastmod>2026-05-12</lastmod>
632
+ </sitemap>
633
+ <sitemap>
634
+ <loc>https://dominio.com.br/sitemap-products.xml</loc>
635
+ <lastmod>2026-05-12</lastmod>
636
+ </sitemap>
637
+ <sitemap>
638
+ <loc>https://dominio.com.br/sitemap-posts.xml</loc>
639
+ <lastmod>2026-05-12</lastmod>
640
+ </sitemap>
641
+ </sitemapindex>
642
+ ```
643
+
644
+ ### .htaccess — boas práticas SEO
645
+
646
+ ```apache
647
+ # Forçar HTTPS
648
+ RewriteEngine On
649
+ RewriteCond %{HTTPS} off
650
+ RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
651
+
652
+ # Forçar non-www
653
+ RewriteCond %{HTTP_HOST} ^www\.dominio\.com\.br$
654
+ RewriteRule ^(.*)$ https://dominio.com.br/$1 [L,R=301]
655
+
656
+ # Remover trailing slash (ou manter, escolher um padrão)
657
+ RewriteCond %{REQUEST_FILENAME} !-d
658
+ RewriteRule ^(.+)/$ /$1 [R=301,L]
659
+
660
+ # Cache headers pra SEO + performance
661
+ <FilesMatch "\.(jpg|jpeg|png|gif|webp|svg|css|js|woff2|woff|ttf)$">
662
+ Header set Cache-Control "max-age=31536000, public"
663
+ </FilesMatch>
664
+
665
+ # Compressão Gzip
666
+ <IfModule mod_deflate.c>
667
+ AddOutputFilterByType DEFLATE text/html text/css text/javascript application/javascript application/x-javascript
668
+ </IfModule>
669
+ ```
670
+
671
+ ### nginx.conf — boas práticas SEO
672
+
673
+ ```nginx
674
+ server {
675
+ listen 443 ssl http2;
676
+ server_name dominio.com.br;
677
+
678
+ # SSL config
679
+ ssl_certificate /path/to/cert;
680
+ ssl_certificate_key /path/to/key;
681
+
682
+ # HSTS
683
+ add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
684
+
685
+ # Compressão
686
+ gzip on;
687
+ gzip_vary on;
688
+ gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
689
+
690
+ # Cache assets
691
+ location ~* \.(jpg|jpeg|png|gif|webp|svg|css|js|woff2)$ {
692
+ expires 1y;
693
+ add_header Cache-Control "public, immutable";
694
+ }
695
+ }
696
+
697
+ # Redirect HTTP -> HTTPS
698
+ server {
699
+ listen 80;
700
+ server_name dominio.com.br www.dominio.com.br;
701
+ return 301 https://dominio.com.br$request_uri;
702
+ }
703
+
704
+ # Redirect www -> non-www
705
+ server {
706
+ listen 443 ssl http2;
707
+ server_name www.dominio.com.br;
708
+ return 301 https://dominio.com.br$request_uri;
709
+ }
710
+ ```
711
+
712
+ ## Estrutura obrigatória do entregável
713
+
714
+ ```markdown
715
+ # 🔧 AUDITORIA SEO TÉCNICA — [SITE / SISTEMA]
716
+
717
+ ## 📊 CONTEXTO
718
+ - URL: [...]
719
+ - Stack: [...]
720
+ - Acesso GSC: [sim/não]
721
+ - Acesso servidor: [sim/não]
722
+ - Sintoma principal: [...]
723
+
724
+ ## 🎯 DIAGNÓSTICO EM 5 CAMADAS
725
+
726
+ ### CAMADA 1 — ACESSIBILIDADE
727
+ - [check 1]: ✅ / ⚠️ / ❌
728
+ - [check 2]: [...]
729
+ [...]
730
+
731
+ ### CAMADA 2 — CRAWLABILITY
732
+ [...]
733
+
734
+ ### CAMADA 3 — RENDERABILITY
735
+ - Modo de renderização identificado: [CSR / SSR / SSG / ISR / Dynamic]
736
+ - Problemas: [...]
737
+
738
+ ### CAMADA 4 — INDEXABILITY
739
+ [...]
740
+
741
+ ### CAMADA 5 — RANKABILITY
742
+ [Delegação pra outras skills]
743
+
744
+ ## 🔍 DIAGNÓSTICO DO SEARCH CONSOLE
745
+
746
+ [Interpretação de cada relatório relevante]
747
+
748
+ ## 🚨 PROBLEMAS IDENTIFICADOS
749
+
750
+ ### Problema #1: [Título]
751
+ **Camada:** [N]
752
+ **Severidade:** Crítica / Alta / Média / Baixa
753
+ **Diagnóstico:** [...]
754
+ **Causa raiz:** [...]
755
+ **Solução:**
756
+
757
+ ```código pronto pra colar```
758
+
759
+ **Trade-off / risco:** [...]
760
+ **Tempo de impacto esperado:** [...]
761
+
762
+ [Repetir pra cada problema]
763
+
764
+ ## 🛠️ PLANO DE CORREÇÃO PRIORIZADO
765
+
766
+ ### FASE 1 — Críticos (resolver hoje)
767
+ 1. [...]
768
+
769
+ ### FASE 2 — Importantes (1-2 semanas)
770
+ 2. [...]
771
+
772
+ ### FASE 3 — Melhorias (1-3 meses)
773
+ 3. [...]
774
+
775
+ ## 📝 CÓDIGO PRONTO PRA COLAR
776
+
777
+ ### robots.txt
778
+ [código]
779
+
780
+ ### sitemap.xml (ou estrutura)
781
+ [código]
782
+
783
+ ### .htaccess / nginx.conf
784
+ [código]
785
+
786
+ ### Outros (next.config.js, etc.)
787
+ [código]
788
+
789
+ ## ✅ CHECKLIST PÓS-IMPLEMENTAÇÃO
790
+ - [ ] Backup completo antes de qualquer mudança
791
+ - [ ] Testar em staging (se possível)
792
+ - [ ] Aplicar mudanças
793
+ - [ ] Validar via curl / GSC Inspect URL
794
+ - [ ] Submeter sitemap no GSC
795
+ - [ ] Solicitar reindexação manual de páginas críticas
796
+ - [ ] Monitorar GSC por 14-30 dias
797
+
798
+ ## ⏰ TEMPO DE IMPACTO ESPERADO
799
+
800
+ - Mudanças em robots.txt / noindex: 1-7 dias
801
+ - Redirects: 1-30 dias pra Google reprocessar
802
+ - Sitemap atualizado: 7-30 dias
803
+ - Mudança de framework / arquitetura: 30-90 dias
804
+ - Migração de domínio: 60-180 dias
805
+
806
+ ## 🔗 DELEGAÇÕES PRA OUTRAS SKILLS
807
+
808
+ - Performance específica → Skill 6 (`core-web-vitals-fixer`)
809
+ - Schema → Skill 2 (`schema-jsonld-builder`)
810
+ - Meta tags → Skill 5 (`meta-tags-optimizer`)
811
+ - Conteúdo / autoridade → Skills 7, 8
812
+
813
+ ## ⚠️ ALERTAS
814
+
815
+ [Riscos específicos, mudanças que requerem cuidado especial]
816
+ ```
817
+
818
+ ## Erros comuns que esta skill EVITA
819
+
820
+ 1. **Diagnosticar sem inspecionar.** Sempre executar curl, view source, GSC Inspect URL antes de prescrever.
821
+
822
+ 2. **Pular camada de diagnóstico.** Acessibilidade → Crawlability → Renderability → Indexability → Rankability. Sempre em ordem.
823
+
824
+ 3. **Ignorar Search Console.** Sem GSC, diagnóstico é parcial. Skill instrui configurar antes de aprofundar.
825
+
826
+ 4. **Recomendar Dynamic Rendering pra novo projeto.** Google desencoraja desde 2022. Recomendar SSR/SSG.
827
+
828
+ 5. **Assumir que site WordPress não tem problema técnico.** WP + Elementor pode ter noindex acidental, robots.txt mal configurado, plugin gerando duplicate content.
829
+
830
+ 6. **Recomendar `rel="next/prev"` em paginação.** Depreciado em 2019. Usar canonical pra si mesma + title diferenciado.
831
+
832
+ 7. **Esquecer mobile-first.** Google indexa versão mobile. Site bem no desktop e mal no mobile = problema crítico.
833
+
834
+ 8. **Mudar redirects sem mapa.** Migração sem URL mapping destrói ranking. Sempre redirect map exaustivo antes.
835
+
836
+ 9. **Confundir 301 com 302.** 301 = permanente, passa autoridade. 302 = temporário, não passa autoridade plenamente. Pra mudanças permanentes, sempre 301.
837
+
838
+ 10. **Não distinguir Soft 404 de 404 real.** Página de erro com status 200 confunde Google. Retornar 404 real.
839
+
840
+ 11. **Ignorar cadeia de redirects.** A → B → C → D = perda de crawl budget e autoridade. Encurtar pra A → D.
841
+
842
+ 12. **Recomendar fix técnico sem mencionar tempo de impacto.** Cliente espera resultado em 24h, vê em 30 dias = expectativa quebrada. Skill sempre menciona prazo realista.
843
+
844
+ 13. **Apagar páginas removidas com 404.** Pra páginas removidas permanentemente, usar 410 (Gone) — Google retira do índice mais rápido.
845
+
846
+ 14. **Recomendar disavow leviamente.** Disavow é arma pesada. Só usar após auditoria de backlinks tóxicos e análise de manual action.
847
+
848
+ 15. **Esquecer de validar mudança.** Aplicou fix? Confirmar via curl / GSC / re-crawl. Sem validação, fica no escuro.
849
+
850
+ ## Edge cases
851
+
852
+ **Site Shopify com problemas técnicos:**
853
+ Shopify tem limitações (não dá pra editar robots.txt antes de Shopify 2.0, themes têm schema próprio). Diagnóstico se adapta. Sometimes recomendar mudar de tema.
854
+
855
+ **Site Wix com problemas:**
856
+ Wix gerencia muita coisa automaticamente. Cliente tem controle limitado. Algumas correções exigem upgrade de plano ou migração de plataforma.
857
+
858
+ **Sistema SaaS (LAXNEST, CRONOS, ZARK CRM tipo):**
859
+ SaaS tem páginas atrás de auth (não indexáveis) + páginas públicas (landing, blog). Skill foca em otimizar páginas públicas + garantir que privadas não vazam.
860
+
861
+ **Sites multi-marca compartilhando código (white label):**
862
+ Cuidado com duplicate content entre marcas. Cada marca precisa de conteúdo único o suficiente. Canonical não resolve sozinho.
863
+
864
+ **E-commerce com 100k+ produtos:**
865
+ Crawl budget é gargalo. Estratégia: noindex em variações de baixo valor, sitemap segmentado, internal linking otimizado.
866
+
867
+ **Cliente sem dev:**
868
+ Mudanças em servidor exigem dev ou suporte da hospedagem. Skill instrui o que pedir ao suporte (ex: "ative HTTP/2 no plano X"). Algumas coisas só funcionam com mudança de plano.
869
+
870
+ **Penalidade manual no Search Console:**
871
+ Caso grave. Skill entrega plano de recuperação: identificar causa, corrigir, request reconsideration. Pode levar 30-90 dias.
872
+
873
+ **Sistema custom com SEO ruim por design:**
874
+ Refactor estrutural. Skill aponta mudanças em código (rota, render mode, meta tags) + estima esforço de dev.
875
+
876
+ ## Conexão com outras skills ZARK
877
+
878
+ - **`seo-local-auditor`** (1): diagnóstico holístico → quando achado técnico → aciona Skill 13
879
+ - **`schema-jsonld-builder`** (2): schema é parte da indexability — Skill 13 detecta gap, Skill 2 implementa
880
+ - **`gbp-optimizer`** (3): após migração de domínio, atualizar GBP — delegação
881
+ - **`service-area-page-builder`** (4): páginas criadas precisam estar indexáveis — Skill 13 valida
882
+ - **`meta-tags-optimizer`** (5): meta tags são parte de indexability — Skill 13 detecta noindex acidental
883
+ - **`core-web-vitals-fixer`** (6): performance é métrica técnica — Skill 6 cuida, Skill 13 cuida do resto
884
+ - **`seo-content-writer-br`** (8): conteúdo precisa estar em página indexável — fundação da Skill 13
885
+ - **`seo-orchestrator`**: pode acionar Skill 13 quando diagnóstico indica problema técnico profundo
886
+
887
+ ## Exemplo de invocação esperada
888
+
889
+ **Usuário:** "Meu site React não tá rankeando, nenhuma página aparece no Google"
890
+
891
+ **Resposta esperada:** acionar essa skill, pedir URL, executar `curl` pra ver HTML cru vs renderizado, identificar CSR sem SSR, recomendar Next.js migration ou prerendering, fornecer código de exemplo.
892
+
893
+ **Usuário:** "Quero migrar dominioantigo.com.br pra dominionovo.com.br sem perder ranking"
894
+
895
+ **Resposta esperada:** acionar essa skill, fornecer checklist completo de migração (pré, dia, pós), incluindo mapa de URLs, 301 redirects, GSC Change of Address, monitoramento.
896
+
897
+ **Usuário:** "Search Console mostra 'Crawled - currently not indexed' em 500 páginas"
898
+
899
+ **Resposta esperada:** acionar essa skill, explicar o que significa, perguntar exemplos de URLs afetadas, diagnosticar (qualidade? thin content? duplicate?), prescrever ação por categoria.
900
+
901
+ **Usuário:** "Site WordPress não tá indexando, já fiz tudo certo"
902
+
903
+ **Resposta esperada:** acionar essa skill, fazer diagnóstico em 5 camadas, verificar "Discourage search engines" do WP, robots.txt, noindex meta, sitemap, canonical, status 200, etc. Frequentemente é uma das checkboxes do WordPress.
904
+
905
+ **Usuário:** "Tenho 50.000 URLs no e-commerce, só 5.000 indexadas"
906
+
907
+ **Resposta esperada:** acionar essa skill, identificar problema de crawl budget, prescrever estratégia (noindex em filtros, sitemap segmentado, internal linking, 410 em produtos descontinuados).