This is Part 3 of the E-E-A-T Authority series. In Part 2, we created profiles on seven platforms. Now we connect them through structured data.
Schema markup is how you translate your E-E-A-T signals into a language Google can machine-read. Without it, Google has to guess at entity relationships by crawling your HTML. With it, you are stating those relationships explicitly.
I use JSON-LD (JavaScript Object Notation for Linked Data) embedded in <script> tags in the <head> of every page. This is Google's preferred format — they have stated this publicly and repeatedly.
The Core Schema Blocks
Every site in our network includes five schema blocks. Here is what each does and why it matters.
1. Person Schema (The Author/Expert)
This establishes who creates the content. It is the most important schema for E-E-A-T because Google needs to connect content to a real, verifiable human.
{
"@context": "https://schema.org",
"@type": "Person",
"name": "J.A. Watte",
"url": "https://jwatte.com",
"image": "https://jwatte.com/images/jw-author-photo.jpg",
"jobTitle": "Author & Entrepreneur",
"address": {
"@type": "PostalAddress",
"addressLocality": "Tampa Bay",
"addressRegion": "FL",
"addressCountry": "US"
},
"knowsAbout": [
"wealth building",
"real estate investment",
"small business marketing",
"WCAG accessibility",
"Schema.org structured data"
],
"sameAs": [
"https://www.amazon.com/author/jawatte",
"https://www.wikidata.org/wiki/Q139329710",
"https://orcid.org/0009-0004-9811-6147"
]
}
Key properties explained:
-
sameAs— This is the linchpin. Each URL tells Google: "This Person entity is the same entity that exists at these external profiles." Google follows these links and cross-references the data. The more trusted the platform (Wikidata, Amazon, ORCID), the stronger the signal. -
knowsAbout— This tells Google what topics you are an expert on. When someone searches for these topics, Google can consider your content as expert-authored. -
jobTitle— Simple but often missed. Google displays this in Knowledge Panels.
2. WebSite Schema
This establishes what the site is and who publishes it.
{
"@context": "https://schema.org",
"@type": "WebSite",
"name": "J.A. Watte",
"url": "https://jwatte.com",
"description": "Author of The Trap Series...",
"publisher": {
"@type": "Person",
"name": "J.A. Watte"
},
"inLanguage": "en"
}
The publisher property connects the site to the Person entity. Google now knows: this website is published by this person who has these credentials and these external profiles.
3. Book Schema (For Product Pages)
Each book site includes a Book schema on the homepage:
{
"@context": "https://schema.org",
"@type": "Book",
"name": "The $97 Launch",
"url": "https://the97dollarlaunch.com",
"author": {
"@type": "Person",
"name": "J.A. Watte",
"sameAs": "https://www.wikidata.org/wiki/Q139329710"
},
"numberOfPages": 320,
"bookFormat": "EBook",
"isbn": "...",
"sameAs": "https://www.wikidata.org/wiki/Q139329727",
"offers": {
"@type": "AggregateOffer",
"lowPrice": "9.99",
"highPrice": "24.99",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock"
}
}
Notice the sameAs on the Book itself pointing to its Wikidata QID. And the sameAs on the nested author Person pointing to the author's Wikidata QID. Google can now connect: this book → this author → this Wikidata entity → these credentials.
4. BookSeries Schema
This groups all books under one umbrella entity:
{
"@context": "https://schema.org",
"@type": "BookSeries",
"name": "The Trap Series",
"url": "https://jwatte.com",
"sameAs": "https://www.wikidata.org/wiki/Q139329783",
"author": {
"@type": "Person",
"name": "J.A. Watte",
"sameAs": "https://www.wikidata.org/wiki/Q139329710"
},
"hasPart": [
{"@type": "Book", "name": "The W-2 Trap", "url": "https://thew2trap.com"},
{"@type": "Book", "name": "The $97 Launch", "url": "https://the97dollarlaunch.com",
"sameAs": "https://www.wikidata.org/wiki/Q139329727"},
{"@type": "Book", "name": "The $20 Dollar Agency", "url": "https://the20dollaragency.com",
"sameAs": "https://www.wikidata.org/wiki/Q139329733"}
]
}
This creates a hierarchy: Series → Books → Author. Google can now display rich results showing the entire series.
5. BlogPosting Schema (For Articles)
Every blog post includes BlogPosting schema:
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "Article Title",
"description": "Article description...",
"datePublished": "2026-08-25",
"dateModified": "2026-08-25",
"author": {
"@type": "Person",
"name": "J.A. Watte",
"url": "https://jwatte.com",
"sameAs": [
"https://www.amazon.com/author/jawatte",
"https://www.wikidata.org/wiki/Q139329710"
]
},
"publisher": {
"@type": "Person",
"name": "J.A. Watte"
},
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://jwatte.com/blog/article-slug/"
}
}
The key E-E-A-T signal here is the author object with sameAs. Every article published under your name reinforces the connection between your content and your verified identity.
Implementation: Where the Code Goes
In an Eleventy (11ty) site, schema markup lives in the base template. Here is the approach I use:
src/_includes/base.njk — Contains Person, WebSite, BookSeries, BreadcrumbList, and Speakable schemas. These appear on every page.
src/_includes/post.njk — Contains BlogPosting schema with dynamic data from the post's front matter. Only appears on blog posts.
src/index.njk — Contains Book schema and FAQPage schema. Only appears on the homepage.
The front matter of each blog post provides the data:
---
layout: post.njk
title: "Article Title"
date: 2026-08-25
pageTitle: "Article Title for Schema"
pageDescription: "Description for meta and schema."
heroImage: "/images/article-hero.webp"
tags: post
---
The template then injects these values into the schema using Nunjucks variables.
Validating Your Schema
After implementing, validate with these tools:
- Google Rich Results Test — search.google.com/test/rich-results — Shows which rich results your page is eligible for
- Schema.org Validator — validator.schema.org — Checks syntax and property usage
- Google Search Console — Monitor the "Enhancements" section for schema errors after deployment
Common mistakes I have seen:
- Missing
@contextproperty - Using
sameAswith a single URL as a string when it should be an array (both are valid, but arrays are clearer) - Mismatched author names between BlogPosting and Person schemas
- Using
Organizationas publisher when it should bePersonfor individual authors
The Cross-Reference Pattern
The most powerful pattern is making every schema reference the same central entity. I use a consistent sameAs pointing to my Wikidata QID in every Person object across all sites:
- jwatte.com → Person.sameAs → Q139329710
- thew2trap.com → Book.author.sameAs → Q139329710
- the97dollarlaunch.com → Book.author.sameAs → Q139329710
- All feeder sites → BlogPosting.author.sameAs → Q139329710
Google sees the same entity appearing as the author across 13+ sites, all pointing to the same Wikidata entity. This is convergent authority at scale.
Next: Reviews and Social Proof
In Part 4, I will cover the Trustworthiness pillar — how to systematically collect reviews, implement AggregateRating schema, and display social proof in ways that Google values.