LLM content quality score: what it measures
A language-model read of the page copy, scored 0 to 100 with written feedback. Retired in this release: it never runs.
What the quality score is
This rule sends the page’s visible text to a language model and asks it to score the content out of 100 on clarity and readability, depth of information, structure, value to the reader, grammar and spelling, and originality. It returns the score and two or three sentences of feedback.
It is a second opinion rather than a measurement. The score is a model’s judgement of prose, so it is useful for finding the pages on a large site that most need a human read, and not useful as a target to optimise. The rule is disabled by default for that reason, and because it costs an API call per page.
What squirrel checks
The rule runs on every crawled page when it is enabled and a key is available. It extracts the visible text, excluding scripts, styles, nav, footer and header, and sends the first 3000 characters. It emits a single check named content-quality:
- Skipped when no API key is configured. Message:
Content quality analysis skipped, with the reasonOPENROUTER_API_KEY not set. - Skipped when the page has no text. Message:
No content to analyze. - Fail when the model call itself failed. Message:
LLM analysis failed: <error>. - Pass at a score of 70 or above. Message:
Content quality score: 84/100. - Warn from 40 to 69. Message:
Content quality needs improvement: 52/100. - Fail below 40. Message:
Poor content quality: 31/100.
The model’s feedback is carried as the check value, truncated to 200 characters. Severity for the rule is info and the weight is 3, and it is disabled by default.
How to fix it
Read the feedback and the page together. The score on its own does not tell you what to change, and a model’s opinion of prose is worth exactly as much as your agreement with the reasons it gives.
It costs one model call per page, so it suits a section you suspect rather than a whole site.
| Rule ID | content/quality |
| Category | Content |
| Scope | Per-page |
| Severity | info |
| Weight | 3/10 |
| Default | Retired (never runs) |
Enable / disable
There is nothing to disable: the rule never loads, so a disable entry for content/quality does nothing and can be removed from your config.
Disable all Content rules
[rules]
disable = ["content/*"]Enable only this rule
This rule cannot be turned on in this release. Its metadata sets disabled: true, and the rule loader drops it before any enable, disable or [rule_options] setting is read, so no configuration runs it.
Related rules
- content/word-count: length, which the score is not a substitute for.
- content/reading-level: a formula-based readability measurement.
- content/thin-vs-site-norm: length judged against your own site.
- eeat/authority-signals: the trust signals a reader weighs alongside the writing.
Content findings ship in every audit next to the SEO, performance and agent experience rules. See Fix SEO issues with AI for how an agent works through a report.
References
Check your site
Run squirrel audit https://example.com and open the Content section of the report. Each scored page is reported with its score and the model’s written feedback. Signed-out local audits need no account and cost nothing. Signed-in audits spend credits.