mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-05-09 07:42:39 +02:00
feat: enhance SurfSense with new skills, blog section, and improve SEO metadata
Some checks failed
Build and Push Docker Images / tag_release (push) Has been cancelled
Build and Push Docker Images / build (./surfsense_backend, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-24.04-arm, linux/arm64, arm64) (push) Has been cancelled
Build and Push Docker Images / build (./surfsense_backend, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-latest, linux/amd64, amd64) (push) Has been cancelled
Build and Push Docker Images / build (./surfsense_web, ./surfsense_web/Dockerfile, web, surfsense-web, ubuntu-24.04-arm, linux/arm64, arm64) (push) Has been cancelled
Build and Push Docker Images / build (./surfsense_web, ./surfsense_web/Dockerfile, web, surfsense-web, ubuntu-latest, linux/amd64, amd64) (push) Has been cancelled
Build and Push Docker Images / create_manifest (backend, surfsense-backend) (push) Has been cancelled
Build and Push Docker Images / create_manifest (web, surfsense-web) (push) Has been cancelled
Some checks failed
Build and Push Docker Images / tag_release (push) Has been cancelled
Build and Push Docker Images / build (./surfsense_backend, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-24.04-arm, linux/arm64, arm64) (push) Has been cancelled
Build and Push Docker Images / build (./surfsense_backend, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-latest, linux/amd64, amd64) (push) Has been cancelled
Build and Push Docker Images / build (./surfsense_web, ./surfsense_web/Dockerfile, web, surfsense-web, ubuntu-24.04-arm, linux/arm64, arm64) (push) Has been cancelled
Build and Push Docker Images / build (./surfsense_web, ./surfsense_web/Dockerfile, web, surfsense-web, ubuntu-latest, linux/amd64, amd64) (push) Has been cancelled
Build and Push Docker Images / create_manifest (backend, surfsense-backend) (push) Has been cancelled
Build and Push Docker Images / create_manifest (web, surfsense-web) (push) Has been cancelled
- Added multiple new skills to skills-lock.json from the repository `aaron-he-zhu/seo-geo-claude-skills`. - Introduced `fuzzy-search` dependency in package.json for improved search functionality. - Updated pnpm-lock.yaml to include the new `fuzzy-search` package. - Enhanced SEO metadata across various pages, including canonical links and descriptions for better search visibility. - Improved layout and structure of several components, including the homepage and changelog, to enhance user experience.
This commit is contained in:
parent
61b3f0d7e3
commit
7ea840dbb2
120 changed files with 25729 additions and 352 deletions
109
.cursor/skills/on-page-seo-auditor/references/audit-example.md
Normal file
109
.cursor/skills/on-page-seo-auditor/references/audit-example.md
Normal file
|
|
@ -0,0 +1,109 @@
|
|||
# On-Page SEO Auditor — Worked Example & Page Type Checklists
|
||||
|
||||
Referenced from [SKILL.md](https://github.com/aaron-he-zhu/seo-geo-claude-skills/blob/main/optimize/on-page-seo-auditor/SKILL.md).
|
||||
|
||||
---
|
||||
|
||||
## Worked Example
|
||||
|
||||
**User**: "Audit the on-page SEO of https://example.com/best-noise-cancelling-headphones targeting 'best noise cancelling headphones'"
|
||||
|
||||
**Output**:
|
||||
|
||||
```markdown
|
||||
# On-Page SEO Audit Report
|
||||
|
||||
**Page**: https://example.com/best-noise-cancelling-headphones
|
||||
**Target Keyword**: best noise cancelling headphones
|
||||
**Secondary Keywords**: wireless noise cancelling headphones, ANC headphones, noise cancelling headphones review
|
||||
**Page Type**: commercial (reviews/roundup)
|
||||
**Audit Date**: 2025-01-15
|
||||
|
||||
## Summary
|
||||
|
||||
| Audit Area | Score | Key Finding |
|
||||
|------------|-------|-------------|
|
||||
| Title Tag | 8/10 | Good keyword placement; slightly long at 63 chars |
|
||||
| Meta Description | 6/10 | Missing CTA; keyword present but generic copy |
|
||||
| Header Structure | 9/10 | Clean hierarchy; H2s cover all major products |
|
||||
| Content Quality | 7/10 | 2,400 words is solid; lacks original test data |
|
||||
| Keyword Optimization | 8/10 | Strong placement; density at 1.2% is healthy |
|
||||
| Internal Links | 5/10 | Only 2 internal links; missing links to brand pages |
|
||||
| Images | 6/10 | 3/8 images missing alt text; no WebP format |
|
||||
| Technical Elements | 7/10 | Missing Product schema; good URL and mobile |
|
||||
|
||||
## Overall Score: 71/100
|
||||
|
||||
Calculation: (8x0.15 + 6x0.05 + 9x0.10 + 7x0.25 + 8x0.15 + 5x0.10 + 6x0.10 + 7x0.10) x 10 = 71
|
||||
|
||||
Score Breakdown:
|
||||
████████░░ Title Tag: 8/10 (15%)
|
||||
██████░░░░ Meta Description: 6/10 ( 5%)
|
||||
█████████░ Headers: 9/10 (10%)
|
||||
███████░░░ Content: 7/10 (25%)
|
||||
████████░░ Keywords: 8/10 (15%)
|
||||
█████░░░░░ Internal Links: 5/10 (10%)
|
||||
██████░░░░ Images: 6/10 (10%)
|
||||
███████░░░ Technical: 7/10 (10%)
|
||||
|
||||
## Priority Issues
|
||||
|
||||
### Critical
|
||||
1. **Internal linking severely underdeveloped** — Only 2 internal links found. Add links to individual headphone review pages (/sony-wh1000xm5-review, /bose-qc-ultra-review) and the headphones category page. Target 5-8 contextual internal links.
|
||||
2. **3 product images missing alt text** — Images for Sony WH-1000XM5, Bose QC Ultra, and Apple AirPods Max have empty alt attributes. Each missing alt tag is a lost ranking signal in Google Images.
|
||||
|
||||
### Important
|
||||
1. **Meta description lacks call-to-action** — Current description states facts but does not compel clicks. Add "Compare prices and features" or "See our top picks" to drive CTR.
|
||||
|
||||
## Quick Wins
|
||||
|
||||
1. **Add alt text to 3 images** (5 min) — Use descriptive text like "Sony WH-1000XM5 noise cancelling headphones on desk" instead of empty attributes.
|
||||
2. **Rewrite meta description with CTA** (5 min) — Change to: "Compare the 10 best noise cancelling headphones for 2025. Expert-tested picks from Sony, Bose, and Apple with pros, cons, and pricing. See our top picks."
|
||||
3. **Add 4+ internal links** (10 min) — Link product names to their individual review pages and add a "See all headphones" link to the category hub.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Audit Checklists by Page Type
|
||||
|
||||
### Blog Post Checklist
|
||||
|
||||
```markdown
|
||||
- [ ] Title includes keyword and is compelling
|
||||
- [ ] Meta description has keyword and CTA
|
||||
- [ ] Single H1 with keyword
|
||||
- [ ] H2s cover main topics
|
||||
- [ ] Keyword in first 100 words
|
||||
- [ ] 1,500+ words for competitive topics
|
||||
- [ ] 3+ internal links with varied anchors
|
||||
- [ ] Images with descriptive alt text
|
||||
- [ ] FAQ section with schema
|
||||
- [ ] Author bio with credentials
|
||||
```
|
||||
|
||||
### Product Page Checklist
|
||||
|
||||
```markdown
|
||||
- [ ] Product name in title
|
||||
- [ ] Price and availability in description
|
||||
- [ ] H1 is product name
|
||||
- [ ] Product features in H2s
|
||||
- [ ] Multiple product images with alt text
|
||||
- [ ] Customer reviews visible
|
||||
- [ ] Product schema implemented
|
||||
- [ ] Related products linked
|
||||
- [ ] Clear CTA button
|
||||
```
|
||||
|
||||
### Landing Page Checklist
|
||||
|
||||
```markdown
|
||||
- [ ] Keyword-optimized title
|
||||
- [ ] Benefit-focused meta description
|
||||
- [ ] Clear H1 value proposition
|
||||
- [ ] Supporting H2 sections
|
||||
- [ ] Trust signals (testimonials, logos)
|
||||
- [ ] Single clear CTA
|
||||
- [ ] Fast page load speed
|
||||
- [ ] Mobile-optimized layout
|
||||
```
|
||||
315
.cursor/skills/on-page-seo-auditor/references/audit-templates.md
Normal file
315
.cursor/skills/on-page-seo-auditor/references/audit-templates.md
Normal file
|
|
@ -0,0 +1,315 @@
|
|||
# On-Page SEO Auditor — Output Templates
|
||||
|
||||
Detailed output templates for on-page-seo-auditor steps 5-11. Referenced from [SKILL.md](https://github.com/aaron-he-zhu/seo-geo-claude-skills/blob/main/optimize/on-page-seo-auditor/SKILL.md).
|
||||
|
||||
---
|
||||
|
||||
## Step 5: Audit Content Quality
|
||||
|
||||
```markdown
|
||||
## Content Quality Analysis
|
||||
|
||||
**Word Count**: [X] words
|
||||
**Reading Level**: [Grade level]
|
||||
**Estimated Read Time**: [X] minutes
|
||||
|
||||
| Criterion | Status | Notes |
|
||||
|-----------|--------|-------|
|
||||
| Sufficient length | ✅/⚠️/❌ | [comparison to ranking content] |
|
||||
| Comprehensive coverage | ✅/⚠️/❌ | [notes] |
|
||||
| Unique value/insights | ✅/⚠️/❌ | [notes] |
|
||||
| Up-to-date information | ✅/⚠️/❌ | [notes] |
|
||||
| Proper formatting | ✅/⚠️/❌ | [notes] |
|
||||
| Readability | ✅/⚠️/❌ | [notes] |
|
||||
| E-E-A-T signals | ✅/⚠️/❌ | [notes] |
|
||||
|
||||
**Content Elements Present**:
|
||||
- [ ] Introduction with keyword
|
||||
- [ ] Clear sections/structure
|
||||
- [ ] Bullet points/lists
|
||||
- [ ] Tables where appropriate
|
||||
- [ ] Images/visuals
|
||||
- [ ] Examples/case studies
|
||||
- [ ] Statistics with sources
|
||||
- [ ] Expert quotes
|
||||
- [ ] FAQ section
|
||||
- [ ] Conclusion with CTA
|
||||
|
||||
**Content Score**: [X]/10
|
||||
|
||||
**Gaps Identified**:
|
||||
- [Missing topic/section 1]
|
||||
- [Missing topic/section 2]
|
||||
|
||||
**Recommendations**:
|
||||
1. [Specific improvement]
|
||||
2. [Specific improvement]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Step 6: Audit Keyword Usage
|
||||
|
||||
```markdown
|
||||
## Keyword Optimization Analysis
|
||||
|
||||
**Primary Keyword**: "[keyword]"
|
||||
**Keyword Density**: [X]%
|
||||
|
||||
### Keyword Placement
|
||||
|
||||
| Location | Present | Notes |
|
||||
|----------|---------|-------|
|
||||
| Title tag | ✅/❌ | Position: [X] |
|
||||
| Meta description | ✅/❌ | [notes] |
|
||||
| H1 | ✅/❌ | [notes] |
|
||||
| First 100 words | ✅/❌ | Word position: [X] |
|
||||
| H2 headings | ✅/❌ | In [X]/[Y] H2s |
|
||||
| Body content | ✅/❌ | [X] occurrences |
|
||||
| URL slug | ✅/❌ | [notes] |
|
||||
| Image alt text | ✅/❌ | In [X]/[Y] images |
|
||||
| Conclusion | ✅/❌ | [notes] |
|
||||
|
||||
### Secondary Keywords
|
||||
|
||||
| Keyword | Occurrences | Status |
|
||||
|---------|-------------|--------|
|
||||
| [keyword 1] | [X] | ✅/⚠️/❌ |
|
||||
| [keyword 2] | [X] | ✅/⚠️/❌ |
|
||||
|
||||
### LSI/Related Terms
|
||||
|
||||
**Present**: [list of related terms found]
|
||||
**Missing**: [important related terms not found]
|
||||
|
||||
**Keyword Score**: [X]/10
|
||||
|
||||
**Issues**:
|
||||
- [Issue 1]
|
||||
|
||||
**Recommendations**:
|
||||
- [Suggestion 1]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Step 7: Audit Internal Links
|
||||
|
||||
```markdown
|
||||
## Internal Linking Analysis
|
||||
|
||||
**Total Internal Links**: [X]
|
||||
**Unique Internal Links**: [X]
|
||||
|
||||
| Criterion | Status | Notes |
|
||||
|-----------|--------|-------|
|
||||
| Number of internal links | ✅/⚠️/❌ | [X] (recommend 3-5+) |
|
||||
| Relevant anchor text | ✅/⚠️/❌ | [notes] |
|
||||
| Links to related content | ✅/⚠️/❌ | [notes] |
|
||||
| Links to important pages | ✅/⚠️/❌ | [notes] |
|
||||
| No broken links | ✅/⚠️/❌ | [X] broken found |
|
||||
| Natural placement | ✅/⚠️/❌ | [notes] |
|
||||
|
||||
**Current Internal Links**:
|
||||
1. "[Anchor text]" → [URL]
|
||||
2. "[Anchor text]" → [URL]
|
||||
3. "[Anchor text]" → [URL]
|
||||
|
||||
**Internal Linking Score**: [X]/10
|
||||
|
||||
**Recommended Additional Links**:
|
||||
1. Add link to "[Related page]" with anchor "[suggested anchor]"
|
||||
2. Add link to "[Related page]" with anchor "[suggested anchor]"
|
||||
|
||||
**Anchor Text Improvements**:
|
||||
- Change "[current anchor]" to "[improved anchor]"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Step 8: Audit Images
|
||||
|
||||
```markdown
|
||||
## Image Optimization Analysis
|
||||
|
||||
**Total Images**: [X]
|
||||
|
||||
### Image Audit Table
|
||||
|
||||
| Image | Alt Text | File Name | Size | Status |
|
||||
|-------|----------|-----------|------|--------|
|
||||
| [img1] | [alt or "missing"] | [filename] | [KB] | ✅/⚠️/❌ |
|
||||
| [img2] | [alt or "missing"] | [filename] | [KB] | ✅/⚠️/❌ |
|
||||
|
||||
| Criterion | Status | Notes |
|
||||
|-----------|--------|-------|
|
||||
| All images have alt text | ✅/⚠️/❌ | [X]/[Y] have alt |
|
||||
| Alt text includes keywords | ✅/⚠️/❌ | [notes] |
|
||||
| Descriptive file names | ✅/⚠️/❌ | [notes] |
|
||||
| Appropriate file sizes | ✅/⚠️/❌ | [notes] |
|
||||
| Modern formats (WebP) | ✅/⚠️/❌ | [notes] |
|
||||
| Lazy loading enabled | ✅/⚠️/❌ | [notes] |
|
||||
|
||||
**Image Score**: [X]/10
|
||||
|
||||
**Recommendations**:
|
||||
1. Add alt text to image [X]: "[suggested alt text]"
|
||||
2. Compress image [Y]: Currently [X]KB, should be under [Y]KB
|
||||
3. Rename [filename] to [better-filename]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Step 9: Audit Technical On-Page Elements
|
||||
|
||||
```markdown
|
||||
## Technical On-Page Analysis
|
||||
|
||||
| Element | Current Value | Status | Recommendation |
|
||||
|---------|---------------|--------|----------------|
|
||||
| URL | [URL] | ✅/⚠️/❌ | [notes] |
|
||||
| URL length | [X] chars | ✅/⚠️/❌ | [notes] |
|
||||
| URL keywords | [present/absent] | ✅/⚠️/❌ | [notes] |
|
||||
| Canonical tag | [URL or "missing"] | ✅/⚠️/❌ | [notes] |
|
||||
| Mobile-friendly | [yes/no] | ✅/⚠️/❌ | [notes] |
|
||||
| Page speed | [X]s | ✅/⚠️/❌ | [notes] |
|
||||
| HTTPS | [yes/no] | ✅/⚠️/❌ | [notes] |
|
||||
| Schema markup | [types or "none"] | ✅/⚠️/❌ | [notes] |
|
||||
|
||||
**Technical Score**: [X]/10
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Step 10: CORE-EEAT Content Quality Quick Scan
|
||||
|
||||
Run a quick scan of on-page-relevant CORE-EEAT items. Reference: [CORE-EEAT Benchmark](https://github.com/aaron-he-zhu/seo-geo-claude-skills/blob/main/references/core-eeat-benchmark.md)
|
||||
|
||||
```markdown
|
||||
## CORE-EEAT Quick Scan
|
||||
|
||||
Content-relevant items from the 80-item benchmark:
|
||||
|
||||
| ID | Check Item | Status | Notes |
|
||||
|----|-----------|--------|-------|
|
||||
| C01 | Intent Alignment | ✅/⚠️/❌ | Title promise = content delivery |
|
||||
| C02 | Direct Answer | ✅/⚠️/❌ | Core answer in first 150 words |
|
||||
| C09 | FAQ Coverage | ✅/⚠️/❌ | Structured FAQ present |
|
||||
| C10 | Semantic Closure | ✅/⚠️/❌ | Conclusion answers opening |
|
||||
| O01 | Heading Hierarchy | ✅/⚠️/❌ | H1→H2→H3, no skipping |
|
||||
| O02 | Summary Box | ✅/⚠️/❌ | TL;DR or Key Takeaways |
|
||||
| O03 | Data Tables | ✅/⚠️/❌ | Comparisons in tables |
|
||||
| O05 | Schema Markup | ✅/⚠️/❌ | Appropriate JSON-LD |
|
||||
| O06 | Section Chunking | ✅/⚠️/❌ | Single topic per section |
|
||||
| R01 | Data Precision | ✅/⚠️/❌ | ≥5 precise numbers |
|
||||
| R02 | Citation Density | ✅/⚠️/❌ | ≥1 per 500 words |
|
||||
| R06 | Timestamp | ✅/⚠️/❌ | Updated <1 year |
|
||||
| R08 | Internal Link Graph | ✅/⚠️/❌ | Descriptive anchors |
|
||||
| R10 | Content Consistency | ✅/⚠️/❌ | No contradictions |
|
||||
| Exp01 | First-Person Narrative | ✅/⚠️/❌ | "I tested" or "We found" |
|
||||
| Ept01 | Author Identity | ✅/⚠️/❌ | Byline + bio present |
|
||||
| T04 | Disclosure Statements | ✅/⚠️/❌ | Affiliate links disclosed |
|
||||
|
||||
**CORE-EEAT Quick Score**: [X]/17 items passing
|
||||
|
||||
> For a complete 80-item audit with weighted scoring, use `content-quality-auditor`.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Step 11: Generate Audit Summary
|
||||
|
||||
```markdown
|
||||
# On-Page SEO Audit Report
|
||||
|
||||
**Page**: [URL]
|
||||
**Target Keyword**: [keyword]
|
||||
**Audit Date**: [date]
|
||||
|
||||
## Overall Score: [X]/100
|
||||
|
||||
```
|
||||
Score Breakdown:
|
||||
████████░░ Title Tag: 8/10
|
||||
██████░░░░ Meta Description: 6/10
|
||||
█████████░ Headers: 9/10
|
||||
███████░░░ Content: 7/10
|
||||
██████░░░░ Keywords: 6/10
|
||||
█████░░░░░ Internal Links: 5/10
|
||||
████░░░░░░ Images: 4/10
|
||||
████████░░ Technical: 8/10
|
||||
```
|
||||
|
||||
## Priority Issues
|
||||
|
||||
### 🔴 Critical (Fix Immediately)
|
||||
1. [Critical issue 1]
|
||||
2. [Critical issue 2]
|
||||
|
||||
### 🟡 Important (Fix Soon)
|
||||
1. [Important issue 1]
|
||||
2. [Important issue 2]
|
||||
|
||||
### 🟢 Minor (Nice to Have)
|
||||
1. [Minor issue 1]
|
||||
2. [Minor issue 2]
|
||||
|
||||
## Quick Wins
|
||||
|
||||
These changes will have immediate impact:
|
||||
|
||||
1. **[Change 1]**: [Why and how]
|
||||
2. **[Change 2]**: [Why and how]
|
||||
3. **[Change 3]**: [Why and how]
|
||||
|
||||
## Detailed Recommendations
|
||||
|
||||
### Title Tag
|
||||
- **Current**: [current title]
|
||||
- **Recommended**: [new title]
|
||||
- **Impact**: [expected improvement]
|
||||
|
||||
### Meta Description
|
||||
- **Current**: [current description]
|
||||
- **Recommended**: [new description]
|
||||
- **Impact**: [expected improvement]
|
||||
|
||||
### Content Improvements
|
||||
1. [Specific content change with location]
|
||||
2. [Specific content change with location]
|
||||
|
||||
### Internal Linking
|
||||
1. Add link: "[anchor]" → [destination]
|
||||
2. Add link: "[anchor]" → [destination]
|
||||
|
||||
### Image Optimization
|
||||
1. [Image 1]: [change needed]
|
||||
2. [Image 2]: [change needed]
|
||||
|
||||
## Competitor Comparison
|
||||
|
||||
| Element | Your Page | Top Competitor | Gap |
|
||||
|---------|-----------|----------------|-----|
|
||||
| Word count | [X] | [Y] | [+/-Z] |
|
||||
| Internal links | [X] | [Y] | [+/-Z] |
|
||||
| Images | [X] | [Y] | [+/-Z] |
|
||||
| H2 headings | [X] | [Y] | [+/-Z] |
|
||||
|
||||
## Action Checklist
|
||||
|
||||
- [ ] Update title tag
|
||||
- [ ] Rewrite meta description
|
||||
- [ ] Add keyword to H1
|
||||
- [ ] Add [X] more internal links
|
||||
- [ ] Add alt text to [X] images
|
||||
- [ ] Add [X] more content sections
|
||||
- [ ] Implement FAQ schema
|
||||
- [ ] [Additional action items]
|
||||
|
||||
## Expected Results
|
||||
|
||||
After implementing these changes:
|
||||
- Estimated ranking improvement: [X] positions
|
||||
- Estimated CTR improvement: [X]%
|
||||
- Estimated traffic increase: [X]%
|
||||
```
|
||||
496
.cursor/skills/on-page-seo-auditor/references/scoring-rubric.md
Normal file
496
.cursor/skills/on-page-seo-auditor/references/scoring-rubric.md
Normal file
|
|
@ -0,0 +1,496 @@
|
|||
# On-Page SEO Scoring Rubric
|
||||
|
||||
Detailed scoring criteria for each of the 8 audit sections. Use this rubric to ensure consistent, objective scoring across audits.
|
||||
|
||||
## How to Use This Rubric
|
||||
|
||||
1. Score each section independently using the criteria below
|
||||
2. Apply the section weight to calculate the weighted score
|
||||
3. Sum all weighted scores for the overall page score (out of 100)
|
||||
4. Use calibration examples to verify your scoring is consistent
|
||||
|
||||
## Section 1: Title Tag (Weight: 15%, Max: 15 points)
|
||||
|
||||
### Scoring Criteria
|
||||
|
||||
| Criterion | Points | Requirement |
|
||||
|-----------|--------|-------------|
|
||||
| Keyword presence | 3 | Primary keyword appears in title |
|
||||
| Keyword position | 2 | Primary keyword in first half of title |
|
||||
| Length optimization | 2 | Between 50-60 characters |
|
||||
| Uniqueness | 2 | Title is unique across the site |
|
||||
| Compelling copy | 2 | Includes benefit, modifier, or hook |
|
||||
| Intent match | 2 | Title matches search intent accurately |
|
||||
| Brand inclusion | 1 | Brand name present (at end) |
|
||||
| No truncation risk | 1 | Displays fully in SERP without cutoff |
|
||||
|
||||
### Calibration Examples
|
||||
|
||||
**Score 15/15 (Excellent)**:
|
||||
- Title: "Keyword Research: 7 Proven Methods to Find Low-Competition Keywords | Brand"
|
||||
- 58 characters, keyword at front, benefit-driven, unique, brand at end
|
||||
|
||||
**Score 11/15 (Good)**:
|
||||
- Title: "The Complete Guide to Keyword Research for Beginners"
|
||||
- 52 characters, keyword present but not at front, no brand, still compelling
|
||||
|
||||
**Score 7/15 (Needs Work)**:
|
||||
- Title: "Keyword Research"
|
||||
- Too short (16 chars), no benefit, no brand, not compelling, generic
|
||||
|
||||
**Score 3/15 (Poor)**:
|
||||
- Title: "Blog Post #47 - Untitled"
|
||||
- No keyword, no benefit, not descriptive, not unique
|
||||
|
||||
**Score 0/15 (Missing)**:
|
||||
- No title tag present, or title tag is empty
|
||||
|
||||
## Section 2: Meta Description (Weight: 5%, Max: 5 points)
|
||||
|
||||
### Scoring Criteria
|
||||
|
||||
| Criterion | Points | Requirement |
|
||||
|-----------|--------|-------------|
|
||||
| Keyword inclusion | 1 | Primary keyword appears naturally |
|
||||
| Length optimization | 1 | Between 150-160 characters |
|
||||
| Call-to-action | 1 | Contains explicit or implicit CTA |
|
||||
| Unique description | 1 | Not duplicated from other pages |
|
||||
| Accurate summary | 1 | Accurately describes page content |
|
||||
|
||||
### Calibration Examples
|
||||
|
||||
**Score 5/5 (Excellent)**:
|
||||
- Description: "Learn 7 proven keyword research methods that top SEOs use to find low-competition opportunities. Includes free templates, real examples, and step-by-step walkthroughs. Get started today."
|
||||
- 155 chars, keyword present, CTA ("Get started"), accurate, unique
|
||||
|
||||
**Score 3/5 (Needs Work)**:
|
||||
- Description: "This page talks about keyword research and some tips you might find useful for SEO."
|
||||
- 83 chars (too short), weak copy, no CTA, vague
|
||||
|
||||
**Score 0/5 (Missing)**:
|
||||
- No meta description set; search engine generates snippet automatically
|
||||
|
||||
## Section 3: Header Structure (Weight: 10%, Max: 10 points)
|
||||
|
||||
### Scoring Criteria
|
||||
|
||||
| Criterion | Points | Requirement |
|
||||
|-----------|--------|-------------|
|
||||
| Single H1 present | 2 | Exactly one H1 on the page |
|
||||
| H1 contains keyword | 2 | Primary keyword in H1 text |
|
||||
| Logical hierarchy | 2 | No skipped levels (H1→H2→H3, not H1→H3) |
|
||||
| H2s cover key subtopics | 2 | H2s address main topic facets |
|
||||
| Descriptive headers | 1 | Headers describe section content clearly |
|
||||
| Keyword variations in H2s | 1 | Secondary keywords or LSI terms in subheadings |
|
||||
|
||||
### Calibration Examples
|
||||
|
||||
**Score 10/10 (Excellent)**:
|
||||
```
|
||||
H1: How to Do Keyword Research: A Step-by-Step Guide
|
||||
H2: What Is Keyword Research and Why Does It Matter?
|
||||
H2: 7 Keyword Research Methods That Work
|
||||
H3: Method 1: Seed Keyword Brainstorming
|
||||
H3: Method 2: Competitor Keyword Analysis
|
||||
H3: Method 3: Google Autocomplete Mining
|
||||
H2: Free Keyword Research Tools Compared
|
||||
H2: How to Prioritize Keywords by Difficulty
|
||||
H2: Keyword Research FAQ
|
||||
```
|
||||
- Single H1 with keyword, logical hierarchy, descriptive H2s with variations
|
||||
|
||||
**Score 6/10 (Needs Work)**:
|
||||
```
|
||||
H1: Keyword Research
|
||||
H2: Introduction
|
||||
H2: Methods
|
||||
H2: Tools
|
||||
H2: Conclusion
|
||||
```
|
||||
- Single H1 but generic, H2s are vague, no keyword variations
|
||||
|
||||
**Score 2/10 (Poor)**:
|
||||
```
|
||||
H1: Welcome to Our Blog
|
||||
H1: Keyword Research Guide
|
||||
H3: Some Tips
|
||||
H2: More Information
|
||||
```
|
||||
- Multiple H1s, skipped levels, generic, no keyword strategy
|
||||
|
||||
## Section 4: Content Quality (Weight: 25%, Max: 25 points)
|
||||
|
||||
### Scoring Criteria
|
||||
|
||||
| Criterion | Points | Requirement |
|
||||
|-----------|--------|-------------|
|
||||
| Sufficient length | 4 | Meets minimum for query type (see benchmarks) |
|
||||
| Comprehensive coverage | 4 | Covers all major subtopics that top-ranking pages cover |
|
||||
| Unique value | 4 | Original insights, data, or perspective not found elsewhere |
|
||||
| Up-to-date information | 3 | Statistics, dates, and references are current |
|
||||
| Proper formatting | 3 | Uses lists, tables, bold, images to improve readability |
|
||||
| Readability | 3 | Appropriate reading level for target audience |
|
||||
| E-E-A-T signals | 4 | Author byline, credentials, first-person experience, cited sources |
|
||||
|
||||
### Content Length Benchmarks (for "Sufficient length" criterion)
|
||||
|
||||
| Query Type | Minimum for 4/4 | Minimum for 3/4 | Minimum for 2/4 | Below 1/4 |
|
||||
|-----------|-----------------|-----------------|-----------------|-----------|
|
||||
| Informational | 1,500+ words | 1,000-1,499 | 500-999 | <500 |
|
||||
| Commercial | 1,200+ words | 800-1,199 | 400-799 | <400 |
|
||||
| Transactional | 500+ words | 350-499 | 200-349 | <200 |
|
||||
| Local | 400+ words | 250-399 | 150-249 | <150 |
|
||||
|
||||
### Calibration Examples
|
||||
|
||||
**Score 25/25 (Excellent)**:
|
||||
- 2,400-word guide on keyword research
|
||||
- Covers all subtopics competitors cover plus unique methods
|
||||
- Contains original data from author's experiments
|
||||
- All statistics from the last 12 months
|
||||
- Well-formatted with tables, lists, images, code examples
|
||||
- Written at appropriate level for target audience
|
||||
- Author byline with SEO credentials, first-person "I tested" language
|
||||
|
||||
**Score 16/25 (Good)**:
|
||||
- 1,600-word guide, covers main subtopics
|
||||
- Some unique insights but mostly curated information
|
||||
- Most statistics current, a few outdated
|
||||
- Good formatting but could use more visual elements
|
||||
- Author byline present but limited credentials
|
||||
|
||||
**Score 8/25 (Needs Work)**:
|
||||
- 700-word article on an informational query (too thin)
|
||||
- Missing several subtopics competitors cover
|
||||
- No original data or insights
|
||||
- Several outdated statistics
|
||||
- Wall of text with minimal formatting
|
||||
- No author byline or E-E-A-T signals
|
||||
|
||||
## Section 5: Keyword Optimization (Weight: 15%, Max: 15 points)
|
||||
|
||||
### Scoring Criteria
|
||||
|
||||
| Criterion | Points | Requirement |
|
||||
|-----------|--------|-------------|
|
||||
| Keyword in title | 2 | Primary keyword in title tag |
|
||||
| Keyword in H1 | 2 | Primary keyword in H1 |
|
||||
| Keyword in first 100 words | 2 | Primary keyword appears early in content |
|
||||
| Keyword density (0.5-2.5%) | 2 | Natural density, not stuffed, not too sparse |
|
||||
| Secondary keywords present | 2 | 2-3 secondary/related keywords used |
|
||||
| LSI/semantic terms | 2 | Related terms and synonyms present |
|
||||
| Keyword in URL | 1 | Primary keyword in URL slug |
|
||||
| Keyword in image alt text | 1 | At least one image alt contains keyword naturally |
|
||||
| Keyword in meta description | 1 | Primary keyword in meta description |
|
||||
|
||||
### Keyword Density Guidelines
|
||||
|
||||
| Density | Score Impact | Assessment |
|
||||
|---------|-------------|-----------|
|
||||
| 0.5-1.0% | Full points | Natural, well-integrated |
|
||||
| 1.0-2.0% | Full points | Acceptable, slightly keyword-focused |
|
||||
| 2.0-2.5% | -1 point | Borderline, review for naturalness |
|
||||
| 2.5-3.0% | -2 points | Over-optimized, needs reduction |
|
||||
| >3.0% | 0 points for density | Keyword stuffing, immediate fix needed |
|
||||
| <0.5% | -1 point | Under-optimized, add more natural usage |
|
||||
|
||||
### Calibration Examples
|
||||
|
||||
**Score 15/15 (Excellent)**:
|
||||
- "keyword research" in title (position 1), H1, first sentence, URL slug, 1 image alt
|
||||
- Density: 1.2% across 2,000 words (24 occurrences, well-distributed)
|
||||
- Secondary keywords: "keyword tool", "search volume", "keyword difficulty" all present
|
||||
- LSI terms: "SEO", "search terms", "Google", "organic traffic", "SERP" present
|
||||
|
||||
**Score 9/15 (Needs Work)**:
|
||||
- Keyword in title and H1, but not in first 100 words
|
||||
- Density: 0.3% (too sparse for a 2,000-word article)
|
||||
- Missing secondary keywords
|
||||
- No LSI/semantic terms beyond the primary keyword
|
||||
|
||||
## Section 6: Internal/External Links (Weight: 10%, Max: 10 points)
|
||||
|
||||
### Scoring Criteria
|
||||
|
||||
| Criterion | Points | Requirement |
|
||||
|-----------|--------|-------------|
|
||||
| Internal link count | 2 | 3-5+ contextual internal links (per 1,000 words) |
|
||||
| Internal link relevance | 2 | Links point to topically related pages |
|
||||
| Descriptive anchor text | 2 | Anchors describe destination, not "click here" |
|
||||
| External link quality | 2 | Links to authoritative, relevant external sources |
|
||||
| No broken links | 1 | All links return 200 status |
|
||||
| Link placement | 1 | Links placed naturally within content flow |
|
||||
|
||||
### Internal Link Count Guidelines
|
||||
|
||||
| Content Length | Minimum Links | Ideal Range | Too Many |
|
||||
|---------------|--------------|-------------|---------|
|
||||
| <500 words | 2 | 2-4 | >8 |
|
||||
| 500-1,000 words | 3 | 3-6 | >12 |
|
||||
| 1,000-2,000 words | 4 | 5-10 | >20 |
|
||||
| 2,000+ words | 5 | 8-15 | >25 |
|
||||
|
||||
### Calibration Examples
|
||||
|
||||
**Score 10/10 (Excellent)**:
|
||||
- 8 internal links in a 2,000-word article
|
||||
- All link to relevant related content
|
||||
- Anchor text like "learn about keyword difficulty scoring" (descriptive)
|
||||
- 3 external links to authoritative sources (Google documentation, industry studies)
|
||||
- Zero broken links
|
||||
|
||||
**Score 5/10 (Needs Work)**:
|
||||
- 2 internal links in a 2,000-word article (too few)
|
||||
- One link uses "click here" anchor text
|
||||
- No external links to sources
|
||||
- One broken link found
|
||||
|
||||
## Section 7: Image Optimization (Weight: 10%, Max: 10 points)
|
||||
|
||||
### Scoring Criteria
|
||||
|
||||
| Criterion | Points | Requirement |
|
||||
|-----------|--------|-------------|
|
||||
| All images have alt text | 3 | Every image has descriptive alt attribute |
|
||||
| Alt text includes keywords | 2 | At least 1 image alt naturally includes primary keyword |
|
||||
| Descriptive file names | 1 | Files named descriptively (keyword-research-tool.webp, not IMG_4532.jpg) |
|
||||
| Optimized file sizes | 2 | Images compressed appropriately (<200KB for photos, <50KB for graphics) |
|
||||
| Modern formats | 1 | Uses WebP or AVIF where supported |
|
||||
| Lazy loading | 1 | Below-fold images use loading="lazy" |
|
||||
|
||||
### Image Size Guidelines
|
||||
|
||||
| Image Type | Target Size | Format | Notes |
|
||||
|-----------|------------|--------|-------|
|
||||
| Hero/banner | <200KB | WebP | Resize to actual display dimensions |
|
||||
| Content photos | <150KB | WebP | Compress at 80% quality |
|
||||
| Screenshots | <100KB | WebP/PNG | Use PNG only if text clarity critical |
|
||||
| Icons/graphics | <30KB | SVG/WebP | SVG preferred for vector graphics |
|
||||
| Thumbnails | <50KB | WebP | Generate at actual thumbnail dimensions |
|
||||
|
||||
### Calibration Examples
|
||||
|
||||
**Score 10/10 (Excellent)**:
|
||||
- 5 images, all with descriptive alt text
|
||||
- Alt text: "screenshot of Ahrefs keyword research tool showing difficulty score"
|
||||
- Files named: keyword-research-tool-ahrefs.webp
|
||||
- All images <150KB, WebP format, lazy loading on below-fold images
|
||||
|
||||
**Score 4/10 (Needs Work)**:
|
||||
- 3 images, 1 missing alt text
|
||||
- Alt text on others: "image1", "screenshot" (not descriptive)
|
||||
- Files named: IMG_3421.jpg, photo.png
|
||||
- One image is 1.2MB uncompressed JPEG
|
||||
|
||||
## Section 8: Page-Level Technical (Weight: 10%, Max: 10 points)
|
||||
|
||||
### Scoring Criteria
|
||||
|
||||
| Criterion | Points | Requirement |
|
||||
|-----------|--------|-------------|
|
||||
| Clean URL structure | 2 | Short, descriptive, keyword-containing URL |
|
||||
| Correct canonical tag | 2 | Self-referencing canonical or appropriate cross-domain canonical |
|
||||
| Mobile-friendly | 2 | Passes mobile-friendly test, responsive layout |
|
||||
| Page speed (LCP) | 2 | LCP ≤2.5s on mobile |
|
||||
| HTTPS | 1 | Page served over HTTPS with valid certificate |
|
||||
| Schema markup | 1 | Appropriate schema type implemented (Article, FAQ, HowTo, etc.) |
|
||||
|
||||
### URL Quality Guidelines
|
||||
|
||||
| Aspect | Good | Bad |
|
||||
|--------|------|-----|
|
||||
| Length | /blog/keyword-research-guide | /blog/2024/01/15/the-complete-ultimate-guide-to-keyword-research-for-beginners-and-experts |
|
||||
| Keywords | /services/seo-audit | /services/page-id-4532 |
|
||||
| Characters | lowercase, hyphens | UPPERCASE, underscores, special chars |
|
||||
| Parameters | /products/shoes (clean) | /products?id=432&color=red&size=9 |
|
||||
|
||||
### Calibration Examples
|
||||
|
||||
**Score 10/10 (Excellent)**:
|
||||
- URL: /blog/keyword-research-guide (clean, keyword-present)
|
||||
- Self-referencing canonical tag present
|
||||
- Fully responsive, passes mobile-friendly test
|
||||
- LCP: 1.8s on mobile
|
||||
- HTTPS with valid certificate
|
||||
- Article + FAQ schema implemented
|
||||
|
||||
**Score 5/10 (Needs Work)**:
|
||||
- URL: /blog/?p=4532 (not descriptive)
|
||||
- No canonical tag
|
||||
- Mobile-friendly but some tap targets too small
|
||||
- LCP: 3.2s (needs improvement)
|
||||
- HTTPS present
|
||||
- No schema markup
|
||||
|
||||
## Overall Score Calculation
|
||||
|
||||
### Formula
|
||||
|
||||
```
|
||||
Overall Score = Sum of (Section Score / Section Max * Section Weight * 100)
|
||||
```
|
||||
|
||||
### Example Calculation
|
||||
|
||||
| Section | Raw Score | Max | Weight | Weighted Score |
|
||||
|---------|-----------|-----|--------|---------------|
|
||||
| Title Tag | 12 | 15 | 15% | 12.0 |
|
||||
| Meta Description | 4 | 5 | 5% | 4.0 |
|
||||
| Header Structure | 8 | 10 | 10% | 8.0 |
|
||||
| Content Quality | 20 | 25 | 25% | 20.0 |
|
||||
| Keyword Optimization | 11 | 15 | 15% | 11.0 |
|
||||
| Internal/External Links | 7 | 10 | 10% | 7.0 |
|
||||
| Image Optimization | 6 | 10 | 10% | 6.0 |
|
||||
| Page-Level Technical | 8 | 10 | 10% | 8.0 |
|
||||
| **Total** | | | **100%** | **76.0/100** |
|
||||
|
||||
### Overall Score Interpretation
|
||||
|
||||
| Score Range | Grade | Assessment |
|
||||
|------------|-------|-----------|
|
||||
| 90-100 | A+ | Exceptional — minor tweaks only |
|
||||
| 80-89 | A | Strong — a few optimization opportunities |
|
||||
| 70-79 | B | Good — several areas need attention |
|
||||
| 60-69 | C | Average — significant improvements needed |
|
||||
| 50-59 | D | Below average — major issues present |
|
||||
| <50 | F | Poor — comprehensive overhaul required |
|
||||
|
||||
## Calibration Guidance
|
||||
|
||||
### Avoiding Common Scoring Errors
|
||||
|
||||
1. **Halo effect**: A great title does not mean great content. Score each section independently.
|
||||
2. **Recency bias**: Do not inflate scores for recently published content. Freshness is one factor among many.
|
||||
3. **Tool dependency**: If you cannot verify a metric (e.g., page speed without tool access), note it as "unverified" rather than guessing.
|
||||
4. **Competitor anchoring**: Score against the rubric criteria, not relative to competitors. Competitor comparison is a separate analysis step.
|
||||
5. **Intent mismatch**: A page with perfect technical SEO but wrong intent alignment should still score low on Content Quality.
|
||||
|
||||
### When to Adjust Weights
|
||||
|
||||
The default weights suit most content pages. Consider adjusting for:
|
||||
|
||||
| Page Type | Increase Weight | Decrease Weight | Reason |
|
||||
|-----------|----------------|----------------|--------|
|
||||
| E-commerce product | Image Optimization, Technical | Content Quality | Products need visuals and speed more than long-form |
|
||||
| Long-form guide | Content Quality, Keywords | Image Optimization | Content depth matters most |
|
||||
| Landing page | Technical, Title | Content Quality | Speed and CTR drive conversions |
|
||||
| Local service page | Technical, Links | Keywords | NAP consistency and local signals matter more |
|
||||
|
||||
Always document weight adjustments and the reasoning in the audit report.
|
||||
|
||||
---
|
||||
|
||||
## Scoring Rubric
|
||||
|
||||
### Section Weight Distribution
|
||||
|
||||
| Audit Section | Weight | Max Score | Rationale |
|
||||
|--------------|--------|-----------|-----------|
|
||||
| Title Tag | 15% | 15 | Strongest single ranking signal |
|
||||
| Meta Description | 5% | 5 | CTR impact, not direct ranking factor |
|
||||
| Header Structure | 10% | 10 | Content organization, semantic signals |
|
||||
| Content Quality | 25% | 25 | Strongest holistic ranking factor |
|
||||
| Keyword Optimization | 15% | 15 | Relevance signals |
|
||||
| Internal/External Links | 10% | 10 | Authority flow, context signals |
|
||||
| Image Optimization | 10% | 10 | Accessibility + image search opportunity |
|
||||
| Page-Level Technical | 10% | 10 | Core Web Vitals, mobile, security |
|
||||
|
||||
### Scoring Scale per Factor
|
||||
|
||||
| Score | Meaning | Action Required |
|
||||
|-------|---------|-----------------|
|
||||
| 10/10 | Excellent — follows all best practices | None |
|
||||
| 7-9/10 | Good — minor improvements possible | Optional optimization |
|
||||
| 4-6/10 | Needs work — notable issues | Fix within this week |
|
||||
| 1-3/10 | Poor — significant problems | Fix immediately (Critical) |
|
||||
| 0/10 | Missing or broken | Fix immediately (Blocking) |
|
||||
|
||||
### Scoring Conversion Formula
|
||||
|
||||
Each section is scored out of 10, then converted to the 100-point overall score using section weights:
|
||||
|
||||
```
|
||||
Overall Score = Sum of (section_score x section_weight) x 10
|
||||
```
|
||||
|
||||
Where section weights are: Title 0.15, Meta 0.05, Headers 0.10, Content 0.25, Keywords 0.15, Links 0.10, Images 0.10, Technical 0.10.
|
||||
|
||||
**Worked example:**
|
||||
|
||||
| Section | Score /10 | Weight | Weighted |
|
||||
|---------|-----------|--------|----------|
|
||||
| Title Tag | 8 | 0.15 | 1.20 |
|
||||
| Meta Description | 6 | 0.05 | 0.30 |
|
||||
| Header Structure | 9 | 0.10 | 0.90 |
|
||||
| Content Quality | 7 | 0.25 | 1.75 |
|
||||
| Keyword Optimization | 8 | 0.15 | 1.20 |
|
||||
| Internal/External Links | 5 | 0.10 | 0.50 |
|
||||
| Image Optimization | 6 | 0.10 | 0.60 |
|
||||
| Page-Level Technical | 7 | 0.10 | 0.70 |
|
||||
| **Total** | | **1.00** | **7.15** |
|
||||
|
||||
**Overall Score** = 7.15 x 10 = **71 / 100**
|
||||
|
||||
## Common Issue Resolution Playbook
|
||||
|
||||
### Title Tag Issues
|
||||
|
||||
| Issue | Impact | Quick Fix Template |
|
||||
|-------|--------|-------------------|
|
||||
| Missing title | Critical | Add: "[Primary Keyword]: [Benefit] | [Brand]" |
|
||||
| Too long (>60 chars) | Medium | Shorten: move brand to end, remove filler words |
|
||||
| Too short (<30 chars) | Medium | Expand: add modifier, benefit, or year |
|
||||
| Missing keyword | High | Rewrite to include primary keyword in first half |
|
||||
| Duplicate title | High | Make each page title unique; add page-specific modifier |
|
||||
|
||||
### Meta Description Issues
|
||||
|
||||
| Issue | Impact | Quick Fix Template |
|
||||
|-------|--------|-------------------|
|
||||
| Missing description | Medium | Write: "[What this page covers]. [Key benefit]. [CTA]." (150-160 chars) |
|
||||
| Too long (>160 chars) | Low | Trim from end; ensure core message fits in 150 chars |
|
||||
| Missing keyword | Low | Naturally incorporate primary keyword |
|
||||
| No CTA | Low | Add: "Learn more", "Discover", "Find out", "Get started" |
|
||||
| Duplicated across pages | Medium | Write unique description for each page |
|
||||
|
||||
### Header Issues
|
||||
|
||||
| Issue | Impact | Quick Fix |
|
||||
|-------|--------|-----------|
|
||||
| Missing H1 | Critical | Add one H1 per page containing primary keyword |
|
||||
| Multiple H1s | High | Keep one H1, convert others to H2 |
|
||||
| Skipped heading levels | Medium | Use sequential hierarchy: H1→H2→H3 |
|
||||
| Headers not descriptive | Medium | Rewrite to include keyword variations |
|
||||
| No H2s (single long block) | Medium | Break content into sections with descriptive H2s every 200-300 words |
|
||||
|
||||
### Content Issues
|
||||
|
||||
| Issue | Impact | Quick Fix |
|
||||
|-------|--------|-----------|
|
||||
| Thin content (<300 words) | Critical | Expand with subtopics, FAQ, examples |
|
||||
| Keyword stuffing (>3%) | High | Reduce usage, use synonyms and related terms |
|
||||
| No structured data | Medium | Add relevant schema (FAQ, HowTo, Article) |
|
||||
| Missing internal links | Medium | Add 3-5 contextual internal links |
|
||||
| No images | Low | Add 2-3 relevant images with alt text |
|
||||
|
||||
## Industry Benchmark Data
|
||||
|
||||
### Content Length Benchmarks by Query Type
|
||||
|
||||
| Query Type | Top 10 Average Word Count | Recommended Minimum |
|
||||
|-----------|--------------------------|-------------------|
|
||||
| Informational (guides) | 2,200 words | 1,500 words |
|
||||
| Commercial (reviews) | 1,800 words | 1,200 words |
|
||||
| Transactional (product) | 800 words | 500 words |
|
||||
| Local (service pages) | 600 words | 400 words |
|
||||
| Definition queries | 1,200 words | 800 words |
|
||||
|
||||
### Page Speed Benchmarks
|
||||
|
||||
| Metric | Good | Needs Improvement | Poor |
|
||||
|--------|------|-------------------|------|
|
||||
| LCP | ≤2.5s | 2.5-4.0s | >4.0s |
|
||||
| FID/INP | ≤100ms/200ms | 100-300ms | >300ms |
|
||||
| CLS | ≤0.1 | 0.1-0.25 | >0.25 |
|
||||
| TTFB | ≤800ms | 800-1800ms | >1800ms |
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue