Dữ liệu có cấu trúc cho gói thuê bao và nội dung có tường phí (CreativeWork)

Trang này mô tả cách dùng JSON-LD của schema.org để biểu thị nội dung có tường phí trên trang web của bạn bằng các thuộc tính CreativeWork. Dữ liệu có cấu trúc này giúp Google phân biệt nội dung có tường phí với nội dung sử dụng kỹ thuật che giấu (một kỹ thuật vi phạm chính sách về nội dung rác). Tìm hiểu thêm về gói thuê bao và nội dung có tường phí.

Ví dụ

Sau đây là ví dụ về dữ liệu có cấu trúc NewsArticle chứa nội dung có tường phí.

<html>
  <head>
    <title>Article headline</title>
    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "NewsArticle",
      "headline": "Article headline",
      "image": "https://example.org/thumbnail1.jpg",
      "datePublished": "2025-02-05T08:00:00+08:00",
      "dateModified": "2025-02-05T09:20:00+08:00",
      "author": {
        "@type": "Person",
        "name": "John Doe",
        "url": "https://example.com/profile/johndoe123"
      },
      "description": "A most wonderful article",
      "isAccessibleForFree": false,
      "hasPart":
        {
        "@type": "WebPageElement",
        "isAccessibleForFree": false,
        "cssSelector" : ".paywall"
        }
    }
    </script>
  </head>
  <body>
    <div class="non-paywall">
      Non-Paywalled Content
    </div>
    <div class="paywall">
      Paywalled Content
    </div>
  </body>
</html>

Nguyên tắc

Bạn phải tuân theo nguyên tắc chung về dữ liệu có cấu trúcnguyên tắc kỹ thuật để trang của bạn đủ điều kiện xuất hiện trong kết quả tìm kiếm. Ngoài ra, những nguyên tắc sau đây sẽ áp dụng cho nội dung có tường phí:

  • Định dạng JSON-LD và vi dữ liệu là những phương thức được chấp nhận để chỉ định dữ liệu có cấu trúc cho nội dung có tường phí.
  • Không lồng các phần nội dung.
  • Chỉ sử dụng các bộ chọn .class cho thuộc tính cssSelector.

Thêm mã đánh dấu vào nội dung có tường phí

Nếu bạn cung cấp cho người dùng quyền truy cập theo gói thuê bao để xem nội dung trên trang web hoặc nếu người dùng phải đăng ký để truy cập vào nội dung mà bạn muốn lập chỉ mục, hãy làm theo những bước dưới đây. Ví dụ sau áp dụng cho dữ liệu có cấu trúc NewsArticle. Hãy nhớ làm theo những bước này đối với mọi phiên bản của trang (kể cả phiên bản AMP và không phải AMP).

  1. Thêm tên lớp (class) xung quanh mỗi phần có tường phí của trang. Ví dụ:
    <body>
    <p>This content is outside a paywall and is visible to all.</p>
    <div class="paywall">This content is inside a paywall, and requires a subscription or registration.</div>
    </body>
  2. Thêm dữ liệu có cấu trúc NewsArticle.
  3. Thêm dữ liệu có cấu trúc JSON-LD được làm nổi bật vào dữ liệu có cấu trúc NewsArticle của bạn.
    {
    "@context": "https://schema.org",
    "@type": "NewsArticle",
    "mainEntityOfPage": {
    "@type": "WebPage",
    "@id": "https://example.org/article"
    },
    (...)
    "isAccessibleForFree": false,
    "hasPart": {
    "@type": "WebPageElement",
    "isAccessibleForFree": false,
    "cssSelector": ".paywall"
    }
    }
  4. Xác thực mã của bạn bằng công cụ Kiểm tra kết quả nhiều định dạng rồi sửa mọi lỗi nghiêm trọng.

Nhiều phần có tường phí

Nếu trang của bạn chứa nhiều mục có tường phí, hãy thêm tên loại dưới dạng một mảng dữ liệu.

Dưới đây là ví dụ về các phần có tường phí trên trang:

<body>
<div class="section1">This content is inside a paywall, and requires a subscription or registration.</div>
<p>This content is outside a paywall and is visible to all.</p>
<div class="section2">This is another section that's inside a paywall, or requires a subscription or registration.</div>
</body>

Dưới đây là ví dụ về dữ liệu có cấu trúc NewsArticle chứa nhiều phần có tường phí.

{
  "@context": "https://schema.org",
  "@type": "NewsArticle",
  "mainEntityOfPage": {
    "@type": "WebPage",
    "@id": "https://example.org/article"
    },
  (...)
  "isAccessibleForFree": false,
  "hasPart": [
    {
      "@type": "WebPageElement",
      "isAccessibleForFree": false,
      "cssSelector": ".section1"
    }, {
      "@type": "WebPageElement",
      "isAccessibleForFree": false,
      "cssSelector": ".section2"
    }
  ]
}

Các loại dữ liệu được hỗ trợ

Mã đánh dấu này được hỗ trợ đối với loại CreativeWork, hoặc một trong những loại CreativeWork cụ thể hơn như sau:

Bạn có thể dùng nhiều loại dữ liệu trên schema.org, chẳng hạn như sau:

"@type": ["Article", "LearningResource"]

Bạn phải thêm các thuộc tính bắt buộc để Google hiểu rằng bài viết của bạn chứa nội dung có tường phí. Bạn có thể thêm các thuộc tính được đề xuất để thể hiện chi tiết về những phần trên trang bị tường phí (hoặc yêu cầu đăng ký gói thuê bao).

Thuộc tính bắt buộc
isAccessibleForFree

Boolean

Liệu mọi người đều truy cập được bài viết này, hay bài viết này được áp dụng tường phí (hoặc yêu cầu đăng ký/có quyền truy cập theo gói thuê bao) hay không. Thiết lập thuộc tính isAccessibleForFree thành false để chỉ định rằng phần này được áp dụng tường phí.

Thuộc tính nên có
hasPart.cssSelector

CssSelectorType

Bộ chọn CSS tham chiếu đến tên lớp mà bạn thiết lập trong HTML để chỉ định phần có tường phí.

hasPart.@type

Text

Thiết lập @type thành WebPageElement.

hasPart.isAccessibleForFree

Boolean

Liệu phần này của bài viết có được áp dụng tường phí (hoặc yêu cầu đăng ký/có quyền truy cập theo gói thuê bao) hay không. Thiết lập thuộc tính isAccessibleForFree thành False để chỉ định rằng phần này được áp dụng tường phí.

Những điều cần cân nhắc khi sử dụng AMP

Sau đây là danh sách những điều cần cân nhắc nếu dùng trang AMP:

  • Nếu bạn có một trang AMP chứa nội dung có tường phí, hãy sử dụng amp-subscriptions nếu thích hợp.
  • Đảm bảo rằng điểm cuối uỷ quyền của bạn cấp quyền truy cập nội dung cho các bot thích hợp của Google và các bên khác. Quá trình này sẽ khác nhau tuỳ theo mỗi nhà xuất bản.
  • Đảm bảo rằng các trang AMP và không phải AMP của bạn đều có chính sách giống nhau về quyền truy cập của bot, nếu không thì lỗi "nội dung không khớp" có thể xuất hiện trong Search Console.

Những điều cần cân nhắc khi sử dụng AI tạo sinh trong Tìm kiếm

Thông tin tổng quan SGE (Trải nghiệm tạo sinh trên Tìm kiếm) được tạo với sự trợ giúp của AI. Những thông tin tổng quan này được hỗ trợ bởi thông tin trên web và Sơ đồ tri thức của Google (một tập hợp thông tin về con người, địa điểm và sự vật). Nội dung bị chặn bằng các chế độ kiểm soát đoạn trích sẽ không xuất hiện trong thông tin tổng quan.

SGE được thiết kế để giúp mọi người khám phá những thông tin hữu ích trên web có hỗ trợ hiện thông tin trong phần tổng quan và gợi ý để mọi người khám phá thêm. Khái quát hơn trong Tìm kiếm, trong thông tin tổng quan SGE có thể có các đường liên kết đến nội dung có tường phí nhằm giúp mọi người khám phá các trang đó.

SGE trong khi duyệt web là một tính năng riêng biệt với SGE trong Tìm kiếm. Tính năng này sẽ không cho thấy các điểm chính đối với các bài viết có tường phí, nếu trên trang có dữ liệu có cấu trúc Tường phí.

Đảm bảo Google có thể thu thập dữ liệu và lập chỉ mục các trang của bạn

Nếu bạn muốn Google thu thập dữ liệu và lập chỉ mục nội dung của mình (kể cả các phần có tường phí), hãy đảm bảo rằng Googlebot (và Googlebot-News nếu có) có thể truy cập vào trang của bạn.

Hãy dùng Công cụ kiểm tra URL để kiểm tra cách Google thu thập dữ liệu và hiển thị một URL trên trang web của bạn.

Kiểm soát thông tin xuất hiện trong kết quả tìm kiếm

Để ngăn Google hiển thị một đường liên kết lưu trong bộ nhớ đệm cho trang của bạn, hãy sử dụng thẻ meta robots noarchive.

Để loại một số mục nội dung của bạn khỏi đoạn trích trong kết quả tìm kiếm, hãy dùng thuộc tính HTML data-nosnippet. Bạn cũng có thể giới hạn số lượng ký tự của đoạn trích trong kết quả tìm kiếm bằng cách dùng thẻ meta robots max-snippet.

Khắc phục sự cố

Nếu gặp sự cố khi triển khai hoặc gỡ lỗi dữ liệu có cấu trúc, thì bạn có thể tham khảo một số tài nguyên trợ giúp sau đây.