Categories SEO

Triển khai dữ liệu có cấu trúc (schema) để SEO web tốt hơn [có ví dụ thực tế]

Dữ liệu có cấu trúc sẽ dễ hiểu hơn với máy tìm kiếm

Độ này tôi quay ra tìm hiểu về SEO, nó liên quan đến công việc giảng dạy và triển khai dự án cá nhân.

SEO căn bản thì rất dễ hiểu, bạn cần làm mấy thứ như:

  • Viết nội dung chất lượng cao (vâng, Content is King).
  • Đi liên kết nội bộ phù hợp với bối cảnh (SEO là đừng có over optimization / tối ưu hóa quá mức, gượng ép).
  • Tìm kiếm backlink. Nội dung là vua, thì backlink là hoàng hậu. Màn song kiếm hợp bích này nếu thực hiện được thì combo đem lại tiềm năng cao nhất. Có lẽ tôi sẽ kể vụ tìm kiếm backlink trong một ngày khác.

Hơi vòng vèo rồi! Quay trở lại chủ đề chính, dữ liệu có cấu trúc (schema) nó là cái gì vậy?

trung tâm Google tìm kiếm đã có tài liệu tiếng Việt đầy đủ, nên tôi sẽ trích dẫn luôn:

Dữ liệu có cấu trúc là một định dạng chuẩn để cung cấp thông tin về một trang và phân loại nội dung trang. Ví dụ: trên một trang về công thức nấu ăn sẽ có các loại dữ liệu về nguyên liệu, thời gian nấu và nhiệt độ, lượng calo, v.v.

Cái từ quan trọng ở đây là cấu trúc.

Tại sao dữ liệu có cấu trúc lại tốt hơn?

Lý do là vì Google hàng ngày phải xử lý một lượng dữ liệu khổng lồ trên toàn thế giới mạng. Rất nhiều dữ liệu dạng này ở dạng phi cấu trúc cần xử lý phức tạp mới hiểu được đầy đủ. Chẳng hạn với một nội dung phi cấu trúc phức tạp cần nỗ lực 90/100 để hiểu thì cùng dữ liệu đó có cấu trúc chỉ cần nỗ lực 30/100. Công sức giảm đi 3 lần.

Ở đây chúng ta cần phải hiểu rằng việc Google lập chỉ mục một nội dung nào thì đó là một hoạt động tốn tài nguyên (của Google). Và chúng ta có cơ sở để cho rằng Google có ngưỡng giới hạn đối với từng website, kiểu như:

  • Nội dung mới xuất hiện (hoặc nội dung nói chung) trên website này có cần lập chỉ mục không? [Bạn biết không, giờ rất nhiều website gặp khó trong việc được Google lập chỉ mục. Đó là bằng chứng rất rõ cho thấy Google từ chối sử dụng tài nguyên vào việc lưu trữ, phân tích các nội dung mà nó cho là không đạt tiêu chuẩn].
  • Cần bỏ ra nỗ lực bao nhiêu để hiểu nội dung đó.

Tóm lại dữ liệu có cấu trúc giúp Google và các máy tìm kiếm nói chung hiểu rõ và nhanh hơn nội dung trên website của bạn.

Dữ liệu có cấu trúc còn tạo ra một khác biệt nữa. Đó là kết quả nhiều định dạng, làm cho kết quả tìm kiếm của bạn trông hấp dẫn hơn, và nó có khả năng thu hút click nhiều hơn.

Lợi đơn, lợi kép.

Trong dự án thực tế đang triển khai, tôi đã ngạc nhiên vô cùng về lợi thế mà dữ liệu có cấu trúc đem lại cho đối thủ cạnh tranh của mình. Tôi không hiểu vì lý do gì mà nội dung của đối thủ có chất lượng vừa phải (thậm chí là đơn giản), backlink hầu như không có, nhưng thường xuyên xuất hiện ở các vị trí top đầu.

Tôi đã xem mã nguồn của đối thủ (Ctrl + U), và tôi thấy một đoạn mã trong thẻ script mà tôi nghi ngờ là nguyên nhân chính. Người này đang triển khai dữ liệu có cấu trúc khá bài bản.

Triển khai

Dưới đây là một đoạn mã dữ liệu có cấu trúc, ví dụ của Google:

<html>
  <head>
    <title>Party Coffee Cake</title>
    <script type="application/ld+json">
    {
      "@context": "https://schema.org/",
      "@type": "Recipe",
      "name": "Party Coffee Cake",
      "author": {
        "@type": "Person",
        "name": "Mary Stone"
      },
      "datePublished": "2018-03-10",
      "description": "This coffee cake is awesome and perfect for parties.",
      "prepTime": "PT20M"
    }
    </script>
  </head>
  <body>
    <h2>Party coffee cake recipe</h2>
    <p>
      <i>by Mary Stone, 2018-03-10</i>
    </p>
    <p>
      This coffee cake is awesome and perfect for parties.
    </p>
    <p>
      Preparation time: 20 minutes
    </p>
  </body>
</html>

Có nhiều cách triển khai, nhưng kiểu script ld+json đưa vào trong thẻ head được cho là ổn hơn cả.

Ở đoạn trên là dữ liệu có cấu trúc về đồ uống có tên: Party Coffee Cake, nó đi kèm thông tin về người sáng chế, thời điểm ra đời, mô tả, và thời gian chuẩn bị. Máy tìm kiếm nhìn vào đây và nó sẽ hiểu rất nhanh và rõ về đồ uống này.

Nếu bạn biết về lập trình thì để triển khai dữ liệu có cấu trúc sẽ đơn giản hơn, tuy nhiên hiện cũng có các plugin cho WordPress hỗ trợ việc này tiện dùng. Cá nhân tôi chưa dùng plugin, vì dự án đang triển khai sử dụng code thuần nên tôi viết trực tiếp dữ liệu có cấu trúc đưa vào trang. Thời gian tới tôi sẽ xem một số plugin tốt về mảng này và có thể sẽ viết chia sẻ về chủ đề đó.

Liệu schema có bị thao túng?

Dĩ nhiên là có. Tôi chưa thấy cái gì trong SEO mà chưa từng bị ai đó tìm cách thao túng cả.

Schema dưới góc độ kỹ thuật, bạn sẽ thấy nó có chức năng rất giống thẻ meta keyword và meta description, nhưng ở cấp độ chi tiết và chuyên sâu hơn. Giờ cả 2 thẻ meta keyword và meta description đều không chiếm vị trí quan trọng trong SEO nữa (chúng cũng từng bị thao túng rất nhiều), và liệu schema có kết cục tương tự trong tương lai hay không thì tôi không rõ, nhưng ở thời điểm hiện tại, khả năng tác động của nó đến thứ hạng là rất đáng kể.

Đây là thời điểm mà tôi nghĩ có 3 thứ bạn cần quan tâm đặc biệt nếu muốn đẩy mạnh SEO web:

  • Entity
  • EEAT
  • Schema

Trong đó Schema là thứ mang tính kỹ thuật thuần túy cao nhất, nhưng cũng vì thế lại là thứ dễ làm thành công nhất.

EEAT cũng rất quan trọng. Lúc trước nó quan trọng chỉ vì nội dung YMYL (tiền của ông, đời của ông), giờ đây với nội dung được tạo bởi AI (trí thông minh nhân tạo), với chất lượng đã vượt một tay làng nhàng làm content, cùng với số lượng gần như không giới hạn thì câu hỏi liên quan đến trải nghiệm thực (E1), tính chuyên gia (E2), thẩm quyền (A) và mức độ tin cậy (T) lại được các máy tìm kiếm đặt lên làm tiêu chí hàng đầu.

Cuối cùng là Entity, nghĩa đen là thực thể, biến tất cả nội dung của bạn nằm trong một cá tính xác định được, một “thương hiệu”. Các thông tin trực tuyến cần là một xâu chuỗi để “định hình”, thay vì là một tập hợp tản mác, thiếu tính nhất quán, đồng bộ.

Ví dụ thực tế về schema trong dự án của tôi

Tôi đang thực hiện triển khai SEO cho trang bầu.com, chuyên trang gợi ý tên cho con, và giải thích ý nghĩa tên.

Và để cải thiện hơn nữa khả năng hiểu nội dung cho máy tìm kiếm thì hiện nó đang thực hiện schema trên toàn bộ nội dung của website. Cụ thể 2 schema mà tôi áp dụng là tổ chức và FAQ (các câu hỏi thường gặp).

Ví dụ đây là đoạn schema trên một bài viết:

           <!-- Schema -->
           <script type="application/ld+json">
                {
                  "@context": "https://schema.org",
                  "@type": "Organization",
                  "name": "bầu.com",
                  "url": "https://bầu.com",
                  "logo": "https://bầu.com/image/logo.png"
                }
           </script><!-- FAQ Schema -->
            <script type="application/ld+json">
                       {
                          "@context": "https://schema.org",
                          "@type": "FAQPage",
                          "mainEntity": [{
                            "@type": "Question",
                            "name": "Ý nghĩa tên Thanh Thảo?",
                            "acceptedAnswer": {
                              "@type": "Answer",
                              "text": "<p>Đệm Thanh:</p><ul><li>Trong trẻo, ví dụ nước trong vắt, bầu trời trong xanh</li><li>Sạch, không làm những điều không đáng làm, liêm khiết, thanh liêm, trong sạch</li><li>Mát mẻ</li><li>Lặng, thanh vắng [清, tc, tvc, nqh]</li><li>Màu xanh, ví dụ thanh trong thiên thanh chỉ màu xanh da trời</li><li>Tuổi trẻ, ví dụ thanh trong thanh niên [青, tc, tvc]</li><li>Tiếng tăm, danh dự, ví dụ trong thanh danh</li><li>Thanh điệu trong âm nhạc</li><li>Tuyên bố, nêu rõ, ví dụ trong thanh minh [聲, tc, tvc]</li></ul><p>Tên chính Thảo:</p><ul><li>Chỉ cây cỏ nói chung [草, tc]</li><li>Có lòng tốt, hay chia sẻ, nhường nhịn cho người khác [hp]</li><li>Biết ăn ở phải đạo, quan tâm chăm sóc cha mẹ và nói chung là người bề trên trong gia đình. Dâu hiền rể thảo. Đứa em thảo [hp]</li><li>Chữ thảo – một kiểu chữ của người Trung Hoa [草, tc]</li><li>Chỉ đến giống cái [騲, tvc] [am]</li><li>Tìm xét, dò xét</li><li>Lấy, cưới [討, tc, tvc]</li></ul>"
                            }
                          }, {
                            "@type": "Question",
                            "name": "Thanh Thảo nghĩa là gì?",
                            "acceptedAnswer": {
                              "@type": "Answer",
                              "text": "<p>Đệm Thanh:</p><ul><li>Trong trẻo, ví dụ nước trong vắt, bầu trời trong xanh</li><li>Sạch, không làm những điều không đáng làm, liêm khiết, thanh liêm, trong sạch</li><li>Mát mẻ</li><li>Lặng, thanh vắng [清, tc, tvc, nqh]</li><li>Màu xanh, ví dụ thanh trong thiên thanh chỉ màu xanh da trời</li><li>Tuổi trẻ, ví dụ thanh trong thanh niên [青, tc, tvc]</li><li>Tiếng tăm, danh dự, ví dụ trong thanh danh</li><li>Thanh điệu trong âm nhạc</li><li>Tuyên bố, nêu rõ, ví dụ trong thanh minh [聲, tc, tvc]</li></ul><p>Tên chính Thảo:</p><ul><li>Chỉ cây cỏ nói chung [草, tc]</li><li>Có lòng tốt, hay chia sẻ, nhường nhịn cho người khác [hp]</li><li>Biết ăn ở phải đạo, quan tâm chăm sóc cha mẹ và nói chung là người bề trên trong gia đình. Dâu hiền rể thảo. Đứa em thảo [hp]</li><li>Chữ thảo – một kiểu chữ của người Trung Hoa [草, tc]</li><li>Chỉ đến giống cái [騲, tvc] [am]</li><li>Tìm xét, dò xét</li><li>Lấy, cưới [討, tc, tvc]</li></ul>"
                            }
                          }, {
                            "@type": "Question",
                            "name": "Tên Thanh Thảo có nghĩa là gì?",
                            "acceptedAnswer": {
                              "@type": "Answer",
                              "text": "<p>Đệm Thanh:</p><ul><li>Trong trẻo, ví dụ nước trong vắt, bầu trời trong xanh</li><li>Sạch, không làm những điều không đáng làm, liêm khiết, thanh liêm, trong sạch</li><li>Mát mẻ</li><li>Lặng, thanh vắng [清, tc, tvc, nqh]</li><li>Màu xanh, ví dụ thanh trong thiên thanh chỉ màu xanh da trời</li><li>Tuổi trẻ, ví dụ thanh trong thanh niên [青, tc, tvc]</li><li>Tiếng tăm, danh dự, ví dụ trong thanh danh</li><li>Thanh điệu trong âm nhạc</li><li>Tuyên bố, nêu rõ, ví dụ trong thanh minh [聲, tc, tvc]</li></ul><p>Tên chính Thảo:</p><ul><li>Chỉ cây cỏ nói chung [草, tc]</li><li>Có lòng tốt, hay chia sẻ, nhường nhịn cho người khác [hp]</li><li>Biết ăn ở phải đạo, quan tâm chăm sóc cha mẹ và nói chung là người bề trên trong gia đình. Dâu hiền rể thảo. Đứa em thảo [hp]</li><li>Chữ thảo – một kiểu chữ của người Trung Hoa [草, tc]</li><li>Chỉ đến giống cái [騲, tvc] [am]</li><li>Tìm xét, dò xét</li><li>Lấy, cưới [討, tc, tvc]</li></ul>"
                            }
                          }, {
                            "@type": "Question",
                            "name": "Mức độ phù hợp với giới của tên Thanh Thảo?",
                            "acceptedAnswer": {
                              "@type": "Answer",
                              "text": "<p>Mức độ phù hợp với giới: đệm - tên <strong>Thanh Thảo</strong> hợp với <a class='feColor' href='../tên-bé-gái.html'>nữ giới</a> hơn.</p><p><strong>Chú ý dành cho nam</strong>: dữ liệu của chúng tôi cho thấy về mặt tỷ lệ dùng đệm tên này, nữ giới đều áp đảo so với nam (cả họ tên 3 chữ và 4 chữ), tuy nhiên về mặt số lượng vẫn có một lượng đáng kể nam giới dùng <strong>Thanh Thảo</strong> làm tên.</p><p>Đây là điều nam nên tránh, vì không chỉ toàn bộ đệm - tên, mà từng thành phần trong tên, cụ thể là đệm <strong>Thanh</strong> và tên chính <strong>Thảo</strong> nữ giới đều dùng nhiều hơn nam. Tất cả các dấu hiệu trên đều cho thấy tên này chỉ nên <strong>dành cho nữ</strong> chứ nam không nên dùng.</p>"
                            }
                          }, {
                            "@type": "Question",
                            "name": "Tên Thanh Thảo phù hợp với giới nào?",
                            "acceptedAnswer": {
                              "@type": "Answer",
                              "text": "<p>Mức độ phù hợp với giới: đệm - tên <strong>Thanh Thảo</strong> hợp với <a class='feColor' href='../tên-bé-gái.html'>nữ giới</a> hơn.</p><p><strong>Chú ý dành cho nam</strong>: dữ liệu của chúng tôi cho thấy về mặt tỷ lệ dùng đệm tên này, nữ giới đều áp đảo so với nam (cả họ tên 3 chữ và 4 chữ), tuy nhiên về mặt số lượng vẫn có một lượng đáng kể nam giới dùng <strong>Thanh Thảo</strong> làm tên.</p><p>Đây là điều nam nên tránh, vì không chỉ toàn bộ đệm - tên, mà từng thành phần trong tên, cụ thể là đệm <strong>Thanh</strong> và tên chính <strong>Thảo</strong> nữ giới đều dùng nhiều hơn nam. Tất cả các dấu hiệu trên đều cho thấy tên này chỉ nên <strong>dành cho nữ</strong> chứ nam không nên dùng.</p>"
                            }
                          }]
                        }
            </script>

Một điều cần lưu ý khi bạn triển khai schema là mỗi loại schema khác nhau có kiểu trình bày tương ứng. Và sau khi triển khai bạn cần kiểm tra mã đánh dấu đã làm đúng chuẩn hay chưa bằng công cụ của chính Google (bạn có thể paste trực tiếp link trực tuyến của website, hoặc chỉ mã nguồn của nó mà thôi). Ví dụ:

Kiểm tra mã đánh dấu dữ liệu có cấu trúc schema
Kiểm tra dữ liệu có cấu trúc

Nếu bạn thấy tick xanh hết là OK:

Schema hợp lệ
Schema hợp lệ

Hỗ trợ cho việc xuất hiện hộp tìm kiếm trên SERP, tôi dự định sử dụng đoạn schema kiểu thế này trên trang chủ:

    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "WebSite",
      "url": "https://xn--bu-x5s.com/",
      "potentialAction": {
        "@type": "SearchAction",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "https://search.xn--bu-x5s.com/rd.php?name={search_term_string}"
        },
        "query-input": "required name=search_term_string"
      }
    }
    </script>   

Bạn nên vào trang hướng dẫn trên của Google để đọc kỹ cách làm. Chỗ urlurlTemplate thay đổi theo website của bạn.

Back to Top