Schema de curso: marcação Course para o Google

Schema de curso é a marcação de dados estruturados do tipo Course, escrita em JSON-LD, que diz ao Google que uma página descreve um curso: como ele se chama, o que ensina, quem o oferece e, opcionalmente, quanto custa e como é ministrado. Ela não garante posição nem um visual especial nos resultados, mas é a forma oficial de tornar a página elegível à lista de cursos e deixa o conteúdo legível para máquinas.
No Brasil o assunto pesa mais do que parece. O mercado de infoprodutos, com cursos gravados, mentorias, formações em plataformas de hospedagem e turmas ao vivo vendidas por páginas de vendas, produz milhares de páginas que o Google precisa classificar como curso, evento, produto ou simples texto promocional. Quem marca direito remove a ambiguidade. Este guia explica quais propriedades importam, como tratar preço e modalidade, o que muda entre escola e infoprodutor e o que fazer para a página ser de fato elegível.
O que o Google entende por curso
Para o Google, um curso é um programa de ensino estruturado, com conteúdo definido e um provedor identificável. O tipo Course do schema.org descreve o curso em si, isto é, a ideia abstrata: o tema, o nome, a descrição, quem o oferece. Uma turma concreta, com data de início, horário e formato de entrega, é outra coisa, descrita pelo tipo CourseInstance, ligado ao curso pela propriedade hasCourseInstance.
Essa separação resolve um problema comum no mercado brasileiro. Um infoproduto perpétuo, aberto o ano inteiro, tem um curso e uma oferta contínua. Uma turma de pós-graduação tem um curso e várias instâncias, uma por semestre. Uma mentoria em grupo com lançamento duas vezes por ano tem um curso e instâncias datadas. Se você misturar as duas camadas, o dado fica incoerente: o curso passa a ter data de início, e a data vence sem que ninguém perceba.
Também vale entender o que não é curso. Um artigo de blog que ensina a fazer algo não é curso. Um vídeo avulso no YouTube não é curso. Uma página de captura que só pede e-mail em troca de um material gratuito também não descreve um programa de ensino. Marcar esses formatos como Course é uma forma de markup enganoso, e o Google pode ignorar a marcação ou aplicar ação manual por dados estruturados que não refletem o conteúdo visível.
Course list e Course Info: o que existe e o que mudou
A documentação do Google já tratou de duas experiências ligadas a cursos. A primeira é a lista de cursos (Course list), um carrossel que reúne vários cursos de um mesmo provedor em uma consulta de tema. A segunda, chamada Course Info, exibia um painel com detalhes do curso, como provedor e descrição, em buscas por nome de curso. Em 2025 o Google anunciou uma simplificação de resultados enriquecidos e listou a Course Info entre as funcionalidades descontinuadas. A recomendação prática é conferir a página atual de Course na documentação do Google Search Central antes de investir em qualquer propriedade, porque esse quadro muda.
Isso não torna a marcação inútil. O schema.org continua sendo um vocabulário válido, outros buscadores e ferramentas de IA leem JSON-LD, e a lista de cursos segue sendo o caminho documentado para quem quer aparecer em carrossel. Só que a expectativa muda: você marca para dar contexto e elegibilidade, não para garantir um elemento visual. Se um consultor prometer estrelinhas ou preço no resultado só por instalar um plugin, desconfie.
Um ponto técnico: a lista de cursos usa dois níveis. Uma página de resumo, como a categoria ou o catálogo, carrega uma marcação ItemList, e cada item aponta para a URL de uma página de detalhe. Cada página de detalhe carrega, por sua vez, a marcação Course própria. Não adianta colocar vários cursos em uma só página de detalhe e esperar que o Google os separe. Um curso, uma URL, uma marcação.
Propriedades que você precisa preencher
A documentação do Google exige poucas propriedades, e as obrigatórias são as mesmas que qualquer leitor humano espera achar na página. Preencha todas com o que está escrito na tela, nunca com texto que só existe no código.
Os três campos que você deve tratar como obrigatórios na prática são estes:
- name: o título do curso, igual ao que aparece na página. Evite encher com palavras-chave ou com promessas como "o melhor curso", que não são nome.
- description: um resumo do que o aluno vai aprender, em texto corrido e curto. Copiar a chamada da página de vendas cheia de urgência ("últimas vagas!") deixa a descrição ruim e pouco útil como dado.
- provider: a organização ou pessoa que oferece o curso, como Organization ou Person, com name e, de preferência, url. Um infoprodutor que vende em nome próprio usa Person ou a empresa com CNPJ que emite a nota, desde que o nome combine com o que está no rodapé.
Preço, modalidade e carga horária com hasCourseInstance
Preço e formato entram na camada da instância ou da oferta. A propriedade offers, com Offer ou uma lista delas, carrega price, priceCurrency (BRL para reais) e, se fizer sentido, url e availability. O preço precisa ser o que a pessoa paga de fato ao clicar no botão de compra. Se a página mostra R$ 997 à vista ou 12 parcelas de R$ 97, o valor marcado deve ser um deles, coerente com o que aparece em tela, e não o preço riscado de uma falsa promoção.
A modalidade vai em courseMode dentro de CourseInstance. O schema.org aceita valores livres, e o uso comum é texto como online, presencial ou blended. Para um curso gravado e sem datas, você pode usar courseMode online e omitir datas de início. Para uma turma ao vivo, inclua startDate, endDate e, se houver, courseSchedule com frequência semanal e duração de cada aula. Turma presencial ganha ainda location com o endereço, o que a aproxima da marcação de eventos.
A carga horária fica em courseWorkload ou, dentro do cronograma, na duração de cada encontro, em formato ISO 8601, como PT40H para quarenta horas. É um dado que o aluno brasileiro valoriza, principalmente em cursos livres, técnicos e de pós, e que a página deve mostrar também em texto visível. Se a carga horária real for incerta, por exemplo num curso em que o aluno avança no próprio ritmo, não invente um número redondo para preencher o campo. Deixar de fora é melhor do que declarar algo que a página não sustenta.
Instrutor entra por instructor, com Person e nome. Em infoprodutos, o rosto do curso costuma ser o próprio produtor, então esse campo é natural. Já credenciais como certificado emitido ou reconhecimento pelo MEC exigem cuidado: só marque educationalCredentialAwarded se o curso realmente entrega um certificado, e nunca sugira reconhecimento oficial que ele não tem. Cursos livres não são cursos de graduação, e essa diferença é regulatória, não só de marketing.
Exemplo de JSON-LD para um infoproduto
Imagine um curso gravado de fotografia de produto, vendido em uma plataforma de hospedagem com página de vendas própria no domínio do produtor. A marcação mínima coerente, em JSON-LD dentro de uma tag script do tipo application/ld+json, teria o tipo Course, o name igual ao título da página, uma description de duas frases, o provider como Organization com o nome da empresa e a url do site, e um hasCourseInstance com courseMode online e offers com price 497, priceCurrency BRL e a url da página de checkout.
Note o que está ausente: não há startDate, porque o curso não tem turma com data, e não há avaliação agregada, porque não existe um conjunto verificável de avaliações na página. Incluir aggregateRating inventado, ou copiado de depoimentos que o próprio produtor escolheu e que não estão ligados a um sistema independente de avaliação, é o erro mais comum e o que mais arrisca a página. Avaliações em marcação devem refletir avaliações que o visitante consegue ver e conferir no mesmo lugar.
Se o mesmo curso tem três condições de compra, por exemplo plano básico, completo e com mentoria, o caminho mais seguro é marcar a oferta principal que a página destaca, ou listar ofertas distintas com nomes claros. Jogar os três preços em uma única propriedade price como se fosse uma faixa dá um dado ambíguo.
Escola versus infoprodutor: onde a marcação diverge
Uma escola de idiomas, faculdade ou centro de formação técnica costuma ter um catálogo: dezenas de cursos, cada um com página própria, turmas em datas diferentes e unidades físicas. Para esses casos, a estrutura certa é uma página de catálogo com ItemList, páginas de curso com Course, e instâncias com datas e local. O provider pode ser uma EducationalOrganization, com a mesma identidade em todas as páginas, para que o Google entenda que os cursos pertencem ao mesmo provedor.
O infoprodutor típico tem o oposto: poucos cursos, às vezes um só, vendidos por uma página longa de vendas e por lançamentos. Aqui o perigo é a página de vendas ter o peso de uma landing de conversão, com pouco texto que descreva o programa em si. Para a marcação se sustentar, a página precisa mostrar o conteúdo que a marcação afirma: módulos, resultados esperados, carga horária, preço. Uma página que só tem vídeo e botão dá ao Google pouco para cruzar com o JSON-LD.
Há ainda a questão dos lançamentos. Muitos infoprodutos abrem e fecham carrinho. Se o curso não está à venda, a marcação de preço com disponibilidade no ar é enganosa. Mantenha availability coerente, por exemplo OutOfStock ou SoldOut quando o carrinho está fechado, ou ajuste a página para uma lista de espera clara. Automatizar essa troca junto do botão da página evita que o dado fique desatualizado em uma terça-feira qualquer.
Elegibilidade: por que sua página pode ficar de fora
Mesmo com a marcação válida, a página pode não virar resultado enriquecido. A validação técnica e a elegibilidade são coisas diferentes: a primeira garante que o código está bem formado, a segunda depende de o Google achar o conteúdo adequado e confiável. Estes são os motivos mais frequentes para uma página de curso ficar fora:
- A marcação descreve algo que não está visível na página, como preço, instrutor ou avaliação só presentes no código.
- A página de detalhe não pode ser rastreada ou indexada por causa de noindex, bloqueio no robots.txt ou exigência de login antes de mostrar o conteúdo.
- O conteúdo é um conteúdo gratuito e solto, como um artigo ou vídeo, marcado como se fosse um programa de ensino.
- O mesmo curso aparece em muitas URLs quase idênticas, sem canônica clara, o que divide sinais entre elas.
- A página de resumo e as páginas de detalhe não se correspondem, por exemplo quando o ItemList aponta para URLs que redirecionam ou retornam erro.
- O provedor é anônimo: sem nome, site e informações de contato consistentes, fica difícil para o Google tratar a oferta como confiável.
Como validar e acompanhar a marcação
Comece pelo Teste de Resultados Enriquecidos do Google e pelo validador do schema.org: o primeiro mostra se a página é elegível a algum resultado enriquecido, o segundo confere a sintaxe e o vocabulário. Depois disso, acompanhe a Search Console. Quando há tipos compatíveis detectados, ela mostra relatórios de melhorias, com erros e avisos por URL. Erro significa que a página ficou fora do recurso; aviso significa que uma propriedade recomendada está faltando.
Ao corrigir, ataque primeiro os erros e só depois os avisos. Um aviso de propriedade recomendada ausente não deve ser resolvido inventando o dado, e sim avaliando se o dado existe de verdade. Não há problema em uma marcação enxuta e honesta. Há problema em uma completa e falsa.
Por fim, trate a marcação como parte do template, não como remendo manual. Se o site de uma escola gera o JSON-LD a partir do mesmo cadastro que alimenta a página, o preço e as datas nunca divergem. Se cada curso tem o código colado à mão, o primeiro reajuste de preço já gera inconsistência, e a inconsistência é exatamente o que faz o Google desconfiar da marcação. Revise a saída de tempos em tempos, principalmente depois de trocas de plataforma ou de tema.
Perguntas frequentes
Schema de curso garante que meu curso apareça com destaque no Google?
Não. A marcação torna a página elegível e mais clara para o buscador, mas o Google decide se exibe algum resultado enriquecido. Alguns formatos ligados a cursos, como o painel Course Info, foram descontinuados, então vale conferir a documentação atual.
Posso usar Course em uma página de vendas de infoproduto?
Pode, desde que a página descreva um programa de ensino real, com conteúdo, provedor e preço visíveis. Se a página for só uma captura de e-mail ou um vídeo de vendas sem descrição do curso, a marcação não se sustenta.
Como marcar um curso gratuito?
Use Course normalmente e, em offers, informe price 0 com priceCurrency BRL, desde que o curso seja de fato gratuito ao se inscrever. Não marque como curso um material de isca que serve apenas para coletar e-mails.
Devo marcar avaliações dos alunos com aggregateRating?
Só se existir um conjunto real de avaliações visível na página e que o visitante possa conferir. Depoimentos escolhidos a dedo pelo produtor e notas inventadas são o erro mais arriscado e podem levar a ação manual.