No Person schema on an author profile
What Is This Issue
Author profile or team member pages are missing Person schema, weakening E-E-A-T signals and preventing attribution of content to a verified, machine-readable author entity.
Without Person schema:
- Search engines can’t verify the author’s identity and credentials
- E-E-A-T (Experience, Expertise, Authoritativeness, Trustworthiness) signals are weakened
- Content can’t be properly attributed to a specific person
- Author information won’t appear in rich results
- AI search engines can’t understand author expertise and authority
A proper Person schema should include: @type (Person), name, and optionally jobTitle, worksFor, sameAs (social profiles), knowsAbout, image, @id (for entity linking).
Why Is This Important
Person schema is critical for E-E-A-T and content attribution:
- E-E-A-T signals: Creates a machine-readable chain: article → written by → person → works for → organization
- Author attribution: Enables proper attribution of content to specific authors
- Rich results: Author information can appear in article rich results
- AI search readiness: AI engines use Person schema to understand author expertise and authority
- Entity linking: Using
@idenables cross-page entity linking between articles and author profiles - Social proof: Links to LinkedIn and other professional profiles via
sameAsbuild credibility
Resolving this issue improves your SEO health score by strengthening E-E-A-T signals and ensuring proper content attribution.
How XeoPix Detects This
XeoPix follows these logical steps to detect missing Person schema:
-
Detect author/team pages: The crawler identifies pages with:
- URL patterns (
/author/,/team/,/bio/,/about/) - Visible author information (byline, author bio section)
- Team member profiles
- URL patterns (
-
Extract structured data: The crawler looks for JSON-LD, Microdata, or RDFa blocks on the page
-
Check for Person schema: The crawler verifies if any schema block has:
@typeset toPerson- Required property:
name
-
Validate schema completeness: If Person schema is found, the crawler checks for:
jobTitlepropertyworksForlinking to Organization entitysameAslinking to social profilesknowsAboutexpertise topics@idfor entity linking
-
Trigger conditions: The issue is flagged when:
- Author/team page doesn’t have Person schema
- Person schema exists but is missing
nameproperty
How To Fix
-
Create author profile pages: Create dedicated pages for each author at URLs like
/author/nameor/team/member-name -
Add Person JSON-LD structured data to author profile pages:
{ "@context": "https://schema.org", "@type": "Person", "@id": "https://www.example.com/author/jane-smith", "name": "Jane Smith", "jobTitle": "Senior SEO Analyst", "worksFor": { "@type": "Organization", "name": "Example Corp" }, "knowsAbout": ["SEO", "Structured Data", "Technical SEO"], "sameAs": [ "https://linkedin.com/in/janesmith", "https://twitter.com/janesmith" ] } -
Include recommended properties:
name: Author’s full namejobTitle: Professional titleworksFor: Organization the author works for (link to Organization schema)sameAs: Array of URLs to social profiles (LinkedIn, Twitter, etc.)knowsAbout: Array of topics/expertise areas@id: Unique identifier for entity linking (use author profile URL)
-
Link from Article schema: In your Article schema, reference the Person entity:
"author": { "@type": "Person", "@id": "https://www.example.com/author/jane-smith" } -
Validate with Google’s Rich Results Test
What We Store
Storage Level
Page Level — This issue is evaluated for each individual URL that contains structured data.
Database Table / Prisma Model
PageStructuredData
Stored Fields
| Field | Type | Description |
|---|---|---|
| schemaType | SchemaType | The type of schema (e.g., Organization, Person) |
| schemaFormat | SchemaFormat | The format of the schema (JSON-LD, Microdata, RDFa) |
| schemaIdentifier | String? | Unique identifier for the schema |
| rawJson | Json? | The raw JSON-LD or structured data content |
| schemaErrors | Json? | Array of validation errors found in the schema |
| isValidSchema | Boolean? | Whether the schema is valid according to validation |
| missingFields | Json? | Array of required fields that are missing |
Detection Dependencies
- The following data sources are required to evaluate this issue:
- HTML Document — The crawler parses the HTML to find structured data (JSON-LD, Microdata, RDFa)
- Structured Data Validation — The extracted schema is validated against Schema.org definitions
- Schema Parser — JSON-LD scripts, Microdata attributes, and RDFa markup are parsed
Examples
Example 1: Missing Person Schema on Author Page
Problematic state:
<!-- Author page without Person schema -->
<html>
<head>
<title>Jane Smith - Author</title>
</head>
<body>
<h1>Jane Smith</h1>
<p>Senior SEO Analyst at Example Corp</p>
<p>Expertise: SEO, Structured Data, Technical SEO</p>
<a href="https://linkedin.com/in/janesmith">LinkedIn</a>
</body>
</html>Corrected state:
<!-- Author page with Person schema -->
<html>
<head>
<title>Jane Smith - Author</title>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Person",
"@id": "https://www.example.com/author/jane-smith",
"name": "Jane Smith",
"jobTitle": "Senior SEO Analyst",
"worksFor": {
"@type": "Organization",
"name": "Example Corp"
},
"knowsAbout": ["SEO", "Structured Data", "Technical SEO"],
"sameAs": [
"https://linkedin.com/in/janesmith",
"https://twitter.com/janesmith"
]
}
</script>
</head>
<body>
<h1>Jane Smith</h1>
<p>Senior SEO Analyst at Example Corp</p>
<p>Expertise: SEO, Structured Data, Technical SEO</p>
<a href="https://linkedin.com/in/janesmith">LinkedIn</a>
</body>
</html>Example 2: Person Schema Without Entity Linking
Problematic state:
{
"@context": "https://schema.org",
"@type": "Person",
"name": "John Doe",
"jobTitle": "Content Writer"
}Missing @id for entity linking and worksFor for organization connection
Corrected state:
{
"@context": "https://schema.org",
"@type": "Person",
"@id": "https://www.example.com/author/john-doe",
"name": "John Doe",
"jobTitle": "Content Writer",
"worksFor": {
"@type": "Organization",
"@id": "https://www.example.com",
"name": "Example Corp"
},
"sameAs": ["https://linkedin.com/in/johndoe"]
}Example 3: Linking Article to Person Schema
Corrected state - Article with author reference:
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "SEO Best Practices for 2024",
"author": {
"@type": "Person",
"@id": "https://www.example.com/author/jane-smith"
},
"publisher": {
"@type": "Organization",
"@id": "https://www.example.com",
"name": "Example Corp"
}
}The @id in author references the Person schema on the author’s profile page
Unit Test
Test File
xeopix-crawling-v2/__tests__/seo-audit-checks/structuredDataRichResults/issue-148-person-schema.test.js
Purpose
Validates that the crawler correctly detects when a page with author/person content (author meta, bio sections, job titles) is missing a Person schema.
Tested Function
runStructuredDataRichResults()
Issue Information
- Issue Number: 148
- Issue Code:
person_schema_author - Toggle Group:
structuredDataRichResults
Test Scenarios
Positive Test Cases
- Person schema present: Page has a
Personschema withnameandjobTitle— no issue reported. - No author content: Page has no author or person-related content — no issue reported.
Negative Test Cases
- Author meta tag detected: Page has
<meta name="author">but no Person schema — issue is reported with statusperson-missinganddetectionHints.hasAuthorContentset totrue. - Author bio section detected: Page has elements with
author-bioorprofileclass but no schema — issue is reported withdetectionHints.hasAuthorBioSectionset totrue. - Title indicates author/profile: Page title contains “About Me” or similar author indicators — issue is reported.
- Job title patterns detected: Page contains job title patterns like “senior developer” or “lead engineer” — issue is reported.
Boundary Cases
None.
Edge Cases
- Empty HTML:
<html></html>— no issue reported, no crash. - Malformed HTML: Unclosed tags — no crash.
Expected Outcome
Pass
Issue should not be reported when a Person schema is present or when the page has no author/person content.
Fail
Issue should be reported when the page contains author or person-related content (meta author, bio sections, job titles) but lacks a Person schema. The details.status is person-missing and detection hints indicate which patterns were matched.
Validation
- Correct issue detection when author content exists without schema
- No issue detection when Person schema is present
- No issue detection when no author content exists
- Detection hints (
hasAuthorContent,hasAuthorBioSection) populated correctly - Graceful handling of empty and malformed HTML
Related Production Files
xeopix-crawling-v2/toggleGroups/structuredDataRichResults.jsxeopix-crawling-v2/issueCodes.jsxeopix-crawling-v2/utils/context.jsxeopix-crawling-v2/utils/issues.jsxeopix-crawling-v2/utils/schema.js
Coverage Summary
- Covers presence of Person schema
- Covers detection of author meta tag, bio sections, title patterns, and job titles
- Covers absence of false positives when no author content exists
- Covers empty HTML resilience
- Covers malformed HTML resilience
References
- Schema.org — Person — Schema.org
- Google — Article Author Guidelines — Google Search Central
- Google — E-E-A-T — Google Search Central