Skip to content

Instantly share code, notes, and snippets.

@teles
Last active November 2, 2025 20:09
Show Gist options
  • Save teles/f7f8c1064955ad1e13d39d6c647115bc to your computer and use it in GitHub Desktop.
Save teles/f7f8c1064955ad1e13d39d6c647115bc to your computer and use it in GitHub Desktop.

SEO para IA (2025) — Guia prático e opinado

“SEO de IA é como ensinar um mapa a conversar: o mapa é o @graph, a bússola é o /.well-known/, e o mar é o seu conteúdo visível.”

Este guia reúne tudo que alinhamos, com foco em implementação usando Ocean Drop como exemplo.


1) Fundamentos em 3 ideias (sem rodeios)

  1. Entidades > Palavras-chave. Google/LLMs ranqueiam entidades (Produto, Marca, Autor), não apenas termos.
  2. Grafo por página. Cada página canônica precisa declarar seu próprio @graph (JSON‑LD).
  3. Poucos endpoints globais. /.well-known/ expõe “fontes oficiais” estáveis (marca/site/índices). JSONs por página são opcionais e preferivelmente adjacentes à URL, não dentro de /.well-known/.

Metáfora: páginas = peixes; @graph = escamas de identidade; /.well-known/ = farol do porto. Sem farol, os peixes existem; com farol, navios (LLMs) confiam mais em chegar até você.


2) O que colocar em cada tipo de página

2.1 Home

  • Organization, WebSite
  • @id estáveis, sameAs, logo, SearchAction, contactPoint
  • Referências a /.well-known/organization.json e /.well-known/website.json via isPartOf

2.2 PDP (Produto)

  • Product, Offer, AggregateRating, BreadcrumbList
  • @id canônico para o produto (ex.: /creatina/p#product)
  • isPartOf: /.well-known/product-index.json + (opcional) JSON adjacente /creatina/product.json

2.3 Categoria (Lista de produtos)

  • CollectionPage ou WebPage + ItemList
  • ItemList.itemListElement com ListItem.position e cada item como @id do Product da PDP
  • (Opcional) JSON adjacente /suplementos/creatina/category.json

2.4 Blog (Conteúdo)

  • Article/BlogPosting + BreadcrumbList + Person/Organization
  • Datas reais (datePublished/dateModified), author, publisher

3) @graph: o “mapa” que a IA entende

graph TD
  A[Organization: Ocean Drop] --> B[WebSite]
  B --> C[PDP: Creatina #product]
  C --> D[Offer]
  C --> E[AggregateRating]
  B --> F[Categoria: Suplementos/Creatina #page]
  F --> G[ItemList -> #product]
  B --> H[Article: Melhor Creatina #article]
Loading

Boas práticas

  • Um único <script type="application/ld+json"> por página, com @graph.
  • @id com fragmento estável (ex.: #product, #offer, #breadcrumbs).
  • Conecte os nós (itemReviewed, publisher, isPartOf).

4) /.well-known/: poucos, globais e referenciados

Use para: identidade de marca e índices públicos.

Ocean Drop (recomendado):

/.well-known/organization.json
/.well-known/website.json
/.well-known/product-index.json
/.well-known/content-index.json

Sempre:

  • referenciar no <head> com <link rel="alternate" type="application/json" ...>
  • listar no sitemap.xml

Não crie um /.well-known/{slug}.json por página. Se quiser JSON por página, adjacente à URL (ver §5).


5) JSON “adjacente” por página (opcional, útil para RAG/integradores)

Exemplos Ocean Drop

  • PDP: /creatina/product.json
{
  "@context": "https://schema.org",
  "@type": "Product",
  "@id": "https://www.oceandrop.com.br/creatina/p#product",
  "name": "Creatina Monohidratada",
  "url": "https://www.oceandrop.com.br/creatina/p",
  "brand": { "@type": "Brand", "name": "Ocean Drop" },
  "updatedAt": "2025-11-02T10:00:00-03:00"
}
  • Categoria: /suplementos/creatina/category.json (espelha ItemList)

No HTML, declare:

<link rel="alternate" type="application/ld+json" href="/creatina/product.json">

Quando usar: integrações externas, apps, agentes/LLMs corporativos, cache/CDN.
Quando evitar: se não há consumo claro → mantenha só o @graph.


6) Blocos prontos (Ocean Drop)

6.1 Home (Organization + WebSite)

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Organization",
      "@id": "https://www.oceandrop.com.br/#organization",
      "name": "Ocean Drop",
      "url": "https://www.oceandrop.com.br/",
      "logo": "https://www.oceandrop.com.br/media/logo/default/logo.png",
      "sameAs": [
        "https://www.instagram.com/oceandrop/",
        "https://www.youtube.com/channel/UCIc7xzKea9394vWmVht1amA",
        "https://www.facebook.com/myoceandrop/"
      ],
      "contactPoint": [{
        "@type": "ContactPoint",
        "contactType": "customer service",
        "email": "[email protected]",
        "telephone": "+55-4020-1656",
        "availableLanguage": ["pt-BR"]
      }],
      "isPartOf": [
        "https://www.oceandrop.com.br/.well-known/organization.json",
        "https://www.oceandrop.com.br/.well-known/content-index.json"
      ]
    },
    {
      "@type": "WebSite",
      "@id": "https://www.oceandrop.com.br/#website",
      "url": "https://www.oceandrop.com.br/",
      "name": "Ocean Drop",
      "publisher": { "@id": "https://www.oceandrop.com.br/#organization" },
      "potentialAction": {
        "@type": "SearchAction",
        "target": "https://www.oceandrop.com.br/catalogsearch/result/?q={search_term_string}",
        "query-input": "required name=search_term_string"
      },
      "inLanguage": "pt-BR",
      "isPartOf": [
        "https://www.oceandrop.com.br/.well-known/website.json",
        "https://www.oceandrop.com.br/.well-known/content-index.json"
      ]
    }
  ]
}
</script>

6.2 PDP (Creatina)

<link rel="alternate" type="application/ld+json" href="/creatina/product.json">
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Product",
      "@id": "https://www.oceandrop.com.br/creatina/p#product",
      "name": "Creatina Monohidratada",
      "url": "https://www.oceandrop.com.br/creatina/p",
      "image": ["https://www.oceandrop.com.br/media/catalog/product/creatina-1.jpg"],
      "brand": { "@type": "Brand", "name": "Ocean Drop" },
      "sku": "OD-CREATINA-300G",
      "gtin13": "7890000000000",
      "description": "Creatina monohidratada de alta pureza para desempenho físico.",
      "category": "Suplementos > Desempenho",
      "isPartOf": [
        "https://www.oceandrop.com.br/.well-known/product-index.json",
        "https://www.oceandrop.com.br/creatina/product.json"
      ]
    },
    {
      "@type": "Offer",
      "@id": "https://www.oceandrop.com.br/creatina/p#offer",
      "url": "https://www.oceandrop.com.br/creatina/p",
      "priceCurrency": "BRL",
      "price": "119.90",
      "availability": "https://schema.org/InStock",
      "itemCondition": "https://schema.org/NewCondition",
      "priceValidUntil": "2026-12-31",
      "seller": { "@id": "https://www.oceandrop.com.br/#organization" }
    },
    {
      "@type": "AggregateRating",
      "@id": "https://www.oceandrop.com.br/creatina/p#rating",
      "itemReviewed": { "@id": "https://www.oceandrop.com.br/creatina/p#product" },
      "ratingValue": "4.8",
      "reviewCount": "327",
      "bestRating": "5",
      "worstRating": "1"
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://www.oceandrop.com.br/creatina/p#breadcrumbs",
      "itemListElement": [
        { "@type": "ListItem", "position": 1, "name": "Home", "item": "https://www.oceandrop.com.br/" },
        { "@type": "ListItem", "position": 2, "name": "Suplementos", "item": "https://www.oceandrop.com.br/suplementos" },
        { "@type": "ListItem", "position": 3, "name": "Creatina Monohidratada", "item": "https://www.oceandrop.com.br/creatina/p" }
      ]
    }
  ]
}
</script>

6.3 Categoria (Suplementos/Creatina)

<link rel="alternate" type="application/ld+json" href="/suplementos/creatina/category.json">
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": ["CollectionPage","WebPage"],
      "@id": "https://www.oceandrop.com.br/suplementos/creatina#page",
      "name": "Creatina — Suplementos",
      "isPartOf": "https://www.oceandrop.com.br/.well-known/product-index.json"
    },
    {
      "@type": "ItemList",
      "@id": "https://www.oceandrop.com.br/suplementos/creatina#list",
      "itemListElement": [
        { "@type": "ListItem", "position": 1, "item": { "@id": "https://www.oceandrop.com.br/creatina/p#product" } }
      ]
    }
  ]
}
</script>

6.4 Blog (Article)

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": ["Article","BlogPosting"],
      "@id": "https://www.oceandrop.com.br/blog/qual-a-melhor-creatina#article",
      "headline": "4 critérios para descobrir qual a melhor creatina",
      "description": "Guia claro com critérios práticos para escolher creatina de qualidade.",
      "image": ["https://www.oceandrop.com.br/media/blog/creatina-melhor.jpg"],
      "mainEntityOfPage": { "@type": "WebPage", "@id": "https://www.oceandrop.com.br/blog/qual-a-melhor-creatina" },
      "author": { "@type": "Person", "@id": "https://www.oceandrop.com.br/#author-cientifico", "name": "Dra. Camile Zanchett" },
      "publisher": { "@id": "https://www.oceandrop.com.br/#organization" },
      "about": ["creatina","desempenho","suplementos"],
      "datePublished": "2025-03-14",
      "dateModified": "2025-03-14",
      "inLanguage": "pt-BR",
      "isPartOf": "https://www.oceandrop.com.br/.well-known/content-index.json"
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://www.oceandrop.com.br/blog/qual-a-melhor-creatina#breadcrumbs",
      "itemListElement": [
        { "@type": "ListItem", "position": 1, "name": "Home", "item": "https://www.oceandrop.com.br/" },
        { "@type": "ListItem", "position": 2, "name": "Blog", "item": "https://www.oceandrop.com.br/blog" },
        { "@type": "ListItem", "position": 3, "name": "4 critérios para descobrir qual a melhor creatina", "item": "https://www.oceandrop.com.br/blog/qual-a-melhor-creatina" }
      ]
    }
  ]
}
</script>

7) Checklist objetivo (pronto para auditoria)

  • Cada PDP com @graph (Product/Offer/Rating/Breadcrumb) e @id estáveis.
  • Cada Categoria com CollectionPage + ItemList → itens apontam para #product nas PDPs.
  • Home com Organization + WebSite e SearchAction funcional.
  • Poucos /.well-known/ (organization, website, product-index, content-index) referenciados no <head> e no sitemap.xml.
  • (Opcional) JSON adjacentes por PDP/Categoria + <link rel="alternate">.
  • Content-Type: application/json, HTTPS e updatedAt coerente.
  • Texto visível coerente com o schema (evite divergências).
  • Validado no Rich Results Test e monitorado no Search Console.

Antipadrões a evitar

  • /.well-known/slug.json para todas as páginas (manutenção inviável).
  • @graph desconectado (sem itemReviewed, publisher, isPartOf).
  • Campos fake (preço/estoque/nota não batem com a página).

8) FAQ rápido

aria-label ajuda SEO de IA?
Não diretamente. Ajuda acessibilidade (UX). LLMs priorizam JSON‑LD, texto e relações.

Posso usar outras formas sem schema.org?
Sim (Open Graph, Microdata, RDFa, microformats, Wikidata/GS1). Mas JSON‑LD/schema.org continua prioridade 1.

Preciso versionar /.well-known/?
Mantenha paths estáveis e atualize updatedAt. Liste no sitemap.xml.


9) Metáfora final

O grafo é a partitura; o conteúdo é a música; o /.well-known/ é a assinatura no rodapé da partitura.
Sem partitura, a orquestra (IA) toca no improviso. Com partitura, ela toca a sua música — afinada e reconhecível.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment