Dados estruturados de informações do curso (Course e CourseInstance)

Ilustração de como as informações do curso podem aparecer na Pesquisa Google

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:

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.

  1. Adicione as propriedades obrigatórias. Com base no formato que você está usando, saiba onde inserir dados estruturados na página.
  2. Siga as diretrizes.
  3. 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.
  4. 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.
  5. 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 que pode ser realizada individualmente 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

Text

O título completo do curso.

"name": "Intro to Statistics"
description

Text

A descrição do curso.

  • Tamanho recomendado: 240 caracteres
  • Comprimento máximo: 500 caracteres
"description": "This course teaches the basics of statistical thinking."
provider

Organization

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

Offer reproduzível

Informações sobre o preço total do curso, incluindo as 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 extras de certificado neste campo. Se houver uma cobrança extra para receber um certificado, adicione essas informações à propriedade educationalCredentialAwarded.

"offers": [{
   "@type": "Offer",
   "category": "Paid",
   "priceCurrency": "EUR",
   "price": 10.99
}]
         
offers.category Text

A categoria de preços do curso. Use um dos seguintes valores:

  • Free: todas as palestras, tarefas e provas precisam estar disponíveis sem custo financeiro para todos os usuários. Todo o curso pode ser concluído sem custo financeiro.
  • Partially Free: mais da metade do curso pode ser concluída sem custo financeiro. Por exemplo, todas as aulas não têm custo financeiro, mas as tarefas são pagas.
  • Subscription: o usuário precisa ser inscrito ou assinante para concluir todo o curso.
  • Paid: o usuário precisa pagar para concluir o curso.
hasCourseInstance

CourseInstance reproduzível

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 CourseInstance.

"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

Text reproduzível

Descreve as habilidades que o usuário desenvolverá ao realizar o curso, se aplicável.

"about": ["Quantitative Analysis", "Critical Thinking"]
aggregateRating

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 obrigatórias e recomendadas.

"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": 4.8,
"ratingCount": 255,
"reviewCount": 189
}
availableLanguage

Text reproduzível

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

Text reproduzível

Quaisquer conhecimentos prévios necessários 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

Date

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

EducationalOccupationalCredential reproduzível

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 receberá, se aplicável. Use um dos seguintes valores:

  • Certificate: prêmio verificando que o usuário concluiu o curso ou programa
  • Certification: credencial oficial que exige um exame ou atesta que o usuário conquistou a competência.

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:

  • Free: o prêmio está disponível sem custo financeiro.
  • Subscription: o usuário precisa ser assinante ou membro pago para receber o prêmio.
  • Paid: o usuário precisa pagar para receber o prêmio.
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

Text

É o grau de escolaridade do curso, se aplicável. Escolha um destes valores:

  • Beginner: nenhum conhecimento prévio é necessário para entender o conteúdo
  • Intermediate: talvez seja necessário algum conhecimento para entender o conteúdo
  • Advanced: o conteúdo é de nível avançado e para quem já têm conhecimento sobre o assunto
"educationalLevel": "Beginner"
financialAidEligible

Text

Quaisquer bolsas de estudo, planos de pagamento especiais ou outras oportunidades de ajuda financeira para usuários que querem fazer o curso, se aplicável.

"financialAidEligible": "Scholarships available for eligible users."
image

URL reproduzível

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.

Additional image guidelines:

  • Image URLs must be crawlable and indexable. To check if Google can access your URLs, use the URL Inspection tool.
  • Images must represent the marked up content.
  • Images must be in a file format that's supported by Google Images.
  • For best results, we recommend providing multiple high-resolution images (minimum of 50K pixels when multiplying width and height) with the following aspect ratios: 16x9, 4x3, and 1x1.

For example:

"image": [
  "https://example.com/photos/1x1/photo.jpg",
  "https://example.com/photos/4x3/photo.jpg",
  "https://example.com/photos/16x9/photo.jpg"
]
inLanguage

Text

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 de 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

Organization

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

Review reproduzível

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

Syllabus reproduzível

Informações sobre os diferentes módulos do 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 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, PT2H30M significa que o módulo vai levar 2 horas e 30 minutos para ser concluído.

teaches

Text reproduzível

Os resultados de aprendizado ou conhecimento específico que o usuário aprenderá no curso, se aplicável.

"teaches": ["How to use visualization tools and graphs", "Why stats is important"]
totalHistoricalEnrollment

Integer

O número total de usuários que se inscreveram durante a existência do curso, se aplicável.

"totalHistoricalEnrollment": 80032
video

VideoObject

Uma prévia em vídeo ou trailer do curso, se aplicável. Siga as diretrizes de VideoObject para mais detalhes.

"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

Text

O meio pelo qual o curso será ministrado. Use um dos seguintes valores:

  • Online: todas as palestras, tarefas e provas podem ser feitas virtualmente.
  • Onsite: o curso é ministrado em uma loja física.
  • Blended: o curso tem componentes on-line e presenciais.

Se a classe for Onsite ou Blended, adicione a propriedade location.

"courseMode": "Online"

courseSchedule

Schedule

Informações sobre quanto tempo o 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 repeatFrequency. Por exemplo, se repeatFrequency for mensal e repeatCount for 4, o curso terá duração de quatro meses.

courseSchedule.repeatFrequency Text

As propriedades duration e repeatCount são relativas a esse campo. Use um dos seguintes valores:

  • Daily: o curso acontece diariamente.
  • Weekly: o curso acontece semanalmente.
  • Monthly: o curso é realizado mensalmente.
  • Yearly: o curso é anual.
courseWorkload Text

Esse campo representa o tempo total para assistir todos os vídeos e concluir todas as atividades 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 repeatFrequency, no formato de duração 8601, se aplicável. Por exemplo, se repeatFrequency for mensal e duration for PT5H, o usuário vai passar cinco horas por mês.

Não especifique a duração total do curso com essa propriedade. Use a propriedade courseWorkload.

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.

Additional image guidelines:

  • Image URLs must be crawlable and indexable. To check if Google can access your URLs, use the URL Inspection tool.
  • Images must represent the marked up content.
  • Images must be in a file format that's supported by Google Images.
  • For best results, we recommend providing multiple high-resolution images (minimum of 50K pixels when multiplying width and height) with the following aspect ratios: 16x9, 4x3, and 1x1.

For example:

"image": [
  "https://example.com/photos/1x1/photo.jpg",
  "https://example.com/photos/4x3/photo.jpg",
  "https://example.com/photos/16x9/photo.jpg"
]
instructor

Person reproduzível

Informações sobre o professor 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

Text

O nome ou endereço (ou ambos) do local físico onde 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

Course reproduzível

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.

  • Tamanho recomendado: 240 caracteres
  • Comprimento máximo: 500 caracteres

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:

  1. Depois de implantar os dados estruturados pela primeira vez
  2. Depois de lançar novos modelos ou atualizar o código
  3. 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:

  1. Corrija os itens inválidos.
  2. Inspecione um URL ativo para verificar se o problema persiste.
  3. 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.