Seo geo factdensity
Audit fact density and sourcing on a page — measure statistic/number density per passage, detect proprietary/original data, count outbound citations to authoritative sources, and flag claims made without a supporting stat or source. Module M12. Feeds the AI Visibility score. Advisory-only; never fabricates statistics or sources.From its SKILL.md
npx -y skills add Hainrixz/claude-seo-ai --skill seo-geo-factdensityAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
SKILL.md
4.3 KB, 906 tokens by cl100k_base, as published. Nobody here has run it
seo-geo-factdensity (M12)
Generative engines preferentially cite passages that are concrete, quantified, and attributable. This module measures how "citable" the page's prose is — facts, numbers, original data, and authoritative outbound links — not vocabulary. AI retrieval/citation context: references/ai-crawlers.md.
Audits
Working from the PageSnapshot (rendered_dom if present, else raw_html):
- Statistic/number density per passage: tokenize the main content into passages (paragraph /
<li>/ heading-bounded block) and count numeric tokens — figures, percentages, dates, quantities, ranges. Flag long passages of pure assertion with zero numeric support. - Proprietary/original data: detect first-party-data signals — patterns like "our study", "our survey", "our data", "we analyzed", "we surveyed", "in our test", "internal data" — and note whether such claims are backed by a method/sample, a table, or a chart.
- Outbound citations: count outbound links from the main content to authoritative sources (standards bodies, primary research, official docs,
.gov/.edu, named publications); distinguish them from internal/nav/affiliate links. - Claim-without-source flags: detect strong factual or comparative claims ("the most", "fastest", "studies show", superlatives, hard numbers) that carry no inline citation or data reference, and mark each as a candidate for sourcing.
Fixes (fixable: advisory)
ADVISORY only — this module proposes nothing it would write. It produces a list of (a) claims that should carry a statistic or citation, (b) passages where an original-data callout (table, "our data" box, methodology note) would raise citability, and (c) unsupported superlatives to soften or source. The tool will NOT fabricate statistics, sample sizes, study results, or source URLs. Where a value is missing, it emits a clearly-marked TODO placeholder for the user to fill — never an invented number. (Findings here are fixable: advisory per the finding schema.)
Verification
- Heuristic:
manual_reviewplus deterministic counts — numeric-token density per passage and outbound-authority link count — computed from the snapshot. Report the raw counts so a human can re-derive them. - Judgment calls (is this claim "strong"? is this source "authoritative"?) require
manual_review; do not auto-passthem. - When the content tier or rendered DOM needed to count passages reliably is unavailable, status is
needs_api, never a falsepass.
Findings
Emit findings per schema/finding.schema.json. Examples:
M12.density.low_numeric_passages— multiple main-content passages with zero numeric support (statuswarn, severity 4,fixable: advisory, axisai, confidencedirectional).M12.citations.no_outbound_authority— main content makes factual claims but links to zero authoritative outbound sources (statuswarn, severity 4,fixable: advisory, axisai, confidencedirectional).M12.claim.unsourced_superlative— a superlative/comparative claim with no inline citation or data (statuswarn, severity 1,fixable: advisory, axisai, confidencespeculative). Each finding:evidence.observedquotes the exact passage/claim from the page;verification.reproduceis the runnable count (e.g.node scripts/factdensity.mjs --url <u>);expected_impactis banded + confidence-tagged (no naked %).
Honesty
- Refuse "AI-specific keyword" rewrites — there is no magic vocabulary that wins citations. Citability comes from extractable structure, verifiable facts, and demonstrable authority, not phrasing tricks.
- Never invent a statistic, sample size, or source to "fill" a flagged claim. Quantification only helps if it is true and attributable; a fabricated number is a liability, not a win.
- Density is a means, not an end — flag stuffing numbers into prose that doesn't warrant them as its own anti-pattern.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.
Gives 0 of the 12 instructions most marketing audience skills give in 906 tokens
Counted across 690 of the 894 authors here whose files we hold, read 2026-08-07
- Apply Poppins font to headingsin 41 of 690, across 6 files
- Apply Lora font to body textin 41 of 690, across 6 files
- Use Arial fallback for headingsin 39 of 690, across 4 files
- Use Georgia fallback for body textin 39 of 690, across 4 files
- Maintain text hierarchy and formattingin 39 of 690, across 4 files
- Use accent colors for non-text shapesin 38 of 690, across 3 files
- Use RGB values for precise color matchingin 38 of 690, across 3 files
- Use brand colors for primary text and backgroundsin 36 of 690, across 1 file
- Read product marketing context file before asking questions, starting, or auditingin 35 of 690, across 23 files
- Use active voice instead of passive voicein 26 of 690, across 10 files
- Implement or generate appropriate JSON-LD structured datain 24 of 690, across 17 files
- Prioritize clarity over clevernessin 22 of 690, across 8 files
Said here and by no other author read
- emit findings per finding schema
- Count numeric tokens in each main content passage
- Detect first-party data claims and note supporting evidence
- Count outbound links to authoritative sources
- Flag factual claims lacking an inline citation
- Mark unsupported superlatives as candidates for sourcing
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.