The Machines Would Appreciate More Structured Data
Tags: seo, metadata
Published: 2024-05-11 05:14:58

---
title: The Machines Would Appreciate More Structured Data
published: true
date: 2024-05-11 04:43:55 UTC
tags: seo, metadata
canonical_url: https://jamcomments.com/posts/structured-data
---

Search engines have long been scarily good at understanding content on the web, but there's still a lot to be gained by making _explicitly_ clear what you're trying to say and whom it's intended to help. Tools for doing that have existed for decades – meta tags, sitemaps, and even your `robots.txt` file, for example.

One of the more complex and less understood of these tools is **structured data** – the specially formatted information embedded onto a page, specifically intended for _machines_ to read.

Until now, those machines have almost always been _search engines._ And they've largely just used it for generating rich snippets like these:

![search results for your mom's hotdish recipe](https://cms.macarthur.me/content/images/2024/05/image-1.png)

But we're in an AI/LLM world now. The traditional understanding of a "search engine" is in flux, and our content is already being read, analyzed, categorized, and regurgitated by an entire new race of machines. I expect that to mean **structured data is about to become a whole lot more important, as is your ability to leverage it.**

## A Very Truncated History of Structured Data

If you've worked with structured data, you're probably thinking of the JSON-LD flavor found in a `<script type="application/ld+json">` tag. For a recipe, it might look like this:

```
<script type="application/ld+json">
{
	"@context": "http://schema.org/",
	"@type": "Recipe",
	"name": "Ur Mom's Hotdish",
	"author": {
		"@type": "Person",
		"name": "Ur Mom"
	},
	"description": "A really good receipe.",
	"image": "https://example.com/ur-moms-hotdish.jpg",
	"recipeIngredient": [
		"1 lb ground beef",
		"whatever's in the fridge",
		"love"
	],
	"recipeInstructions": [
		{
			"@type": "HowToStep",
			"text": "Preheat oven to 350°F."
		},
		{
			"@type": "HowToStep",
			"text": "In a skillet, cook ground beef so you don't catch a parasite."
		},
		{
			"@type": "HowToStep",
			"text": "Throw everything in the oven. Play a round of Court Whist."
		}
	],
	"recipeYield": "5 servings for each Scandinavian farmer in your family."
}
</script>
```

But that's not the syntax we started out with. _That_ story begins a bit a little earlier than you might think.

Most web page publishers probably only started caring about structured data when [Google launched rich snippets](https://developers.google.com/search/blog/2009/05/introducing-rich-snippets?ref=alex-macarthur) in 2009. At the time, two formats were supported for embedding metadata into pages – microformats and RDFa. But the roots go back a decade earlier, even before all life forms were obliterated by the Y2K bug. In fact, the concept was first championed by Mr. Internet himself – Tim Berners-Lee.

Berners-Lee wrote [Weaving the Web](https://www.w3.org/People/Berners-Lee/Weaving/Overview.html?ref=alex-macarthur) in 1999, laying out his vision for a "semantic web," a prerequisite for machines being able to read the web, form connections throughout it all, and extract meaning. Directly from that book:

> A “Semantic Web,” which makes this possible, has yet to emerge, but when it does, the day-to-day mechanisms of trade, bureaucracy, and our daily lives will be handled by machines talking to machines.

Stepping toward that meant more than writing clean HTML. It would require a standard by which ancillary information exists in the code itself – not for humans, but computers. And that gave way to the [Resource Description Framework](https://en.wikipedia.org/wiki/Resource_Description_Framework?ref=alex-macarthur) (RDF) proposed in '99, and [RDFa](https://en.wikipedia.org/wiki/RDFa?ref=alex-macarthur#:~:text=RDFa%20or%20Resource%20Description%20Framework,rich%20metadata%20within%20Web%20documents.) a few years later.

JSON-LD [initially hit the scene in 2011](https://moz.com/blog/json-ld-for-beginners?ref=alex-macarthur#:~:text=It%20is%20an%20implementation%20format,data%20vocabulary%20for%20the%20web.), as the nerd-baby of Google, Bing, Yahoo!, and Yandex. Rather than tying up all that metadata in the markup itself, JSON-LD allowed it to be neatly extracted to it's own location, making it easier to generate and maintain.

## How Structured Data Benefits You

The central purpose behind structured data is to enable machines to better understand, classify, and do something with your content. And as mentioned, rich snippets has largely been the only way that's been done. But it's been a heavy hitter.

Google has a number of [case studies](https://developers.google.com/search/case-studies/overview?ref=alex-macarthur) on this stuff, and it's impressive. For example, [Rakuten recipe pages](https://developers.google.com/search/case-studies/rakuten-case-study?hl=en&ref=alex-macarthur) saw a 2.7x increase in traffic after getting serious about structured data. And Rotten Tomatoes saw a [substantial increase in click-through rate](https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data?ref=alex-macarthur) for pages with structure data vs. those without. Looking through those case studies, I became pretty sold on the value of earning a rich snippet. And if structured data is my way to get there, I'm in.

But the "search" of the future is already looking more generative and less like showing a list of statistically valuable resources. The whole space is exploding right now, providing tremendous value, but there's also a ton of room for improvement.

Consider tools like [Perplexity](https://www.perplexity.ai/?ref=alex-macarthur), arguably one of the best AI-based alternatives to Google we have right now. It's incredible how it's able to curate and lace together sources in an eloquent, digestable way. But it's not perfect. I've personally witnessed output that _reads_ eloquently and rationally, but actually contains contradictions or untruths derived from piecing sources together in the wrong way. It seems these tools would benefit from some _structure_ to the data they're processing. Given the fact that [fewer than half](https://w3techs.com/technologies/overview/structured_data?ref=alex-macarthur) of all websites use _any_ structured data format, getting even a little serious about it could give you the edge you need _now_, and undoubtedly in the future.

With all that in mind, despite the industry being aggressively shaken up right now, investing in good structured data for your content still seems like a reasonable bet to make.

## Getting Started w/ Structured Data

If you've never spent any brain calories on this concept before, it can be a little daunting getting started. You _could_ dive head-first into [schema.org](https://schema.org/?ref=alex-macarthur) and just start absorbing, but I'm falling asleep just typing that suggestion. There are [over 800 types](https://schema.org/docs/schemas.html?ref=alex-macarthur) and countless combinations of properties you could apply to them – overwhelming. Instead, I'd take the following steps:

**First, check if it's already being generated for you.** Some platforms will automatically embed JSON-LD based on the type of content they assume you're writing. The Yoast WordPress plugin, for example, is [pretty good about it](https://yoast.com/help/implementing-schema-with-yoast-seo/?ref=alex-macarthur), and it's already found on a ton of WordPress installations (you might not even realize it's there). If that's true, be sure to verify it's valid. It's easy enough to crack open the source code and look for that `application/ld+json` script tag to do this, but you should also lean on the [Schema Markup Validator](https://validator.schema.org/?ref=alex-macarthur). If good structured data exists, it'll be listed on the page after the analysis is complete, and you can move on with your life.

If it's not already being done, spend a bit of time **looking for a reputable plugin or extension**. I mentioned Yoast, but if you're on another platform, there might be a trustworthy plugin for you to vet and adopt. [Here's one I found](https://statamic.com/addons/optimo-apps/statamic-rich-snippet?ref=alex-macarthur) for Statamic that looks solid, but it'll obviously depend on how your content's being managed, which will also determine how involved it'll require you be in setting in up.

The one word of warning here is that you should be aware of the _types_ of structured data they generate for you. Not everything's an article or website. What you _don't_ want is for a plugin to make unreasonably wide assumptions about the content you're writing, and then structure it sub-optimally.

If no other option's on the table, **you'll need to get your hands dirty and become familiar with the types and hierarchies yourself.** The go-to place for all of these is [schema.org](https://schema.org/?ref=alex-macarthur), which even has [a decent resource](https://schema.org/docs/schemas.html?ref=alex-macarthur) on exploring the more common types. But other great options exist as well, such as [json-ld.org's playground](https://json-ld.org/playground/?ref=alex-macarthur).

Once you're ready to start crafting JSON, [the aforementioned validator](https://validator.schema.org/?ref=alex-macarthur) will become a very good, helpful friend. And if you've shipped invalid structured data, Google's Search Console will help to cover your butt too. To give you a peak, here's what I recently found in the console for my personal site:

![structured data warnings in Google Search Console](https://cms.macarthur.me/content/images/2024/05/image-2.png)

Before I even saw that, I was met with an email warning me about the issues – something I very much appreciated.

### Assume There's a Type for Everything

When I first started exploring structured data, the types I would reach for were pretty limited – basically "WebPage" or "BlogPosting." But the breadth of types and subtypes is _massive,_ and could be used to classify just about anything. You can even classify any sort of [government permit](https://schema.org/GovernmentPermit?ref=alex-macarthur) with the `GovernmentPermit` type:

```
{
	"@context": "https://schema.org",
	"@type": "GovernmentPermit",
	"issuedBy": {
		"@type": "GovernmentOrganization",
		"name": "'Murica"
	},
	"issuedThrough": {
		"@type": "GovernmentService",
		"name": "The Constitution"
	},
	"name": "Freedom",
	"validFor": "'til Christ returns",
	"validIn": {
		"@type": "AdministrativeArea",
   		"name": "every square inch of this blessed land"
	}
}
```

Blog post comments are also a great example. I never bothered to build JSON-LD for comments because it never crossed my mind that search engines might be interested in categorizing them. But then, [Matt from Testfully.io](https://testfully.io/about/?ref=alex-macarthur) reached out and let me know of the ["Comment" type](https://schema.org/Comment?ref=alex-macarthur) that'd fit this type of content perfectly. It can be nested within a "CreativeWork" (like a blog post), which helps to build really clear context around _all_ of the content on a page. Even the user-generated stuff. Since discovering that, it's now auto-generated for every comment rendered by [JamComments](https://jamcomments.com/?ref=alex-macarthur).

The lesson here is to assume that your subject has a type, and if not, start looking more broadly. It'll hopefully leave your content structured in a more specific, useful way before one of the bots encounters it.

## Leave No Room for Ambiguity

I've grown a strong appreciation for the many facets of technical SEO in recent years, and how every one of those facets ladders up to making clear to search engines that your content deserves being shown to a particular user over someone else's. As a creator, you can't control which sources search engines choose to prioritize in the list of results, but you _can_ do all you can to make that decision as clear as humanly _and_ technically possible, with no room for ambiguity.

In my opinion, that's a pretty useful question to ask yourself whenever crafting content: "How can I remove every byte of ambiguity when a search engine's sizing up my content?" That's very different from writing _for_ search engines, by the way. Write for a human. Leave vivid clues for the machines.