Author bios on blog posts
Issue No: 70
Category: Content & Readability
Issue type: Warning
Priority: IMPORTANT
Description
Verifies if blog post pages contain a discoverable author biography or associated author structured data to establish content authority and trust (E-E-A-T).
How do we capture it
The crawler issues an HTTP GET request to the target page, following redirect rules, and inspects the raw HTML response.
- Blog Detection: The crawler parses the HTML to confirm if the page is a blog post or informational article by checking for the presence of JSON-LD or Microdata specifying
@type: "BlogPosting","NewsArticle", or"Article", or via semantic URL paths containing segments like/blog/,/article/,/posts/, or/news/. - Author Extraction: If the page is classified as a blog post, the crawler parses the HTML text to look for structured author markup: Extract JSON-LD or Microdata blocks. Inspect the
authorproperty within the main article schema block. If found, verify if it contains aPersonobject with a populateddescriptionorsameAsarray. - Semantic HTML Analysis: Scan the raw HTML for tag classes or IDs matching author patterns (e.g.,
class="author-bio",class="author-profile",id="about-author", orclass="biography"). - Text-Length Parsing: If a biographical block or author description schema property is found, extract the plain text, strip HTML tags, normalize whitespace, and count the word and character lengths.
- Constraint: The crawler does not execute JavaScript. If the blog post's author block or schema data is rendered client-side (e.g., via single-page application hydration), it will not be detected. This behavior is expected and recorded as a lack of static author markup.
What to store
| Field | Type | Comment |
|---|---|---|
is_blog_post | BOOLEAN | Indicates whether the crawled URL is classified as a blog post or informational article. |
has_author_name | BOOLEAN | True if an author name is explicitly declared in the HTML or structured metadata. |
has_author_schema | BOOLEAN | True if schema.org metadata includes a valid author block under the Article or BlogPosting definition. |
has_author_bio_text | BOOLEAN | True if a text description or bio is found inside either schema or marked-up HTML containers. |
author_name_string | VARCHAR(255) | The extracted plain-text name of the author, sanitized and normalized. |
author_bio_word_count | INTEGER | The total word count of the detected author biography block. |
Condition for trigger
The following trigger rules evaluate whether a crawled blog post lacks the necessary credibility and authority markers.
-
Trigger Rule 1: Missing Author Bio
- Target Field:
has_author_bio_text - Evaluation Logic:
is_blog_post = TRUE AND has_author_bio_text = FALSE - Severity: WARNING
- Diagnostic Message: "This blog post lacks a detectable author biography block in the HTML, missing a crucial credibility signal for search engines."
- Target Field:
-
Trigger Rule 2: Missing Author Metadata
- Target Field:
has_author_schema - Evaluation Logic:
is_blog_post = TRUE AND has_author_schema = FALSE - Severity: SUGGESTION
- Diagnostic Message: "No structured metadata (Schema.org Author) was detected on this blog post. Adding JSON-LD author entities helps explicitly define authority."
- Target Field:
Sources
- Google Search Central - E-E-A-T Quality Rater Guidelines: https://developers.google.com/search/docs/fundamentals/creating-helpful-content
- Schema.org - Author Property Reference: https://schema.org/author
- W3C HTML Living Standard - The address element: https://html.spec.whatwg.org/multipage/sections.html#the-address-element
Long description
Search engine ranking algorithms, particularly Google's, place heavy emphasis on E-E-A-T (Experience, Expertise, Authoritativeness, and Trustworthiness). To establish trust, search engines must easily determine who wrote a piece of content, what their qualifications are, and where else their expertise is demonstrated.
When a blog post fails to provide an author biography, it functions as a critical negative quality signal. Users and search crawlers cannot verify the author's credentials, which is especially damaging for "Your Money Your Life" (YMYL) content covering health, finance, or legal topics.
Common failure scenarios checked by the crawler include:
- Anonymous Authorship: The post is attributed to generic handles like "admin", "staff", or the organization name itself without an accompanying bios.
- Inaccessible Rendering: The author bio is dynamically loaded or fetched via an API client-side, leaving the search bot with a blank container in the raw HTML payload.
- Incomplete Schema: An author name exists in the text, but the structured metadata (JSON-LD) completely omits the
authorfield, preventing search engines from mapping the author node to external entities (such as social profiles).
How to Fix
- Embed a Static Bio Block: Implement a dedicated author biography section (e.g., at the end of the blog post) containing the author's full name, headshot, a brief professional summary explaining their expertise, and links to their personal website or professional networks (like LinkedIn). Ensure this section is rendered directly in the initial server-side HTML payload.
- Implement JSON-LD Metadata: Inject valid Schema.org metadata (inside
<script type="application/ld+json">) within the document. Link the mainBlogPostingorArticlenode to anauthorobject of typePerson. - Populate Identity Fields: Within the JSON-LD
Personblock, include:"name"(The author's full professional name),"jobTitle"(Their professional title or role),"description"(A brief background narrative demonstrating expertise), and"sameAs"(An array of URLs containing links to their active social profiles, personal websites, or other verified columns).