# E-E-A-T Schema Markup: The JSON-LD That Makes Google Understand Your Brand (Part 3 of 5)

How to implement Person, Organization, Book, and BookSeries schema.org markup with sameAs, knowsAbout, and entity cross-references. The exact JSON-LD blocks that feed Google&#39;s Knowledge Graph.

Author: J.A. Watte
Published: August 25, 2026
Source: https://jwatte.com/blog/blog-eeat-schema-structured-data/

---

This is Part 3 of the [E-E-A-T Authority series](/blog/blog-eeat-authority-foundations/). In [Part 2](/blog/blog-eeat-google-wikidata-profiles/), 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.

```json
{
  "@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://orcid.org/0009-0005-4708-8120",
    "https://www.linkedin.com/in/yourprofile"
  ]
}
```

**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.

```json
{
  "@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:

```json
{
  "@context": "https://schema.org",
  "@type": "Book",
  "name": "The $97 Launch",
  "url": "https://the97dollarlaunch.com",
  "author": {
    "@type": "Person",
    "name": "J.A. Watte",
    "sameAs": "https://orcid.org/0009-0005-4708-8120"
  },
  "numberOfPages": 320,
  "bookFormat": "EBook",
  "isbn": "...",
  "offers": {
    "@type": "AggregateOffer",
    "lowPrice": "9.99",
    "highPrice": "24.99",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock"
  }
}
```

Notice the nested `author` Person with a `sameAs` to a persistent author identifier like ORCID. Google can now connect: this book → this author → the author's verified credentials across the web.

### 4. BookSeries Schema

This groups all books under one umbrella entity:

```json
{
  "@context": "https://schema.org",
  "@type": "BookSeries",
  "name": "The Trap Series",
  "url": "https://jwatte.com",
  "author": {
    "@type": "Person",
    "name": "J.A. Watte",
    "sameAs": "https://orcid.org/0009-0005-4708-8120"
  },
  "hasPart": [
    {"@type": "Book", "name": "The W-2 Trap", "url": "https://thew2trap.com"},
    {"@type": "Book", "name": "The $97 Launch", "url": "https://the97dollarlaunch.com"},
    {"@type": "Book", "name": "The $20 Dollar Agency", "url": "https://the20dollaragency.com"}
  ]
}
```

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:

```json
{
  "@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://orcid.org/0009-0005-4708-8120"
    ]
  },
  "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:

```yaml
---
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:

1. **Google Rich Results Test**. [search.google.com/test/rich-results](https://search.google.com/test/rich-results). Shows which rich results your page is eligible for
2. **Schema.org Validator**. [validator.schema.org](https://validator.schema.org/). Checks syntax and property usage
3. **Google Search Console**. Monitor the "Enhancements" section for schema errors after deployment

Common mistakes I have seen:
- Missing `@context` property
- Using `sameAs` with 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 `Organization` as publisher when it should be `Person` for individual authors

## The Cross-Reference Pattern

The most powerful pattern is making every schema reference the same central author entity. I use a consistent `sameAs` pointing to a persistent identifier (such as an ORCID iD) plus stable author profile URLs in every Person object across all sites:

- jwatte.com → Person.sameAs → ORCID + Amazon + Goodreads
- thew2trap.com → Book.author.sameAs → same identifier set
- the97dollarlaunch.com → Book.author.sameAs → same identifier set
- All feeder sites → BlogPosting.author.sameAs → same identifier set

Google sees the same entity appearing as the author across 13+ sites, all pointing to the same verified identifier set. This is convergent authority at scale.

## Next: Reviews and Social Proof

In [Part 4](/blog/blog-eeat-reviews-social-proof/), I will cover the Trustworthiness pillar. How to systematically collect reviews, implement AggregateRating schema, and display social proof in ways that Google values.


---

Canonical HTML: https://jwatte.com/blog/blog-eeat-schema-structured-data/
RSS: https://jwatte.com/feed.xml
JSON Feed: https://jwatte.com/feed.json
Hero image: https://jwatte.com/images/blog-eeat-schema-structured-data.webp
