- All SKILL.md files now <500 lines (avg reduction 69%) - Detailed content extracted to references/ subdirectories - Frontmatter standardised: only name + description (Anthropic standard) - New skills: brand-guidelines, spec-coauthor, report-templates, skill-creator - Design skills: anti-slop guidelines, premium-proposals reference - Removed non-standard frontmatter fields (triggers, version, author, category) Plugins affected: infraestrutura, marketing, dev-tools, crm-ops, gestao, core-tools, negocio, perfex-dev, wordpress, design-media Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
271 lines
6.4 KiB
Markdown
271 lines
6.4 KiB
Markdown
# /seo-content-optimization - Structured Data e Meta Tags
|
|
|
|
## Meta Tags Essenciais 2026
|
|
|
|
```html
|
|
<!-- Title tag (50-60 caracteres) -->
|
|
<title>Keyword Principal | Nome Marca 2026</title>
|
|
|
|
<!-- Meta description (150-160 caracteres, CTA claro) -->
|
|
<meta name="description" content="Descrição apelativa com keyword, benefício claro e CTA subtil. Actualizado 2026.">
|
|
|
|
<!-- Canonical URL -->
|
|
<link rel="canonical" href="https://site.pt/pagina/">
|
|
|
|
<!-- Open Graph -->
|
|
<meta property="og:title" content="Título para Social (60 chars)">
|
|
<meta property="og:description" content="Descrição social (65 palavras max)">
|
|
<meta property="og:image" content="https://site.pt/og-image.jpg">
|
|
<meta property="og:url" content="https://site.pt/pagina/">
|
|
<meta property="og:type" content="article">
|
|
|
|
<!-- Twitter Card -->
|
|
<meta name="twitter:card" content="summary_large_image">
|
|
<meta name="twitter:title" content="Título Twitter">
|
|
<meta name="twitter:description" content="Descrição Twitter">
|
|
<meta name="twitter:image" content="https://site.pt/twitter-image.jpg">
|
|
|
|
<!-- 2026: Article metadata -->
|
|
<meta property="article:published_time" content="2026-02-03T10:00:00Z">
|
|
<meta property="article:modified_time" content="2026-02-03T15:30:00Z">
|
|
<meta property="article:author" content="Nome Autor">
|
|
```
|
|
|
|
---
|
|
|
|
## Structured Data (Schema.org) 2026
|
|
|
|
### Organization (Homepage)
|
|
|
|
```json
|
|
{
|
|
"@context": "https://schema.org",
|
|
"@type": "Organization",
|
|
"name": "Nome Empresa",
|
|
"url": "https://site.pt",
|
|
"logo": "https://site.pt/logo.png",
|
|
"sameAs": [
|
|
"https://linkedin.com/company/...",
|
|
"https://facebook.com/...",
|
|
"https://instagram.com/..."
|
|
],
|
|
"contactPoint": {
|
|
"@type": "ContactPoint",
|
|
"telephone": "+351-XXX-XXX-XXX",
|
|
"contactType": "Customer Service",
|
|
"areaServed": "PT",
|
|
"availableLanguage": ["pt", "en"]
|
|
}
|
|
}
|
|
```
|
|
|
|
### Article/BlogPosting (E-E-A-T compliant)
|
|
|
|
```json
|
|
{
|
|
"@context": "https://schema.org",
|
|
"@type": "Article",
|
|
"headline": "Título do Artigo",
|
|
"author": {
|
|
"@type": "Person",
|
|
"name": "Nome Autor",
|
|
"url": "https://site.pt/autor/nome",
|
|
"jobTitle": "Especialista em...",
|
|
"knowsAbout": ["Área 1", "Área 2"]
|
|
},
|
|
"publisher": {
|
|
"@type": "Organization",
|
|
"name": "Nome Empresa",
|
|
"logo": {
|
|
"@type": "ImageObject",
|
|
"url": "https://site.pt/logo.png"
|
|
}
|
|
},
|
|
"datePublished": "2026-02-03",
|
|
"dateModified": "2026-02-03",
|
|
"image": "https://site.pt/imagem.jpg",
|
|
"wordCount": 1500,
|
|
"inLanguage": "pt-PT"
|
|
}
|
|
```
|
|
|
|
### FAQPage (featured snippets)
|
|
|
|
```json
|
|
{
|
|
"@context": "https://schema.org",
|
|
"@type": "FAQPage",
|
|
"mainEntity": [
|
|
{
|
|
"@type": "Question",
|
|
"name": "Pergunta completa?",
|
|
"acceptedAnswer": {
|
|
"@type": "Answer",
|
|
"text": "Resposta completa e detalhada (min 40 palavras para snippets)."
|
|
}
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
### HowTo Schema (rich results 2026)
|
|
|
|
```json
|
|
{
|
|
"@context": "https://schema.org",
|
|
"@type": "HowTo",
|
|
"name": "Como fazer X",
|
|
"description": "Guia completo passo a passo",
|
|
"totalTime": "PT30M",
|
|
"step": [
|
|
{
|
|
"@type": "HowToStep",
|
|
"name": "Passo 1",
|
|
"text": "Descrição detalhada passo 1",
|
|
"image": "https://site.pt/passo1.jpg"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
### Review/Rating Schema (produtos)
|
|
|
|
```json
|
|
{
|
|
"@context": "https://schema.org",
|
|
"@type": "Product",
|
|
"name": "Nome Produto",
|
|
"brand": { "@type": "Brand", "name": "Nome Marca" },
|
|
"aggregateRating": {
|
|
"@type": "AggregateRating",
|
|
"ratingValue": "4.8",
|
|
"reviewCount": "127"
|
|
},
|
|
"offers": {
|
|
"@type": "Offer",
|
|
"price": "95.00",
|
|
"priceCurrency": "EUR",
|
|
"availability": "https://schema.org/InStock"
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## Core Web Vitals 2026
|
|
|
|
| Métrica | Bom | Necessita Melhoria | Mau | Mudança 2026 |
|
|
|---------|-----|-------------------|-----|--------------|
|
|
| **LCP** | < 2.5s | 2.5-4s | > 4s | Threshold < 2.0s Q2 |
|
|
| **INP** | < 200ms | 200-500ms | > 500ms | Substituiu FID em Jan 2026 |
|
|
| **CLS** | < 0.1 | 0.1-0.25 | > 0.25 | Sem mudanças |
|
|
|
|
### Optimizações LCP
|
|
|
|
```html
|
|
<!-- Preload imagem hero -->
|
|
<link rel="preload" as="image" href="/hero.jpg" fetchpriority="high">
|
|
|
|
<!-- Lazy loading imagens below-fold -->
|
|
<img src="image.jpg" loading="lazy" alt="Descrição">
|
|
|
|
<!-- Responsive images -->
|
|
<img srcset="small.jpg 480w, medium.jpg 800w, large.jpg 1200w"
|
|
sizes="(max-width: 600px) 480px, (max-width: 1000px) 800px, 1200px"
|
|
src="large.jpg" alt="Descrição">
|
|
|
|
<!-- WebP format -->
|
|
<picture>
|
|
<source srcset="image.webp" type="image/webp">
|
|
<img src="image.jpg" alt="Descrição">
|
|
</picture>
|
|
```
|
|
|
|
### Optimizações INP (novo 2026)
|
|
|
|
```javascript
|
|
// Debounce event handlers
|
|
function debounce(func, wait) {
|
|
let timeout;
|
|
return function executedFunction(...args) {
|
|
clearTimeout(timeout);
|
|
timeout = setTimeout(() => func(...args), wait);
|
|
};
|
|
}
|
|
|
|
// Code splitting
|
|
const component = () => import('./HeavyComponent.js');
|
|
|
|
// Web Workers para tarefas pesadas
|
|
const worker = new Worker('worker.js');
|
|
worker.postMessage({ task: 'heavy-computation', data });
|
|
```
|
|
|
|
### Optimizações CLS
|
|
|
|
```css
|
|
/* Definir width/height em imagens */
|
|
img {
|
|
width: 800px;
|
|
height: 600px;
|
|
aspect-ratio: 4 / 3;
|
|
}
|
|
|
|
/* Reservar espaço para ads */
|
|
.ad-container { min-height: 250px; }
|
|
|
|
/* Font loading */
|
|
@font-face {
|
|
font-family: 'Custom Font';
|
|
src: url('/font.woff2') format('woff2');
|
|
font-display: swap;
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## URL Structure Best Practices
|
|
|
|
```
|
|
CORRECTO:
|
|
https://site.pt/categoria/keyword-principal/
|
|
https://site.pt/blog/como-fazer-energia-solar-2026/
|
|
|
|
ERRADO:
|
|
https://site.pt/p?id=123&cat=5&lang=pt
|
|
https://site.pt/este-url-e-muito-longo-com-muitas-palavras-desnecessarias/
|
|
```
|
|
|
|
**Regras 2026:**
|
|
- Máximo 60 caracteres
|
|
- Hífens (não underscores)
|
|
- Lowercase
|
|
- Keyword no início se possível
|
|
- Sem stop words quando possível
|
|
|
|
---
|
|
|
|
## Keyword Research
|
|
|
|
### Ferramentas
|
|
|
|
| Ferramenta | Uso | Métricas |
|
|
|------------|-----|----------|
|
|
| Google Keyword Planner | Volume, CPC | Volume mensal, competição |
|
|
| Ahrefs | KD, SERP analysis | Keyword Difficulty, DR necessário |
|
|
| Semrush | Concorrência | Gap analysis, trending |
|
|
| AnswerThePublic | Long-tail questions | Questões reais utilizadores |
|
|
| Google Trends | Sazonalidade | Tendência temporal |
|
|
|
|
### Keyword Difficulty Benchmarks
|
|
|
|
| KD | Dificuldade | DR Necessário |
|
|
|----|-------------|---------------|
|
|
| 0-20 | Muito Fácil | < 20 |
|
|
| 21-40 | Fácil | 20-35 |
|
|
| 41-60 | Médio | 35-50 |
|
|
| 61-80 | Difícil | 50-70 |
|
|
| 81-100 | Muito Difícil | > 70 |
|
|
|
|
**Estratégia:** Começar por KD 0-40, escalar para 41-60 após DR > 35.
|