📚 Itinerário YinyangSEO Academy · Aula 1 — Sites agênticos e SEO eficiente. Esta skill faz parte do repositório da Aula 1. Clone ou baixe o repositório inteiro e entregue-o ao seu agente como contexto antes de executá-la. O repositório é atualizado durante o curso.
Landing Generator · Serviço × Bairro
Pega o blueprint e produz arquivos físicos no repositório do site do cliente. Astro por padrão (rotas de arquivo simples, SSG padrão, ideal para SEO), mas a saída pode ser adaptada para Next.js ou MDX puro.
Inputs
blueprint/{negocio-slug}/← deweb-blueprint-generator.- Pasta destino ·
src/pages/(Astro) ouapp/(Next.js). - Locale · padrão
es-ES. - Modo ·
dry-run(lista o que seria gerado) ouapply(escreve + commit).
Processo
- Carregar blueprint e validar se existem
url-map.yaml, page-templates e schema-templates. - Para cada combinação serviço × bairro do
url-map.yaml:- Resolver variáveis (
{serviço},{bairro},{cidade}, etc.) com dados reais do negócio. - Injetar conteúdo único mínimo por bairro (NÃO duplicar; ver QA).
- Adicionar schema JSON-LD correspondente.
- Calcular links internos conforme
internal-linking.yaml. - Escrever arquivo no caminho correto do repositório.
- Resolver variáveis (
- Gerar páginas pillar (
/servicos/{slug}/) com listagem dos bairros cobertos. - Gerar
sitemap.xml(ou configurar@astrojs/sitemap) com prioridades. - Gerar
robots.txtconsistente. - Commmitear alterações em um novo branch:
feat/landings-{serviço}-{N}-bairros. - Mostrar resumo: N páginas criadas, peso total HTML, schema validado, dry-run ou aplicado.
Ferramentas
- File system (Read/Write/Edit) sobre o repositório do cliente.
- Git para commits.
- Astro +
@astrojs/sitemap+astro-seo. - LLM para gerar o bloco de conteúdo único por bairro (com guardrails de tamanho e unicidade).
- schema-dts para validar JSON-LD antes de escrever.
Saída
src/pages/{serviço}/{bairro}.astro ← uma por combinação
src/pages/servicos/{serviço}.astro ← pillar
src/data/areas-served.json ← fonte da verdade das zonas
public/sitemap.xml ← regenerado
public/robots.txt
E um commit limpo com a mensagem:
feat(landings): gerar N landings serviço × bairro
- Serviço: chaveiro-24h
- Bairros: 12
- Pillar atualizada
- Sitemap regenerado (entradas: 13)
- Schema JSON-LD validado com schema-dts
Qualidade / QA
- Unicidade de conteúdo: cada landing deve ter ≥ 30% de tokens distintos de suas irmãs (similaridade Jaccard < 0.7). Caso contrário, regenerar o bloco variável.
- Validação schema: nenhum arquivo é escrito se o JSON-LD não validar.
- Internal linking obrigatório: cada landing tem no mínimo 3 links internos para outros bairros do mesmo serviço + 1 para a pillar.
- Lighthouse budget: é delegado ao
landing-qa-runnerpós-geração. - Custo/tempo: avisar se houver > 50 combinações em uma única execução.
Para que serve depois
→ Input de landing-qa-runner que passa Playwright + Lighthouse-CI sobre todas as URLs geradas e bloqueia o merge se não cumprirem o budget herdado do top 3.