zark-seo 1.0.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 +186 -0
- package/package.json +35 -0
- package/templates/README.md +537 -0
- package/templates/citations-builder-br-SKILL.md +594 -0
- package/templates/competitor-gap-analyzer-SKILL.md +505 -0
- package/templates/core-web-vitals-fixer-SKILL.md +582 -0
- package/templates/gbp-optimizer-SKILL.md +560 -0
- package/templates/geo-llm-optimizer-SKILL.md +631 -0
- package/templates/meta-tags-optimizer-SKILL.md +563 -0
- package/templates/review-acquisition-engine-SKILL.md +663 -0
- package/templates/schema-jsonld-builder-SKILL.md +663 -0
- package/templates/seo-content-writer-br-SKILL.md +639 -0
- package/templates/seo-local-auditor-SKILL.md +420 -0
- package/templates/seo-orchestrator-SKILL.md +574 -0
- package/templates/service-area-page-builder-SKILL.md +517 -0
- package/templates/topical-authority-architect-SKILL.md +587 -0
|
@@ -0,0 +1,582 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: core-web-vitals-fixer
|
|
3
|
+
description: Diagnostica e corrige problemas de performance e Core Web Vitals (LCP, INP, CLS) em sites brasileiros, com foco em WordPress + Elementor (stack predominante de clientes ZARK). Use SEMPRE que o usuário pedir para "site lento", "melhorar performance", "PageSpeed baixo", "Core Web Vitals", "LCP alto", "INP ruim", "CLS", "Lighthouse", "passar nos Core Web Vitals", "site demora pra carregar", "Google está reclamando da velocidade", "GTmetrix", "tempo de carregamento", "otimizar velocidade", "imagens grandes", "JavaScript pesado", "fontes lentas". Acionar também quando uma auditoria SEO identifica gargalo de performance, ou quando estiver criando site novo e for momento de validar performance antes de publicar. Domina a hierarquia de impacto por causa-raiz, diferença entre dados de campo (CrUX) e laboratório (Lighthouse), trade-offs de cada otimização, e plugins/serviços recomendados pra mercado brasileiro.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Core Web Vitals Fixer — Padrão ZARK
|
|
7
|
+
|
|
8
|
+
Skill especialista em performance web e Core Web Vitals para sites brasileiros, principalmente o stack **WordPress + Elementor + hospedagem BR**. Diagnostica antes de prescrever, prioriza por impacto, e alerta sobre trade-offs.
|
|
9
|
+
|
|
10
|
+
## Por que Core Web Vitals importam
|
|
11
|
+
|
|
12
|
+
**Core Web Vitals são fator de ranking confirmado** desde 2021 (com expansão pra mobile-first). Não são o fator mais forte, mas em SERPs disputadas viram desempate. Para Local SEO, sites lentos têm CTR menor (usuário desiste) e bounce rate alto, o que pode reduzir destaque no Local Pack.
|
|
13
|
+
|
|
14
|
+
**Mais importante que ranking: experiência real.** Site com LCP de 5s perde 40-60% de conversão vs site com LCP de 2s. Em e-commerce e prestação de serviço local, isso é dinheiro deixado na mesa.
|
|
15
|
+
|
|
16
|
+
**O que o Google mede em 2026:**
|
|
17
|
+
|
|
18
|
+
| Métrica | O que mede | Bom | A melhorar | Ruim |
|
|
19
|
+
|---|---|---|---|---|
|
|
20
|
+
| **LCP** (Largest Contentful Paint) | Tempo até a maior parte visível aparecer | < 2.5s | 2.5–4s | > 4s |
|
|
21
|
+
| **INP** (Interaction to Next Paint) | Tempo do clique até a tela reagir | < 200ms | 200–500ms | > 500ms |
|
|
22
|
+
| **CLS** (Cumulative Layout Shift) | Quanto a tela "pula" durante carregamento | < 0.1 | 0.1–0.25 | > 0.25 |
|
|
23
|
+
|
|
24
|
+
**INP substituiu FID** em março de 2024. Skill considera INP como métrica oficial.
|
|
25
|
+
|
|
26
|
+
## Princípios não-negociáveis
|
|
27
|
+
|
|
28
|
+
1. **Diagnóstico antes de prescrição.** Sempre rodar PageSpeed Insights primeiro. Não recomendar fix sem ter o problema medido.
|
|
29
|
+
|
|
30
|
+
2. **Mobile-first sempre.** Métricas de mobile são as que rankeiam. Desktop pode ir bem e mobile mal — atacar mobile.
|
|
31
|
+
|
|
32
|
+
3. **CrUX > Lighthouse.** Quando dado de campo (CrUX) e laboratório (Lighthouse) divergem, CrUX é o que conta pro ranking. Lighthouse é guia de diagnóstico.
|
|
33
|
+
|
|
34
|
+
4. **Meta realista, não score 100.** Passar Core Web Vitals (LCP < 2.5s, INP < 200ms, CLS < 0.1) é o objetivo. Score 100 raramente vale o esforço.
|
|
35
|
+
|
|
36
|
+
5. **Hierarquia de impacto.** Imagem hero não otimizada destrói LCP — fix de 30 minutos. JS bloat afeta INP — fix complexo. Sempre priorizar por **impacto × esforço**.
|
|
37
|
+
|
|
38
|
+
6. **Trade-offs explícitos.** Toda otimização tem custo. Lazy loading agressivo pode quebrar LCP da hero. Defer JS pode quebrar formulário. Skill alerta sempre.
|
|
39
|
+
|
|
40
|
+
7. **Não tocar em produção sem backup.** Cliente ZARK precisa de plano de rollback antes de qualquer mudança em hospedagem ou plugins.
|
|
41
|
+
|
|
42
|
+
## Fluxo de execução
|
|
43
|
+
|
|
44
|
+
### Etapa 1 — Diagnóstico inicial (sempre)
|
|
45
|
+
|
|
46
|
+
Antes de qualquer recomendação, peça ou execute:
|
|
47
|
+
|
|
48
|
+
**Dados obrigatórios:**
|
|
49
|
+
|
|
50
|
+
1. **URL da página principal** + 2-3 páginas internas representativas (home, página de serviço/produto, blog post)
|
|
51
|
+
|
|
52
|
+
2. **Resultado do PageSpeed Insights** (https://pagespeed.web.dev) para cada URL — **mobile e desktop**:
|
|
53
|
+
- LCP, INP, CLS (campo + lab)
|
|
54
|
+
- Speed Index
|
|
55
|
+
- Total Blocking Time
|
|
56
|
+
- Lista de "Diagnostics" e "Opportunities" do Lighthouse
|
|
57
|
+
|
|
58
|
+
3. **Stack atual:**
|
|
59
|
+
- CMS (WordPress, Wix, Squarespace, Shopify, custom)
|
|
60
|
+
- Tema (Astra, Hello Elementor, Avada, Divi, custom)
|
|
61
|
+
- Page builder (Elementor, Divi, Bricks, Oxygen, sem)
|
|
62
|
+
- Plugins instalados (lista)
|
|
63
|
+
- Hospedagem (provedor + plano)
|
|
64
|
+
- CDN (Cloudflare? sem? outro?)
|
|
65
|
+
- Plugin de cache atual (se houver)
|
|
66
|
+
- Plugin de otimização de imagem atual (se houver)
|
|
67
|
+
|
|
68
|
+
**Se o usuário não tem alguns dados, peça pra rodar PageSpeed Insights e enviar prints/JSON.** Não chute.
|
|
69
|
+
|
|
70
|
+
### Etapa 2 — Classificação do problema
|
|
71
|
+
|
|
72
|
+
Use a árvore de decisão:
|
|
73
|
+
|
|
74
|
+
**LCP ruim (> 2.5s):**
|
|
75
|
+
- TTFB alto (> 600ms)? → Problema de **hospedagem/cache**
|
|
76
|
+
- Hero image grande/não otimizada? → Problema de **imagem**
|
|
77
|
+
- Fonte custom carregando depois? → Problema de **fonte**
|
|
78
|
+
- CSS render-blocking? → Problema de **CSS**
|
|
79
|
+
- JS bloqueando primeiro paint? → Problema de **JS render-blocking**
|
|
80
|
+
|
|
81
|
+
**INP ruim (> 200ms):**
|
|
82
|
+
- Muito JavaScript carregando? → Problema de **JS bloat**
|
|
83
|
+
- Plugins com handlers pesados? → Problema de **plugin específico**
|
|
84
|
+
- Long tasks no main thread? → Problema de **execução de JS**
|
|
85
|
+
|
|
86
|
+
**CLS ruim (> 0.1):**
|
|
87
|
+
- Imagens sem `width`/`height`? → Problema de **dimensões fixas**
|
|
88
|
+
- Fontes que trocam de tamanho? → Problema de **font swap**
|
|
89
|
+
- Pop-ups injetados depois do load? → Problema de **layout dinâmico**
|
|
90
|
+
- Ads ou widgets terceiros? → Problema de **terceiros**
|
|
91
|
+
|
|
92
|
+
### Etapa 3 — Plano de correção priorizado
|
|
93
|
+
|
|
94
|
+
Sempre entregar em 3 fases:
|
|
95
|
+
|
|
96
|
+
**Fase 1 — Quick Wins (1-2h, alto impacto):**
|
|
97
|
+
Coisas que mexem em 1 hora e melhoram score 20-40 pontos.
|
|
98
|
+
|
|
99
|
+
**Fase 2 — Otimizações estruturais (1-3 dias):**
|
|
100
|
+
Plugins, configurações, refatorações que exigem mais cuidado.
|
|
101
|
+
|
|
102
|
+
**Fase 3 — Infraestrutura (1-2 semanas):**
|
|
103
|
+
Trocas de hospedagem, refatoração de tema, mudanças que exigem migração.
|
|
104
|
+
|
|
105
|
+
## Catálogo de problemas e soluções (referência principal)
|
|
106
|
+
|
|
107
|
+
### LCP — Largest Contentful Paint
|
|
108
|
+
|
|
109
|
+
#### Problema 1: Hero image grande e/ou não otimizada
|
|
110
|
+
**Sintoma:** LCP > 3s, "Properly size images" alto no Lighthouse.
|
|
111
|
+
|
|
112
|
+
**Diagnóstico:** clique direito na imagem hero → "Inspect" → ver tamanho original (`naturalWidth × naturalHeight`) vs renderizado (`width × height`). Se original é 4000×3000 e renderiza em 1200×800, está sendo redimensionado pelo navegador.
|
|
113
|
+
|
|
114
|
+
**Solução (em ordem):**
|
|
115
|
+
|
|
116
|
+
1. **Comprimir imagens existentes** com plugin ShortPixel, Smush, ou Imagify
|
|
117
|
+
- ShortPixel: melhor qualidade, plano gratuito 100 imagens/mês
|
|
118
|
+
- Smush: mais simples, gratuito ilimitado mas menos eficiente
|
|
119
|
+
- Imagify: meio termo
|
|
120
|
+
|
|
121
|
+
2. **Servir em WebP/AVIF**
|
|
122
|
+
- WebP: 25-35% menor que JPG, suporte universal hoje
|
|
123
|
+
- AVIF: 50% menor, suporte 95%+ em 2026
|
|
124
|
+
- Plugins acima fazem conversão automática
|
|
125
|
+
|
|
126
|
+
3. **Dimensões corretas** — imagem renderizada em 1200px não deve ter original de 4000px
|
|
127
|
+
- WordPress gera múltiplos tamanhos automaticamente, mas Elementor às vezes força full size
|
|
128
|
+
- Usar atributo `srcset` corretamente
|
|
129
|
+
|
|
130
|
+
4. **Preload da hero image:**
|
|
131
|
+
```html
|
|
132
|
+
<link rel="preload" as="image" href="/hero.webp" fetchpriority="high">
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
5. **Lazy loading EXCETO na hero**:
|
|
136
|
+
- Imagens below-the-fold: `loading="lazy"`
|
|
137
|
+
- Imagem hero (above-the-fold): SEM lazy loading + `fetchpriority="high"`
|
|
138
|
+
- **Trade-off crítico:** lazy loading na hero piora LCP. Erro comum.
|
|
139
|
+
|
|
140
|
+
#### Problema 2: TTFB alto (servidor lento)
|
|
141
|
+
**Sintoma:** "Reduce server response time" alto no Lighthouse, TTFB > 600ms no GTmetrix.
|
|
142
|
+
|
|
143
|
+
**Diagnóstico:** rodar GTmetrix ou WebPageTest, olhar Waterfall — primeira requisição do HTML quanto demora?
|
|
144
|
+
|
|
145
|
+
**Solução:**
|
|
146
|
+
|
|
147
|
+
1. **Cache de página ativo** (sempre):
|
|
148
|
+
- WordPress: WP Rocket (pago) > LiteSpeed Cache (gratuito, ótimo se hospedagem é LiteSpeed) > W3 Total Cache (legado, evitar) > WP Super Cache (simples)
|
|
149
|
+
- Configurar TTL alto pra páginas estáticas
|
|
150
|
+
- Cache para usuário não-logado
|
|
151
|
+
|
|
152
|
+
2. **CDN Cloudflare** (gratuito e essencial):
|
|
153
|
+
- Cadastrar domínio em cloudflare.com
|
|
154
|
+
- Apontar nameservers
|
|
155
|
+
- Ativar "Auto Minify" (CSS, JS, HTML)
|
|
156
|
+
- Ativar "Brotli compression"
|
|
157
|
+
- Configurar Page Rules pra cache agressivo de estáticos
|
|
158
|
+
|
|
159
|
+
3. **Hospedagem decente**:
|
|
160
|
+
- Brasil: Hostinger Premium+, KingHost SSD, HostGator Reseller, Locaweb Cloud
|
|
161
|
+
- Internacional com data center BR: SiteGround GoGeek+, Kinsta, WP Engine
|
|
162
|
+
- Evitar: hospedagem compartilhada barata < R$ 30/mês (TTFB sempre ruim)
|
|
163
|
+
- VPS managed (Cloudways, GridPane) pra clientes mais robustos
|
|
164
|
+
|
|
165
|
+
4. **PHP atualizado**: PHP 8.2+ é 2-3x mais rápido que PHP 7.4. Verificar no painel da hospedagem.
|
|
166
|
+
|
|
167
|
+
5. **Banco de dados otimizado**:
|
|
168
|
+
- Plugin WP-Optimize ou Advanced Database Cleaner
|
|
169
|
+
- Limpar revisões antigas, transients, post-meta órfão
|
|
170
|
+
- InnoDB > MyISAM (deve estar default)
|
|
171
|
+
|
|
172
|
+
#### Problema 3: Render-blocking CSS/JS
|
|
173
|
+
**Sintoma:** "Eliminate render-blocking resources" no Lighthouse.
|
|
174
|
+
|
|
175
|
+
**Solução:**
|
|
176
|
+
|
|
177
|
+
1. **CSS crítico inline** (o CSS necessário pro above-the-fold no `<head>`)
|
|
178
|
+
- WP Rocket faz automaticamente
|
|
179
|
+
- Manualmente: usar critical-path-css-generator
|
|
180
|
+
|
|
181
|
+
2. **CSS não-crítico async**:
|
|
182
|
+
```html
|
|
183
|
+
<link rel="preload" href="style.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
3. **JS defer/async**:
|
|
187
|
+
- `defer`: baixa em paralelo, executa depois do HTML parser. Ideal pra maioria dos scripts.
|
|
188
|
+
- `async`: baixa em paralelo, executa quando termina (pode bloquear). Só pra analytics tipo GA.
|
|
189
|
+
- **Trade-off:** defer/async em scripts de formulário ou plugin específico pode quebrar funcionalidade. Testar.
|
|
190
|
+
|
|
191
|
+
4. **Eliminar CSS/JS não usado**:
|
|
192
|
+
- WP Rocket: "Remove Unused CSS"
|
|
193
|
+
- LiteSpeed Cache: "CSS / JS Combine + Optimize"
|
|
194
|
+
- **Trade-off:** geração de cache demora; primeiro carregamento pós-mudança é lento
|
|
195
|
+
|
|
196
|
+
#### Problema 4: Fontes carregando lento
|
|
197
|
+
**Sintoma:** "Ensure text remains visible during webfont load" no Lighthouse.
|
|
198
|
+
|
|
199
|
+
**Solução:**
|
|
200
|
+
|
|
201
|
+
1. **`font-display: swap`** em todas as `@font-face`:
|
|
202
|
+
```css
|
|
203
|
+
@font-face {
|
|
204
|
+
font-family: 'CustomFont';
|
|
205
|
+
src: url('font.woff2') format('woff2');
|
|
206
|
+
font-display: swap;
|
|
207
|
+
}
|
|
208
|
+
```
|
|
209
|
+
- Com swap, texto aparece com fallback enquanto a fonte custom carrega
|
|
210
|
+
|
|
211
|
+
2. **Self-hosting de Google Fonts** (gratuito e melhor):
|
|
212
|
+
- Plugin OMGF (Optimize My Google Fonts) ou WP Rocket
|
|
213
|
+
- Baixa fontes pro próprio domínio
|
|
214
|
+
- Reduz dependência de fonts.googleapis.com
|
|
215
|
+
|
|
216
|
+
3. **Preload de fontes críticas**:
|
|
217
|
+
```html
|
|
218
|
+
<link rel="preload" href="/fonts/inter.woff2" as="font" type="font/woff2" crossorigin>
|
|
219
|
+
```
|
|
220
|
+
- Só pras fontes usadas no above-the-fold
|
|
221
|
+
|
|
222
|
+
4. **Remover variantes de peso desnecessárias**:
|
|
223
|
+
- Site usa Inter Regular, Bold e... Black, Light, Italic, etc?
|
|
224
|
+
- Manter só os pesos realmente usados. Cada variante são ~30-80KB.
|
|
225
|
+
|
|
226
|
+
### INP — Interaction to Next Paint
|
|
227
|
+
|
|
228
|
+
#### Problema 1: JavaScript bloat
|
|
229
|
+
**Sintoma:** INP > 300ms, "Reduce JavaScript execution time" alto.
|
|
230
|
+
|
|
231
|
+
**Diagnóstico:** Lighthouse → Performance → "Coverage" tab → ver % de JS não usado por arquivo.
|
|
232
|
+
|
|
233
|
+
**Solução:**
|
|
234
|
+
|
|
235
|
+
1. **Auditar plugins ativos** — desativar 1 por 1 e medir impacto:
|
|
236
|
+
- Plugins de analytics múltiplos (Google Analytics + GTM + Hotjar + Clarity = 800KB de JS)
|
|
237
|
+
- Plugins de chat ao vivo (carregam mesmo sem uso)
|
|
238
|
+
- Plugins de pop-up
|
|
239
|
+
- Plugins de slider antigo (NextGEN, Revolution Slider) — substituir por nativo do tema
|
|
240
|
+
|
|
241
|
+
2. **Lazy load de iframes** (YouTube, Maps):
|
|
242
|
+
- Plugin "Lazy Load for Videos" ou nativo do WP Rocket
|
|
243
|
+
- Vídeo só carrega quando usuário rola até ele
|
|
244
|
+
- Maps: usar imagem placeholder + carregar real ao clicar
|
|
245
|
+
|
|
246
|
+
3. **Defer todos os scripts não-críticos**:
|
|
247
|
+
- Conforme item LCP/Problema 3
|
|
248
|
+
|
|
249
|
+
4. **Tree shaking / minify**:
|
|
250
|
+
- Cloudflare Auto Minify
|
|
251
|
+
- WP Rocket "Minify JS"
|
|
252
|
+
|
|
253
|
+
#### Problema 2: Plugins com handlers pesados
|
|
254
|
+
**Sintoma:** Long tasks no Performance tab do DevTools, INP ruim mesmo com pouco JS.
|
|
255
|
+
|
|
256
|
+
**Solução:**
|
|
257
|
+
|
|
258
|
+
1. **Identificar o plugin culpado**:
|
|
259
|
+
- DevTools → Performance → gravar interação → ver qual script ocupa main thread
|
|
260
|
+
|
|
261
|
+
2. **Substituir ou eliminar**:
|
|
262
|
+
- Plugins comuns que pesam: WPBakery (Visual Composer), Avada Builder, plugins de "live edit"
|
|
263
|
+
- Migrar pra Elementor (geralmente mais leve) ou Bricks (significativamente mais leve)
|
|
264
|
+
|
|
265
|
+
3. **WPCode em vez de plugins individuais**:
|
|
266
|
+
- Em vez de 5 plugins pra "adicionar header", "adicionar footer", "adicionar Google Analytics" — um WPCode resolve tudo
|
|
267
|
+
|
|
268
|
+
#### Problema 3: Third-party scripts (analytics, chat, pixel)
|
|
269
|
+
**Sintoma:** "Reduce third-party usage" no Lighthouse.
|
|
270
|
+
|
|
271
|
+
**Solução:**
|
|
272
|
+
|
|
273
|
+
1. **Google Tag Manager unificado** em vez de scripts soltos
|
|
274
|
+
2. **Lazy load** de chat (Intercom, Tawk, Crisp) — não carregar até usuário interagir
|
|
275
|
+
3. **Pixels (Meta, TikTok)** apenas em páginas de conversão, não site inteiro
|
|
276
|
+
4. **Heatmap (Hotjar, Clarity)** com sample rate baixo
|
|
277
|
+
|
|
278
|
+
### CLS — Cumulative Layout Shift
|
|
279
|
+
|
|
280
|
+
#### Problema 1: Imagens sem dimensões fixas
|
|
281
|
+
**Sintoma:** CLS > 0.1, "Image elements do not have explicit width and height" no Lighthouse.
|
|
282
|
+
|
|
283
|
+
**Solução:**
|
|
284
|
+
|
|
285
|
+
```html
|
|
286
|
+
<!-- Errado -->
|
|
287
|
+
<img src="hero.jpg" alt="...">
|
|
288
|
+
|
|
289
|
+
<!-- Certo -->
|
|
290
|
+
<img src="hero.jpg" alt="..." width="1200" height="630">
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
Com `width` e `height`, navegador reserva o espaço antes da imagem carregar. Sem, conteúdo pula quando a imagem aparece.
|
|
294
|
+
|
|
295
|
+
**Em WordPress:** o editor já adiciona automaticamente. Em Elementor, verificar configuração de imagem do widget.
|
|
296
|
+
|
|
297
|
+
#### Problema 2: Fontes que mudam de largura
|
|
298
|
+
**Sintoma:** Texto "redimensiona" no carregamento.
|
|
299
|
+
|
|
300
|
+
**Solução:**
|
|
301
|
+
|
|
302
|
+
1. **Self-host de fontes** (item Fontes acima)
|
|
303
|
+
2. **`size-adjust` no `@font-face`** pra equalizar fallback:
|
|
304
|
+
```css
|
|
305
|
+
@font-face {
|
|
306
|
+
font-family: 'Inter';
|
|
307
|
+
src: url('inter.woff2') format('woff2');
|
|
308
|
+
font-display: swap;
|
|
309
|
+
size-adjust: 100%;
|
|
310
|
+
ascent-override: 90%;
|
|
311
|
+
descent-override: 22%;
|
|
312
|
+
line-gap-override: 0%;
|
|
313
|
+
}
|
|
314
|
+
```
|
|
315
|
+
- Ajustar valores até fallback ter mesma altura que custom
|
|
316
|
+
|
|
317
|
+
#### Problema 3: Pop-ups e banners injetados depois
|
|
318
|
+
**Sintoma:** Conteúdo "desce" 200px quando aparece banner de cookie.
|
|
319
|
+
|
|
320
|
+
**Solução:**
|
|
321
|
+
|
|
322
|
+
1. **Reservar espaço** pro banner via CSS:
|
|
323
|
+
```css
|
|
324
|
+
#cookie-banner-placeholder { min-height: 80px; }
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
2. **Posicionar fixo (overlay)** em vez de empurrar conteúdo:
|
|
328
|
+
```css
|
|
329
|
+
#cookie-banner { position: fixed; bottom: 0; }
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
3. **Renderizar no SSR** se possível (próximo de sites estáticos / Next.js)
|
|
333
|
+
|
|
334
|
+
#### Problema 4: Anúncios e embeds
|
|
335
|
+
**Sintoma:** Embeds de Twitter, Instagram, YouTube com altura variável.
|
|
336
|
+
|
|
337
|
+
**Solução:**
|
|
338
|
+
|
|
339
|
+
1. **`aspect-ratio` no container** (CSS moderno):
|
|
340
|
+
```css
|
|
341
|
+
.youtube-embed { aspect-ratio: 16/9; }
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
2. **Plugin "Wonder Embed" ou similar** que reserva espaço fixo pra embed.
|
|
345
|
+
|
|
346
|
+
## Stack ZARK recomendado para WordPress + Elementor
|
|
347
|
+
|
|
348
|
+
Configuração-padrão pra todo cliente WordPress:
|
|
349
|
+
|
|
350
|
+
### Hospedagem (escolher conforme orçamento)
|
|
351
|
+
|
|
352
|
+
| Cliente | Recomendação |
|
|
353
|
+
|---|---|
|
|
354
|
+
| Pequeno (ticket baixo, < 5k visitas/mês) | Hostinger Premium ou KingHost SSD |
|
|
355
|
+
| Médio (5k–50k visitas/mês) | Hostinger Business, HostGator Reseller, ou Cloudways DigitalOcean |
|
|
356
|
+
| Grande (> 50k visitas/mês) | Cloudways Vultr High Frequency, Kinsta, ou WP Engine |
|
|
357
|
+
| Empresa BR sensível a localidade | Locaweb Cloud, Hostinger BR data center |
|
|
358
|
+
|
|
359
|
+
### Plugins essenciais (nessa ordem de instalação)
|
|
360
|
+
|
|
361
|
+
1. **Cache + otimização**: WP Rocket (pago, R$ 290/ano, melhor relação custo-benefício) OU LiteSpeed Cache (gratuito, exige hospedagem com LiteSpeed)
|
|
362
|
+
2. **CDN**: Cloudflare (gratuito) — apontar nameservers
|
|
363
|
+
3. **Imagens**: ShortPixel ou Imagify (plano gratuito basta pra começar)
|
|
364
|
+
4. **Fontes**: OMGF (gratuito) — self-host de Google Fonts
|
|
365
|
+
5. **Lazy load avançado**: nativo do WP Rocket OU plugin "a3 Lazy Load"
|
|
366
|
+
6. **Database cleanup**: WP-Optimize (gratuito)
|
|
367
|
+
7. **Code snippets**: WPCode (gratuito) — substitui 3-5 plugins individuais
|
|
368
|
+
8. **Segurança**: Wordfence ou Solid Security — não diretamente performance, mas plugins de segurança ruins matam INP
|
|
369
|
+
|
|
370
|
+
### Configuração WP Rocket recomendada (presets)
|
|
371
|
+
|
|
372
|
+
- **Cache:** ativado, TTL 24h pra logged-out
|
|
373
|
+
- **File optimization:**
|
|
374
|
+
- Minify CSS: ON
|
|
375
|
+
- Combine CSS: OFF (pode causar problemas com Elementor)
|
|
376
|
+
- Minify JS: ON
|
|
377
|
+
- Combine JS: OFF
|
|
378
|
+
- Defer JavaScript: ON
|
|
379
|
+
- Delay JavaScript Execution: ON (selecionar GA, GTM, FB Pixel, Hotjar)
|
|
380
|
+
- **Media:**
|
|
381
|
+
- LazyLoad imagens: ON (mas excluir hero image manualmente)
|
|
382
|
+
- LazyLoad iframes: ON
|
|
383
|
+
- Add missing image dimensions: ON
|
|
384
|
+
- Disable Emoji: ON
|
|
385
|
+
- **Preload:** Sitemap-based preload, ON
|
|
386
|
+
- **Database:** limpar manualmente uma vez por mês via WP-Optimize
|
|
387
|
+
- **CDN:** integrar com Cloudflare se aplicável
|
|
388
|
+
|
|
389
|
+
### Configuração Cloudflare recomendada (free tier)
|
|
390
|
+
|
|
391
|
+
- **SSL/TLS:** Full (strict)
|
|
392
|
+
- **Always Use HTTPS:** ON
|
|
393
|
+
- **Auto Minify:** CSS, JS, HTML — todos ON
|
|
394
|
+
- **Brotli:** ON
|
|
395
|
+
- **Rocket Loader:** OFF (causa problemas com Elementor — ironia do nome)
|
|
396
|
+
- **Page Rules:**
|
|
397
|
+
- `*.dominio.com.br/wp-admin/*` → Cache Level: Bypass
|
|
398
|
+
- `*.dominio.com.br/wp-content/uploads/*` → Cache Level: Cache Everything, Edge TTL 1 mês
|
|
399
|
+
- **Bot Fight Mode:** ON (gratuito, bloqueia bots ruins)
|
|
400
|
+
- **Browser Cache TTL:** 1 ano
|
|
401
|
+
|
|
402
|
+
## Estrutura obrigatória do entregável
|
|
403
|
+
|
|
404
|
+
Quando esta skill é acionada, sempre entregar nesse formato:
|
|
405
|
+
|
|
406
|
+
```markdown
|
|
407
|
+
# ⚡ AUDITORIA PERFORMANCE — [URL OU EMPRESA]
|
|
408
|
+
|
|
409
|
+
## 📊 DIAGNÓSTICO
|
|
410
|
+
|
|
411
|
+
**URL analisada:** [URL]
|
|
412
|
+
**Data:** [data]
|
|
413
|
+
**Ferramenta:** PageSpeed Insights
|
|
414
|
+
|
|
415
|
+
### Métricas atuais
|
|
416
|
+
|
|
417
|
+
| Métrica | Mobile | Desktop | Status |
|
|
418
|
+
|---|---|---|---|
|
|
419
|
+
| LCP | X.Xs | X.Xs | ✅/⚠️/❌ |
|
|
420
|
+
| INP | XXXms | XXXms | ✅/⚠️/❌ |
|
|
421
|
+
| CLS | 0.XX | 0.XX | ✅/⚠️/❌ |
|
|
422
|
+
| TTFB | XXXms | XXXms | ✅/⚠️/❌ |
|
|
423
|
+
|
|
424
|
+
**Passa Core Web Vitals?** [Sim / Não]
|
|
425
|
+
|
|
426
|
+
### Stack identificado
|
|
427
|
+
|
|
428
|
+
- CMS: [...]
|
|
429
|
+
- Tema: [...]
|
|
430
|
+
- Page builder: [...]
|
|
431
|
+
- Hospedagem: [...]
|
|
432
|
+
- CDN: [...]
|
|
433
|
+
- Cache: [...]
|
|
434
|
+
|
|
435
|
+
## 🚨 PROBLEMAS CRÍTICOS IDENTIFICADOS
|
|
436
|
+
|
|
437
|
+
### Problema #1: [Título]
|
|
438
|
+
**Métrica afetada:** [LCP/INP/CLS]
|
|
439
|
+
**Sintoma:** [...]
|
|
440
|
+
**Causa-raiz:** [...]
|
|
441
|
+
**Impacto estimado se corrigido:** [...]
|
|
442
|
+
|
|
443
|
+
[Repetir 2-5 críticos]
|
|
444
|
+
|
|
445
|
+
## 🛠️ PLANO DE CORREÇÃO PRIORIZADO
|
|
446
|
+
|
|
447
|
+
### FASE 1 — Quick Wins (1-2h, alto impacto)
|
|
448
|
+
|
|
449
|
+
1. **[Ação]** — [Descrição prática]
|
|
450
|
+
**Como fazer:** [passo a passo]
|
|
451
|
+
**Trade-off / risco:** [se houver]
|
|
452
|
+
**Impacto esperado:** [LCP -X.Xs, etc]
|
|
453
|
+
|
|
454
|
+
[Repetir 3-5 quick wins]
|
|
455
|
+
|
|
456
|
+
### FASE 2 — Otimizações estruturais (1-3 dias)
|
|
457
|
+
|
|
458
|
+
[Mesma estrutura]
|
|
459
|
+
|
|
460
|
+
### FASE 3 — Infraestrutura (1-2 semanas, se necessário)
|
|
461
|
+
|
|
462
|
+
[Mesma estrutura]
|
|
463
|
+
|
|
464
|
+
## 📦 STACK RECOMENDADO PARA ESTE CASO
|
|
465
|
+
|
|
466
|
+
[Plugins, configurações específicas pra esse cliente]
|
|
467
|
+
|
|
468
|
+
## ✅ CHECKLIST DE EXECUÇÃO
|
|
469
|
+
|
|
470
|
+
- [ ] Backup completo (UpdraftPlus ou similar)
|
|
471
|
+
- [ ] Testar mudanças em staging primeiro (se possível)
|
|
472
|
+
- [ ] Aplicar Quick Wins
|
|
473
|
+
- [ ] Re-rodar PageSpeed Insights e comparar
|
|
474
|
+
- [ ] Aplicar Fase 2
|
|
475
|
+
- [ ] Re-medir
|
|
476
|
+
- [ ] Monitorar por 7 dias (CrUX leva 28 dias pra atualizar dados de campo)
|
|
477
|
+
|
|
478
|
+
## 🎯 META REALISTA
|
|
479
|
+
|
|
480
|
+
Após execução completa: LCP < 2.5s, INP < 200ms, CLS < 0.1 — passa Core Web Vitals.
|
|
481
|
+
|
|
482
|
+
Não promete score Lighthouse 100. Promete: passar nos 3 thresholds que o Google rankeia.
|
|
483
|
+
|
|
484
|
+
## ⚠️ ALERTAS
|
|
485
|
+
|
|
486
|
+
[Trade-offs específicos do caso, ações que podem quebrar funcionalidade existente]
|
|
487
|
+
```
|
|
488
|
+
|
|
489
|
+
## Erros comuns que esta skill EVITA
|
|
490
|
+
|
|
491
|
+
1. **Recomendar otimização sem ter medido o problema.** "Habilita cache" pra um site que já tem cache é ruído.
|
|
492
|
+
|
|
493
|
+
2. **Ignorar mobile e otimizar só desktop.** Google rankeia mobile.
|
|
494
|
+
|
|
495
|
+
3. **Confundir Lighthouse com CrUX.** Cliente vê Lighthouse 95 e acha que está bom. Mas o CrUX (que rankeia) está em 60. Skill alerta.
|
|
496
|
+
|
|
497
|
+
4. **Lazy load na hero image.** Erro comum em plugins que aplicam lazy a tudo. Hero NÃO leva lazy load.
|
|
498
|
+
|
|
499
|
+
5. **Combinar CSS/JS sem testar.** WP Rocket "Combine CSS" quebra muito Elementor. Skill recomenda DESLIGAR.
|
|
500
|
+
|
|
501
|
+
6. **Usar Rocket Loader do Cloudflare com Elementor.** Quebra interações. Skill recomenda DESLIGAR.
|
|
502
|
+
|
|
503
|
+
7. **Manter PHP 7.4 ou inferior.** PHP 8.2+ é gratuito (mudança no painel da hospedagem) e dobra performance.
|
|
504
|
+
|
|
505
|
+
8. **Hospedagem barata < R$ 30/mês.** Não passa CWV. Skill alerta antes de qualquer otimização.
|
|
506
|
+
|
|
507
|
+
9. **3 plugins de cache simultâneos.** Briga entre eles, perde performance. Skill instrui escolher UM.
|
|
508
|
+
|
|
509
|
+
10. **Imagem em 4000px renderizada em 800px.** Banda desperdiçada. Comprimir + redimensionar.
|
|
510
|
+
|
|
511
|
+
11. **Google Fonts via CDN do Elementor.** Bloqueia render. Usar OMGF pra self-host.
|
|
512
|
+
|
|
513
|
+
12. **Esquecer width/height em imagens.** Causa CLS alto. Skill instrui sempre.
|
|
514
|
+
|
|
515
|
+
13. **Pop-up de cookie que desce a página.** Reservar espaço ou usar overlay fixo.
|
|
516
|
+
|
|
517
|
+
14. **Achar que score 100 é a meta.** Skill alerta: meta é passar CWV (LCP/INP/CLS), não Lighthouse 100.
|
|
518
|
+
|
|
519
|
+
15. **Não fazer backup antes de mudar plugin.** Cliente fica fora do ar e culpa a skill. Skill sempre recomenda backup.
|
|
520
|
+
|
|
521
|
+
## Edge cases
|
|
522
|
+
|
|
523
|
+
**Site em construção (página em manutenção):**
|
|
524
|
+
Performance não importa ainda. Foco em terminar o site primeiro.
|
|
525
|
+
|
|
526
|
+
**Site WooCommerce / e-commerce:**
|
|
527
|
+
INP é mais sensível por interações com carrinho. JS de tema de loja (Astra Pro, Flatsome, Dokan) é mais pesado. Considerar tema mais leve (Blocksy, GeneratePress).
|
|
528
|
+
|
|
529
|
+
**Site estático (Next.js, Astro, Hugo):**
|
|
530
|
+
Geralmente passa CWV nativamente. Skill ainda útil pra otimizar imagens e fonts, mas Fase 3 (hospedagem) raramente é problema.
|
|
531
|
+
|
|
532
|
+
**Site com plugin de tradução (WPML, Polylang):**
|
|
533
|
+
Sites multilíngues somam DB queries. WPML costuma ser pesado. Considerar Polylang gratuito ou TranslatePress se WPML está matando perf.
|
|
534
|
+
|
|
535
|
+
**Site em VPS/dedicado sem managed:**
|
|
536
|
+
Otimização exige acesso a servidor (Nginx config, PHP-FPM, MySQL tuning). Recomendar managed (Cloudways, GridPane) se cliente não tem dev DevOps.
|
|
537
|
+
|
|
538
|
+
**Cliente que mexeu no `wp-config.php` e quebrou:**
|
|
539
|
+
Sempre recomendar backup antes de qualquer mudança. Se quebrou, restaurar do backup do hospedeiro (cPanel → restore).
|
|
540
|
+
|
|
541
|
+
**Site com tráfego pago alto (campanhas Meta/Google):**
|
|
542
|
+
Performance é direto $$. LCP -1s pode reduzir CPC em 10-15% por melhorar Quality Score. Alta prioridade.
|
|
543
|
+
|
|
544
|
+
**Cliente que insiste em manter plugin pesado (NextGEN, Revolution Slider):**
|
|
545
|
+
Negociar substituição. Se cliente recusa, otimizar o que dá no resto. Documentar limitação.
|
|
546
|
+
|
|
547
|
+
## Ferramentas e comandos úteis
|
|
548
|
+
|
|
549
|
+
**Validação:**
|
|
550
|
+
- PageSpeed Insights: https://pagespeed.web.dev
|
|
551
|
+
- GTmetrix: https://gtmetrix.com (com servidor BR)
|
|
552
|
+
- WebPageTest: https://webpagetest.org (mais granular)
|
|
553
|
+
- Chrome DevTools → Lighthouse + Performance tab
|
|
554
|
+
|
|
555
|
+
**Monitoramento contínuo:**
|
|
556
|
+
- Google Search Console → Core Web Vitals report
|
|
557
|
+
- DebugBear (pago, monitora CrUX e simulado)
|
|
558
|
+
- Calibre (pago)
|
|
559
|
+
- Treo.sh (gratuito até 5 sites)
|
|
560
|
+
|
|
561
|
+
**Análise específica:**
|
|
562
|
+
- Imagens: https://squoosh.app (compressão manual)
|
|
563
|
+
- Fontes: https://font-display.glitch.me (ver impacto de font-display)
|
|
564
|
+
- Critical CSS: https://www.sitelocity.com/critical-path-css-generator
|
|
565
|
+
|
|
566
|
+
## Exemplo de invocação esperada
|
|
567
|
+
|
|
568
|
+
**Usuário:** "Site da Limppetec tá lento, PageSpeed deu 38 no mobile"
|
|
569
|
+
|
|
570
|
+
**Resposta esperada:** acionar skill, pedir URL + screenshot do PageSpeed Insights + stack atual, classificar problema (provável: imagens não otimizadas + Elementor sem cache), entregar plano em 3 fases com Quick Wins primeiro.
|
|
571
|
+
|
|
572
|
+
**Usuário:** "Como melhorar Core Web Vitals do meu cliente WordPress?"
|
|
573
|
+
|
|
574
|
+
**Resposta esperada:** acionar skill, pedir URL e métricas atuais, gerar plano específico do stack identificado.
|
|
575
|
+
|
|
576
|
+
**Usuário:** "Cliente reclamou que site demora pra abrir no celular"
|
|
577
|
+
|
|
578
|
+
**Resposta esperada:** acionar skill, pedir URL + medições mobile específicas, focar em LCP e INP mobile (provavelmente o problema), executar fluxo padrão.
|
|
579
|
+
|
|
580
|
+
**Usuário:** "Lighthouse deu 95 mas Search Console mostra que não passa Core Web Vitals"
|
|
581
|
+
|
|
582
|
+
**Resposta esperada:** acionar skill, explicar diferença CrUX × Lighthouse, focar em dados de campo, identificar gap entre lab e produção (geralmente: TTFB ruim em produção, hospedagem fraca, ou cache mal configurado).
|