Structured Data for Live Blogs from Google

[vc_row][vc_column width=”1/1″][vc_column_text]Note: this post is more commentary and musings as opposed to a tactics for implementing this new markup. You’ve been warned.

Google announced the public availability of a new schema this week for live blogs. Coming off of Gary Illyes (Google’s) comments during his State of Search keynote this week that Google will be pushing aggressively on both mobile and structured data in 2016, I think this is something we should take notice of early on.

It should be noted right off the bat that while anyone can start using the schema immediately, Google’s only piloting the search feature (i.e. the Live Blog Carousel – see GIF below) that the schema powers with a “small set of initial providers”. Also note that the markup won’t even validate in Google’s own Structured Data Testing Tool just yet (but the structured data linter will validate it, if you don’t mind your eyes bleeding (I seriously love that tool, though)).

Nonetheless, we’ve gotta start talking about this! Because – structured data!

So What Is Live Blog Structured Data Anyway?

In simple terms, live blog structured data refers to semantic markup that we can apply to a live blog on a site so that engines like Google can understand that a live blog is more than just a standard “BlogPosting”. What this will allow us to do is actually group dozens of “BlogPostings” under a single “LiveBlogPosting” entity.

I’m mainly familiar with live blogging because of the conferences I’ve attended and spoken at, so I realize that not every one might know what this markup is for. Well, here’s an example of a Live blog that Bruce Clay put together for one of my SMX talks back in the day. Here’s another one from Search Engine Land. At its most basic level, Live Blogging simply involves continually updating a single post (i.e. URL) with more content as it happens. This can be done with a plugin specially designed for live blogging or you can just keep hitting the “Update” button in WordPress to keep adding to the post as you work on it. I’m actually doing the later as I write this, because why not?

Live blog structured data will actually let you markup each successive addition to the rolling blog post in a format that Google will be able to understand. As a major event is happening, Google will then be able to pull out the most recent or most relevant segment of your live blog to display in their live blog carousel.

Live blog structured data gives you this!
Live blog structured data gives you this!

Requirements for Implementing Live Blog Structured Data

In order to provide Google with enough data to make your live blog eligible for the new carousel (again, not universally available to webmasters at this point), here’s what’s required.

For the overarching post:

  • A URL (duh)
  • A description of the event being covered
  • (Recommended) Coverage start and end times

Within this overarching post, you’ll need nested Live Blog Updates (contained in an array, don’t worry about this if you’re not super technical). Each will need the following data points:

  • Date the individual update was made/published in ISO 8601 format
  • The individual update’s URL (ie. /my-event-live-blog?update=13 or /my-event-live-blog#post13)
  • (Optional) A “headline” for the individual update.
  • (Optional) An “articleBody” that contains the text content for the update.

It’s funny that the only required semantic data points are the date and the URL. If it was just those two pieces of info for each successive update, it would be a pretty boring live blog. 🙂

One interesting point to note is that the “articleBody” really only wants plain text. You can include line breaks if you so desire, but you’ll need to add a @type of rfd:HTML to the “articleBody” in that case.

What the Data Looks Like

You can get the code specifics over at Google, but here’s a more human-readable format of what the data would look like. Required and recommended data points are in bold.

  • LiveBlogPosting URL
  • LiveBlogPosting About
    • Start Date
    • Name
    • Locatoin
      • Venue Name
      • Address
        • Street Address
  • Coverage Start Time
  • Coverage End Time
  • Headline
  • Description
  • Live Blog Updates (all contained in a JS array – sorry, developer speak)
    • Post with headline, URL, date/timestamp, and body
    • Post with headline, URL, date/timestamp, and body
    • Post with headline, URL, date/timestamp, and body

Implementing Live Blog Structured Data

This new markup presents an interesting challenge: unlike the other major types of SEO-centric structured data, no one in their right mind is going try to hardcode this into their WordPress posts. Well, I mean, I’d probably be silly enough to try.

Live Blog Update at 2015-11-20T06:04:13

Yeah, so I ended up doing it. I created a text macro using TextExpander that would pull up a template with a text field for the headline and body, plus a dynamically-populated timestamp.

text macro for creating live blog structured data on the fly
My new liveBlogUpdate macro in TextExpander

And Here’s Where I Went Wrong

C’mon, Arnesen. Before thinking this through, I realized that this needs to be done in JSON-LD. Google isn’t supporting in-line markup. That means you can’t hardcode live blog structured data into a blog post if you wanted to! It needs to be contained in the <head> of your page and, therefore, probably needs to be injected by the CMS or a plugin. One thing you could do if you wanted to hack something together (which I kind of do) is to write a script using jQuery to find each “liveBlogUpdate” using a unique identifier, then pull out and parse the data on the fly, and output a JSON-LD formatted script. I might be overcomplicating this.

Final Thoughts, For Now

After peering down this rabbit hole, I think that what successful adoption of live blog structured data is going to be contingent on is for plugin authors to update their plugins to inject JSON-LD as their tool’s being used. For major publications or smaller sites who have the ability, this will necessitate customizing their publishing platform/CMS to take care of this markup.

Even though I don’t live blog much (i.e. at all), I’m excited to try getting this implemented in some way. Anyone have any ideas?[/vc_column_text][/vc_column][/vc_row]

Related Posts

Leave a Reply

Your email address will not be published.