Dados estruturados de informações do curso (Course
e CourseInstance
)
![Ilustração de como as informações do curso podem aparecer na Pesquisa Google](https://developers.google.com/static/search/docs/images/course-info-rich-result.png?hl=pt-br)
Ajude as pessoas a encontrar o conteúdo do seu curso informando ao Google sobre ele usando dados estruturados de informações do curso. Quando você fornece informações mais detalhadas sobre um curso, como classificações dos avaliadores, preços e detalhes dele, o Google pode entender melhor o curso e oferecer uma experiência avançada às pessoas com a pesquisa aprimorada.
Há dois recursos de pesquisa aprimorada de cursos que usam o mesmo tipo Course
do schema.org.
Se seu site oferece informações sobre cursos, você pode se qualificar para os dois recursos
seguindo os dois guias de implementação:
- Lista de cursos: uma pesquisa aprimorada que lista os cursos do mesmo site.
- Informações do curso: um carrossel que mostra informações detalhadas de curso de vários sites.
Disponibilidade do recurso
A pesquisa aprimorada de informações do curso está disponível em inglês em todas as regiões em que a Pesquisa Google está disponível. Esperamos disponibilizar mais cursos em outros idiomas no futuro.
Como adicionar dados estruturados
Os dados estruturados são um formato padronizado para fornecer informações sobre uma página e classificar o conteúdo dela. Caso você não saiba muito sobre o assunto, veja como os dados estruturados funcionam.
Esta é uma visão geral de como criar, testar e lançar dados estruturados.
- Adicione as propriedades obrigatórias. Com base no formato que você está usando, saiba onde inserir dados estruturados na página.
- Siga as diretrizes.
- Valide o código com o Teste de pesquisa aprimorada e corrija os erros críticos. Corrija também os problemas não críticos que possam ser sinalizados na ferramenta, porque eles podem melhorar a qualidade dos dados estruturados, mas isso não é necessário para se qualificar para pesquisas aprimoradas.
- Implante algumas páginas que incluam os dados estruturados e use a Ferramenta de inspeção de URL para testar como o Google vê a página. Verifique se a página está
acessível ao Google e se não está bloqueada por um arquivo robots.txt, pela tag
noindex
ou por requisitos de login. Se estiver tudo certo, peça ao Google para rastrear novamente seus URLs. - Para informar o Google sobre mudanças futuras, recomendamos que você envie um sitemap. É possível automatizar isso com a API Search Console Sitemap.
Exemplo
Veja um exemplo de página única de informações do curso.
<html> <head> <title>Introduction to Computer Science and Programming</title> <script type="application/ld+json"> { "@context": "https://schema.org/", "@id": "https://www.example.com/advancedCpp", "@type": "Course", "name": "Learn Advanced C++ Topics", "description": "Improve your C++ skills by learning advanced topics.", "publisher": { "@type": "Organization", "name": "CourseWebsite", "url": "www.examplecoursewebsite.com" }, "provider": { "@type": "Organization", "name": "Example University", "url": "www.example.com" }, "image": [ "https://example.com/photos/1x1/photo.jpg", "https://example.com/photos/4x3/photo.jpg", "https://example.com/photos/16x9/photo.jpg" ], "aggregateRating": { "@type": "AggregateRating", "ratingValue": 4, "ratingCount": 1234, "reviewCount": 450 }, "offers": [{ "@type": "Offer", "category": "Paid", "priceCurrency": "EUR", "price": 10.99 }], "totalHistoricalEnrollment": 12345, "datePublished": "2024-03-21", "educationalLevel": "Advanced", "about": ["C++ Coding", "Backend Engineering"], "teaches": ["Practice and apply systems thinking to plan for change", "Understand how memory allocation works."], "financialAidEligible": "Scholarship Available", "inLanguage": "en", "availableLanguage": ["fr", "es"], "syllabusSections": [ { "@type": "Syllabus", "name": "Memory Allocation", "description": "Learn how memory is allocated when creating C++ variables.", "timeRequired": "PT6H" }, { "@type": "Syllabus", "name": "C++ Pointers", "description": "Learn what a C++ pointer is and when they are used.", "timeRequired": "PT11H" } ], "review": [ { "@type": "Review", "author": { "@type": "Person", "name": "Lou S." }, "datePublished": "2024-08-31", "reviewRating": { "@type": "Rating", "bestRating": 10, "ratingValue": 6 } }], "coursePrerequisites": [ "Basic understanding of C++ up to arrays and functions.", "https://www.example.com/beginnerCpp" ], "educationalCredentialAwarded": [{ "@type": "EducationalOccupationalCredential", "name": "CourseProvider Certificate", "url": "www.example.com", "credentialCategory": "Certificate", // offers only needed if the credential costs extra money. "offers": [{ "@type": "Offer", "category": "Paid", "price": 5, "priceCurrency": "USD" }] }], "video": { "@type": "VideoObject", "name": "Video name", "description": "A video previewing this course.", "uploadDate": "2024-03-28T08:00:00+08:00", "contentUrl": "www.example.come/mp4", "thumbnailUrl": "www.example.com/thumbnailurl.jpg" }, "hasCourseInstance": [ { // Blended, instructor-led course meeting 3 hours per day in July. "@type": "CourseInstance", "courseMode": "Blended", "location": "Example University", "courseSchedule": { "@type": "Schedule", "duration": "PT3H", "repeatFrequency": "Daily", "repeatCount": 31, "startDate": "2024-07-01", "endDate": "2024-07-31" }, "instructor": [{ "@type": "Person", "name": "Ira D.", "description": "Professor at X-University", "image": "http://example.com/person.jpg" }] }, { // Online self-paced course that takes 2 days to complete. "@type": "CourseInstance", "courseMode": "Online", "courseWorkload": "P2D" }], // Only required for course programs that link to child courses. "hasPart": [{ "@type": "Course", "name": "C++ Algorithms", "url": "https://www.example.com/cpp-algorithms", "description": "Learn how to code base algorithms in c++.", "provider": { "@type": "Organization", "name": "Example University", "url": "www.example.com" } }, { "@type": "Course", "name": "C++ Data Structures", "url": "https://www.example.com/cpp-data-structures", "description": "Learn about core c++ data structures.", "provider": { "@type": "Organization", "name": "Example University", "url": "www.example.com" } }] } </script> </head> <body> </body> </html>
Diretrizes
Siga estas diretrizes para que seu curso se qualifique para aparecer como uma pesquisa aprimorada de informações do curso na Pesquisa Google.
Diretrizes de conteúdo
Somente conteúdo educacional que se enquadre na seguinte definição de "curso" é qualificado para a pesquisa aprimorada de informações do curso: uma série ou unidade curricular que contém palestras, lições ou módulos sobre um assunto ou tópico específico.
A marcação Course
precisa estar em uma página da Web que ofereça um único curso ou programa de cursos completo. Os exemplos a seguir não estão qualificados para a pesquisa aprimorada de informações de cursos:
- Uma página de resumo de diploma acadêmico
- Uma página independente para o exame
- Um evento público geral, como "Dia da Astronomia"
- Um vídeo de dois minutos chamado "Como fazer um sanduíche"
Definições de tipos de dados estruturados
É necessário incluir as propriedades obrigatórias Course
e CourseInstance
para que seu conteúdo seja qualificado para exibição como
uma pesquisa aprimorada. Você também pode incluir as propriedades recomendadas para adicionar mais informações sobre o conteúdo,
o que pode proporcionar uma melhor experiência do usuário.
Course
Um curso é uma unidade curricular individual que pode ser realizada sozinha ou como parte de um programa.
A definição completa de Course
está disponível em
schema.org/Course (em inglês).
Propriedades obrigatórias | |
---|---|
name |
O título completo do curso. "name": "Intro to Statistics" |
description |
A descrição do curso.
"description": "This course teaches the basics of statistical thinking." |
provider |
Informações sobre a organização que criou o conteúdo do curso. "provider": { "@type": "Organization", "name": "Example University", "url": "www.exampleuniversity.com" } |
provider.name |
Text
O nome do provedor do curso. |
offers |
Informações sobre o preço total para concluir o curso, incluindo taxas de serviço. Não liste um preço qualificado apenas para alguns usuários (por exemplo, 20% de desconto para novos usuários). Não inclua taxas de certificado extras neste campo. Se houver uma cobrança extra para receber um certificado, adicione essas informações à propriedade "offers": [{ "@type": "Offer", "category": "Paid", "priceCurrency": "EUR", "price": 10.99 }] |
offers.category |
Text
A categoria de preço do curso. Use um dos seguintes valores:
|
hasCourseInstance |
Cada curso precisa ter pelo menos uma instância com informações que detalham a oferta do curso. Consulte as propriedades obrigatórias e recomendadas na seção "hasCourseInstance": [{ // Onsite, instructor-led class meeting weekly in August 2023 "@type": "CourseInstance", "courseMode": "Onsite", "location": "Example University", "courseSchedule": { "@type": "Schedule", "duration": "PT5H", "repeatCount": 4, "repeatFrequency": "Weekly", "startDate": "2023-08-01", "endDate": "2023-8-31" }, "instructor": [{ "@type": "Person", "name": "Kai S.", "description": "Professor at X-University", "image": "http://examplePerson.jpg" }] }] |
Propriedades recomendadas | |
---|---|
about |
Descreve as habilidades que o usuário desenvolverá ao fazer o curso, se aplicável. "about": ["Quantitative Analysis", "Critical Thinking"] |
aggregateRating |
Informações sobre a avaliação média do curso com base nas notas deixadas pelos usuários que fizeram o curso, se aplicável. Siga as diretrizes de snippet de avaliação e a lista de propriedades "aggregateRating": { "@type": "AggregateRating", "ratingValue": 4.8, "ratingCount": 255, "reviewCount": 189 } |
availableLanguage |
Legendas, legendas descritivas ou outros idiomas em que o curso é oferecido, se aplicável. Use os códigos de duas letras da lista de códigos ISO 639-1 alfa-2. "availableLanguage": ["fr", "es", "de"] |
coursePrerequisites |
Qualquer conhecimento prévio necessário para o curso, se aplicável. Isso pode ser representado descrevendo o conhecimento prévio ou vinculando outro curso (ou ambos). "coursePrerequisites": ["Understanding of Algebra concepts like variables and functions", "https://www.coursewebsite.abc/algebra"] |
datePublished |
A data em que o curso foi publicado pela primeira vez, se aplicável. Use o formato de data 8601 (AAAA-MM-DD). "datePublished": "2019-03-21" |
educationalCredentialAwarded |
Informações sobre o certificado ou a credencial que o usuário pode receber ao concluir o curso, se aplicável. Se o prêmio tiver um custo extra, especifique o preço extra. "educationalCredentialAwarded": [{ "@type": "EducationalOccupationalCredential", "name": "CourseProvider Certificate", "url": "www.examplecertificate.com", "credentialCategory": "Certificate", "offers": [{ "@type": "Offer", "category": "Paid", "priceCurrency": "USD", "price": 5 }] }] |
educationalCredentialAwarded.credentialCategory |
Text
O tipo de prêmio que o usuário vai receber, se aplicável. Use um dos seguintes valores:
|
educationalCredentialAwarded.name |
Text
O nome do prêmio, se aplicável. |
educationalCredentialAwarded.offers.category |
Text
O tipo de preço do prêmio, se aplicável. Use uma das seguintes categorias:
|
educationalCredentialAwarded.offers.price |
Number
O preço numérico do prêmio, se aplicável. |
educationalCredentialAwarded.offers.priceCurrency |
Text
A moeda do preço do prêmio, no formato de moeda ISO 4217 (código de três letras), se aplicável. |
educationalCredentialAwarded.url |
URL
O link para a página do prêmio, se aplicável. |
educationalLevel |
É o grau de escolaridade do curso, se aplicável. Escolha um destes valores:
"educationalLevel": "Beginner" |
financialAidEligible |
Bolsas de estudo, planos de pagamento especiais ou outras oportunidades de auxílio financeiro para usuários que queiram fazer o curso, se aplicável. "financialAidEligible": "Scholarships available for eligible users." |
image |
O URL de uma imagem representativa do curso, se aplicável. Use imagens que sejam relevantes para o curso em vez de logotipos ou legendas. Outras diretrizes para imagens:
Exemplo: "image": [ "https://example.com/photos/1x1/photo.jpg", "https://example.com/photos/4x3/photo.jpg", "https://example.com/photos/16x9/photo.jpg" ] |
inLanguage |
O idioma principal em que o curso é oferecido, se aplicável. Use os códigos de duas letras da lista de códigos ISO 639-1 alfa-2. "inLanguage": "en" |
offers.price |
Number
O preço numérico do curso, se aplicável. Não inclua outras informações nesse campo, como o símbolo da moeda. |
offers.priceCurrency |
Text
A moeda do preço do curso, no formato de moeda ISO 4217 (código de três letras), se aplicável. |
provider.url |
URL
O URL que direciona para a página inicial do provedor do curso, se aplicável. |
publisher |
Informações sobre a organização que publica e exibe o curso, se aplicável. "publisher": { "@type": "Organization", "name": "Course Website", "url": "www.example.com" } |
publisher.name |
Text
O nome da instituição que publica o curso, se aplicável. |
publisher.url |
URL
O URL que direciona para a página inicial da instituição que publica o curso, se aplicável. |
review |
Uma lista de avaliações de usuários sobre o curso, se aplicável. Siga as diretrizes de snippet de avaliação para mais informações. "review": [{ "@type": "Review", "author": { "@type": "Person", "name": "Sasha J." }, "datePublished": "2021-09-22", "reviewRating": { "@type": "Rating", "ratingValue": 4 } }] |
syllabusSections |
Informações sobre os diferentes módulos que compõem o curso, se aplicável. "syllabusSections": [{ "@type": "Syllabus", "name": "Algebra Review", "description": "Review prerequisite Algebra concepts.", "timeRequired": "PT2H30M" }, { "@type": "Syllabus", "name": "Statistics Terms", "description": "Learn the definitions of basic statistics terms.", "timeRequired": "PT5H" }] |
syllabusSections.description |
Text
Uma descrição do que é abordado no módulo, se aplicável. |
syllabusSections.name |
Text
O nome do módulo do curso, se aplicável. |
syllabusSections.timeRequired |
Duration
Use o formato de duração 8601, se aplicável.
Por exemplo, |
teaches |
Os resultados de aprendizado ou conhecimento específico que o usuário vai aprender ao fazer o curso, se aplicável. "teaches": ["How to use visualization tools and graphs", "Why stats is important"] |
totalHistoricalEnrollment |
O número total de usuários que se inscreveram durante a existência do curso, se aplicável. "totalHistoricalEnrollment": 80032 |
video |
Uma prévia em vídeo ou trailer do curso, se aplicável. Siga as diretrizes de "video": { "@type": "VideoObject", "name": "Video name", "description": "A video previewing this course.", "uploadDate": "2022-03-28T08:00:00+08:00", "contentUrl": "www.videourl.mp4", "thumbnailUrl": "www.thumbnailurl.jpg" } |
CourseInstance
A definição completa de CourseInstance
está disponível em
schema.org/CourseInstance (em inglês).
Todos os cursos precisam ter pelo menos um CourseInstance
com as propriedades obrigatórias preenchidas.
Propriedades obrigatórias | |
---|---|
courseMode |
O meio em que o curso será ministrado. Use um dos seguintes valores:
Se a classe for "courseMode": "Online" |
courseSchedule |
Informações sobre quanto tempo um usuário médio leva para concluir o curso, de acordo com um ritmo sugerido. Inclua datas de início e término para cursos com um cronograma fixo. Veja um exemplo de um curso guiado que pode ser iniciado a qualquer momento: // This course takes 6 weeks to complete. "courseSchedule": { "@type": "Schedule", "repeatCount": 6 "repeatFrequency": "Weekly", } Veja um exemplo de um curso guiado durante um tempo definido: // This course expects 1 hour per day during July 2023 "courseSchedule": { "@type": "Schedule", "duration": "PT1H", "repeatCount": 31 "repeatFrequency": "Daily", "startDate": "2023-07-01", "endDate": "2023-07-31" } |
courseSchedule.repeatCount |
Integer
É o valor numérico da duração do curso em unidades de |
courseSchedule.repeatFrequency |
Text
As propriedades
|
courseWorkload |
Text
Esse campo representa o tempo total para assistir a todos os vídeos e concluir todas as tarefas e exames do curso. Use o formato de duração 8601. "courseWorkload": "PT22H" |
Propriedades recomendadas | |
---|---|
courseSchedule.duration |
Duration
É o ritmo sugerido de quanto tempo o usuário médio deve gastar em unidades de Não especifique toda a duração do curso com essa propriedade. Em vez disso, use a propriedade |
courseSchedule.endDate |
Date
A data de término do curso no formato de data 8601 (AAAA-MM-DD), se aplicável. |
courseSchedule.startDate |
Date
A data de início do curso no formato de data 8601 (AAAA-MM-DD), se aplicável. |
image |
URL
O URL que leva a uma imagem do instrutor, se aplicável. Outras diretrizes para imagens:
Exemplo: "image": [ "https://example.com/photos/1x1/photo.jpg", "https://example.com/photos/4x3/photo.jpg", "https://example.com/photos/16x9/photo.jpg" ] |
instructor |
Informações sobre o instrutor do curso, se aplicável. "instructor": [{ "@type": "Person", "name": "Dana A.", "description": "Professor at X-University", "image": "http://examplePerson.jpg" }] |
instructor.description |
Text
A descrição do professor e as credenciais dele, se aplicável. |
instructor.name |
Text
O nome do professor, se aplicável. |
location |
O nome ou endereço (ou ambos) do local físico em que o curso será ministrado, se aplicável. "courseMode": "Blended", "location": "Example High School" |
Programa de cursos
Um programa de cursos é uma coleção de cursos filhos. Os cursos filhos precisam ser independentes com URLs e páginas de destino distintos.
Se a página da Web for um programa de curso, inclua as seguintes propriedades obrigatórias, além das listadas nas seções Course
e CourseInstance
.).
Propriedades obrigatórias | |
---|---|
hasPart |
A lista de cursos filhos que fazem parte do programa. "@context": "https://schema.org/", "@type": "Course", "name": "Learning Pathway: Knitting", "url": "www.example.com/knitprogram" // Fill the other required Course and CourseInstance properties "hasPart": [{ "@type": "Course", "name": "Intro to Knitting", "url": "www.example.com/knitbasics", "description": "Learn the basics of how to knit." }, { "@type": "Course", "name": "Knit a Sweater", "url": "www.example.com/knitsweater", "description": "Learn to knit an entire sweater." }] |
hasPart.name |
Text
O título completo do curso filho. |
hasPart.url |
URL
O URL que direciona à página de destino do curso filho. |
Propriedades recomendadas | |
---|---|
hasPart.description |
Text
Uma breve descrição do que é abordado pelo curso filho, se aplicável.
|
Monitorar pesquisas aprimoradas com o Search Console
O Search Console é uma ferramenta que ajuda você a monitorar o desempenho das suas páginas na Pesquisa Google. Não é preciso se inscrever na plataforma para ser incluído nos resultados da Pesquisa Google, mas isso pode ajudar você a entender e melhorar como vemos seu site. Recomendamos verificar o Search Console nos seguintes casos:
- Depois de implantar os dados estruturados pela primeira vez
- Depois de lançar novos modelos ou atualizar o código
- Análise periódica do tráfego
Depois de implantar os dados estruturados pela primeira vez
Depois que o Google indexar as páginas, procure problemas com o relatório de status da pesquisa aprimorada relevante. Em condições ideais, vai haver um aumento de itens válidos e nenhum aumento de itens inválidos. Se você encontrar problemas nos dados estruturados, faça o seguinte:
- Corrija os itens inválidos.
- Inspecione um URL ativo para verificar se o problema persiste.
- Solicite a validação com o relatório de status.
Depois de lançar novos modelos ou atualizar o código
Ao fazer mudanças significativas no site, monitore aumentos nos itens inválidos de dados estruturados.- Caso você perceba um aumento nos itens inválidos, talvez tenha lançado um novo modelo que não funcione ou o site esteja interagindo com o modelo existente de uma maneira nova e incorreta.
- Caso você veja uma diminuição nos itens válidos (não correspondidos por um aumento nos itens inválidos), talvez não esteja mais incorporando os dados estruturados às páginas. Use a Ferramenta de inspeção de URL para saber o que está causando o problema.
Análise periódica do tráfego
Analise o tráfego da Pesquisa Google com o Relatório de desempenho. Os dados vão mostrar com que frequência sua página aparece como aprimorada na Pesquisa, com que frequência os usuários clicam nela e qual é a posição média dela nos resultados. Também é possível extrair automaticamente esses resultados com a API Search Console.Solução de problemas
Se você tiver problemas para implementar ou depurar dados estruturados, veja alguns recursos que podem ajudar.
- Se você usa um sistema de gerenciamento de conteúdo (CMS) ou se alguém está cuidando do seu site, peça ajuda para o prestador de serviço. Não se esqueça de encaminhar todas as mensagens do Search Console com os detalhes do problema.
- O Google não garante que os recursos que consomem dados estruturados vão ser exibidos nos resultados da pesquisa. Para ver uma lista de motivos comuns por que o Google pode não exibir seu conteúdo na pesquisa aprimorada, consulte as diretrizes gerais de dados estruturados.
- Pode haver um erro nos dados estruturados. Confira a lista de erros de dados estruturados e o Relatório de dados estruturados que não podem ser analisados.
- Se você recebeu uma ação manual de dados estruturados relacionada à sua página, esses dados serão ignorados, embora a página ainda possa aparecer nos resultados da Pesquisa Google. Para corrigir problemas de dados estruturados, use o Relatório de ações manuais.
- Consulte as diretrizes novamente para identificar se o conteúdo não está em conformidade com elas. O problema pode ser causado por conteúdo com spam ou uso de marcação com spam. No entanto, talvez o problema não seja de sintaxe e, por isso, o teste de pesquisa aprimorada não poderá identificá-lo.
- Resolva problemas relacionados à ausência e à queda no total de pesquisas aprimoradas.
- Aguarde algum tempo antes de voltar a rastrear e reindexar. Pode levar vários dias depois da publicação de uma página para que o Google a localize e rastreie. Para perguntas gerais sobre rastreamento e indexação, consulte as Perguntas frequentes sobre rastreamento e indexação da Pesquisa Google.
- Poste uma pergunta no fórum da Central da Pesquisa Google