Data terstruktur forum diskusi (DiscussionForumPosting)

Ilustrasi fitur diskusi dan forum

Markup forum diskusi dirancang untuk semua situs bergaya forum tempat orang-orang secara kolektif berbagi perspektif langsung. Saat situs forum menambahkan markup ini, Google Penelusuran dapat mengidentifikasi diskusi online di web dengan lebih baik dan memanfaatkan markup ini dalam fitur seperti Diskusi dan Forum.

Cara menggunakan DiscussionForumPosting dalam forum

Umumnya, kami menyarankan agar komentar ditempatkan di bawah postingan terkait. Jika forum memiliki struktur rangkaian pesannya sendiri, gunakan pohon komentar untuk mewakili strukturnya:

{
  "@context": "https://schema.org",
  "@type": "DiscussionForumPosting",
  "headline": "Very Popular Thread",
  ...
  "comment": [{
    "@type": "Comment",
    "text": "This should not be this popular",
    ...
    "comment": [{
      "@type": "Comment",
      "text": "Yes it should",
      ...
    }]
  }]
}

Jika sifatnya lebih linear (misalnya, postingan asli diikuti dengan serangkaian balasan), tempatkan semuanya di bawah postingan asli sebagai komentar. Idealnya, halaman konten berikutnya di forum multi-halaman menyertakan postingan asli dengan URL halaman utama:

{
  // JSON-LD on non-threaded forum at https://example.com/post/very-popular-thread/14
  "@context": "https://schema.org",
  "@type": "DiscussionForumPosting",
  "headline": "Very Popular Thread", // Only the headline/topic is explicitly present
  "url": "https://example.com/post/very-popular-thread",
  ...
  "comment": [{
    "@type": "Comment",
    "text": "First Post on this Page",
    ...
  },{
    "@type": "Comment",
    "text": "Second Post on this Page",
    ...
  }]
}

Jika URL utamanya berisi satu postingan, gunakan mainEntity (atau mainEntityOfPage) untuk mengidentifikasi DiscussionForumPosting utama:

{
  "@context": "https://schema.org",
  "@type": "WebPage",
  "url": "https://example.com/post/very-popular-thread",
  "mainEntity": {
    "@type": "DiscussionForumPosting"
    ...
  }
}

Untuk halaman web yang memiliki daftar postingan (misalnya, di profil, topik, atau halaman kategori), biasanya halaman web tersebut tidak memiliki semua informasi di halaman yang sama dan mengharuskan pengguna mengklik untuk mendapatkan informasi tambahan (seperti balasan). Anda dapat memilih untuk hanya menyertakan informasi yang ada di halaman (dan menyertakan URL ke postingan khusus diskusi).

Jangan tandai satu postingan di halaman sebagai entitas utama jika bukan merupakan halaman diskusi untuk postingan tersebut. Untuk menunjukkan bahwa halaman merupakan rangkaian postingan terkait, sebaiknya lampirkan semuanya ke Collection atau ItemList.

Cara menambahkan data terstruktur

Data terstruktur adalah format terstandarisasi untuk memberikan informasi tentang suatu halaman dan mengelompokkan konten halaman tersebut. Jika Anda baru mengenal data terstruktur, Anda dapat mempelajari lebih lanjut cara kerja data terstruktur.

Berikut adalah ringkasan tentang cara membuat, menguji, dan merilis data terstruktur.

  1. Tambahkan properti wajib. Berdasarkan format yang Anda gunakan, pelajari tempat menyisipkan data terstruktur di halaman.
  2. Ikuti pedoman.
  3. Validasi kode Anda menggunakan Pengujian Hasil Kaya dan perbaiki setiap error kritis. Pertimbangkan juga untuk memperbaiki masalah non-kritis yang mungkin ditandai di alat tersebut, karena tindakan ini dapat membantu meningkatkan kualitas data terstruktur Anda (tetapi hal ini tidak diperlukan agar memenuhi syarat untuk hasil kaya).
  4. Deploy beberapa halaman yang menyertakan data terstruktur dan gunakan Alat Inspeksi URL untuk menguji cara Google melihat halaman tersebut. Pastikan halaman Anda dapat diakses oleh Google dan tidak diblokir oleh file robots.txt, tag noindex, atau persyaratan login. Jika halaman tidak bermasalah, Anda dapat meminta Google meng-crawl ulang URL tersebut.
  5. Agar Google tetap mengetahui setiap perubahan pada masa mendatang, sebaiknya kirimkan peta situs. Anda dapat mengotomatiskan proses ini dengan Search Console Sitemap API.

Contoh

Contoh markup berikut menunjukkan halaman forum linear tanpa rangkaian pesan:

JSON-LD

<html>
  <head>
    <title>I went to the concert!</title>
    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "DiscussionForumPosting",
      "mainEntityOfPage": "https://example.com/post/very-popular-thread",
      "headline": "I went to the concert!",
      "text": "Look at how cool this concert was!",
      "video": {
        "@type": "VideoObject",
        "contentUrl": "https://example.com/media/super-cool-concert.mp4",
        "name": "Video of concert",
        "uploadDate": "2024-03-01T06:34:34+02:00",
        "thumbnailUrl": "https://example.com/media/super-cool-concert-snap.jpg"
      },
      "url": "https://example.com/post/very-popular-thread",
      "author": {
        "@type": "Person",
        "name": "Katie Pope",
        "url": "https://example.com/user/katie-pope",
        "agentInteractionStatistic": {
          "@type": "InteractionCounter",
          "interactionType": "https://schema.org/WriteAction",
          "userInteractionCount": 8
        }
      },
      "datePublished": "2024-03-01T08:34:34+02:00",
      "interactionStatistic": {
        "@type": "InteractionCounter",
        "interactionType": "https://schema.org/LikeAction",
        "userInteractionCount": 27
      },
      "comment": [{
        "@type": "Comment",
        "text": "Who's the person you're with?",
        "author": {
          "@type": "Person",
          "name": "Saul Douglas",
          "url": "https://example.com/user/saul-douglas",
          "agentInteractionStatistic": {
            "@type": "InteractionCounter",
            "interactionType": "https://schema.org/WriteAction",
            "userInteractionCount": 167
          }
        },
        "datePublished": "2024-03-01T09:46:02+02:00"
      },{
        "@type": "Comment",
        "text": "That's my mom, isn't she cool?",
        "author": {
          "@type": "Person",
          "name": "Katie Pope",
          "url": "https://example.com/user/katie-pope",
          "agentInteractionStatistic": {
            "@type": "InteractionCounter",
            "interactionType": "https://schema.org/WriteAction",
            "userInteractionCount": 8
          }
        },
        "datePublished": "2024-03-01T09:50:25+02:00",
        "interactionStatistic": {
          "@type": "InteractionCounter",
          "interactionType": "https://schema.org/LikeAction",
          "userInteractionCount": 7
        }
      }]
    }
  </script>
</head>
<body>
</body>
</html>
Microdata

<html>
    <body>
      <div id="main-post" itemtype="https://schema.org/DiscussionForumPosting" itemscope>
        <meta itemprop="mainEntityOfPage" content="https://example.com/post/very-popular-thread" />
        <meta itemprop="url" content="https://example.com/post/very-popular-thread" />
        <div class="author-block" itemprop="author" itemtype="https://schema.org/Person" itemscope>
          <div><a href="https://example.com/user/katie-pope" itemprop="url"><span itemprop="name">Katie Pope</span></a></div>
          <div itemprop="agentInteractionStatistic" itemtype="https://schema.org/InteractionCounter" itemscope>
            <span itemprop="userInteractionCount">8</span>
            <span itemprop="interactionType" content="https://schema.org/WriteAction">posts</span>
          </div>
        </div>
        <div itemprop="datePublished" content="2024-03-01T08:34:34+02:00">March 1</div>
        <div itemprop="headline">I went to the concert!</div>
        <div>
          <div itemprop="video" itemtype="https://schema.org/VideoObject" itemscope>
            <meta itemprop="name" content="Video of concert" />
            <meta itemprop="contentUrl" content="https://example.com/media/super-cool-concert.mp4" />
            <meta itemprop="uploadDate" content="2024-03-01T06:34:34+02:00" />
            <meta itemprop="thumbnailUrl" content="https://example.com/media/super-cool-concert-snap.jpg" />
          </div>
          <span itemprop="text">Look at how cool this concert was!</span>
        </div>
        <div itemprop="interactionStatistic" itemtype="https://schema.org/InteractionCounter" itemscope>
          <span itemprop="userInteractionCount">27</span>
          <span itemprop="interactionType" content="https://schema.org/LikeAction">likes</span>
        </div>
        <div id="comment-1" itemprop="comment" itemtype="https://schema.org/Comment" itemscope>
          <div class="author-block" itemprop="author" itemtype="https://schema.org/Person" itemscope>
            <div><a href="https://example.com/user/saul-douglas" itemprop="url"><span itemprop="name">Saul Douglas</span></a></div>
            <div itemprop="agentInteractionStatistic" itemtype="https://schema.org/InteractionCounter" itemscope>
              <span itemprop="userInteractionCount">167</span>
              <span itemprop="interactionType" content="https://schema.org/WriteAction">posts</span>
            </div>
          </div>
          <div itemprop="datePublished" content="2024-03-01T09:46:02+02:00">March 1</div>
          <div>
            <span itemprop="text">Who's the person you're with?</span>
          </div>
        </div>
        <div id="comment-2" itemprop="comment" itemtype="https://schema.org/Comment" itemscope>
          <div class="author-block" itemprop="author" itemtype="https://schema.org/Person" itemscope>
            <div><a href="https://example.com/user/katie-pope" itemprop="url"><span itemprop="name">Katie Pope</span></a></div>
            <div itemprop="agentInteractionStatistic" itemtype="https://schema.org/InteractionCounter" itemscope>
              <span itemprop="userInteractionCount">8</span>
              <span itemprop="interactionType" content="https://schema.org/WriteAction">posts</span>
            </div>
          </div>
          <div itemprop="datePublished" content="2024-03-01T09:50:25+02:00">March 1</div>
          <div>
            <span itemprop="text">That's my mom, isn't she cool?</span>
          </div>
          <div itemprop="interactionStatistic" itemtype="https://schema.org/InteractionCounter" itemscope>
            <span itemprop="userInteractionCount">7</span>
            <span itemprop="interactionType" content="https://schema.org/LikeAction">likes</span>
          </div>
        </div>
      </div>
    </body>
</html>

Panduan

Agar data terstruktur forum diskusi Anda memenuhi syarat untuk digunakan di Google Penelusuran, Anda harus mengikuti pedoman berikut:

Pedoman konten

  • Hanya gunakan markup DiscussionForumPosting untuk mendeskripsikan postingan buatan pengguna di situs. Jangan gunakan markup ini untuk konten yang utamanya ditulis oleh penayang situs atau agennya.
  • Jika situs Anda lebih condong ke platform media sosial generik, Anda dapat menggunakan SocialMediaPosting, yang merupakan jenis induk DiscussionForumPosting, dengan persyaratan yang sama.
  • Meskipun kami merekomendasikan markup yang valid dari jenis lain (Article, ImageObject, VideoObject) yang dapat menggunakan markup yang sangat mirip dengan komentar, informasi penulis, statistik interaksi, jenis tersebut tidak boleh menggunakan markup DiscussionForumPosting. Berikut beberapa contohnya:

    Kasus penggunaan yang valid:

    • Halaman forum komunitas tempat pengguna dapat membicarakan tentang game tertentu
    • Platform forum generik yang menghosting berbagai konten subforum
    • Platform media sosial tempat pengguna dapat memposting dan membalas komentar atau media

    Kasus penggunaan yang tidak valid:

    • Artikel atau blog yang ditulis langsung oleh agen untuk situs (meski dengan komentar sekalipun)
    • Ulasan pengguna tentang suatu produk
  • Perhatikan bahwa untuk sebagian besar kasus penggunaan Google, halaman Tanya Jawab dianggap sebagai kasus khusus untuk halaman forum diskusi. Jika struktur situs forum utamanya berisi pertanyaan dengan jawaban, sebaiknya Anda menggunakan markup Tanya Jawab. Jika struktur lebih umum dan biasanya bukan merupakan konten tanya jawab, DiscussionForumPosting akan menjadi pilihan yang lebih baik.
  • Pastikan setiap DiscussionForumPosting mencakup seluruh teks postingan dan pastikan setiap Comment mencakup seluruh teks respons jika ditemukan di halaman tersebut.

Panduan teknis

  • Tidak seperti preferensi data terstruktur kami pada umumnya, sebaiknya sediakan markup DiscussionForumPosting di Microdata (atau RDFa) jika memungkinkan. Dengan demikian, Anda tidak perlu menduplikasi blok teks besar di dalam markup. Namun, tindakan ini hanyalah rekomendasi, dan JSON-LD masih didukung sepenuhnya.

Definisi jenis data terstruktur

Bagian ini menjelaskan jenis data terstruktur yang terkait dengan DiscussionForumPosting.

Anda harus menyertakan properti wajib agar konten Anda memenuhi syarat untuk digunakan di Google Penelusuran. Anda juga dapat menyertakan properti yang direkomendasikan untuk menambahkan informasi lain tentang halaman forum diskusi, yang akan meningkatkan pengalaman pengguna.

DiscussionForumPosting (atau SocialMediaPosting)

Jenis DiscussionForumPosting menentukan postingan asli yang merupakan topik diskusi. Meskipun jenis ini umumnya terdiri dari teks, postingan forum mungkin saja hanya berisi konten media.

Properti wajib

author

Person atau Organization

Informasi tentang penulis postingan. Untuk membantu Google memahami penulis secara optimal di berbagai fitur, sebaiknya ikuti praktik terbaik markup penulis.

Sertakan sebanyak mungkin properti yang relevan bagi penulis, menggunakan properti yang didukung dari data terstruktur artikel dan halaman profil sebagai panduan.

author.name

Text

Nama penulis postingan.

datePublished

DateTime

Tanggal dan waktu postingan dibuat dalam format ISO 8601.

Salah satu dari text, image, atau video

Untuk menampilkan konten postingan, Anda harus menyertakan salah satu properti berikut:

Tindakan ini tidak wajib jika Anda menampilkan postingan di halaman lain (dengan url eksternal) seperti di halaman forum berikutnya atau halaman kategori forum.

Properti yang direkomendasikan

author.url

URL

Link ke halaman web yang mengidentifikasi penulis postingan secara unik, kemungkinan besar adalah halaman profil forum. Sebaiknya beri markup halaman tersebut menggunakan data terstruktur halaman profil.

comment

Comment

Komentar tentang atau respons terhadap postingan, jika ada. Beri markup komentar sesuai urutan kemunculannya di halaman.

creativeWorkStatus

Text

Jika postingan telah dihapus, tetapi tetap tersedia untuk konteks atau rangkaian pesan, tetapkan properti ini ke Deleted, jika berlaku.

dateModified

DateTime

Tanggal dan waktu postingan diedit dalam format ISO 8601, jika ada. Jika tidak ada perubahan yang terjadi, tidak perlu menduplikasi tanggal publikasi.

headline

Text

Judul postingan. Jika tidak ada judul yang terpisah, jangan menduplikasi atau memotong teks menjadi judul. Tindakan ini tidak direkomendasikan untuk SocialMediaPosting.

image

ImageObject atau URL

Gambar inline apa pun dalam postingan, jika ada. Jika tidak ada gambar, jangan sertakan gambar default, ikon, atau placeholder di kolom ini.

interactionStatistic

InteractionCounter

Statistik pengguna diterapkan ke postingan utama, jika ada.

Google mendukung interactionTypes berikut:

isPartOf

CreativeWork atau URL

Sumber utama postingan jika postingan ini muncul di bagian tertentu dari keseluruhan situs, jika ada. Misalnya, subforum atau grup dalam situs yang lebih luas. Jika CreativeWork (seperti WebPage) digunakan, gunakan properti URL untuk menentukan URL-nya.

sharedContent

CreativeWork

Konten utama yang dibagikan dalam postingan, jika ada. Properti ini paling umum digunakan untuk membagikan WebPages (dengan URL) sebagai diskusi topik. Namun, gambar atau video juga dapat digunakan dengan properti ini, terutama jika gambar atau video tersebut merupakan konten utama komentar.

Berikut ini contoh cara menunjukkan bahwa terdapat link yang dibagikan dalam postingan:

  ...
  "sharedContent": { "@type": "WebPage", url: "https://example.com/external-url" }
  ...
text

Text

Teks apa pun dalam postingan, jika ada. Properti ini sangat umum, tetapi dalam beberapa kasus dapat diabaikan jika ada media lain dalam postingan.

url

URL

URL kanonis diskusi. Dalam rangkaian pesan multi-halaman, tetapkan properti ini ke URL halaman pertama. Untuk diskusi tunggal, biasanya URL-nya adalah URL saat ini.

video

VideoObject

Video inline apa pun dalam postingan, jika ada.

Comment

Jenis Comment menentukan komentar pada CreativeWork asli. Dalam hal ini, jenis ini terkait dengan DiscussionForumPosting. Jenis ini memiliki banyak properti yang sama dengan panduan kami untuk DiscussionForumPosting.

Properti wajib

author

Person atau Organization

Informasi tentang penulis komentar. Untuk membantu Google memahami penulis secara optimal di berbagai fitur, sebaiknya ikuti praktik terbaik markup penulis.

Sertakan sebanyak mungkin properti yang relevan bagi penulis, menggunakan properti yang didukung dari data terstruktur artikel dan halaman profil sebagai panduan.

datePublished

DateTime

Tanggal dan waktu komentar dibuat dalam format ISO 8601. Jika tidak ada perubahan yang terjadi, tidak perlu menduplikasi tanggal publikasi.

Salah satu dari text, image, atau video

Untuk menampilkan isi komentar, Anda harus menyertakan salah satu properti berikut:

Properti yang direkomendasikan

author.url

URL

Link ke halaman web yang mengidentifikasi penulis komentar secara unik, kemungkinan besar adalah halaman profil forum. Sebaiknya beri markup halaman tersebut menggunakan data terstruktur halaman profil.

comment

Comment

Komentar lain tentang atau sebagai respons atas komentar tersebut, jika ada. Beri markup komentar sesuai urutan kemunculannya di halaman.

creativeWorkStatus

Text

Jika komentar telah dihapus, tetapi tetap tersedia untuk konteks atau rangkaian pesan, tetapkan properti ini ke Deleted, jika berlaku.

dateModified

DateTime

Tanggal dan waktu komentar terakhir diedit dalam format ISO 8601, jika ada.

image

ImageObject atau URL

Gambar inline apa pun dalam komentar, jika ada. Jika tidak ada gambar, jangan sertakan gambar default, ikon, atau placeholder di kolom ini.

interactionStatistic

InteractionCounter

Statistik pengguna yang diterapkan pada komentar, jika ada.

Google mendukung interactionTypes berikut:

sharedContent

CreativeWork

Konten utama yang dibagikan dalam komentar, jika ada. Properti ini paling umum digunakan untuk membagikan WebPages (dengan URL) sebagai diskusi topik. Namun, gambar atau video juga dapat digunakan dengan properti ini, terutama jika gambar atau video tersebut merupakan konten utama komentar.

Berikut ini contoh cara menunjukkan bahwa terdapat link yang dibagikan dalam komentar:

  ...
  "sharedContent": { "@type": "WebPage", url: "https://example.com/external-url" }
  ...

url

URL

URL ke komentar spesifik ini di halaman, jika ada. Jangan sertakan properti ini jika itu hanya merupakan URL postingan asli.

video

VideoObject

Video inline apa pun dalam komentar, jika ada.

InteractionCounter

InteractionCounter memungkinkan jumlah dikaitkan dengan jenis interaksi tertentu. Properti ini dapat digunakan di properti konten (DiscussionForumPosting dan Comment) serta properti author.

Properti wajib

userInteractionCount

Integer

Jumlah berapa kali interaksi ini dilakukan.

interactionType

Subjenis Action

Untuk daftar subjenis Action yang valid untuk properti ini, periksa properti yang menggunakan InteractionCounter (misalnya, interactionStatistic).

Memantau hasil kaya dengan Search Console

Search Console adalah alat yang dapat membantu Anda memantau performa halaman Anda di Google Penelusuran. Anda tidak perlu mendaftar ke Search Console agar halaman Anda dapat disertakan dalam hasil Google Penelusuran. Tetapi dengan mendaftar, Anda dapat memahami dan meningkatkan cara Google melihat situs Anda dengan mudah. Sebaiknya Anda memeriksa Search Console dalam kasus berikut:

  1. Setelah men-deploy data terstruktur untuk pertama kalinya
  2. Setelah merilis template baru atau memperbarui kode
  3. Menganalisis traffic secara berkala

Setelah men-deploy data terstruktur untuk pertama kalinya

Setelah Google mengindeks halaman Anda, temukan masalah menggunakan laporan status Hasil kaya yang relevan. Idealnya, akan ada peningkatan jumlah item yang valid, sedangkan jumlah item yang tidak valid tidak berubah. Jika Anda menemukan masalah pada data terstruktur Anda:

  1. Perbaiki item yang tidak valid.
  2. Periksa URL aktif untuk memeriksa apakah masalah terus berlanjut.
  3. Minta validasi menggunakan laporan status.

Setelah merilis template baru atau memperbarui kode Anda

Saat Anda membuat perubahan yang signifikan pada situs, pantau peningkatan jumlah item yang tidak valid pada data terstruktur.
  • Jika terjadi peningkatan jumlah item yang tidak valid, mungkin Anda meluncurkan template baru yang tidak berfungsi, atau situs Anda berinteraksi dengan template yang ada dengan cara baru yang salah.
  • Jika terjadi penurunan jumlah item yang valid (tidak cocok dengan peningkatan jumlah item yang tidak valid), mungkin Anda tidak lagi menyematkan data terstruktur di halaman Anda. Gunakan Alat Inspeksi URL untuk mempelajari penyebab masalah tersebut.

Menganalisis traffic secara berkala

Analisis traffic Google Penelusuran Anda menggunakan Laporan Performa. Data akan menunjukkan seberapa sering halaman Anda muncul sebagai hasil kaya di Penelusuran, seberapa sering pengguna mengkliknya, dan posisi rata-rata halaman Anda saat muncul di hasil penelusuran. Anda juga dapat otomatis menarik hasil ini dengan Search Console API.

问题排查

如果您在实施或调试结构化数据时遇到问题,请查看下面列出的一些实用资源。

  • 如果您使用了内容管理系统 (CMS) 或其他人负责管理您的网站,请向其寻求帮助。请务必向其转发列明问题细节的任何 Search Console 消息。
  • Google 不能保证使用结构化数据的功能一定会显示在搜索结果中。如需查看导致 Google 无法将您的内容显示为富媒体搜索结果的各种常见原因,请参阅结构化数据常规指南
  • 您的结构化数据可能存在错误。请参阅结构化数据错误列表
  • 如果您的网页受到结构化数据手动操作的影响,其中的结构化数据将会被忽略(但该网页仍可能会出现在 Google 搜索结果中)。如需修正结构化数据问题,请使用“人工处置措施”报告
  • 再次查看相关指南,确认您的内容是否未遵循指南。问题可能是因为出现垃圾内容或使用垃圾标记导致的。不过,问题可能不是语法问题,因此富媒体搜索结果测试无法识别这些问题。
  • 针对富媒体搜索结果缺失/富媒体搜索结果总数下降进行问题排查
  • 请等待一段时间,以便 Google 重新抓取您的网页并重新将其编入索引。请注意,网页发布后,Google 可能需要几天时间才会找到和抓取该网页。有关抓取和索引编制的常见问题,请参阅 Google 搜索抓取和索引编制常见问题解答
  • Google 搜索中心论坛中发帖提问。