ai
Author attribution
MetricSpot looks for an `author` field in your Article schema. Named authors lift E-E-A-T — a real ranking signal since Google's helpful-content updates.
What this check does
Parses any JSON-LD on the page for @type: Article (or BlogPosting, NewsArticle) and verifies it has an author property pointing to a named Person or Organization. The author should have at least a name, ideally a url to a real author bio page.
Why it matters
E-E-A-T (Experience, Expertise, Authoritativeness, Trust) became a documented ranking factor in Google’s December 2022 quality rater guidelines, and the helpful-content system explicitly looks for “clear sourcing, evidence of the expertise involved, background about the author.” Anonymous articles get pushed down; bylined ones with linked bios get pulled up — especially in YMYL categories (health, finance, news).
LLMs use the same signal differently: ChatGPT, Perplexity, and Google AI Overviews preferentially cite content that has a verifiable author and publication date, because hallucinated quotes from anonymous sources are a known failure mode they’re tuned to avoid.
How to fix it
Add an author property to your Article JSON-LD. Minimum viable version:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "How to enable HSTS on nginx",
"datePublished": "2026-05-11",
"author": {
"@type": "Person",
"name": "Jane Doe",
"url": "https://example.com/authors/jane-doe"
}
}
</script>
Stronger version (linked Person entity, sameAs):
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "How to enable HSTS on nginx",
"datePublished": "2026-05-11",
"dateModified": "2026-05-11",
"author": {
"@type": "Person",
"name": "Jane Doe",
"url": "https://example.com/authors/jane-doe",
"jobTitle": "Senior Security Engineer",
"sameAs": [
"https://www.linkedin.com/in/janedoe",
"https://github.com/janedoe"
]
},
"publisher": {
"@type": "Organization",
"name": "Example Corp",
"url": "https://example.com"
}
}
Multiple authors: use an array.
"author": [
{ "@type": "Person", "name": "Jane Doe" },
{ "@type": "Person", "name": "John Smith" }
]
WordPress: Yoast SEO, Rank Math, and SEOPress all emit author schema automatically when each post has a user with a filled-in profile (description, website, social URLs). Don’t strip it.
Next.js: generate metadata per page or inject via <Script type="application/ld+json">:
import Script from "next/script";
export default function Post() {
return (
<>
<Script id="ld-article" type="application/ld+json">
{JSON.stringify({
"@context": "https://schema.org",
"@type": "Article",
headline: "…",
author: { "@type": "Person", name: "Jane Doe", url: "/authors/jane" }
})}
</Script>
<article>…</article>
</>
);
}
Astro: drop the JSON-LD in the <head> of your layout via a <script type="application/ld+json" set:html={JSON.stringify(schema)}> block in BaseLayout.astro.
Pair this with a visible author byline on the page — schema alone isn’t enough; readers and AI agents cross-reference visible markup against structured data, and a mismatch erodes trust.
Frequently asked questions
What if the article is written by the company, not a person?
Use "author": { "@type": "Organization", "name": "Your Company", "url": "https://example.com" }. Person authors carry more E-E-A-T weight in YMYL topics, but Organization is the honest choice for technical guides or corporate announcements.
Do I need an author page for each writer?
Strongly recommended. Google’s “About this page” feature and AI agent citation flows both follow the author.url to a bio. A real bio with credentials, sameAs links to social profiles, and a published history of posts is the single biggest E-E-A-T multiplier you can ship.
What about articleBody or mainEntityOfPage?
Both useful additions but not what this check looks for. We’re testing only for the presence of a named author. Search Central’s full Article reference lists the optional properties worth adding.
Sources
Last updated 2026-05-11