I'm a server-side developer dabbling in structured data (Schema.org) for the first time.

The web application I'm developing contains user generated "topics" in which said users can submit bite-sized text/image posts associated to the topic. It's kind of a cross between Reddit and Twitter.

I want to lace the HTML template files with relevant structured data.

My question is quite rudimentary:

Should I mark out the body as itemscope itemtype="http://schema.org/Blog" and each user's submission as itemprop="blogPosts" itemscope itemtype="http://schema.org/BlogPosting"?

It's not really a traditional blogging website, so I was wondering what industry experts would have done if they were in my shoes.

  • 1
    If you only want to add structured data because you want to get rich results in search engines, you have to follow each search engine’s documentation for the rich result. In that case, please reference the rich result(s) you want to get -- you can then ask if, or how, your pages could qualify for this rich result. --- The alternative is to ask what the best Schema.org representation would be for your content, but that doesn’t necessarily enable rich results.
    – unor
    May 9, 2019 at 23:55
  • 1
    @unor: thanks for the nuanced insight. So if I'm just focused on the best schema.org representation for a web app like mine, do you suggest http://schema.org/Blog and its related attributes to be the right schema? Or any other comes to mind as well? How would you have done this? May 10, 2019 at 3:37

1 Answer 1


If it’s not a blog post (BlogPosting), I would suggest to use the parent type SocialMediaPosting:

A post to a social media platform, including blog posts, tweets, Facebook posts, etc.

There is no equivalent for Blog, though, but that’s not necessary anyway:

  • If there is one page per topic, and all posts appear on this page, you could use WebPage with about (for representing the topic) and hasPart (for referencing each SocialMediaPosting).

  • If each post appears on its own page, you could use ItemPage with mainEntity (for referencing the SocialMediaPosting), and in the SocialMediaPosting, you could use about (to reference the topic, which could be represented on its own page).

If these aren’t really topics the posts are about, but more like categories/sections the posts belong to, you could use articleSection instead of about.

  • Thanks for the helpful alternatives unor! May 10, 2019 at 5:16
  • Quick question: would utilizing a CollectionPage instead of WebPage make more sense in a scenario like this? Each topic page can be likened to a collection of social-media postings about the given topic, so that's why I figured maybe this more specific type would be a good fit. May 11, 2019 at 8:42
  • 1
    @HassanBaig: I went with WebPage, because I wasn’t sure what the focus on such a topic page is. If the focus is on the posts, the CollectionPage type makes sense. But if the focus is on the topic, I think it’s not a good match, and neither is ItemPage (because, next to the topic, there are also the posts), so WebPage seems to be the safest choice in that case.
    – unor
    May 11, 2019 at 13:09
  • 1
    @HassanBaig: Yes, I would go with CollectionPage then, for the topic pages.
    – unor
    May 11, 2019 at 13:19
  • 1
    @HassanBaig: Yes, with the comment property on SocialMediaPosting: comment Comment
    – unor
    May 11, 2019 at 15:15

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.