Skip to Content

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 @id enables cross-page entity linking between articles and author profiles
  • Social proof: Links to LinkedIn and other professional profiles via sameAs build 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:

  1. 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
  2. Extract structured data: The crawler looks for JSON-LD, Microdata, or RDFa blocks on the page

  3. Check for Person schema: The crawler verifies if any schema block has:

    • @type set to Person
    • Required property: name
  4. Validate schema completeness: If Person schema is found, the crawler checks for:

    • jobTitle property
    • worksFor linking to Organization entity
    • sameAs linking to social profiles
    • knowsAbout expertise topics
    • @id for entity linking
  5. Trigger conditions: The issue is flagged when:

    • Author/team page doesn’t have Person schema
    • Person schema exists but is missing name property

How To Fix

  1. Create author profile pages: Create dedicated pages for each author at URLs like /author/name or /team/member-name

  2. 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" ] }
  3. Include recommended properties:

    • name: Author’s full name
    • jobTitle: Professional title
    • worksFor: 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)
  4. Link from Article schema: In your Article schema, reference the Person entity:

    "author": { "@type": "Person", "@id": "https://www.example.com/author/jane-smith" }
  5. 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

FieldTypeDescription
schemaTypeSchemaTypeThe type of schema (e.g., Organization, Person)
schemaFormatSchemaFormatThe format of the schema (JSON-LD, Microdata, RDFa)
schemaIdentifierString?Unique identifier for the schema
rawJsonJson?The raw JSON-LD or structured data content
schemaErrorsJson?Array of validation errors found in the schema
isValidSchemaBoolean?Whether the schema is valid according to validation
missingFieldsJson?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 Person schema with name and jobTitle — 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 status person-missing and detectionHints.hasAuthorContent set to true.
  • Author bio section detected: Page has elements with author-bio or profile class but no schema — issue is reported with detectionHints.hasAuthorBioSection set to true.
  • 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
  • xeopix-crawling-v2/toggleGroups/structuredDataRichResults.js
  • xeopix-crawling-v2/issueCodes.js
  • xeopix-crawling-v2/utils/context.js
  • xeopix-crawling-v2/utils/issues.js
  • xeopix-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

Last updated on