Different schema type for Topics and Posts

Continuing the discussion from Invalid Article Schema:

Currently we are using schema type DiscussionForumPosting for every post in a topic. So if a topic having 5 posts totally then in same page we rendering DiscussionForumPosting 5 times.

In this case I think it’s better to use DiscussionForumPosting only once for whole topic and Comment schema type for remaining 4 replies like below.

<div itemscope itemtype="http://schema.org/DiscussionForumPosting">

   <span itemprop="datePublished">10/05/2017</span>
	<span itemprop="headline">Sample Topic Title</span>
	<span itemprop="image">https://meta.discourse.org/image-url9.png</span>
	<div itemprop="articleBody">Topic's First Post Content</div>
    <span itemprop="author">User 1</span>
    
 	<div itemprop="comment" itemscope itemtype="http://schema.org/Comment">
    	<span itemprop="author">User 2</span>
    	<div itemprop="text">Second Post Content</div>
 	</div>
 
 	<div itemprop="comment" itemscope itemtype="http://schema.org/Comment">
    	<span itemprop="author">User 3</span>
    	<div itemprop="text">Third <b>Post</b> Content</div>
 	</div>
 
</div>
3 Likes

Why? What problem does this solve?

2 Likes

It won’t solve any big issue :slight_smile:

Since we are using DiscussionForumPosting schema for every post Google requiring valid image property for all posts. If we used DiscussionForumPosting only once for topic then we can skip this issue. And I guess this is the correct way to do.

1 Like

Currently i have not seen above schema method in discourse.

Is this method are in work in progress?

I have found one image error in schema testing tool as below.

Also, I want to hide “datePublished” items from google serp. Can anyone guide me how to do that?

No. Currently I am not sure about this change 100%. I’m unable to find any resource that recommending Comment schema type for reply posts.

Not error. It is just a warning. Google recommending the image field if available.

It is a required field.

2 Likes

I am looking to hide published date shown from google search only.

I search “Different schema type for Topics and Posts” on google and found below post.

Discourse%20Date%20Snapshot%202

It is not recommended. You have to override the show.html.erb template file with a plugin to achieve it.

6 Likes

When search “Change the domain name or rename my Discourse?” found the below article but shows the date in google serp search that when article was published 1st time in 2014.

After that there are 7 revision made on that post and last updated date in 09th December 2017.

So is there anyway to set in forum or made any changes for google to pickup “last update date” instead of “date published” ?

Google%20Structured%20Data%20Snapshot%202

I hope everyone understand my doubt. If anyone show tutorial post on google search result but that are showing 4 years backdated then there are less chances to click.

6 Likes

Ah yes, excellent point, we should check the HTML metadata there @vinothkannans to make sure for wiki posts it is using date of last edit and not date of initial posting.

6 Likes

We previously only used created_at date in datePublished schema property. Now if a post is updated then the updated_at date will used in dateModified schema property along with existing datePublished property. I did it for all the posts. Since we now including both the dates it won’t be a issue. Google search already respecting the both.

https://github.com/discourse/discourse/commit/2c12336c6b7c8223d4fa00b2e928e276224f05a5

8 Likes

#pr-welcome tag added

1 Like

I know this is a super stale thread, but I just wanted to voice my support for this approach. I’ll follow up with more official channels/recommendations in the future but I wanted to just ping here because it was your own idea.

My name is Ryan Levering and I handle structured data ingestion at Google (this guy). Discourse is sort of a snowflake in that it’s one of the only forum engines that uses DFPs at the root level for each comment in the thread. This makes it harder for us to figure out the type of the page AND to authoritatively detect the main post on the page.

We’re going to be recommending everyone use DiscussionForumPosting for the OP and then attach the rest of the responses to the original post as comment - Schema.org Property, exactly like recommended in the OP here. Other markup would be good as well (like more user interaction stats for instance), but that restructuring would go a long way toward making it easier to include Discourse forums in our features.

13 Likes

Hi Ryan,

Thanks for letting us know. We will do the required changes as soon as possible.

5 Likes

This PR will implement the behavior recommended above.

10 Likes

I’m not sure how much this is related to what you’re doing, but Google is having trouble with detecting posts/topics on my site. The canonical URLs might have some effect on how you determine the exact main post on the page.

I just got a Google Alert that a post URL like this is indexed:

  • https://forum.example.com/t/the-slug/123/16

Google Search Console confirms that the exact URL is indexed on “on Google”.

But the canonical URL that Google fetched is different:

<link rel="canonical" href="https://forum.example.com/t/the-slug/123" />

With the way Discourse is set up at the moment, those post URLs shouldn’t be indexed because the canonical URLs all point to the topic.

If you want to see those kinds of URLs getting indexed, set a Google Alert for something like site:meta.discourse.org and “all results as they happen”.

I am no canonicalization expert, so I shouldn’t say something that is wrong here. But I’m pretty sure it’s unrelated. Markup is not used at all in canonicalization as far as I know. And while I guess it could be possible to confuse systems by having a non-canonical URL have some markup that said mainEntityOfPage: <canonical-url> (so it looked like the markup was asserting that it was the main post from a different page), I haven’t seen that come up yet.

While we’re on the subject though, Discourse currently asserts that every comment/non-first-post is the mainEntityOfPage: <url>. I believe that will be true after the fix change as well. This also confuses the detection (and means we have to drop that assertion altogether). I think that with the fix it’ll give us enough signal to prevent problems now, but it’s probably better to only use that on the first post.

6 Likes

This is in process of being addressed now:

@rrlevering If you have time to spare, I would really appreciate some feedback on this:

3 Likes