- Schema.org/Hotel é o RG estruturado do seu hotel pras IAs. Sem ele, a IA tem que adivinhar metadados a partir do HTML — perde precisão e pula você na resposta.
- Use JSON-LD, não Microdata. Mais limpo, mais fácil de manter, melhor suportado por todas as IAs. Cole entre as tags
<head>. - Valide sempre no validator.schema.org. Schema com erro silencioso é pior que Schema ausente — IAs descartam objeto inteiro com 1 campo malformado.
Por que Schema.org é o sinal mais subestimado
Em 2025, em estudo da Ahrefs analisando 25 milhões de respostas geradas por IA, 73% das fontes citadas tinham Schema.org completo, contra apenas 28% das fontes ignoradas. A diferença é dramática — porque Schema é a forma mais limpa que a IA tem de entender, em segundos, exatamente o que seu site oferece.
Imagine: a IA recebeu pergunta "pousada boutique pet-friendly em Ilhabela faixa R$ 600-900". Ela tem 200ms pra escanear 50 sites possíveis e escolher 3 pra citar. Site A tem texto bonito mas nenhum Schema — a IA precisa ler tudo, interpretar, inferir. Site B tem Schema completo com petsAllowed: true, priceRange: "R$ 600-900", geo exato — a IA confirma o match em milissegundos.
Site B vence. Sempre.
JSON-LD vs Microdata: use JSON-LD
Schema.org permite 3 sintaxes — JSON-LD, Microdata, RDFa. Use JSON-LD. É mais limpo, separável do HTML visual (vai dentro de <script type="application/ld+json">), e melhor suportado por todas as IAs em 2025+.
Cole o bloco entre as tags <head> ou no fim do <body> — o local não importa, contanto que esteja no HTML.
Template completo comentado
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Hotel",
"@id": "https://seuhotel.com.br/#hotel",
"name": "Pousada Mar Adentro",
"description": "Pousada boutique de 14 suítes em Ilhabela, vista pro canal, café da manhã caiçara, aceita pets até 10kg.",
"url": "https://seuhotel.com.br",
"telephone": "+55-12-99999-9999",
"email": "[email protected]",
"image": [
"https://seuhotel.com.br/img/fachada.jpg",
"https://seuhotel.com.br/img/suite.jpg",
"https://seuhotel.com.br/img/cafe.jpg"
],
"priceRange": "R$ 580 a R$ 1.200",
"checkinTime": "14:00",
"checkoutTime": "12:00",
"numberOfRooms": 14,
"petsAllowed": true,
"starRating": {
"@type": "Rating",
"ratingValue": "4"
},
"address": {
"@type": "PostalAddress",
"streetAddress": "Av. Pereque, 1000",
"addressLocality": "Ilhabela",
"addressRegion": "SP",
"postalCode": "11630-000",
"addressCountry": "BR"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": -23.7817,
"longitude": -45.3619
},
"amenityFeature": [
{"@type": "LocationFeatureSpecification", "name": "WiFi grátis", "value": true},
{"@type": "LocationFeatureSpecification", "name": "Café da manhã incluso", "value": true},
{"@type": "LocationFeatureSpecification", "name": "Estacionamento grátis", "value": true},
{"@type": "LocationFeatureSpecification", "name": "Pet-friendly até 10kg", "value": true},
{"@type": "LocationFeatureSpecification", "name": "Vista pro mar", "value": true},
{"@type": "LocationFeatureSpecification", "name": "Piscina", "value": true},
{"@type": "LocationFeatureSpecification", "name": "Ar-condicionado", "value": true}
],
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": 142,
"bestRating": 5,
"worstRating": 1
},
"makesOffer": [
{
"@type": "Offer",
"name": "Suíte Standard",
"description": "Suíte 25m², cama queen, vista parcial pro mar",
"priceSpecification": {
"@type": "PriceSpecification",
"minPrice": 580,
"maxPrice": 850,
"priceCurrency": "BRL"
}
},
{
"@type": "Offer",
"name": "Suíte Master Vista Mar",
"description": "Suíte 40m² com hidromassagem e varanda privada",
"priceSpecification": {
"@type": "PriceSpecification",
"minPrice": 850,
"maxPrice": 1200,
"priceCurrency": "BRL"
}
}
]
}
</script>
Os 7 campos críticos que IAs realmente usam
- name — nome próprio. Sem variações ("Pousada Mar Adentro" vs "Mar Adentro Pousada"). IA escolhe o canônico.
- description — 1-2 frases factuais. Não copie da homepage. Reescreva em prosa direta.
- priceRange — faixa real, não "consulte". Use formato "R$ X a R$ Y".
- geo — latitude e longitude exatas. Pega no Google Maps clicando no ponto exato do hotel. Diferença de 50m altera respostas a queries do tipo "hotel perto de [referência]".
- amenityFeature — lista de amenidades como objetos individuais. Mais granular = mais matches em queries qualitativas.
- aggregateRating — só preencher se tiver review real. Se você tem 142 reviews entre Booking, TripAdvisor e Google, agregue a média ponderada.
- petsAllowed — boolean simples. 38% das queries conversacionais sobre hotelaria boutique no Brasil mencionam pet. Sem esse campo, você perde essas queries.
Como agregar reviews de Booking + TripAdvisor + Google
Você não pode citar diretamente notas de OTAs (termos de uso). Mas pode agregar matemática própria:
- Some o número total de reviews (ex: 80 Booking + 47 TripAdvisor + 15 Google = 142)
- Calcule média ponderada por contagem (ex: (80×9.2 + 47×4.7 + 15×4.6)/142 em escala respeitada)
- Normalize pra escala 1-5 (Booking usa 1-10, divide por 2)
- Use só sua própria contagem de reviews diretas no aggregateRating Schema. NÃO finja que reviews de OTAs estão no seu site.
Alternativa mais limpa: peça reviews diretas no seu site (formulário pós-stay), construa contagem orgânica. O método dos 7 toques ensina a estruturar isso operacionalmente.
Validar sempre antes de publicar
Cole o JSON-LD em validator.schema.org. Se aparecer erro vermelho em qualquer campo, corrija antes de subir. Schema com 1 erro silencioso = IA descarta objeto inteiro. Não vale o risco.
Também rode no Google Rich Results Test — embora seja focado em SERP, ele captura erros estruturais que IAs também rejeitam.
Erros que vejo todo dia
- priceRange como string vaga ("$"). Use faixa real: "R$ 580 a R$ 1.200".
- aggregateRating com ratingValue maior que bestRating. Se best é 5, value não pode ser 5.2.
- image apontando pra arquivo bloqueado por robots.txt. Confirme que /img/* não está em Disallow.
- Esquecer @id. O @id é o identificador único do objeto. Sem ele, IA pode confundir múltiplos objetos do mesmo tipo.
- Latitude/longitude trocadas. No Brasil, lat é negativo (~-23). Long também é negativo (~-45). Se aparecer positivo, está errado.
Perguntas frequentes
Em que página devo colocar o Schema?
Pelo menos na home. Idealmente também em /quartos, /sobre e cada página de tipo de suíte. Schema é específico por página — uma página de Suíte Master pode ter o Hotel Schema E um Service Schema próprio aninhado.
Posso ter mais de um @type? Por exemplo Hotel e LocalBusiness juntos?
Sim, usando @graph. Crie um array de objetos: { "@graph": [Hotel, FAQPage, BreadcrumbList] }. Cada objeto com @id próprio. IAs processam todos.
Schema é só pra grandes hotéis?
Pelo contrário — pousada de 6 suítes ganha mais com Schema porque o conteúdo concreto é mais escasso. Schema dá clareza estrutural que substitui falta de volume.
Como mantenho Schema atualizado quando muda preço?
Coloque o JSON-LD em arquivo único (ex: /schema/hotel.json) e injete via include no template. Aí basta atualizar 1 arquivo quando algo muda. WordPress: use plugin tipo Schema & Structured Data for WP.
Vale a pena pagar pra alguém implementar?
Pra hotéis com score abaixo de 30, sim — Implementação Assistida (R$ 1.497) ou Plano de Ação (R$ 597) entregam Schema validado em 24h. Pra score acima de 65, vale fazer manualmente seguindo este post.
Quer Schema completo no seu hotel?
Plano de Ação (R$ 597) entrega Schema.org/Hotel completo + llms.txt + robots.txt + plano de copy em 24h.
Plano de Ação · R$ 597 →
Publicado em 9 de maio de 2026 · Por Thiago Acerola.
Esse post é parte da série "Implementação técnica" do Arsenal Hospitality.