<!--
Fonte: destilado e ADAPTADO da skill "seo" do projeto MazyOS (github.com/mazzeoia/MazyOS, do mesmo autor), aplicado a uma página única de serviço local com dados reais do lead.
-->

# SEO on-page + Schema + GEO — página única de serviço local

Foco: uma única página (landing), mobile-first, arquivo HTML autocontido, redesenhada a partir dos dados REAIS do lead. A página já sai otimizada para busca do Google (on-page + schema) E para citação em IAs (GEO). Isso vira argumento de venda: "sua página nova aparece no Google E no ChatGPT".

**Nicho define o subtipo de schema.** Nutricionista/psicólogo/clínica → `MedicalBusiness`. Dentista → `Dentist`. Advogado → `Attorney`. Demais → `LocalBusiness`. Escolha o mais específico que couber.

---

## 1. META TAGS

Regras (vão no `<head>`):

- **`<title>`** — 50-60 caracteres. Keyword = **especialidade + cidade no início**. Depois o nome. Ex.: `Nutricionista em Campinas | Dra. Ana Souza`.
- **`meta description`** — 150-160 caracteres. Estrutura: **benefício concreto + prova + CTA**. Ex.: `Consulta nutricional em Campinas com plano alimentar personalizado. Nota 4,8 no Google. Agende pelo WhatsApp.`
- **Open Graph básico** — `og:title` (pode repetir o title), `og:description` (pode repetir a description), `og:image` = `preview.png` (URL absoluta), `og:type=website`, `og:url` (canonical).

```html
<title>Nutricionista em Campinas | Dra. Ana Souza</title>
<meta name="description" content="Consulta nutricional em Campinas com plano alimentar personalizado. Nota 4,8 no Google. Agende pelo WhatsApp.">
<link rel="canonical" href="https://www.draanasouza.com.br/">
<meta property="og:title" content="Nutricionista em Campinas | Dra. Ana Souza">
<meta property="og:description" content="Consulta nutricional em Campinas com plano alimentar personalizado. Nota 4,8 no Google.">
<meta property="og:image" content="https://www.draanasouza.com.br/preview.png">
<meta property="og:type" content="website">
<meta property="og:url" content="https://www.draanasouza.com.br/">
<meta name="viewport" content="width=device-width, initial-scale=1">
```

Exemplos de title por nicho:
- Psicólogo: `Psicólogo em Santos | Terapia Online e Presencial`
- Dentista: `Dentista em Osasco | Clínica Sorriso — Implantes`
- Advogado: `Advogado Trabalhista em Curitiba | Dr. Lima`

---

## 2. SCHEMA JSON-LD (o ouro)

Cole no `<head>`. **Preencha SÓ com dado real do lead.** Placeholders: `[NOME]`, `[ENDERECO]`, `[TELEFONE]`, `[CIDADE]`, `[NOTA]`, `[N_AVALIACOES]`.

### 2.1 LocalBusiness (ou subtipo do nicho)

```html
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "MedicalBusiness",
  "name": "[NOME]",
  "image": "https://www.exemplo.com.br/preview.png",
  "url": "https://www.exemplo.com.br/",
  "telephone": "[TELEFONE]",
  "priceRange": "$$",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "[ENDERECO]",
    "addressLocality": "[CIDADE]",
    "addressRegion": "SP",
    "postalCode": "13000-000",
    "addressCountry": "BR"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": -22.9099,
    "longitude": -47.0626
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
      "opens": "08:00",
      "closes": "18:00"
    }
  ]
}
</script>
```

- Troque `@type` pelo subtipo do nicho (`Dentist`, `Attorney`, `MedicalBusiness`…).
- `openingHoursSpecification`: uma entrada por bloco de horário real. Sábado/domingo só se o lead atender.
- `geo`, `postalCode`, `addressRegion`: use os do lead. Se não tiver a coordenada exata, pode omitir o bloco `geo` (não invente).

### 2.2 aggregateRating (dentro do LocalBusiness)

**Só inclua se o lead tem nota e nº de avaliações REAIS do Google.** Coloque como propriedade dentro do objeto acima:

```json
"aggregateRating": {
  "@type": "AggregateRating",
  "ratingValue": "[NOTA]",
  "reviewCount": "[N_AVALIACOES]",
  "bestRating": "5",
  "worstRating": "1"
}
```

Ex.: `"ratingValue": "4.8"`, `"reviewCount": "137"`. Use ponto decimal (`4.8`, não `4,8`). **Sem nota/avaliações reais → OMITIR o bloco inteiro** (ver Regra Inviolável).

### 2.3 FAQPage

3-5 perguntas REAIS do nicho, respondidas pelo conteúdo real da página. Mesmas perguntas devem aparecer visíveis no corpo (H2/H3) — schema e página têm de bater.

```html
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "A nutricionista atende por convênio?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "O atendimento é particular. Emitimos recibo para reembolso do seu plano de saúde."
      }
    },
    {
      "@type": "Question",
      "name": "Onde fica o consultório?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "[ENDERECO], [CIDADE]. Fácil acesso e estacionamento próximo."
      }
    },
    {
      "@type": "Question",
      "name": "Como agendar a primeira consulta?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Pelo WhatsApp [TELEFONE]. Retorno no mesmo dia em horário comercial."
      }
    }
  ]
}
</script>
```

Perguntas típicas por nicho (adaptar à realidade do lead): "Atende por convênio/particular?", "Faz atendimento online?", "Quanto custa a primeira consulta?", "Precisa de encaminhamento?", "Qual o horário de atendimento?".

---

## 3. GEO — aparecer em ChatGPT / Gemini / Perplexity

IAs citam quem responde direto e com dado verificável. Descartam texto vago.

- **Resposta direta nas primeiras linhas.** O primeiro parágrafo (e cada seção) deve responder a pergunta na cara: "A Dra. Ana Souza é nutricionista em Campinas, atende no [ENDERECO], nota 4,8 no Google (137 avaliações)." Nada de "bem-vindo ao nosso site".
- **Dados concretos e verificáveis** — endereço, telefone, horário, nota real, anos de atuação, serviços nomeados. Número exato > redondo ("137 avaliações" > "mais de 100").
- **Seções em formato pergunta (Q&A)** — use as perguntas da FAQ como `<h2>`/`<h3>` no corpo, com a resposta logo abaixo. IAs extraem esse padrão facilmente.
- **Evitar genérico** — corte "qualidade e compromisso", "melhor atendimento". Substitua por fato específico do lead.
- **Consistência NAP** — Nome, Endereço e Telefone iguais na página, no schema e no Google Meu Negócio. Divergência derruba confiança.

---

## 4. CHECKLIST técnico on-page

- [ ] **URL amigável** — curta, com keyword se possível (`/nutricionista-campinas`). Sem parâmetros nem ID.
- [ ] **1 único `<h1>`** — com especialidade + cidade. Nunca dois H1 na página.
- [ ] **Hierarquia H2/H3** — H2 para seções (serviços, sobre, FAQ, contato), H3 aninhados. Sem pular níveis.
- [ ] **Alt em todas as imagens** — descritivo, com keyword natural: `alt="Consultório da nutricionista Dra. Ana Souza em Campinas"`. Nunca keyword-stuffing.
- [ ] **`<link rel="canonical">`** — apontando para a própria URL (evita conteúdo duplicado).
- [ ] **Mobile-friendly** — viewport meta presente, layout responsivo, botões com área de toque ≥ 44px.
- [ ] **Velocidade** — imagens comprimidas (WebP), CSS/JS inline ou minificado, sem dependência externa pesada. Página autocontida ajuda.
- [ ] **`sitemap.xml` (opcional)** — página única quase não precisa; se gerar, listar só a URL raiz.
- [ ] **`robots.txt`** — permitir indexação (não bloquear `/`).
- [ ] **Favicon + `preview.png`** — para aba do navegador e compartilhamento (Open Graph).

---

## 5. REGRA INVIOLÁVEL do plugin

**Nada inventado.** `aggregateRating`, endereço, telefone e horário entram no schema SÓ com dado real extraído do lead.

- **Sem nota/nº de avaliações reais → OMITIR o `aggregateRating` por completo.** Schema com nota inventada é enganoso, viola as diretrizes de dados estruturados do Google e pode gerar **ação manual (penalização)** ou perda dos rich results. Página sem estrelas indexa normal; página com estrela falsa é risco jurídico e de ranking.
- Não invente coordenada `geo`, CEP, nem horário. Na dúvida, omita o campo — melhor schema enxuto e verdadeiro que rico e falso.
- Perguntas da FAQ devem ser respondíveis pelo conteúdo REAL. Não crie pergunta cuja resposta você não pode confirmar com o lead.
- Todo dado do schema tem de bater com o que está visível na página e com o Google Meu Negócio (consistência NAP).
