Skip to Content
Content and ReadabilityIssue 46

Articles published without an author

What Is This Issue

This issue checks whether blog post pages include an author biography or author information to establish content credibility and trust (E-E-A-T: Experience, Expertise, Authoritativeness, Trustworthiness).

A page passes this check if:

  • It’s a blog post or article page
  • It has a visible author biography section (author name, bio text, or credentials)
  • OR it has structured data (Schema.org) that identifies the author with a name and description

Example of passing implementation

<article> <h1>How to Improve Your SEO</h1> <p>By <strong>Jane Smith</strong></p> <div class="author-bio"> <p>Jane Smith is a Senior SEO Specialist with 10 years of experience...</p> </div> </article> <!-- With Schema.org markup --> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "BlogPosting", "author": { "@type": "Person", "name": "Jane Smith", "description": "Senior SEO Specialist with 10 years of experience" } } </script>

Example of failing implementation

<article> <h1>How to Improve Your SEO</h1> <p>Posted on January 1, 2024</p> <!-- No author information --> </article>

Important note

This check only applies to blog posts and articles, not to homepage, contact pages, or product pages.

Why Is This Important

Having author information matters for:

  • Rankings: Google’s E-E-A-T guidelines emphasize author expertise as a ranking factor, especially for “Your Money Your Life” (YMYL) content (health, finance, legal topics)
  • Trust: Users trust content more when they know who wrote it and their qualifications
  • Indexability: Search engines use author information to understand content credibility and authority
  • User experience: Readers can evaluate whether the author is qualified to write on the topic

Impact on SEO health score

Resolving this issue improves your SEO health score by establishing content credibility and demonstrating expertise to both users and search engines.

How XeoPix Detects This

XeoPix checks for author information on blog posts through these steps:

Detection process

  1. Identify blog posts: The crawler first determines if the page is a blog post or article by checking:

    • URL patterns (contains /blog/, /article/, /posts/, /news/)
    • Schema.org markup with @type: "BlogPosting", "Article", or "NewsArticle"
  2. Look for author information:

    • Structured data: Checks JSON-LD or Microdata for an author property with a Person object containing name and description
    • HTML markup: Scans for elements with class or ID names like author-bio, author-profile, about-author, or biography
  3. Extract author details: If author information is found, XeoPix extracts:

    • Author name
    • Author biography text
    • Word count of the biography
  4. Flag issues: The page is flagged if:

    • It’s a blog post but has no author bio text → WARNING
    • It’s a blog post but has no author schema markup → SUGGESTION

Important limitations

  • XeoPix only checks static HTML—not author information loaded by JavaScript
  • If author bios are added dynamically, they won’t be detected
  • Generic author names like “admin” or “staff” are considered insufficient

How To Fix

Step 1: Add an author bio section

Add an author bio section to your blog posts:

  • Place it at the end of the article or near the byline
  • Include the author’s full name
  • Write a brief professional biography (2-3 sentences minimum)
  • Add links to their professional profiles (LinkedIn, personal website)
  • Use semantic class names like class="author-bio" or id="author-biography"

Step 2: Add structured data (Schema.org)

Add structured data to your blog posts:

  • Include author information in your JSON-LD markup
  • Link your BlogPosting or Article schema to a Person object
  • Include name, description, and sameAs (links to profiles) properties

Step 3: Ensure content is visible to search engines

Make sure author information is accessible:

  • Don’t load author bios via JavaScript after page load
  • Make sure the author information is in the initial HTML response
  • Use server-side rendering (SSR) if using JavaScript frameworks

Example fix

<!-- Before: No author info --> <article> <h1>SEO Tips</h1> <p>Tips for better SEO...</p> </article> <!-- After: With author bio --> <article> <h1>SEO Tips</h1> <p>By <strong>John Doe</strong></p> <p>Tips for better SEO...</p> <div class="author-bio"> <h3>About the Author</h3> <p> <strong>John Doe</strong> is a certified SEO professional with 8 years of experience helping businesses improve their search rankings. </p> </div> </article> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "BlogPosting", "headline": "SEO Tips", "author": { "@type": "Person", "name": "John Doe", "description": "Certified SEO professional with 8 years of experience", "sameAs": ["https://www.linkedin.com/in/johndoe"] } } </script>

What We Store

Storage Level

Page Level — This issue is evaluated for each individual page crawled.


Database Table / Prisma Model

ContentReadabilityData


Stored Fields

FieldTypeDescription
articleAuthorNameString?The name of the article author
articleAuthorProfileUrlString?URL to the author’s profile page

Detection Dependencies

  • The following data sources are required to evaluate this issue:
  • HTML Document — The crawled page is analyzed for author information
  • Structured Data — Schema.org Article or Author markup may contain author information
  • Meta Tags — Author meta tags or LinkedIn/Google author profile links

Examples

Example 1: Missing author bio on blog post

Scenario: A blog post has no author information.

Problematic state (fails):

<article> <h1>10 SEO Tips for 2024</h1> <p>Posted on January 15, 2024</p> <p>Here are 10 tips to improve your SEO...</p> </article>

Corrected state (passes):

<article> <h1>10 SEO Tips for 2024</h1> <p>By <strong>Sarah Johnson</strong> | Posted on January 15, 2024</p> <p>Here are 10 tips to improve your SEO...</p> <div class="author-bio"> <h3>About the Author</h3> <p> <strong>Sarah Johnson</strong> is an SEO Consultant with 12 years of experience in digital marketing. </p> </div> </article>

Example 2: Author info only in JavaScript

Scenario: Author bio loads via JavaScript after page load.

Problematic state (fails):

<article> <h1>Content Marketing Strategies</h1> <p>Content here...</p> <div id="author-bio-container"> <!-- Author bio loaded via JavaScript --> </div> </article>

Corrected state (passes):

<article> <h1>Content Marketing Strategies</h1> <p>Content here...</p> <div class="author-bio"> <p> <strong>Mike Chen</strong> is a Content Strategist specializing in B2B marketing. </p> </div> </article>

Example 3: Using generic author name

Scenario: Using “Admin” or “Staff” as author name.

Problematic state (fails):

<article> <h1>Technical SEO Guide</h1> <p>By Admin</p> <p>Guide content...</p> </article>

Corrected state (passes):

<article> <h1>Technical SEO Guide</h1> <p>By <strong>David Wilson</strong>, Senior Technical SEO Specialist</p> <p>Guide content...</p> <div class="author-bio"> <p> <strong>David Wilson</strong> has 15 years of experience in technical SEO and site architecture. </p> </div> </article>

Unit Test

Test File

__tests__/seo-audit-checks/contentReadability/issue-70-author-bio.test.js

Purpose

Validates that the SEO audit correctly identifies blog posts missing author information and reports the AUTHOR_BIOS_BLOG issue when author metadata is absent.

Tested Function

runContentReadability() from toggleGroups/contentReadability.js

Issue Information

  • Issue Number: 70
  • Issue Code: AUTHOR_BIOS_BLOG
  • Toggle Group: contentReadability

Test Scenarios

Positive Test Cases

Scenarios where the issue should not be reported:

  • Blog post has author name via <meta name="author">
  • Blog post has author profile URL via <link rel="author">
  • Blog post has author via <meta property="article:author">
  • Non-blog pages (pages without blog post indicators)
  • Multiple author metadata elements present

Negative Test Cases

Scenarios where the issue should be reported:

  • Blog post without any author metadata (missing <meta name="author">, <link rel="author">, or <meta property="article:author">)

Boundary Cases

No explicit boundary cases defined in the test.

Edge Cases

  • Blog post detection via og:type: Pages with <meta property="og:type" content="article"> are detected as blog posts
  • Blog post detection via article:published_time: Pages with <meta property="article:published_time"> are detected as blog posts
  • Blog post detection via meta name="author": Presence of author meta tag indicates blog post
  • Non-blog pages: Pages without blog post indicators are not checked for author info

Expected Outcome

Pass

The AUTHOR_BIOS_BLOG issue should be reported when:

  • Page is detected as a blog post (via og:type, article:published_time, or author meta tags)
  • AND page does not have author information (no meta name="author", link rel="author", or meta property="article:author")

Fail

The AUTHOR_BIOS_BLOG issue should not be reported when:

  • Page is not a blog post (no blog post indicators)
  • Page is a blog post and has author information via any supported method

Validation

  • Correct detection of blog posts using multiple detection methods
  • Proper validation of author metadata in different formats
  • No false positives for non-blog pages
  • Correct handling of multiple author metadata elements
  • toggleGroups/contentReadability.js - Main toggle group implementation
  • issueCodes.js - Issue code definitions

Coverage Summary

  • ✅ Blog post detection via og:type meta tag
  • ✅ Blog post detection via article:published_time meta tag
  • ✅ Blog post detection via author meta tag
  • ✅ Author info via <meta name="author">
  • ✅ Author info via <link rel="author">
  • ✅ Author info via <meta property="article:author">
  • ✅ Non-blog page handling
  • ✅ Multiple author metadata elements
  • ✅ Missing author info detection

References

Last updated on