Embed a JSON-LD script block in your page’s <head> that nests a Person type as the author property inside your BlogPosting schema. Including your name, job title, website URL, and sameAs links to verified profiles. The schema must be in the static HTML source, never injected by JavaScript. A complete working example is below.[1]
Copy the working JSON-LD example below, replace the placeholder values with your own information, then validate using Google's Rich Results Test before publishing.
JSON-LD in static HTML is the format Google, Bing, and AI crawlers are built to read. It does not require plugins, platforms, or a developer to implement.
After adding the schema, view your page source (Ctrl+U or Cmd+U) and search for "schema.org" to confirm it appears in the raw HTML.
Schema.org markup can be implemented in three formats: Microdata (HTML attributes embedded directly in your content tags), RDFa (similar attribute-based approach), and JSON-LD (a separate JavaScript object embedded in a script tag). Google officially recommends JSON-LD, and it is the only format recommended for this project.[2]
The reason JSON-LD wins: it is completely independent of your HTML structure. You write it once in a clean block, it does not touch your visible content, and you can modify it without changing anything a visitor sees. Microdata and RDFa require weaving attributes through your content markup. Messy to write, harder to maintain, and more likely to introduce errors.
The critical implementation rule: your JSON-LD must be in the raw HTML source, not injected by JavaScript after page load. AI crawlers do not execute JavaScript. If your schema only appears after a script runs, it is invisible to GPTBot, Claude-Web, and PerplexityBot.
This is the exact pattern used on every content page of this site. Replace the values in brackets with your own information:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "BlogPosting",
"headline": "[Your page H1. Exact, verbatim]",
"description": "[Your TL;DR text. 1-2 sentences]",
"url": "https://[yourdomain.com]/[page-path]",
"datePublished": "2026-03-18",
"dateModified": "2026-03-18",
"author": {
"@type": "Person",
"name": "Cindy Anne Molchany",
"url": "https://perfectlittlebusiness.com",
"jobTitle": "Founder, Perfect Little Business",
"sameAs": [
"https://www.linkedin.com/in/cindyannemolchany/",
"https://www.instagram.com/cindyannemolchany/"
]
},
"publisher": {
"@type": "Organization",
"name": "Perfect Little Business",
"url": "https://perfectlittlebusiness.com"
}
},
{
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://[yourdomain.com]"
},
{
"@type": "ListItem",
"position": 2,
"name": "[Pillar name]",
"item": "https://[yourdomain.com]/[pillar-path]/"
},
{
"@type": "ListItem",
"position": 3,
"name": "[Cluster name]",
"item": "https://[yourdomain.com]/[cluster-path]/"
},
{
"@type": "ListItem",
"position": 4,
"name": "[Page title]",
"item": "https://[yourdomain.com]/[page-path]"
}
]
}
]
}
</script>
This block goes inside the <head> element of your HTML page, before the closing </head> tag. It is pure text. No build step, no plugin, no framework required.
For a static HTML site (like the one built by the Authority Directory Method), the implementation is direct:[3]
</head> tag. You will insert your schema block just before this closing tag.schema.org to confirm the block appears in the raw HTML.Repeat this process for every content page. The values that change per page: headline, description, url, datePublished, dateModified, and the breadcrumb trail. The author block stays identical across all pages. Because it is the same author on every page.
For a WordPress site, the most straightforward path is using Yoast SEO or RankMath. Both have author schema configuration built in. The general process:
The plugin will generate and inject the JSON-LD automatically on each page. However: verify that the schema is present in the static HTML source, not rendered client-side via JavaScript. Some plugin configurations inject schema via JS. Use View Source (not DevTools Elements panel) to confirm.
For full control, you can also add a custom JSON-LD block to your WordPress theme's header.php or use a header code plugin to insert the script tag. Manual insertion gives you more precision over exactly what appears in the schema, at the cost of more maintenance when pages change.
Schema validation is non-negotiable. An incorrectly formed JSON-LD block can be silently ignored by AI engines. The page looks fine, but the schema signal is lost. Two validation tools:
Common errors to watch for:
Run validation when you first add schema, and once per quarter thereafter. Schema is infrastructure. It needs the same maintenance attention as any other technical element of your site.
The implementation barrier here is lower than most experts expect. Author schema is not a developer task. It is a copy-paste-and-edit task. The JSON-LD format is human-readable. You can understand it without knowing how to code. The fields map directly to real things you already know about yourself: your name, your title, your URL, your LinkedIn.
What I find is that the barrier is psychological, not technical. Most entrepreneurs see <script type="application/ld+json"> and mentally file it under "things my developer handles." But when you are vibe coding your own site, this becomes your territory. And it should, because you are the person who knows your credentials best.
The FAQ cluster on this site (Cluster 3A) was the first place I added schema when I built this directory. Then author schema on every node in Cluster 1A. The combination. FAQPage + BlogPosting + Person as author. Is visible in the source of every page you are reading right now. That is not an abstraction. View Source on this page and you will see exactly the pattern described here, implemented exactly as described. The method teaches what the site does.
JSON-LD schema blocks can technically go in either the head or the body. Google recommends placing them in the head for consistency and to ensure they are parsed before the page body is processed. For AI crawlers that may not execute JavaScript, the placement in static HTML source matters. Always write the schema directly in the HTML, never inject it via JavaScript.
Every content page that was written by a named expert should carry author schema. For an Authority Directory, that means every node post. Static pages like your homepage, contact page, or terms of service do not need author schema. They are not content authored by an expert. But every piece of substantive expertise-based content should identify its author in structured data.
Yes. WordPress: use a plugin like Yoast SEO or RankMath and configure the author schema in the plugin settings, or add JSON-LD directly via a custom header code block. Squarespace and Wix: use their Code Injection features (found in site settings) to add a JSON-LD script block to page headers. For any platform, verify that the schema appears in the HTML source by using View Source. If you only see it after JavaScript renders, AI crawlers cannot read it.
Use Google's Rich Results Test (search.google.com/test/rich-results) or Schema.org's validator (validator.schema.org). Paste your page URL or the raw JSON-LD code. The validator will confirm whether the schema is valid, show you how Google parses it, and flag any missing or incorrect properties. Run validation after every schema change.
The @graph pattern lets you include multiple schema types in a single JSON-LD block, rather than writing separate script tags for each type. It is the recommended pattern for pages that stack multiple schema types. For example, BlogPosting + FAQPage + BreadcrumbList on a single node post. Using @graph keeps your schema organized and reduces HTML clutter. It is the pattern used throughout this site.
Take the free AI Visibility Scan to discover your current positioning, or explore the complete build system.