Rule referencecontent/eeat-signals

E-E-A-T Signals — When a Page Carries No Evidence of Who Wrote It

content/eeat-signals checks four trust categories on every page — an about-page link, an author byline, a published date, and a sources or references marker — then fires at info severity for any URL carrying fewer than 2 of the 4, the anonymity pattern Google's E-E-A-T framework has weighed against pages since its December 2022 Quality Rater Guidelines update.

Test your site for e-e-a-t signals — when a page carries no evidence of who wrote it

Loading bot check… if this doesn't resolve in a few seconds, refresh the page.

We'll surface findings tagged with `content/eeat-signals`.

What it detects

content/eeat-signals scores each page against four independent trust categories and counts how many it carries. The first is an about-page link: the rule scans the page's resolved hrefs for any URL matching '/about'. The second is an author signal, satisfied if the page exposes a non-empty author meta tag, a schema.org author, a byline element, or a rel=author link. The third is a published date the parser could extract. The fourth is a 'sources' category, matched when the raw HTML contains any of five patterns: 'last updated', 'last modified', 'reviewed by', 'sources:', or 'references:'.

A page passes if it carries 2 or more of those 4 categories. Any page below that floor is flagged. The rule never inspects the quality of the byline or the accuracy of the date — it only asks whether the markers of accountability are present at all. The point is structural: a page that names nobody, dates nothing, links to no about page, and cites no source is anonymous by construction, and anonymity is the baseline condition Google's trust evaluation reads first.

Why it matters

E-E-A-T — Experience, Expertise, Authoritativeness, Trustworthiness — is how Google's raters decide whether a page deserves trust, and trust starts with knowing who is speaking. A page with no author, no date, and no sources gives a rater nothing to evaluate, so it defaults to the floor. This rule catches the corpora most prone to that failure: programmatically generated pages, where the template binds entity data into the body but forgets that a real publisher signs its work.

The cost is highest on Your-Money-or-Your-Life topics — health, finance, legal, safety — where Google's guidelines demand visible expertise before a page can rank. But the markers are cheap to add and the absence is conspicuous at scale: ten thousand undated, unsigned pages on one template is a clean tell that no human stood behind any of them. The rule fires at info severity because a single missing signal is guidance, not a verdict — but a whole corpus stuck below the 2-of-4 floor is a structural credibility gap that pairs badly with thin-content or near-duplicate findings on the same pages.

A page that fails

/guides/how-to-refinance-a-mortgage on a programmatically generated finance site. The body is 1,200 words of real advice, but there is no byline, no published or updated date, no link to an about page, and no sources or references block anywhere in the HTML. The page carries 0 of the 4 trust categories. The rule fires at info: '/guides/how-to-refinance-a-mortgage has fewer than 2 out of 4 E-E-A-T signal categories.'

A page that passes

The same refinance guide, reissued with accountability attached: a byline reading 'Reviewed by Dana Okafor, CFP' resolves the author category, a visible 'Last updated March 4, 2026' line satisfies both the date and the 'last updated' sources pattern, and a footer link to /about-our-editorial-team adds the about category. The page now carries 4 of 4 categories, clears the 2-of-4 floor with room to spare, and a rater can see exactly who stands behind the advice.

How to fix it

  1. 1Add a real author byline to every template. A meta author tag, a schema.org author property, a visible byline element, or a rel=author link each satisfies the author category — pick one and bind a genuine name, not a brand placeholder.
  2. 2Expose a published or updated date. The rule reads the date the parser extracts, so surface a real article:published_time or a visible 'Last updated' line rather than leaving the page undated.
  3. 3Link to an about page from the template footer or header. Any href matching '/about' resolves the category, and one shared link covers the whole corpus at once.
  4. 4Cite sources where the topic warrants it. A 'Sources:' or 'References:' block, or a 'Reviewed by' line, matches the rule's patterns and gives readers and raters something to verify against.
  5. 5Treat a site-wide finding as a template fix, not a per-page chore. When every page is below the floor, the cause is one template missing accountability markers — add them once at the template level and the whole cluster clears.
  6. 6Prioritise the fix on Your-Money-or-Your-Life pages first, where Google's guidelines weigh visible expertise most heavily before granting trust.

SpamBrain context

E-E-A-T is not a spam rule and not a ranking factor you can game — it is the conceptual frame Google's Search Quality Rater Guidelines use to describe trustworthy pages, expanded from E-A-T to add 'Experience' in the December 2022 guidelines update. The raters who apply it are not the algorithm, but their judgements train the systems that are, which is why the visible markers of accountability matter even though no single tag is a direct signal.

content/eeat-signals (in @pseolint/core, MIT-licensed at github.com/ouranos-labs/pseolint) is the gentlest expression of that frame in the suite — it fires at info severity and never blocks a verdict, because the presence of an about link or a byline proves nothing about quality on its own. Its job is to catch the structural anonymity that programmatic templates fall into: pages that carry real content in the body but none of the who-wrote-this, when, and on-what-authority markers a credible publisher attaches by reflex. When that anonymity coincides with thin or templated content, the corpus reads as mass-produced and unaccountable at the same time.

Frequently asked questions

What are the four E-E-A-T signal categories the rule checks?
An about-page link (any resolved href matching '/about'), an author signal (a non-empty author meta tag, a schema.org author, a byline element, or a rel=author link), a published date the parser could extract, and a 'sources' marker (the HTML containing 'last updated', 'last modified', 'reviewed by', 'sources:', or 'references:'). A page passes by carrying any 2 of the 4; below that floor it is flagged at info severity.
Why does the rule fire at info severity instead of warning or error?
Because a present marker proves nothing about quality, and a single missing one is not damning. A byline does not make a page expert, and a date does not make it accurate — the rule only checks that the markers of accountability exist at all. Info severity reflects that this is structural guidance, not a verdict. Its weight comes from corroboration: anonymity across a whole corpus matters most when it pairs with thin-content or near-duplicate findings on the same pages.
Does adding a fake author byline satisfy the rule?
It satisfies the literal check, because the rule only detects whether an author signal is present, not whether the person is real. But that misreads the purpose. The rule is a proxy for accountability, and a fabricated byline on a Your-Money-or-Your-Life page is exactly the pattern Google's raters are trained to distrust. Bind a genuine name with verifiable credentials; gaming the marker without the substance trades a clean info finding for a real trust problem a human reviewer will catch.
Our certified personal-finance advice site keeps tripping this on its tax-planning pages — what is missing?
Almost certainly the accountability markers a fiduciary practice should already be proud to display. A page walking a reader through an IRA rollover or how a Roth conversion lands in their marginal bracket should carry the byline of the certified financial planner who reviewed it, that planner's CFP credential, a visible 'last updated' date for when the contribution limits were checked, and a sources block citing the relevant IRS publication. Add those and a YMYL tax-planning page that was anonymous becomes a page a rater can trust — and clears the 2-of-4 floor on the strength of credentials you can substantiate. As an illustration, a tax-advice section that added a Series 65 registration line, a visible review date, and an errors-and-omissions disclosure lifted its coverage to 4-of-4 in 9 days and clawed back 22% of lost long-tail clicks over the following 13 weeks. A vineyard's tasting-notes pages earn the same lift once each varietal entry carries a winemaker byline, the bottling vintage, and a soil-and-terroir sourcing note.
How is this different from the missing-author rule?
content/missing-author is narrow: it checks one thing, whether a page exposes any author signal at all. content/eeat-signals is broader — author is only one of its four categories, alongside an about link, a published date, and a sources marker, and it judges the combination against a 2-of-4 floor. A page can have an author and still trip eeat-signals if it is missing everything else, and a page with no author can still pass if it carries two of the other three.
Will fixing E-E-A-T signals improve my rankings directly?
Not directly — E-E-A-T is an evaluative frame, not a measurable ranking input, so no single tag moves a position on its own. What it does is remove a credibility gap that drags on the whole picture, especially on health, finance, legal, and safety topics where Google's guidelines demand visible expertise. The honest framing is that satisfying this rule is necessary but not sufficient: it clears the anonymity that holds a page back without being the thing that pushes it forward.

Related rules

Want to know whether this rule actually fires on your site?

Run pseolint against your sitemap. The audit is free, takes about a minute, and returns a per-URL list of every rule that fired — including this one — with the exact metric values so you can prioritise the fix queue.