Uporządkowane dane forum dyskusyjnego (DiscussionForumPosting)

Ilustracja przedstawiająca funkcję dyskusji i forów

Znaczniki forum dyskusyjnego są przeznaczone dla witryn w stylu forum, na których użytkownicy wspólnie dzielą się swoimi komentarzami. Gdy strony forum dodają te znaczniki, wyszukiwarka Google może lepiej rozpoznawać dyskusje online w internecie i używać tych znaczników w funkcjach takich jak Dyskusje i fora oraz Komentarze.

Jak korzystać z danych DiscussionForumPosting na forum

Ogólnie zalecamy zagnieżdżanie komentarzy pod postem, do którego się odnoszą. Jeśli forum ma własną strukturę wątków, użyj drzewa komentarzy, aby odzwierciedlić jego strukturę:

{
  "@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",
      ...
    }]
  }]
}

Jeśli ma ono bardziej liniowy charakter, np. zawiera oryginalny post, a następnie serię odpowiedzi, umieść je wszystkie pod pierwotnym postem jako komentarze. Najlepiej, gdyby późniejsze strony z treściami na wielostronicowych forach zawierały oryginalny post z adresem URL strony głównej:

{
  // 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",
    ...
  }]
}

Jeśli adres URL dotyczy głównie jednego posta, użyj elementu mainEntity (lub mainEntityOfPage), aby wskazać główny element DiscussionForumPosting:

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

W przypadku stron internetowych z listą postów (np. na stronie profilu, tematu lub kategorii) często zdarza się, że nie wszystkie informacje są widoczne na tej samej stronie, a użytkownik musi kliknąć w celu uzyskania dodatkowych informacji (np. odpowiedzi). To Ty decydujesz, czy chcesz uwzględnić tylko informacje znajdujące się na stronie (oraz dodać adres URL posta z konkretną dyskusją).

Nie oznaczaj jednego posta na stronie jako elementu głównego, jeśli nie jest to strona dyskusji dotyczącej tego posta. Aby pokazać, że strony są powiązane z zestawem postów, warto dołączyć je wszystkie do Collection lub ItemList.

Dodawanie uporządkowanych danych

Uporządkowane dane to standardowy format udostępniania informacji o stronie i klasyfikowania jej zawartości. Jeśli dopiero zaczynasz, dowiedz się, jak działają uporządkowane dane.

Poniżej omawiamy sposób tworzenia, testowania i udostępniania uporządkowanych danych. Szczegółowe instrukcje dodawania uporządkowanych danych do strony internetowej znajdziesz w ćwiczeniach z programowania poświęconych uporządkowanym danym.

  1. Dodaj wymagane właściwości. Dowiedz się, w którym miejscu na stronie umieścić uporządkowane dane w zależności od używanego formatu.
  2. Przestrzegaj wskazówek.
  3. Zweryfikuj kod za pomocą testu wyników z elementami rozszerzonymi i napraw błędy krytyczne. Rozważ też usunięcie niekrytycznych problemów, które mogą zostać zgłoszone w narzędziu – to może poprawić jakość uporządkowanych danych (ale nie jest to konieczne, aby witryna kwalifikowała się do wyników z elementami rozszerzonymi).
  4. Możesz wdrożyć kilka stron z uporządkowanymi danymi i dzięki narzędziu do sprawdzania adresów URL zobaczyć, jak Google je odczytuje. Upewnij się, że Twoja strona jest dostępna dla Google i nie jest blokowana przez plik robots.txt lub tag noindex ani nie wymaga logowania. Jeśli strona wygląda dobrze, możesz poprosić Google o ponowne zindeksowanie adresów URL.
  5. Aby na bieżąco informować Google o przyszłych zmianach, prześlij mapę witryny. Możesz zautomatyzować ten proces za pomocą interfejsu Search Console Sitemap API.

Przykłady

Poniższy przykładowy znacznik pokazuje bezwątkową, liniową stronę forum:

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

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

Wytyczne

Aby uporządkowane dane z forum dyskusyjnego mogły być używane w wyszukiwarce Google, musisz przestrzegać tych wytycznych:

Wskazówki dotyczące treści

  • Używaj znaczników DiscussionForumPosting tylko do opisywania postów użytkowników w witrynie. Nie używaj tych znaczników w przypadku treści, których głównym autorem jest wydawca witryny lub jego przedstawiciele.
  • Jeśli Twoja witryna przypomina ogólną platformę mediów społecznościowych, możesz użyć SocialMediaPosting – jest to nadrzędny typ elementu DiscussionForumPosting z tymi samymi wymaganiami.
  • Zalecamy stosowanie prawidłowych znaczników innych typów (Article, ImageObject, VideoObject), które mogą zawierać bardzo podobne znaczniki z komentarzami, informacjami o autorze i statystykami interakcji, ale nie powinny one zawierać znaczników DiscussionForumPosting. Oto kilka przykładów:

    Prawidłowe użycie:

    • Strona społeczności, na której użytkownicy mogą rozmawiać o konkretnej grze
    • Ogólna platforma z rozmaitymi treściami na podforum
    • Platforma mediów społecznościowych, na której użytkownicy mogą publikować komentarze lub multimedia i odpowiadać na nie

    Nieprawidłowe użycie:

    • Artykuł lub blog napisany bezpośrednio przez przedstawiciela witryny (nawet z komentarzami).
    • Opinie użytkowników o produkcie
  • Pamiętaj, że w większości przypadków użycia Google strona z pytaniami i odpowiedziami jest uznawana za specjalny przypadek strony forum dyskusyjnego. Jeśli struktura witryny forum składa się głównie z pytań z odpowiedziami, zalecamy użycie znaczników pytań i odpowiedzi. Jeśli struktura jest bardziej ogólna i nie obejmuje zwykle pytań i odpowiedzi, lepszym wyborem będzie DiscussionForumPosting.
  • Upewnij się, że każdy znacznik DiscussionForumPosting zawiera cały tekst posta i że każdy znacznik Comment zawiera cały tekst odpowiedzi, jeśli znajduje się ona na tej stronie.

Wskazówki techniczne

  • W odróżnieniu od naszych ogólnych preferencji dotyczących uporządkowanych danych zalecamy, aby w miarę możliwości używać znaczników DiscussionForumPosting w postaci mikrodanych (lub standardu RDFa). Zapobiega to konieczności powielania dużych bloków tekstu w znacznikach. Jest to jednak tylko zalecenie, a kod JSON-LD jest nadal w pełni obsługiwany.

Definicje typów uporządkowanych danych

W tej sekcji opisujemy typy uporządkowanych danych związane ze znacznikami DiscussionForumPosting.

Aby treści mogły być wyświetlane w wyszukiwarce Google, musisz w nich stosować wymagane właściwości. Możesz też dodawać do nich właściwości zalecane, aby wzbogacać informacje o stronach forów dyskusyjnych dla wygody użytkowników.

DiscussionForumPosting (lub SocialMediaPosting)

Typ DiscussionForumPosting określa oryginalny post, który jest tematem dyskusji. Zwykle składa się on z tekstu, ale może się zdarzyć, że post na forum będzie zawierał tylko treści multimedialne.

Właściwości wymagane

author

Person lub Organization

Informacje o autorze posta. Aby pomóc Google w lepszym rozpoznawaniu autorów w różnych funkcjach, postępuj zgodnie ze sprawdzonymi metodami dodawania znaczników autora.

Uwzględnij jak najwięcej właściwości, które są przydatne w przypadku autora, używając obsługiwanych właściwości z uporządkowanych danych artykułu i strony profilu jako wskazówek.

author.name

Text

Imię i nazwisko autora posta.

datePublished

DateTime

Data i godzina opublikowania posta w formacie ISO 8601.

Może to być text, image lub video.

Aby odzwierciedlić treść posta, musisz użyć jednej z tych właściwości:

Nie jest to wymagane, jeśli reprezentujesz posta na innej stronie (za pomocą zewnętrznego elementu url), np. na późniejszych stronach forów lub stronach kategorii forum.

Właściwości zalecane

author.url

URL

Link do strony internetowej, która jednoznacznie identyfikuje autora posta. Najprawdopodobniej jest to strona profilu na forum. Zalecamy oznaczenie tej strony za pomocą uporządkowanych danych strony profilu.

comment

Comment

Komentarz lub odpowiedź na posta (w stosownych przypadkach). Dodaj znaczniki do komentarzy w takiej kolejności, w jakiej występują na stronie.

creativeWorkStatus

Text

Gdy post został usunięty, ale pozostaje dla zachowania kontekstu lub wątku, ustaw tę właściwość na Deleted (w stosownych przypadkach).

dateModified

DateTime

Data i godzina edycji posta zostały zapisane w formacie ISO 8601 (w stosownych przypadkach). Jeśli nie nastąpiły żadne zmiany, nie musisz powielać daty publikacji.

headline

Text

Tytuł posta. Jeśli nie ma oddzielnego tytułu, nie duplikuj ani nie obcinaj tekstu w nagłówku. Nie jest to zalecane w przypadku SocialMediaPosting.

image

ImageObject lub URL

Ewentualne obrazy w treści posta. Jeśli nie ma żadnych obrazów, nie umieszczaj w tym polu obrazów domyślnych, ikon ani obrazów zastępczych.

interactionStatistic

InteractionCounter

Statystyki użytkowników zastosowane do głównego posta (w stosownych przypadkach).

Google obsługuje te dane interactionTypes:

isPartOf

CreativeWork lub URL

Główne źródło posta, jeśli post pojawi się w konkretnej części witryny (w stosownych przypadkach). Może to być na przykład forum podrzędne lub grupa w większej witrynie. Jeśli używasz właściwości CreativeWork (np. WebPage), określ jej adres URL za pomocą właściwości URL.

sharedContent

CreativeWork

Główna treść udostępniona w poście (jeśli ma zastosowanie). Najczęstszym sposobem użycia jest udostępnienie elementu WebPages (z adresami URL) jako dyskusji tematycznej. W przypadku tej właściwości można też używać obrazów i filmów, zwłaszcza jeśli stanowią one główną treść komentarza.

Ten przykład pokazuje, jak dodać informację, że w poście jest udostępniony link:

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

Text

Jakikolwiek tekst w poście (w stosownych przypadkach). Jest to bardzo częste, ale w niektórych przypadkach można go pominąć, jeśli post zawiera inne multimedia.

url

URL

Kanoniczny URL dyskusji. W wątkach wielostronicowych ustaw tę właściwość na adres URL pierwszej strony. W przypadku pojedynczej dyskusji jest to zwykle bieżący adres URL.

video

VideoObject

Filmy w treści posta (jeśli są dostępne).

Comment

Typ Comment definiuje komentarz do oryginalnego elementu CreativeWork. W tym przypadku jest to DiscussionForumPosting. Wiele takich samych właściwości jest zgodnych z naszymi wytycznymi dotyczącymi atrybutu DiscussionForumPosting.

Właściwości wymagane

author

Person lub Organization

Informacje o autorze komentarza. Aby pomóc Google w lepszym rozpoznawaniu autorów w różnych funkcjach, postępuj zgodnie ze sprawdzonymi metodami dodawania znaczników autora.

Uwzględnij jak najwięcej właściwości, które są przydatne w przypadku autora, używając obsługiwanych właściwości z uporządkowanych danych artykułu i strony profilu jako wskazówek.

datePublished

DateTime

Data i godzina dodania komentarza w formacie ISO 8601. Jeśli nie nastąpiły żadne zmiany, nie musisz powielać daty publikacji.

Może to być text, image lub video.

Aby odzwierciedlić treść komentarza, musisz użyć jednej z tych właściwości:

Właściwości zalecane

author.url

URL

Link do strony internetowej, która jednoznacznie identyfikuje autora komentarza. Najprawdopodobniej jest to strona profilu na forum. Zalecamy oznaczenie tej strony za pomocą uporządkowanych danych strony profilu.

comment

Comment

Kolejny komentarz na temat komentarza lub w odpowiedzi na niego (w stosownych przypadkach). Oznacz komentarze w takiej kolejności, w jakiej się wyświetlają na stronie.

creativeWorkStatus

Text

Jeśli komentarz został usunięty, ale pozostaje dla zachowania kontekstu lub wątku, ustaw tę właściwość na Deleted (w stosownych przypadkach).

dateModified

DateTime

Data i godzina ostatniej edycji komentarza w formacie ISO 8601 (w stosownych przypadkach).

image

ImageObject lub URL

Wszelkie obrazy w tekście komentarza, jeśli są dostępne. Jeśli nie ma żadnych obrazów, nie umieszczaj w tym polu obrazów domyślnych, ikon ani obrazów zastępczych.

interactionStatistic

InteractionCounter

Statystyki użytkowników zastosowane do komentarza (w stosownych przypadkach).

Google obsługuje te dane interactionTypes:

sharedContent

CreativeWork

Główna treść udostępniona w poście (jeśli ma zastosowanie). Najczęstszym sposobem użycia jest udostępnianie elementu WebPages (z adresami URL) jako dyskusji tematycznej. W przypadku tej usługi można też używać obrazów i filmów, zwłaszcza jeśli stanowią one główną treść komentarza.

Ten przykład pokazuje, jak dodać informację, że w komentarzu jest udostępniony link:

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

url

URL

Adres URL tego konkretnego komentarza na stronie (w stosownych przypadkach). Nie dodawaj tej właściwości, jeśli jest to tylko adres URL pierwotnego posta.

video

VideoObject

Filmy w tekście komentarza (jeśli są dostępne).

InteractionCounter

Pole InteractionCounter umożliwia powiązanie liczby z określonym typem interakcji. Można go używać zarówno we właściwościach treści (DiscussionForumPosting i Comment), jak i we właściwości author.

Właściwości wymagane

userInteractionCount

Integer

Liczba przypadków wykonania tej interakcji.

interactionType

Podtyp elementu Action

Listę prawidłowych podtypów elementu Action tej właściwości znajdziesz we właściwości korzystającej z atrybutu InteractionCounter (np. interactionStatistic).

使用 Search Console 监控富媒体搜索结果

Search Console 是一款工具,可帮助您监控网页在 Google 搜索结果中的显示效果。即使没有注册 Search Console,您的网页也可能会显示在 Google 搜索结果中,但注册 Search Console 能够帮助您了解 Google 如何查看您的网站并做出相应的改进。建议您在以下情况下查看 Search Console:

  1. 首次部署结构化数据后
  2. 发布新模板或更新代码后
  3. 定期分析流量时

首次部署结构化数据后

等 Google 将网页编入索引后,请在相关的富媒体搜索结果状态报告中查看是否存在问题。 理想情况下,有效项目数量会增加,而无效项目数量不会增加。如果您发现结构化数据存在问题,请执行以下操作:

  1. 修正无效项目
  2. 检查实际网址,核实问题是否仍然存在。
  3. 使用状态报告请求验证

发布新模板或更新代码后

如果对网站进行重大更改,请监控结构化数据无效项目的增幅。
  • 如果您发现无效项目增多了,可能是因为您推出的某个新模板无法正常工作,或者您的网站以一种新的错误方式与现有模板交互。
  • 如果您发现有效项目减少了(但无效项目的增加情况并不对应),可能是因为您的网页中未再嵌入结构化数据。请通过网址检查工具了解导致此问题的原因。

定期分析流量时

请使用效果报告分析您的 Google 搜索流量。数据将显示您的网页在 Google 搜索结果中显示为富媒体搜索结果的频率、用户点击该网页的频率以及网页在搜索结果中的平均排名。您还可以使用 Search Console API 自动提取这些结果。

Rozwiązywanie problemów

Jeśli masz problem z zastosowaniem lub debugowaniem uporządkowanych danych, skorzystaj z tych rozwiązań: