Kirby SEO Audit comes with 28 comprehensive assessments that analyze your content for search engine optimization and readability:
The analysis results are organized into three clear categories to help you prioritize optimization efforts, regardless of whether they are SEO or readability assessments:
| Category | Description | Priority |
|---|---|---|
| Good | ✅ Assessments that pass SEO best practices | Green indicators |
| OK | ⚠️ Areas that could be improved but are not critical | Orange indicators |
| Bad | ❌ Issues that should be addressed for better SEO | Red indicators |
| Feedback | 💡 Suggestions for further improvements | Gray indicators |
| Assessment | Key | What It Checks |
|---|---|---|
| Introduction Keyword | introductionKeyword | Keyphrase appears in the first paragraph |
| Keyphrase Length | keyphraseLength | Keyphrase is not too short or long |
| Keyword Density | keyphraseDensity | Keyphrase frequency is optimal (not too low/high) |
| Meta Description Keyword | metaDescriptionKeyword | Keyphrase is present in meta description |
| Meta Description Length | metaDescriptionLength | Meta description is 120–156 characters |
| Subheadings Keyword | subheadingsKeyword | Keyphrase appears in H2–H6 headings |
| Text Competing Links | textCompetingLinks | No links compete with target keyphrase |
| Image Keyphrase | imageKeyphrase | Images contain keyphrase in alt/title attributes |
| Text Images | images | Content includes images |
| Text Length | textLength | Content meets minimum word count |
| Outbound Links | externalLinks | External links are present |
| Title Keyword | keyphraseInSEOTitle | Keyphrase appears in page title |
| Internal Links | internalLinks | Internal links are present |
| Page Title Width | titleWidth | Title fits in search results (~60 chars) |
| URL Keyword | slugKeyword | Keyphrase is in URL slug |
| Function Words | functionWordsInKeyphrase | Keyphrase contains content words (not just "the", "a") |
| Keyphrase Distribution | keyphraseDistribution | Keyphrase is evenly distributed throughout text |
| Assessment | Key | What It Checks |
|---|---|---|
| Subheading Distribution | subheadingsTooLong | No text blocks exceed 300 words without a subheading |
| Paragraph Length | textParagraphTooLong | Paragraphs do not exceed 150 words |
| Sentence Length | textSentenceLength | Sentences do not exceed 20 words on average |
| Transition Words | textTransitionWords | Content uses connective phrases |
| Passive Voice | passiveVoice | Passive voice is used sparingly |
| Text Presence | textPresence | Page contains text content |
| Sentence Beginnings | sentenceBeginnings | Sentences do not start the same way repeatedly |
| Word Complexity | wordComplexity | Vocabulary is not overly complex |
| Assessment | Key | What It Checks |
|---|---|---|
| Single H1 | singleH1 | Exactly one H1 heading exists |
| Heading Structure | headingStructureOrder | H1–H6 headings follow sequential order (no skips like H1→H3) |
| Image Alt Attributes | altAttribute | All images have alt text |
By default, all assessments are enabled. Pick which SEO and readability assessments to include in the report by adding an assessments property to your blueprint, depending on whether you use the view button or section.
buttons:
seo-audit:
# Select the assessments you want to include
assessments:
- metaDescriptionKeyword
- metaDescriptionLength
- titleWidth
- images
- textLength
- imageKeyphrase
type: seo-audit
# Select the assessments you want to include
assessments:
- metaDescriptionKeyword
- metaDescriptionLength
- titleWidth
- images
- textLength
- imageKeyphrase
The following SEO assessments require a keyphrase to be defined via keyphraseField or keyphrase:
functionWordsInKeyphraseintroductionKeywordkeyphraseDensitykeyphraseDistributionkeyphraseInSEOTitlekeyphraseLengthmetaDescriptionKeywordslugKeywordsubheadingsKeywordIf no keyphrase is provided, these assessments will be skipped unless explicitly enabled in the assessments property.
Some assessments are only available in certain languages. The plugin uses the lang attribute of the rendered page's HTML for analysis, while the translations of the SEO results are based on the language selected in the Kirby Panel.
languages/xx.php file matches the ISO 639-1 language code (e.g., use de for German, not ger).| Assessment | Supported Languages |
|---|---|
wordComplexity | de, en, es, fr |
keyphraseDistribution | ar, cs, de, el, en, es, fr, he, hu, id, it, ja, nl, no, pl, pt, ru, sk, sv, tr |
metaDescriptionLength | ar, cs, de, el, en, es, fa, fr, he, hu, id, it, ja, nl, no, pl, pt, ru, sk, sv, tr |
textParagraphTooLong | ar, cs, de, el, en, es, fa, fr, he, hu, id, it, ja, nl, no, pl, pt, ru, sk, sv, tr |
textSentenceLength | ar, cs, de, el, en, es, fa, fr, he, hu, id, it, ja, nl, no, pl, pt, ru, sk, sv, tr |
passiveVoice | ar, cs, de, el, en, es, fa, fr, he, hu, id, it, nl, no, pl, pt, ru, sk, sv, tr |
textTransitionWords | ar, ca, cs, de, el, en, es, fa, fr, he, hu, id, it, ja, nl, no, pl, pt, ru, sk, sv, tr |
functionWordsInKeyphrase | ar, cs, de, el, en, es, fa, fr, he, hu, id, it, nl, no, pl, pt, ru, sk, sv, tr |