구조화된 과정 정보(CourseCourseInstance) 데이터

Google 검색에 과정 정보가 표시되는 방식을 보여주는 그림

구조화된 과정 정보 데이터를 사용해 Google에 내 과정을 알리면 사람들이 내 교육 과정 콘텐츠를 찾는 데 도움이 됩니다. 리뷰 작성자 평점, 가격, 과정 세부정보 등 특정 과정에 관한 자세한 정보를 제공하면 Google에서 이 과정을 더 잘 이해하고 과정 정보 리치 결과를 통해 사용자에게 풍부한 환경을 제공할 수 있습니다.

과정에는 리치 결과 기능이 두 가지 있는데, 두 가지 다 동일한 schema.org Course 유형을 사용합니다. 사이트에서 과정 정보를 제공하는 경우 다음의 두 구현 가이드에 따라 두 기능을 모두 사용할 수 있습니다.

  • 과정 목록: 동일한 웹사이트에서 가져온 과정이 나열된 리치 결과입니다.
  • 과정 정보: 다양한 웹사이트에서 가져온 자세한 과정 정보를 보여주는 캐러셀입니다.

기능 제공 여부

과정 정보 리치 결과는 Google 검색이 지원되는 모든 지역에서 영어로 제공됩니다. 앞으로 더 다양한 영어 이외의 언어로 과정을 지원할 수 있도록 노력하겠습니다.

구조화된 데이터를 추가하는 방법

구조화된 데이터는 페이지 정보를 제공하고 페이지 콘텐츠를 분류하기 위한 표준화된 형식입니다. 구조화된 데이터를 처음 사용한다면 구조화된 데이터의 작동 방식을 자세히 알아보세요.

다음은 구조화된 데이터를 빌드, 테스트 및 출시하는 방법의 개요입니다. 웹페이지에 구조화된 데이터를 추가하는 방법에 관한 단계별 안내는 구조화된 데이터 Codelab을 참고하세요.

  1. 필수 속성을 추가합니다. 사용 중인 형식에 따라 페이지에 구조화된 데이터를 삽입하는 위치를 알아보세요.
  2. 가이드라인을 따릅니다.
  3. 리치 결과 테스트를 사용하여 코드의 유효성을 검사하고 심각한 오류를 해결하세요. 또한 도구에서 신고될 수 있는 심각하지 않은 문제는 구조화된 데이터의 품질을 개선하는 데 도움이 될 수 있으므로 해결하는 것이 좋습니다. 그러나 리치 결과를 사용하기 위한 필수사항은 아닙니다.
  4. 구조화된 데이터를 포함하는 일부 페이지를 배포하고 URL 검사 도구를 사용하여 Google에서 페이지를 표시하는 방법을 테스트합니다. Google이 페이지에 액세스할 수 있으며 robots.txt 파일, noindex 태그 또는 로그인 요구사항에 의해 차단되지 않는지 확인합니다. 페이지가 정상적으로 표시되면 Google에 URL을 재크롤링하도록 요청할 수 있습니다.
  5. Google에 향후 변경사항을 계속 알리려면 사이트맵을 제출하는 것이 좋습니다. 이는 Search Console Sitemap API를 사용하여 자동화할 수 있습니다.

예시

다음은 단일 과정 정보 페이지의 예시입니다.


<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": "2019-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": "2020-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": "2022-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": "2023-07-01",
          "endDate": "2023-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>

가이드라인

Google 검색에 과정이 과정 정보 리치 결과로 표시되려면 다음 가이드라인을 따라야 합니다.

콘텐츠 가이드라인

'특정 과목 또는 주제에 관한 강좌, 강의, 모듈을 포함하는 교육과정의 시리즈 또는 단위'라는 과정의 정의를 충족하는 교육용 콘텐츠에만 마크업을 사용하세요.

Course 마크업은 전체 단일 과정 또는 과정 프로그램을 제공하는 웹페이지에 있어야 합니다. 다음 예에서는 과정 정보 리치 결과를 사용할 수 없습니다.

  • 학위 요약 페이지
  • 단독 시험 페이지
  • 일반적인 공개 이벤트(예: '천문학의 날')
  • 2분 길이의 한 편짜리 '샌드위치 만들기 동영상'

구조화된 데이터 유형 정의

콘텐츠를 Google 검색에 리치 결과로 표시하려면 필수 CourseCourseInstance 속성이 있어야 합니다. 권장 속성을 통해 콘텐츠에 관한 정보를 추가하여 더 만족스러운 사용자 환경을 제공할 수 있습니다.

Course

과정은 단독으로 또는 프로그램의 일부로 수강할 수 있는 개별적인 교육과정 단위입니다.

Course의 전체 정의는 schema.org/Course에서 확인할 수 있습니다.

필수 속성
name

Text

전체 과정 제목입니다.

"name": "Intro to Statistics"
description

Text

과정에 관한 설명입니다.

  • 권장 길이: 240자(영문 기준)
  • 최대 길이: 500자(영문 기준)
"description": "This course teaches the basics of statistical thinking."
provider

Organization

과정 콘텐츠를 만든 조직에 관한 정보입니다.

"provider": {
   "@type": "Organization",
   "name": "Example University",
   "url": "www.exampleuniversity.com"
}
provider.name Text

과정 제공업체의 이름입니다.

offers

반복형 Offer

서비스 수수료를 비롯하여 과정을 이수하는 데 필요한 총 금액 정보입니다. 일부 사용자에게만 적용되는 가격(예: 신규 사용자의 경우 20% 할인)을 등록하지 마세요.

이 필드에 추가 인증서 수수료를 포함하면 안 됩니다. 인증서를 취득에 추가 요금이 있는 경우 educationalCredentialAwarded 속성에 추가하세요.

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

과정의 가격 카테고리입니다. 다음 중 한 가지 값을 사용하세요.

  • Free: 모든 사용자가 모든 강의, 과제, 테스트를 무료로 이용할 수 있어야 합니다. 전체 과정을 무료로 이수할 수 있습니다.
  • Partially Free: 과정의 절반 이상을 무료로 수강할 수 있습니다(예: 모든 강의는 무료이지만 과제는 유료임).
  • Subscription: 전체 과정을 이수하려면 구독자 또는 유료 회원이어야 합니다.
  • Paid: 사용자가 과정을 이수하려면 비용을 지불해야 합니다.
hasCourseInstance

반복형 CourseInstance

모든 과정에는 과정에서 제공하는 항목에 대한 자세한 정보가 포함된 과정 인스턴스가 하나 이상 있어야 합니다. 필수 속성과 권장 속성에 관해 알아보려면 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"
   }]
}]
권장 속성
about

반복형 Text

과정을 이수하면 얻게 되는 기술을 설명합니다(해당하는 경우).

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

AggregateRating

과정을 수강한 사용자가 남긴 평점을 기반으로 작성된 평균 과정 평점 정보입니다(해당하는 경우). 리뷰 스니펫 가이드라인과 필수 및 권장 AggregateRating 속성 목록을 따르세요.

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

반복형 Text

과정이 제공되는 자막 또는 기타 언어입니다(해당하는 경우). ISO 639-1 alpha-2 코드 목록의 두 글자 코드를 사용하세요.

"availableLanguage": ["fr", "es", "de"]
coursePrerequisites

반복형 Text

과정에 필요한 사전 지식입니다(해당하는 경우). 사전 지식이나 다른 과정과의 연관성, 또는 둘 다로 나타낼 수 있습니다.

"coursePrerequisites": ["Understanding of Algebra concepts like variables and functions",
            "https://www.coursewebsite.abc/algebra"]
datePublished

Date

과정이 처음 게시된 날짜입니다(해당되는 경우). 8601 날짜 형식(YYYY-MM-DD)을 사용하세요.

"datePublished": "2019-03-21"
educationalCredentialAwarded

반복형 EducationalOccupationalCredential

과정을 수료하면 받을 수 있는 인증서 또는 자격증 정보입니다(해당하는 경우). 인증서나 자격증을 받기 위해 추가 비용이 부과되는 경우 이 비용을 명시해야 합니다.

"educationalCredentialAwarded": [{
   "@type": "EducationalOccupationalCredential",
   "name": "CourseProvider Certificate",
   "url": "www.examplecertificate.com",
   "credentialCategory": "Certificate",
   "offers": [{
      "@type": "Offer",
      "category": "Paid",
      "priceCurrency": "USD",
      "price": 5
   }]
}]
educationalCredentialAwarded.credentialCategory Text

사용자가 받게 될 보상 유형입니다(해당하는 경우). 다음 중 한 가지 값을 사용하세요.

  • Certificate: 사용자가 과정 또는 프로그램을 성공적으로 완료했음을 증명하는 보상입니다.
  • Certification: 사용자의 역량을 확인하는 시험이나 증명이 필요한 공식 인증입니다.

educationalCredentialAwarded.name Text

보상 이름입니다(해당하는 경우).

educationalCredentialAwarded.offers.category Text

보상에 드는 비용 유형입니다(해당하는 경우). 다음 카테고리 중 한 가지 값을 사용하세요.

  • Free: 보상을 무료로 받을 수 있습니다.
  • Subscription: 보상을 받으려면 구독자 또는 유료 회원이어야 합니다.
  • Paid: 보상을 받으려면 비용을 지불해야 합니다.
educationalCredentialAwarded.offers.price Number

보상의 가격을 숫자로 표시한 것입니다(해당하는 경우).

educationalCredentialAwarded.offers.priceCurrency Text

보상 가격의 통화로, ISO 4217 통화 형식(3자리 코드)으로 표시됩니다(해당하는 경우).

educationalCredentialAwarded.url URL

보상 페이지 링크입니다(해당하는 경우).

educationalLevel

Text

과정의 목표 학력입니다(해당하는 경우). 다음 값 중 하나를 선택하세요.

  • Beginner: 콘텐츠를 이해하는 데 사전 지식이 필요하지 않습니다.
  • Intermediate: 콘텐츠를 이해하는 데 약간의 지식이 필요할 수 있습니다.
  • Advanced: 이 콘텐츠는 주제에 관한 사전 지식을 갖추고 있는 고급 학습자를 대상으로 합니다.
"educationalLevel": "Beginner"
financialAidEligible

Text

과정을 수강하고자 하는 사용자에게 제공되는 장학금, 특별 요금, 기타 재정적 지원 기회입니다(해당하는 경우).

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

반복형 URL

과정을 대표하는 이미지의 URL입니다(해당하는 경우). 로고나 캡션보다는 과정과 관련된 이미지를 사용하세요.

추가 이미지 가이드라인

  • 모든 페이지에는 마크업 포함 여부와 관계없이 하나 이상의 이미지가 있어야 합니다. Google에서 가로세로 비율과 해상도를 기반으로 Google 검색결과에 표시할 최적의 이미지를 선택합니다.
  • 이미지 URL은 크롤링 및 색인 생성이 가능해야 합니다. Google에서 내 URL에 액세스할 수 있는지 확인하려면 URL 검사 도구를 사용하세요.
  • 이미지는 마크업된 콘텐츠를 나타내야 합니다.
  • 이미지는 Google 이미지에서 지원되는 파일 형식이어야 합니다.
  • 최상의 결과를 위해서는 가로세로 비율이 16x9, 4x3, 1x1인 여러 개의 고해상도 이미지(너비와 높이의 곱이 최소 50,000픽셀)를 제공하는 것이 좋습니다.

예:

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

Text

과정이 제공되는 기본 언어입니다(해당하는 경우). ISO 639-1 alpha-2 코드 목록의 두 글자 코드를 사용하세요.

"inLanguage": "en"
offers.price Number

보상의 가격을 숫자로 표시한 것입니다(해당하는 경우). 이 필드에 통화 기호와 같은 다른 정보를 입력해서는 안 됩니다.

offers.priceCurrency Text

과정 가격의 통화로, ISO 4217 통화 형식(3자리 코드)으로 표시됩니다(해당하는 경우).

provider.url URL

과정 제공업체의 홈페이지로 연결되는 URL입니다(해당하는 경우).

publisher

Organization

과정을 게시하고 표시하는 조직에 관한 정보입니다(해당하는 경우).

"publisher": {
   "@type": "Organization",
   "name": "Course Website",
   "url": "www.example.com"
}
publisher.name Text

과정 게시자의 이름입니다(해당하는 경우).

publisher.url URL

과정 게시자의 홈페이지로 연결되는 URL입니다(해당하는 경우).

review

반복형 Review

과정에 대한 사용자 리뷰 목록입니다(해당하는 경우). 자세한 내용은 리뷰 스니펫 가이드라인을 참고하세요.

"review": [{
   "@type": "Review",
   "author": {
      "@type": "Person",
      "name": "Sasha J."
   },
   "datePublished": "2021-09-22",
   "reviewRating": {
      "@type": "Rating",
      "ratingValue": 4
   }
}]
syllabusSections

반복형 Syllabus

과정을 구성하는 다양한 모듈에 관한 정보입니다(해당하는 경우).

"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

모듈 개념에 관한 설명입니다(해당하는 경우).

syllabusSections.name Text

과정 모듈의 이름입니다(해당하는 경우).

syllabusSections.timeRequired Duration

8601 기간 형식을 사용하세요(해당하는 경우). 예를 들어 PT2H30M은 모듈을 완료하는 데 2시간 30분이 걸린다는 것을 의미합니다.

teaches

반복형 Text

과정을 수강함으로써 배우게 되는 학습 결과 또는 특정 지식입니다(해당하는 경우).

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

Integer

과정의 전체 기간 동안 등록한 총 사용자 수입니다(해당하는 경우).

"totalHistoricalEnrollment": 80032
video

VideoObject

과정의 동영상 미리보기 또는 예고편입니다(해당하는 경우). 자세한 내용은 VideoObject 가이드라인을 참고하세요.

"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

CourseInstance의 전체 정의는 schema.org/CourseInstance에서 확인하세요. 모든 과정에는 필수 속성이 입력된 CourseInstance가 하나 이상 있어야 합니다.

필수 속성
courseMode

Text

과정이 제공될 매체입니다. 다음 중 한 가지 값을 사용하세요.

  • Online: 모든 수업, 과제, 시험을 온라인에서 완료할 수 있습니다.
  • Onsite: 실제 장소에서 대면 강의가 이루어집니다.
  • Blended: 이 과정에는 온라인과 오프라인 교육이 모두 포함되어 있습니다.

클래스가 Onsite 또는 Blended이면 location 속성을 추가합니다.

"courseMode": "Online"

courseSchedule

Schedule

권장 진도를 고려하여 평균적인 사용자가 과정을 완료하는 데 걸리는 시간에 대한 정보입니다. 정해진 타임라인에 있는 과정의 시작일과 종료일을 포함합니다.

다음은 언제든지 시작할 수 있는 진도 조절 과정의 예입니다.

// This course takes 6 weeks to complete.
"courseSchedule": {
   "@type": "Schedule",
   "repeatCount": 6
   "repeatFrequency": "Weekly",
}

다음은 정해진 시간 동안 진행되는 과정의 예입니다.

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

과정에 소요되는 시간의 숫자 값(repeatFrequency단위)입니다. 예를 들어 repeatFrequency가 월 단위이고 repeatCount가 4이면 과정은 4개월 동안 지속됩니다.

courseSchedule.repeatFrequency Text

durationrepeatCount 속성은 이 필드를 기준으로 합니다. 다음 중 한 가지 값을 사용하세요.

  • Daily: 과정이 매일 진행됩니다.
  • Weekly: 과정이 매주 진행됩니다.
  • Monthly: 과정이 매월 진행됩니다.
  • Yearly: 과정이 매년 진행됩니다.
courseWorkload Text

이 필드는 모든 동영상을 시청하고 과정의 모든 과제와 시험을 완료하는 데 걸리는 총 시간을 나타냅니다. 8601 기간 형식을 사용하세요.

"courseWorkload": "PT22H"
권장 속성
courseSchedule.duration Duration

repeatFrequency 단위로 표현된 평균적인 사용자의 예상 시간에 관한 권장 진도입니다(해당하는 경우 8601 기간 형식). 예를 들어 repeatFrequency가 월 단위이고 durationPT5H면 사용자는 월 5시간을 사용할 것으로 예상해야 합니다.

이 속성을 사용하여 전체 과정 길이를 지정하지 마세요. 대신 courseWorkload 속성을 사용해야 합니다.

courseSchedule.endDate Date

8601 날짜 형식(YYYY-MM-DD)으로 표시된 과정의 종료일입니다(해당하는 경우).

courseSchedule.startDate Date

8601 날짜 형식(YYYY-MM-DD)으로 표시된 과정의 시작일입니다(해당하는 경우).

image URL

강사 이미지로 연결되는 URL입니다(해당하는 경우).

추가 이미지 가이드라인

  • 모든 페이지에는 마크업 포함 여부와 관계없이 하나 이상의 이미지가 있어야 합니다. Google에서 가로세로 비율과 해상도를 기반으로 Google 검색결과에 표시할 최적의 이미지를 선택합니다.
  • 이미지 URL은 크롤링 및 색인 생성이 가능해야 합니다. Google에서 내 URL에 액세스할 수 있는지 확인하려면 URL 검사 도구를 사용하세요.
  • 이미지는 마크업된 콘텐츠를 나타내야 합니다.
  • 이미지는 Google 이미지에서 지원되는 파일 형식이어야 합니다.
  • 최상의 결과를 위해서는 가로세로 비율이 16x9, 4x3, 1x1인 여러 개의 고해상도 이미지(너비와 높이의 곱이 최소 50,000픽셀)를 제공하는 것이 좋습니다.

예:

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

반복형 Person

과정의 강사에 관한 정보입니다(해당하는 경우).

"instructor": [{
   "@type": "Person",
   "name": "Dana A.",
   "description": "Professor at X-University",
   "image": "http://examplePerson.jpg"
}]
instructor.description Text

강사 및 자격증 설명입니다(해당하는 경우).

instructor.name Text

강사 이름입니다(해당하는 경우).

location

Text

과정을 교육할 실제 위치의 이름 또는 주소 (또는 둘 다)입니다(해당하는 경우).

"courseMode": "Blended",
"location": "Example High School"

과정 프로그램

과정 프로그램은 하위 과정의 모음입니다. 하위 과정은 고유한 URL과 방문 페이지가 있는 독립형 과정이어야 합니다.

웹페이지가 과정 프로그램인 경우 다음의 필수 속성(CourseCourseInstance 섹션에 나열된 다른 필수 속성도 포함해야 함)을 포함하세요.

필수 속성
hasPart

반복형 Course

이 프로그램에 포함된 하위 과정 목록입니다.

"@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

하위 과정의 전체 제목입니다.

hasPart.url URL

하위 과정 방문 페이지로 연결되는 URL입니다.

권장 속성
hasPart.description Text

하위 과정에서 다루는 내용에 관한 간략한 설명입니다(해당하는 경우).

  • 권장 길이: 240자(영문 기준)
  • 최대 길이: 500자(영문 기준)

Search Console로 리치 결과 모니터링하기

Search Console은 Google 검색에서의 페이지 실적을 모니터링하는 데 도움이 되는 도구입니다. Search Console에 가입해야만 페이지가 Google 검색결과에 포함되는 것은 아니지만, 가입하면 Google에서 사이트를 인식하는 방식을 이해하고 개선하는 데 도움이 될 수 있습니다. 다음과 같은 경우 Search Console을 확인하는 것이 좋습니다.

  1. 구조화된 데이터를 처음 배포한 후
  2. 새 템플릿을 출시하거나 코드를 업데이트한 후
  3. 주기적으로 트래픽 분석

구조화된 데이터를 처음 배포한 후

Google에서 페이지의 색인을 생성하고 나면 관련 리치 결과 상태 보고서를 사용하여 문제를 확인합니다. 유효한 항목 수가 증가하고 잘못된 항목 수는 증가하지 않는 것이 가장 좋습니다. 구조화된 데이터에 문제가 있는 경우 다음과 같이 해결하세요.

  1. 잘못된 항목을 수정하세요.
  2. 실제 URL을 검사하여 문제가 지속되는지 확인합니다.
  3. 상태 보고서를 사용하여 유효성 검사를 요청합니다.

새 템플릿을 출시하거나 코드를 업데이트한 후

웹사이트를 대폭 변경한 후 구조화된 데이터의 잘못된 항목이 증가하는지 모니터링하세요.
  • 잘못된 항목이 증가했다면 새로 출시한 템플릿이 제대로 작동하지 않거나 사이트가 기존의 템플릿과 좋지 않은 방식으로 상호작용하게 된 것일 수 있습니다.
  • 유효한 항목이 감소했다면(잘못된 항목 증가와 일치하지 않음) 페이지에 구조화된 데이터를 더 이상 삽입하지 않는 것일 수 있습니다. URL 검사 도구를 사용하여 문제를 일으키는 원인을 알아보세요.

주기적으로 트래픽 분석

실적 보고서를 사용하여 Google 검색 트래픽을 분석합니다. 데이터를 통해 페이지가 Google 검색의 리치 결과로 표시되는 빈도, 사용자가 검색결과를 클릭하는 빈도, 검색결과에 표시되는 평균 게재순위를 확인할 수 있습니다. Search Console API를 사용하여 이러한 결과를 자동으로 가져오는 방법도 있습니다.

문제 해결

구조화된 데이터를 구현하거나 디버깅하는 데 문제가 있다면 다음 리소스를 참고하세요.

  • 콘텐츠 관리 시스템(CMS)을 사용하거나 다른 사람이 내 사이트를 관리한다면 도움을 요청하세요. 문제를 자세히 설명하는 모든 Search Console 메시지를 CMS나 관리자에게 전달해야 합니다.
  • Google은 구조화된 데이터를 사용하는 기능이라고 해서 검색결과에 표시된다고 보장하지 않습니다. Google에서 콘텐츠를 리치 결과로 표시할 수 없는 일반적인 이유 목록은 구조화된 데이터 일반 가이드라인을 참고하세요.
  • 구조화된 데이터에 오류가 있을 수 있습니다. 구조화된 데이터의 오류 목록을 확인하세요.
  • 페이지에 구조화된 데이터 직접 조치를 취하는 경우 페이지에 있는 구조화된 데이터는 무시됩니다. 하지만 페이지는 계속 Google 검색결과에 표시될 수 있습니다. 구조화된 데이터 문제를 해결하려면 직접 조치 보고서를 사용하세요.
  • 가이드라인을 다시 검토하여 콘텐츠가 가이드라인을 준수하지 않는지 확인합니다. 스팸성 콘텐츠 또는 스팸성 마크업의 사용으로 인해 문제가 발생할 수 있습니다. 하지만 해당 문제가 구문 문제가 아닐 수도 있고, 이 경우 리치 결과 테스트에서는 이 문제를 식별할 수 없습니다.
  • 누락된 리치 결과/총 리치 결과 수 감소 문제를 해결하세요.
  • 다시 크롤링이 이루어지고 색인이 생성될 때까지 기다리세요. 페이지가 게시된 후 Google에서 페이지를 찾고 크롤링하기까지 며칠 정도 걸릴 수 있습니다. 크롤링 및 색인 생성에 관한 일반적인 질문은 Google 검색 크롤링 및 색인 생성 FAQ를 참고하세요.
  • Google 검색 센터 포럼에 질문을 올려보세요.