Methodology
Cited samples up to 5 pages from your site and checks each for author attribution in two forms: schema-backed (the strongest signal) and visible-only (a weaker fallback). The signal’s score depends on which form is found, evaluated across the whole sample rather than per page. Schema-backed attribution. A page has schema-backed authorship if any of these three sources declares an author:- A JSON-LD block with an
authorfield (either a string like"Jane Doe"or a Person object like{"@type": "Person", "name": "Jane Doe"}) - A
<meta name="author" content="…">tag in the page head - An element with
itemprop="author",rel="author", or any class containing “author” (case-insensitive) — but only the first two count as schema-backed; the class-based fallback is visible-only
author.name directly without having to guess which DOM element holds the byline. If at least one sampled page has schema-backed attribution, the signal scores 5/5.
Visible-only attribution. If no page has schema markup but at least one has a visible author name (extracted from a class="author" element, an itemprop="author" text node, or a rel="author" anchor), the signal scores 3/5. The byline exists for human readers but AI parsers have to infer the role from class names rather than schema.
No attribution. If no page has either form, the signal scores 0/5. AI models attribute the content to the site or organization, not to any person.
The signal scores out of 5. Status thresholds: pass at 4/5 (requires schema-backed attribution on at least one page), partial at 2/5 (visible-only attribution), fail below.
Why a single passing page lifts the score? The signal models template-driven authorship — if your article template renders <meta name="author"> once, every article inherits it. One sampled article confirms the template works; the rest of the site likely follows the same pattern.
Verification
You can verify our finding yourself in a browser. Step 1: Open the pages we sampled. Cited reports the URLs we tested. Open each in a new tab. Step 2: Check JSON-LD for author. Open DevTools (Cmd+Option+I / Ctrl+Shift+I), Console tab, and run:
author field found in JSON-LD blocks. A string or an object with a name field counts as schema-backed attribution.
Step 3: Check the meta tag and visible byline. In the Console, run document.querySelector('meta[name="author"]')?.content to read the <meta name="author"> tag if present. Then look at the page itself — most articles render the author name in a byline element near the title. If that element has a class like .author, .byline, or .post-author, it counts as visible-only.
Step 4: Spot-check author bio links. Schema-backed attribution is most credible when the author also has a bio page on the same site (/authors/jane-doe or /team/jane-doe). The scanner doesn’t check for the bio page directly, but AI models follow author links to assess expertise. If your author byline is plain text with no link to a bio, you’re leaving credibility on the table even though Cited reports the page as passing.
If your verification disagrees with Cited’s finding, that’s a bug — let us know.
Technical detail
Author attribution as a citation signal traces to Schema.org’sArticle and Person types (introduced 2011) and Google’s E-E-A-T framework (Experience, Expertise, Authoritativeness, Trustworthiness), formalized in the Search Quality Rater Guidelines from 2014 onward. AI models inherited the same evaluation path because the training data already encoded these signals as quality markers.
Extraction logic. Cited’s crawler runs three detection passes per page, in priority order, and stops at the first match:
- JSON-LD
authorfield — every<script type="application/ld+json">block is parsed, and anyauthorproperty is extracted. Ifauthoris an object, itsnamefield is used; if a string, the string itself is the author name. This setsauthorInfo.schemaFound = true. <meta name="author">— if no JSON-LD author found, the page’smeta[name="author"]tag is read. A non-emptycontentattribute setsauthorInfo.schemaFound = trueas well; the scanner treats meta-author as schema-equivalent because both are structured declarations.- DOM element fallback — if neither of the above match, the scanner queries (in this order):
[itemprop="author"],[class*="author" i],[rel="author"]. The first element’s trimmed text content is the author name. This setsschemaFound = false(visible-only).
class*="author" i selector uses CSS’s case-insensitive partial-match — .AuthorName, .post-author, .author-card, and .byline-author all match.
Score calculation. The scanner counts pages where schemaFound = true and pages where name is non-null. If any page has schemaFound = true, score = 5. Else if any page has name non-null, score = 3. Else score = 0. There’s no fractional credit — one page passes the whole site for this signal because authorship templates propagate.
Edge cases the scanner handles:
- Author as an array — Schema.org allows
"author": [{"@type": "Person", "name": "A"}, {"@type": "Person", "name": "B"}]for co-authored content. The crawler reads the first author’s name and setsschemaFound = true; co-authorship isn’t enumerated but the page still passes the signal. - Organization as author —
"author": {"@type": "Organization", "name": "Editorial Team"}is schema-valid and counts as schema-backed attribution. AI models accept organizational authorship for editorial brands, even though individual experts typically rank higher for expertise queries. - Empty
<meta name="author">— a meta tag withcontent=""doesn’t setschemaFound. The scanner requires non-empty trimmed content. - Generic class names — a
<div class="author">Posted by</div>element matches the class selector but the text content is “Posted by” (not a name). The scanner extracts this as the author name with no validation; the page passes visible-only with a non-name string. AI models filter this out at the consumption side, but Cited reports it as detected. - Server-rendered vs client-rendered bylines — bylines added by JS after page load are detected because the scanner reads the post-hydration DOM (3-second Puppeteer delay). Bylines that lazy-load on scroll may be missed.
- Author bio depth. A byline linking to a 500-word bio page with credentials scores the same as a byline with a plain text name. The scanner counts attribution presence, not the strength of the author’s credentials.
- Author authority across sites. AI models cross-reference authors across sites to assess authority (an author who writes for Wired and Cited’s blog ranks higher than one who only appears on Cited’s blog). The scanner only sees this page.
- Generic attributions. “Admin”, “Staff”, “Editor”, “Team” all count as visible-only attribution if they appear in a class-matched element. AI models treat these as effectively anonymous, but the scanner reports them as detected.
- Author images or social links. Visible photos and links to LinkedIn / X profiles add credibility but aren’t scored. Pages with strong bios beyond what the scanner detects underperform their attribution score in actual AI citation.
author to the JSON-LD on article and blog post pages — even a single string value ("author": "Jane Doe") lifts the page from visible-only to schema-backed. Better: a Person object linked to a bio page ("author": {"@type": "Person", "name": "Jane Doe", "url": "https://yoursite.com/authors/jane-doe"}). Most modern CMSes (WordPress with Yoast, Webflow with built-in author fields, Ghost) emit this automatically once an author is assigned to the post.
See also: JSON-LD Structured Data, Trust & Credential Indicators, Content Freshness.