AI Citability Check (ai-citability-check)
Summary
Passage-level scoring for AI citation readiness across sampled pages.
Classification
- Category:
SEO - Plugin id:
ai-citability-check - Version:
1.0.0 - Target types:
WEBSITE,WEBSHOP - Weight class:
LIGHT - Risk level: not set on plugin object
- Browser required: No (HTTP / Node / other — see source)
- Tier / group: Tier 1 — HTTP-only
Schedule
- scheduleHints:
{ defaultInterval: '0 5 * * 1', priority: 4 } - Prerequisites: None declared on this plugin.
Configurable inputs
Public keys are derived from inputSchema: z.object({ ... }) (underscore-prefixed keys are runtime-only and omitted here).
| Field | Notes |
|---|---|
timeout |
Zod field in inputSchema — see source for defaults, min/max, and .describe(). |
maxPages |
Zod field in inputSchema — see source for defaults, min/max, and .describe(). |
Runtime / injected config
- None documented beyond standard worker context (
target,config,logger,reportProgress). Underscore-prefixed keys are internal.
Checks that produce findings
These checks run inside this plugin during a single test run. They are not separate tests in the database — each becomes a Finding linked to the Run for ai-citability-check.
| Check | Typical severity | Why |
|---|---|---|
| No substantial content blocks found | WARNING | No blocks with ≥20 words after stripping nav/footer — nothing for AI systems to quote. |
| Very low overall citability score (< 40/100 avg) | WARNING | Heuristic score across dimensions suggests content is unlikely to be cited in AI answers. |
| Moderate citability (40–59 avg) | INFO | Some extractable passages exist but many blocks lack AI-preferred structure. |
| Content lacks answer-first patterns | WARNING | Average Answer Block Quality < 10/30 — sections rarely open with definitions or direct facts. |
| Content lacks statistics and data points | INFO | Average Statistical Density < 4/15 — few percentages, amounts, or named sources for models to cite. |
| Content blocks are not self-contained | INFO | Average Self-Containment < 8/25 — heavy pronoun use or wrong length for standalone quotes. |
| No passages in optimal AI citation length (134–167 words) | INFO | Zero blocks in the research-backed citation length band when ≥3 blocks exist. |
How each check works
- Sample pages — Fetch homepage; if
maxPages> 1 (default 3), discover same-host links prioritizing paths matching blog/article/guide/about/services/product, up tomaxPages − 1extra URLs. - Extract blocks — Remove script/style/nav/footer/header/aside/forms; split on headings; merge paragraphs until block has ≥20 words.
- Score each block (0–100) — Five weighted dimensions: Answer Block Quality (30), Self-Containment (25), Structural Readability (20), Statistical Density (15), Uniqueness Signals (10). Supports English and Norwegian patterns (e.g. “X er en”, “ifølge”, “vi fant”).
- Grades — A≥80, B≥65, C≥50, D≥35, F below; stored in metrics, not separate findings.
- Aggregate findings — Thresholds above on averages and optimal-length count (
optimalPassages === 0andallScores.length >= 3). - Run score — Equals average citability score across all blocks.
Caveats and concerns
- Heuristic, not LLM-judged — Scores are regex/structure rules, not predictions of actual ChatGPT/Perplexity citations.
- English/Norwegian bias — Definition and statistic patterns favor these languages.
- DOM cleanup — Sites with content outside
main/article/pmay yield few blocks. - No per-block findings — Only site-level aggregates; weak passages are listed in evidence on some findings.
- Short pages — Marketing one-liners may score poorly by design.
Source
packages/test-plugins/src/plugins/ai-citability-check.ts