XooCode(){

LiveBlogPosting

LiveBlogPosting is an Article subtype (via SocialMediaPosting and BlogPosting) for rolling live coverage of an event. It has 3 properties of its own: coverageStartTime, coverageEndTime, and liveBlogUpdate (an array of BlogPosting entries representing individual updates). Google reads this for the live blog rich result: a live-updating card in search results with timestamped entries.

The type hierarchy is Thing → CreativeWork → Article → SocialMediaPosting → BlogPosting → LiveBlogPosting. All Article and BlogPosting properties apply. The live blog rich result requires coverageStartTime, coverageEndTime, and at least one liveBlogUpdate entry with datePublished, headline, and articleBody.

Full example of schema.org/LiveBlogPosting json-ld markup

The markup is verified as valid with Rich Results Test from Google.

Highlight legend:Required by GoogleRecommendedOptional
schema.org/LiveBlogPosting
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "LiveBlogPosting",
  "headline": "XooCon 2026 Keynote: Live Updates",
  "url": "https://xoocode.com/blog/xoocon-2026-keynote-live",
  "coverageStartTime": "2026-11-14T09:30:00-05:00",
  "coverageEndTime": "2026-11-14T11:00:00-05:00",
  "datePublished": "2026-11-14T09:30:00-05:00",
  "author": { "@type": "Person", "name": "Lena Vasquez", "url": "https://xoocode.com/team/lena-vasquez" },
  "publisher": { "@id": "https://xoocode.com#organization" },
  "image": "https://xoocode.com/blog/xoocon-2026-keynote-live/hero-16x9.jpg",
  "liveBlogUpdate": [
    {
      "@type": "BlogPosting",
      "headline": "Keynote begins: XooStructured IDE v4 announced",
      "datePublished": "2026-11-14T09:35:00-05:00",
      "articleBody": "The keynote opens with the announcement of XooStructured IDE v4, featuring AI-assisted schema generation."
    },
    {
      "@type": "BlogPosting",
      "headline": "Live demo: generating Product schema from a product page",
      "datePublished": "2026-11-14T09:50:00-05:00",
      "articleBody": "Tomás Herrera demonstrates the new AI feature, generating complete Product JSON-LD from a bare product page in under 10 seconds."
    },
    {
      "@type": "BlogPosting",
      "headline": "Q&A session begins",
      "datePublished": "2026-11-14T10:30:00-05:00",
      "articleBody": "Audience questions on schema.org support for AI-generated content and the future of structured data in LLM search."
    }
  ]
}
</script>

liveBlogUpdate

liveBlogUpdate takes an array of BlogPosting objects, each representing one update in the live blog. Each update needs datePublished (timestamp), headline (short title), and articleBody (the content). Google shows these as individual entries in the live blog rich result card, sorted by timestamp.

Minimal valid version

The smallest markup that still produces a valid LiveBlogPosting entity. Use it as the floor. Reach for the advanced example above when you want search engines and AI agents to understand more about your content.

schema.org/LiveBlogPosting (minimal)
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "LiveBlogPosting",
  "headline": "XooCon 2026 Keynote: Live Updates",
  "coverageStartTime": "2026-11-14T09:30:00-05:00",
  "coverageEndTime": "2026-11-14T11:00:00-05:00",
  "liveBlogUpdate": [
    { "@type": "BlogPosting", "headline": "Keynote begins", "datePublished": "2026-11-14T09:35:00-05:00", "articleBody": "XooStructured IDE v4 announced." }
  ],
  "url": "https://xoocode.com/blog/xoocon-2026-keynote-live"
}
</script>

Google rich results this unlocks

Markup matching this example makes your page eligible for the following Google Search rich results. The primary target drives the required / recommended property classification in the advanced code block above.

Common LiveBlogPosting mistakes

Mistakes that pass validation but silently fail to earn rich results or mislead consumers walking the graph. Avoid these and your markup will be ahead of most sites in the wild.

  1. 01

    Using BlogPosting for live coverage

    Wrong
    "@type": "BlogPosting" for rolling event coverage
    Right
    "@type": "LiveBlogPosting"

    LiveBlogPosting triggers Google's live blog rich result: a live-updating card in search results. Regular BlogPosting does not. The live card shows timestamped updates and a "Live" badge.

  2. 02

    liveBlogUpdate entries without datePublished

    Wrong
    liveBlogUpdate entries with only headline and articleBody
    Right
    Each entry needs datePublished for the timestamp

    Google sorts and displays live blog updates by timestamp. Without datePublished on each entry, Google cannot order them or show the time of each update.

About the example data

Live coverage of the XooCon 2026 keynote at The Thunderdome, published on the Xoo Code blog.

Comments

Loading comments...

Leave a comment