agileflow 3.3.0 → 3.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +5 -0
- package/README.md +6 -6
- package/lib/skill-loader.js +0 -1
- package/package.json +1 -1
- package/scripts/agileflow-statusline.sh +81 -0
- package/scripts/claude-tmux.sh +113 -22
- package/scripts/claude-watchdog.sh +225 -0
- package/scripts/generators/agent-registry.js +14 -1
- package/scripts/generators/inject-babysit.js +22 -9
- package/scripts/generators/inject-help.js +19 -9
- package/scripts/lib/audit-cleanup.js +250 -0
- package/scripts/lib/audit-registry.js +248 -0
- package/scripts/lib/feature-catalog.js +3 -3
- package/scripts/lib/gate-enforcer.js +295 -0
- package/scripts/lib/model-profiles.js +98 -0
- package/scripts/lib/signal-detectors.js +1 -1
- package/scripts/lib/skill-catalog.js +557 -0
- package/scripts/lib/skill-recommender.js +311 -0
- package/scripts/lib/tdd-phase-manager.js +455 -0
- package/scripts/lib/team-events.js +34 -3
- package/scripts/lib/tmux-group-colors.js +113 -0
- package/scripts/messaging-bridge.js +209 -1
- package/scripts/spawn-audit-sessions.js +549 -0
- package/scripts/team-manager.js +37 -16
- package/scripts/tmux-close-windows.sh +180 -0
- package/src/core/agents/ads-audit-budget.md +181 -0
- package/src/core/agents/ads-audit-compliance.md +169 -0
- package/src/core/agents/ads-audit-creative.md +164 -0
- package/src/core/agents/ads-audit-google.md +226 -0
- package/src/core/agents/ads-audit-meta.md +183 -0
- package/src/core/agents/ads-audit-tracking.md +197 -0
- package/src/core/agents/ads-consensus.md +322 -0
- package/src/core/agents/brainstorm-analyzer-features.md +169 -0
- package/src/core/agents/brainstorm-analyzer-growth.md +161 -0
- package/src/core/agents/brainstorm-analyzer-integration.md +172 -0
- package/src/core/agents/brainstorm-analyzer-market.md +147 -0
- package/src/core/agents/brainstorm-analyzer-ux.md +167 -0
- package/src/core/agents/brainstorm-consensus.md +237 -0
- package/src/core/agents/completeness-consensus.md +5 -5
- package/src/core/agents/perf-consensus.md +2 -2
- package/src/core/agents/security-consensus.md +2 -2
- package/src/core/agents/seo-analyzer-content.md +167 -0
- package/src/core/agents/seo-analyzer-images.md +187 -0
- package/src/core/agents/seo-analyzer-performance.md +206 -0
- package/src/core/agents/seo-analyzer-schema.md +176 -0
- package/src/core/agents/seo-analyzer-sitemap.md +172 -0
- package/src/core/agents/seo-analyzer-technical.md +144 -0
- package/src/core/agents/seo-consensus.md +289 -0
- package/src/core/agents/test-consensus.md +2 -2
- package/src/core/commands/ads/audit.md +375 -0
- package/src/core/commands/ads/budget.md +97 -0
- package/src/core/commands/ads/competitor.md +112 -0
- package/src/core/commands/ads/creative.md +85 -0
- package/src/core/commands/ads/google.md +112 -0
- package/src/core/commands/ads/landing.md +119 -0
- package/src/core/commands/ads/linkedin.md +112 -0
- package/src/core/commands/ads/meta.md +91 -0
- package/src/core/commands/ads/microsoft.md +115 -0
- package/src/core/commands/ads/plan.md +321 -0
- package/src/core/commands/ads/tiktok.md +129 -0
- package/src/core/commands/ads/youtube.md +124 -0
- package/src/core/commands/ads.md +128 -0
- package/src/core/commands/babysit.md +249 -1284
- package/src/core/commands/{audit → code}/completeness.md +35 -25
- package/src/core/commands/{audit → code}/legal.md +26 -16
- package/src/core/commands/{audit → code}/logic.md +27 -16
- package/src/core/commands/{audit → code}/performance.md +30 -20
- package/src/core/commands/{audit → code}/security.md +32 -19
- package/src/core/commands/{audit → code}/test.md +30 -20
- package/src/core/commands/{discovery → ideate}/brief.md +12 -12
- package/src/core/commands/{discovery/new.md → ideate/discover.md} +13 -13
- package/src/core/commands/ideate/features.md +435 -0
- package/src/core/commands/seo/audit.md +373 -0
- package/src/core/commands/seo/competitor.md +174 -0
- package/src/core/commands/seo/content.md +107 -0
- package/src/core/commands/seo/geo.md +229 -0
- package/src/core/commands/seo/hreflang.md +140 -0
- package/src/core/commands/seo/images.md +96 -0
- package/src/core/commands/seo/page.md +198 -0
- package/src/core/commands/seo/plan.md +163 -0
- package/src/core/commands/seo/programmatic.md +131 -0
- package/src/core/commands/seo/references/cwv-thresholds.md +64 -0
- package/src/core/commands/seo/references/eeat-framework.md +110 -0
- package/src/core/commands/seo/references/quality-gates.md +91 -0
- package/src/core/commands/seo/references/schema-types.md +102 -0
- package/src/core/commands/seo/schema.md +183 -0
- package/src/core/commands/seo/sitemap.md +97 -0
- package/src/core/commands/seo/technical.md +100 -0
- package/src/core/commands/seo.md +107 -0
- package/src/core/commands/skill/list.md +68 -212
- package/src/core/commands/skill/recommend.md +216 -0
- package/src/core/commands/tdd-next.md +238 -0
- package/src/core/commands/tdd.md +210 -0
- package/src/core/experts/_core-expertise.yaml +105 -0
- package/src/core/experts/analytics/expertise.yaml +5 -99
- package/src/core/experts/codebase-query/expertise.yaml +3 -72
- package/src/core/experts/compliance/expertise.yaml +6 -72
- package/src/core/experts/database/expertise.yaml +9 -52
- package/src/core/experts/documentation/expertise.yaml +7 -140
- package/src/core/experts/integrations/expertise.yaml +7 -127
- package/src/core/experts/mentor/expertise.yaml +8 -35
- package/src/core/experts/monitoring/expertise.yaml +7 -49
- package/src/core/experts/performance/expertise.yaml +1 -26
- package/src/core/experts/security/expertise.yaml +9 -34
- package/src/core/experts/ui/expertise.yaml +6 -36
- package/src/core/knowledge/ads/ad-audit-checklist-scoring.md +424 -0
- package/src/core/knowledge/ads/ad-optimization-logic.md +590 -0
- package/src/core/knowledge/ads/ad-technical-specifications.md +385 -0
- package/src/core/knowledge/ads/definitive-advertising-reference-2026.md +506 -0
- package/src/core/knowledge/ads/paid-advertising-research-2026.md +445 -0
- package/src/core/templates/agileflow-metadata.json +15 -1
- package/tools/cli/installers/ide/_base-ide.js +42 -5
- package/tools/cli/installers/ide/claude-code.js +3 -3
- package/tools/cli/lib/content-injector.js +160 -12
- package/tools/cli/lib/docs-setup.js +1 -1
- package/src/core/commands/skill/create.md +0 -698
- package/src/core/commands/skill/delete.md +0 -316
- package/src/core/commands/skill/edit.md +0 -359
- package/src/core/commands/skill/test.md +0 -394
- package/src/core/commands/skill/upgrade.md +0 -552
- package/src/core/templates/skill-template.md +0 -117
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Strategic SEO planning with industry-specific templates, competitive positioning, and prioritized roadmap generation
|
|
3
|
+
argument-hint: "URL [TIMEFRAME=3mo|6mo|12mo]"
|
|
4
|
+
compact_context:
|
|
5
|
+
priority: medium
|
|
6
|
+
preserve_rules:
|
|
7
|
+
- "ACTIVE COMMAND: /agileflow:seo:plan - Strategic SEO planning"
|
|
8
|
+
- "Detect business type first, then apply industry template"
|
|
9
|
+
- "Generate prioritized roadmap with timeframe milestones"
|
|
10
|
+
- "Reference audit results if available"
|
|
11
|
+
state_fields:
|
|
12
|
+
- target_url
|
|
13
|
+
- business_type
|
|
14
|
+
- timeframe
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# /agileflow:seo:plan
|
|
18
|
+
|
|
19
|
+
Generate a strategic SEO plan with industry-specific templates, competitive positioning analysis, and a prioritized improvement roadmap.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Quick Reference
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
/agileflow:seo:plan https://example.com # 6-month SEO plan (default)
|
|
27
|
+
/agileflow:seo:plan https://example.com TIMEFRAME=3mo # 3-month sprint plan
|
|
28
|
+
/agileflow:seo:plan https://example.com TIMEFRAME=12mo # Annual SEO strategy
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Arguments
|
|
34
|
+
|
|
35
|
+
| Argument | Values | Default | Description |
|
|
36
|
+
|----------|--------|---------|-------------|
|
|
37
|
+
| URL | Any valid URL | Required | Site to plan for |
|
|
38
|
+
| TIMEFRAME | 3mo, 6mo, 12mo | 6mo | Planning horizon |
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Process
|
|
43
|
+
|
|
44
|
+
### STEP 1: Assess Current State
|
|
45
|
+
|
|
46
|
+
Fetch the site and determine:
|
|
47
|
+
- Business type (SaaS, Local, E-commerce, Publisher, Agency)
|
|
48
|
+
- Current SEO maturity (based on quick checks)
|
|
49
|
+
- Existing audit results (check `docs/08-project/seo-audits/`)
|
|
50
|
+
|
|
51
|
+
### STEP 2: Apply Industry Template
|
|
52
|
+
|
|
53
|
+
| Business Type | Priority Areas | Key Strategies |
|
|
54
|
+
|--------------|---------------|----------------|
|
|
55
|
+
| **SaaS** | Content marketing, technical SEO, schema | Blog strategy, documentation SEO, product schema |
|
|
56
|
+
| **Local Business** | Local SEO, Google Business, reviews | NAP consistency, local schema, review generation |
|
|
57
|
+
| **E-commerce** | Product SEO, site structure, CWV | Product schema, faceted navigation, page speed |
|
|
58
|
+
| **Publisher** | Content quality, E-E-A-T, freshness | Author pages, topic clusters, article schema |
|
|
59
|
+
| **Agency** | Authority, portfolio SEO, local | Case studies, service pages, expertise signals |
|
|
60
|
+
|
|
61
|
+
### STEP 3: Generate Roadmap
|
|
62
|
+
|
|
63
|
+
Break the plan into phases:
|
|
64
|
+
|
|
65
|
+
**3-Month Plan**:
|
|
66
|
+
- Month 1: Critical fixes (blocking issues)
|
|
67
|
+
- Month 2: Foundation (technical + schema)
|
|
68
|
+
- Month 3: Content optimization
|
|
69
|
+
|
|
70
|
+
**6-Month Plan**:
|
|
71
|
+
- Month 1-2: Critical fixes + technical foundation
|
|
72
|
+
- Month 3-4: Content strategy + schema implementation
|
|
73
|
+
- Month 5-6: Authority building + performance optimization
|
|
74
|
+
|
|
75
|
+
**12-Month Plan**:
|
|
76
|
+
- Q1: Foundation (technical + critical fixes)
|
|
77
|
+
- Q2: Content + schema
|
|
78
|
+
- Q3: Authority + link building
|
|
79
|
+
- Q4: Advanced optimization + monitoring
|
|
80
|
+
|
|
81
|
+
### STEP 4: Output Plan
|
|
82
|
+
|
|
83
|
+
```markdown
|
|
84
|
+
# SEO Strategy: {URL}
|
|
85
|
+
|
|
86
|
+
## Business Type: {type}
|
|
87
|
+
## Timeframe: {timeframe}
|
|
88
|
+
## Current Maturity: {Beginner/Intermediate/Advanced}
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## Executive Summary
|
|
93
|
+
|
|
94
|
+
{2-3 sentence overview of the site's SEO status and key opportunities}
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## Phase 1: {title} (Month 1-X)
|
|
99
|
+
|
|
100
|
+
### Goals
|
|
101
|
+
- {Goal 1}
|
|
102
|
+
- {Goal 2}
|
|
103
|
+
|
|
104
|
+
### Actions
|
|
105
|
+
- [ ] {Specific action with expected impact}
|
|
106
|
+
- [ ] {Specific action}
|
|
107
|
+
- [ ] {Specific action}
|
|
108
|
+
|
|
109
|
+
### KPIs
|
|
110
|
+
- {Metric to track}
|
|
111
|
+
- {Metric to track}
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## Phase 2: {title} (Month X-Y)
|
|
116
|
+
|
|
117
|
+
[Same structure]
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## Content Strategy
|
|
122
|
+
|
|
123
|
+
### Topic Clusters
|
|
124
|
+
| Pillar | Supporting Content | Target Keywords |
|
|
125
|
+
|--------|-------------------|----------------|
|
|
126
|
+
| {topic} | {subtopics} | {keywords} |
|
|
127
|
+
|
|
128
|
+
### Content Calendar
|
|
129
|
+
| Month | Content Type | Topic | Goal |
|
|
130
|
+
|-------|-------------|-------|------|
|
|
131
|
+
| 1 | {type} | {topic} | {goal} |
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## Technical Priorities
|
|
136
|
+
|
|
137
|
+
[Ranked list from audit findings or quick assessment]
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## Measurement Framework
|
|
142
|
+
|
|
143
|
+
| KPI | Current | Target ({timeframe}) |
|
|
144
|
+
|-----|---------|---------------------|
|
|
145
|
+
| Organic traffic | Baseline | +X% |
|
|
146
|
+
| Indexed pages | {N} | {target} |
|
|
147
|
+
| Core Web Vitals | {status} | All Good |
|
|
148
|
+
| Schema types | {N} | {target} |
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
<!-- COMPACT_SUMMARY_START -->
|
|
154
|
+
## Compact Summary
|
|
155
|
+
|
|
156
|
+
**Command**: `/agileflow:seo:plan` - Strategic SEO planning
|
|
157
|
+
|
|
158
|
+
**Input**: URL + timeframe (3mo/6mo/12mo)
|
|
159
|
+
|
|
160
|
+
**Output**: Industry-specific roadmap with phases, content strategy, and KPIs
|
|
161
|
+
|
|
162
|
+
**Usage**: `/agileflow:seo:plan URL [TIMEFRAME=6mo]`
|
|
163
|
+
<!-- COMPACT_SUMMARY_END -->
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Programmatic SEO quality gates - validate bulk-generated pages for uniqueness, thin content, duplicate titles, and scale limits
|
|
3
|
+
argument-hint: "URL [MAX_SAMPLE=20]"
|
|
4
|
+
compact_context:
|
|
5
|
+
priority: medium
|
|
6
|
+
preserve_rules:
|
|
7
|
+
- "ACTIVE COMMAND: /agileflow:seo:programmatic - Programmatic SEO QA"
|
|
8
|
+
- "Check quality gates from quality-gates.md reference"
|
|
9
|
+
- "Sample pages to assess uniqueness and content quality"
|
|
10
|
+
- "Flag when thresholds are exceeded"
|
|
11
|
+
state_fields:
|
|
12
|
+
- target_url
|
|
13
|
+
- max_sample
|
|
14
|
+
- pages_sampled
|
|
15
|
+
- gate_violations
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
# /agileflow:seo:programmatic
|
|
19
|
+
|
|
20
|
+
Quality gate enforcement for programmatic SEO. Validate bulk-generated pages for uniqueness, thin content, duplicate elements, and scale safety limits.
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Quick Reference
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
/agileflow:seo:programmatic https://example.com # Sample 20 pages for QA
|
|
28
|
+
/agileflow:seo:programmatic https://example.com MAX_SAMPLE=50 # Larger sample
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Arguments
|
|
34
|
+
|
|
35
|
+
| Argument | Values | Default | Description |
|
|
36
|
+
|----------|--------|---------|-------------|
|
|
37
|
+
| URL | Any valid URL | Required | Site with programmatic pages |
|
|
38
|
+
| MAX_SAMPLE | 5-100 | 20 | Number of pages to sample and analyze |
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Quality Gates (from quality-gates.md)
|
|
43
|
+
|
|
44
|
+
| Metric | Warning | Hard Stop |
|
|
45
|
+
|--------|---------|-----------|
|
|
46
|
+
| Pages without audit | 100+ | 500+ |
|
|
47
|
+
| Unique content per page | < 40% | < 20% |
|
|
48
|
+
| Location pages | 30+ | 50+ |
|
|
49
|
+
| Thin pages (< 300 words) | 10+ | 50+ |
|
|
50
|
+
| Duplicate title tags | 5+ | 20+ |
|
|
51
|
+
| Duplicate meta descriptions | 10+ | 30+ |
|
|
52
|
+
| Pages with no internal links in | 5+ | 20+ |
|
|
53
|
+
| 404 errors | 5+ | 20+ |
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Process
|
|
58
|
+
|
|
59
|
+
### STEP 1: Discover Programmatic Pages
|
|
60
|
+
|
|
61
|
+
Fetch sitemap to identify programmatic page patterns:
|
|
62
|
+
- `/locations/*`, `/cities/*` (location pages)
|
|
63
|
+
- `/products/*`, `/categories/*` (product pages)
|
|
64
|
+
- `/topics/*`, `/tags/*` (topic pages)
|
|
65
|
+
- Any repeating URL pattern with varying slugs
|
|
66
|
+
|
|
67
|
+
### STEP 2: Sample Pages
|
|
68
|
+
|
|
69
|
+
Select a representative sample:
|
|
70
|
+
- Random selection across the pattern
|
|
71
|
+
- Include first, middle, and last pages
|
|
72
|
+
- Include edge cases (short slugs, long slugs)
|
|
73
|
+
|
|
74
|
+
### STEP 3: Analyze Each Sampled Page
|
|
75
|
+
|
|
76
|
+
For each page, check:
|
|
77
|
+
|
|
78
|
+
| Check | What | Threshold |
|
|
79
|
+
|-------|------|-----------|
|
|
80
|
+
| **Word count** | Total content words | ≥ 300 (product), ≥ 500 (location) |
|
|
81
|
+
| **Unique content %** | Content not shared with template | ≥ 40% |
|
|
82
|
+
| **Title uniqueness** | Not identical to other sampled pages | Unique |
|
|
83
|
+
| **Meta description** | Present and unique | Not duplicate |
|
|
84
|
+
| **Internal links** | Links pointing to this page | ≥ 1 |
|
|
85
|
+
| **Structured data** | Schema present and valid | Present |
|
|
86
|
+
| **Content quality** | Not just template with city name swapped | Substantive |
|
|
87
|
+
|
|
88
|
+
### STEP 4: Aggregate and Report
|
|
89
|
+
|
|
90
|
+
```markdown
|
|
91
|
+
# Programmatic SEO QA: {URL}
|
|
92
|
+
|
|
93
|
+
## Pages Sampled: {N} of ~{total estimated}
|
|
94
|
+
|
|
95
|
+
## Quality Gate Results
|
|
96
|
+
|
|
97
|
+
| Gate | Status | Value | Threshold |
|
|
98
|
+
|------|--------|-------|-----------|
|
|
99
|
+
| Unique content | PASS/WARN/FAIL | {avg}% | ≥ 40% |
|
|
100
|
+
| Thin content | PASS/WARN/FAIL | {N} pages < 300w | < 10 |
|
|
101
|
+
| Duplicate titles | PASS/WARN/FAIL | {N} duplicates | < 5 |
|
|
102
|
+
| Duplicate descriptions | PASS/WARN/FAIL | {N} duplicates | < 10 |
|
|
103
|
+
| Internal links | PASS/WARN/FAIL | {N} orphans | < 5 |
|
|
104
|
+
| Schema present | PASS/WARN/FAIL | {N} missing | 0 |
|
|
105
|
+
|
|
106
|
+
## Sample Analysis
|
|
107
|
+
|
|
108
|
+
| Page | Words | Unique % | Title Unique | Schema |
|
|
109
|
+
|------|-------|----------|-------------|--------|
|
|
110
|
+
| /locations/new-york | 450 | 52% | Yes | Yes |
|
|
111
|
+
| /locations/los-angeles | 420 | 48% | Yes | Yes |
|
|
112
|
+
| /locations/chicago | 280 | 35% | No (dup) | No |
|
|
113
|
+
|
|
114
|
+
## Recommendations
|
|
115
|
+
|
|
116
|
+
1. {Priority recommendation}
|
|
117
|
+
2. {Next priority}
|
|
118
|
+
3. {Next priority}
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
<!-- COMPACT_SUMMARY_START -->
|
|
124
|
+
## Compact Summary
|
|
125
|
+
|
|
126
|
+
**Command**: `/agileflow:seo:programmatic` - Programmatic SEO quality gates
|
|
127
|
+
|
|
128
|
+
**Checks**: Content uniqueness, thin pages, duplicate titles/descriptions, orphan pages
|
|
129
|
+
|
|
130
|
+
**Usage**: `/agileflow:seo:programmatic URL [MAX_SAMPLE=20]`
|
|
131
|
+
<!-- COMPACT_SUMMARY_END -->
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Core Web Vitals Thresholds
|
|
2
|
+
|
|
3
|
+
Reference data for SEO performance analysis. Updated February 2026.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Primary Metrics (75th Percentile)
|
|
8
|
+
|
|
9
|
+
| Metric | Good | Needs Improvement | Poor |
|
|
10
|
+
|--------|------|-------------------|------|
|
|
11
|
+
| **LCP** (Largest Contentful Paint) | ≤ 2.5s | 2.5s - 4.0s | > 4.0s |
|
|
12
|
+
| **INP** (Interaction to Next Paint) | ≤ 200ms | 200ms - 500ms | > 500ms |
|
|
13
|
+
| **CLS** (Cumulative Layout Shift) | ≤ 0.1 | 0.1 - 0.25 | > 0.25 |
|
|
14
|
+
|
|
15
|
+
**Note**: INP replaced FID (First Input Delay) as of March 2024.
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## LCP Component Breakdown
|
|
20
|
+
|
|
21
|
+
| Component | Target | Description |
|
|
22
|
+
|-----------|--------|-------------|
|
|
23
|
+
| TTFB (Time to First Byte) | < 800ms | Server response time |
|
|
24
|
+
| Resource load delay | Minimize | Time between TTFB and resource request |
|
|
25
|
+
| Resource load time | Minimize | Time to download LCP resource |
|
|
26
|
+
| Element render delay | Minimize | Time between download and render |
|
|
27
|
+
|
|
28
|
+
**Common LCP elements**: Hero images, heading text, video poster images, background images via CSS.
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Industry Adoption (Oct 2025)
|
|
33
|
+
|
|
34
|
+
| Device | Meeting All Three CWV |
|
|
35
|
+
|--------|----------------------|
|
|
36
|
+
| Desktop | 57% |
|
|
37
|
+
| Mobile | 50% |
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Mobile-Specific (Dec 2025 Update)
|
|
42
|
+
|
|
43
|
+
- Mobile CWV now weighted heavier in ranking
|
|
44
|
+
- Mobile performance is a critical ranking factor
|
|
45
|
+
- Test with 4G throttling (1.6 Mbps down, 750 Kbps up, 150ms RTT)
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Scoring Ranges (for SEO audit)
|
|
50
|
+
|
|
51
|
+
| Score | CWV Status | Meaning |
|
|
52
|
+
|-------|-----------|---------|
|
|
53
|
+
| 90-100 | All Good | All three metrics in "Good" range |
|
|
54
|
+
| 70-89 | Mostly Good | 2 of 3 metrics Good, 1 Needs Improvement |
|
|
55
|
+
| 50-69 | Needs Work | 1+ metrics in Needs Improvement |
|
|
56
|
+
| 0-49 | Poor | 1+ metrics in Poor range |
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## Data Sources
|
|
61
|
+
|
|
62
|
+
- **Field data**: Chrome User Experience Report (CrUX), PageSpeed Insights API
|
|
63
|
+
- **Lab data**: Lighthouse, WebPageTest, Chrome DevTools
|
|
64
|
+
- **Recommendation**: Always prefer field data over lab data when available
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
# E-E-A-T Scoring Framework
|
|
2
|
+
|
|
3
|
+
Reference data for content quality analysis. Updated February 2026.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Scoring Weights (100-point scale)
|
|
8
|
+
|
|
9
|
+
| Factor | Weight | Description |
|
|
10
|
+
|--------|--------|-------------|
|
|
11
|
+
| **Trustworthiness** | 30% | Transparency, contact info, HTTPS, no deception |
|
|
12
|
+
| **Expertise** | 25% | Credentials, accuracy, technical depth |
|
|
13
|
+
| **Authoritativeness** | 25% | Citations, media features, industry standing |
|
|
14
|
+
| **Experience** | 20% | First-hand knowledge, original content, case studies |
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Signal Detection
|
|
19
|
+
|
|
20
|
+
### Trustworthiness (30%)
|
|
21
|
+
|
|
22
|
+
| Signal | Present | Absent |
|
|
23
|
+
|--------|---------|--------|
|
|
24
|
+
| HTTPS | +5 | -10 |
|
|
25
|
+
| Contact page / About page | +5 | -5 |
|
|
26
|
+
| Privacy policy | +3 | -3 |
|
|
27
|
+
| Terms of service | +2 | -2 |
|
|
28
|
+
| Physical address | +3 | 0 |
|
|
29
|
+
| Clear editorial policy | +4 | 0 |
|
|
30
|
+
| No deceptive patterns (dark UX) | +5 | -10 |
|
|
31
|
+
| Transparent affiliate disclosure | +3 | -5 |
|
|
32
|
+
|
|
33
|
+
### Expertise (25%)
|
|
34
|
+
|
|
35
|
+
| Signal | Present | Absent |
|
|
36
|
+
|--------|---------|--------|
|
|
37
|
+
| Author bylines with credentials | +5 | -3 |
|
|
38
|
+
| Cited sources / references | +5 | -3 |
|
|
39
|
+
| Technical accuracy (no factual errors) | +5 | -5 |
|
|
40
|
+
| Industry-specific terminology (appropriate use) | +3 | 0 |
|
|
41
|
+
| Depth of coverage (not surface-level) | +4 | -2 |
|
|
42
|
+
| Peer review / editorial review mentioned | +3 | 0 |
|
|
43
|
+
|
|
44
|
+
### Authoritativeness (25%)
|
|
45
|
+
|
|
46
|
+
| Signal | Present | Absent |
|
|
47
|
+
|--------|---------|--------|
|
|
48
|
+
| Backlinks from authoritative domains | +5 | 0 |
|
|
49
|
+
| Mentioned in media / press | +4 | 0 |
|
|
50
|
+
| Industry awards / certifications | +3 | 0 |
|
|
51
|
+
| Wikipedia reference | +4 | 0 |
|
|
52
|
+
| Featured on Reddit / YouTube / forums | +3 | 0 |
|
|
53
|
+
| Brand search volume indicators | +3 | 0 |
|
|
54
|
+
| Consistent NAP (Name, Address, Phone) | +3 | -2 |
|
|
55
|
+
|
|
56
|
+
### Experience (20%)
|
|
57
|
+
|
|
58
|
+
| Signal | Present | Absent |
|
|
59
|
+
|--------|---------|--------|
|
|
60
|
+
| First-person accounts / case studies | +5 | -2 |
|
|
61
|
+
| Original photography / screenshots | +4 | -1 |
|
|
62
|
+
| Specific data / metrics from real usage | +4 | -2 |
|
|
63
|
+
| User reviews / testimonials (authentic) | +3 | 0 |
|
|
64
|
+
| Step-by-step from personal experience | +4 | -1 |
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Content Quality Minimums by Type
|
|
69
|
+
|
|
70
|
+
| Page Type | Min Words | Unique Content % | Internal Links |
|
|
71
|
+
|-----------|-----------|------------------|----------------|
|
|
72
|
+
| Homepage | 500 | 100% | 5-10 |
|
|
73
|
+
| Service pages | 800 | 60% | 3-8 |
|
|
74
|
+
| Blog posts | 1,500 | 100% | 2-5 |
|
|
75
|
+
| Product pages | 300-400 | 40% | 3-6 |
|
|
76
|
+
| Location pages | 500-600 | 40% | 3-5 |
|
|
77
|
+
| About page | 400 | 100% | 2-4 |
|
|
78
|
+
| FAQ page | 600 | 80% | 2-5 |
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## AI Content Rules
|
|
83
|
+
|
|
84
|
+
- AI content is acceptable IF it demonstrates genuine E-E-A-T
|
|
85
|
+
- Red flags for AI-generated content:
|
|
86
|
+
- Generic phrasing without specifics
|
|
87
|
+
- No original insights or data
|
|
88
|
+
- Fabricated first-person experiences
|
|
89
|
+
- Lack of cited sources
|
|
90
|
+
- Cookie-cutter structure across pages
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## Critical 2025-2026 Updates
|
|
95
|
+
|
|
96
|
+
| Date | Update | Impact |
|
|
97
|
+
|------|--------|--------|
|
|
98
|
+
| Dec 2025 | E-E-A-T applies to ALL queries (not just YMYL) | Affiliate traffic -71%, health -67% |
|
|
99
|
+
| Feb 2026 | Experience signals weighted more heavily | Differentiator vs AI-generated content |
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## Score Interpretation
|
|
104
|
+
|
|
105
|
+
| Score | Rating | Action |
|
|
106
|
+
|-------|--------|--------|
|
|
107
|
+
| 80-100 | Strong E-E-A-T | Maintain, optimize further |
|
|
108
|
+
| 60-79 | Adequate | Improve weakest factor |
|
|
109
|
+
| 40-59 | Weak | Significant improvements needed |
|
|
110
|
+
| 0-39 | Critical | Major content overhaul required |
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# SEO Quality Gates
|
|
2
|
+
|
|
3
|
+
Reference data for programmatic SEO and content quality thresholds. Updated February 2026.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## On-Page Elements
|
|
8
|
+
|
|
9
|
+
### Title Tag
|
|
10
|
+
- **Length**: 30-60 characters
|
|
11
|
+
- **Requirements**: Unique per page, keyword-forward, no truncation
|
|
12
|
+
- **Flags**: Missing, duplicate, too short (<30), too long (>60), keyword-stuffed
|
|
13
|
+
|
|
14
|
+
### Meta Description
|
|
15
|
+
- **Length**: 120-160 characters
|
|
16
|
+
- **Requirements**: Unique per page, natural keywords, includes CTA
|
|
17
|
+
- **Flags**: Missing, duplicate, too short (<120), too long (>160)
|
|
18
|
+
|
|
19
|
+
### Headings
|
|
20
|
+
- **H1**: Exactly 1 per page, contains primary keyword
|
|
21
|
+
- **H2-H6**: Logical hierarchy (no skipping levels), keyword-relevant
|
|
22
|
+
- **Flags**: Missing H1, multiple H1s, skipped heading levels
|
|
23
|
+
|
|
24
|
+
### Alt Text
|
|
25
|
+
- **Length**: 10-125 characters
|
|
26
|
+
- **Requirements**: Descriptive, not filename-based, contextually relevant
|
|
27
|
+
- **Flags**: Missing, filename-based (IMG_001.jpg), too long, keyword-stuffed
|
|
28
|
+
|
|
29
|
+
### Internal Links
|
|
30
|
+
- **Target**: 2-10 per page (varies by content type)
|
|
31
|
+
- **Requirements**: Descriptive anchor text, no broken links, logical structure
|
|
32
|
+
- **Flags**: Orphan pages (0 internal links in), excessive links (>100)
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Programmatic SEO Thresholds
|
|
37
|
+
|
|
38
|
+
| Metric | Warning | Hard Stop |
|
|
39
|
+
|--------|---------|-----------|
|
|
40
|
+
| Pages without audit | 100+ | 500+ |
|
|
41
|
+
| Unique content per page | < 40% | < 20% |
|
|
42
|
+
| Location pages created | 30+ | 50+ |
|
|
43
|
+
| Thin pages (< 300 words) | 10+ | 50+ |
|
|
44
|
+
| Duplicate title tags | 5+ | 20+ |
|
|
45
|
+
| Duplicate meta descriptions | 10+ | 30+ |
|
|
46
|
+
| Pages with no internal links in | 5+ | 20+ |
|
|
47
|
+
| 404 errors | 5+ | 20+ |
|
|
48
|
+
| Redirect chains (3+ hops) | 3+ | 10+ |
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## Content Uniqueness Requirements
|
|
53
|
+
|
|
54
|
+
| Page Type | Min Unique % | Template Allowed % |
|
|
55
|
+
|-----------|-------------|-------------------|
|
|
56
|
+
| Core pages (home, about, services) | 100% | 0% |
|
|
57
|
+
| Blog posts / articles | 100% | 0% |
|
|
58
|
+
| Product pages | 40% | 60% |
|
|
59
|
+
| Location pages | 40% | 60% |
|
|
60
|
+
| Category pages | 30% | 70% |
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## URL Quality Standards
|
|
65
|
+
|
|
66
|
+
- **Format**: Lowercase, hyphens (not underscores), no special characters
|
|
67
|
+
- **Length**: Under 75 characters preferred, max 2048
|
|
68
|
+
- **Depth**: Max 3-4 levels from root (e.g., /category/subcategory/page)
|
|
69
|
+
- **Flags**: Uppercase, underscores, parameters without canonical, double slashes
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Crawl Budget Indicators
|
|
74
|
+
|
|
75
|
+
| Metric | Healthy | Warning | Critical |
|
|
76
|
+
|--------|---------|---------|----------|
|
|
77
|
+
| Crawl rate (pages/day) | Stable/growing | Declining >10% | Declining >30% |
|
|
78
|
+
| Index coverage errors | < 1% | 1-5% | > 5% |
|
|
79
|
+
| Soft 404s | 0 | 1-10 | > 10 |
|
|
80
|
+
| Blocked resources (CSS/JS) | 0 | 1-5 | > 5 |
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## Priority Framework
|
|
85
|
+
|
|
86
|
+
| Priority | Criteria | Examples |
|
|
87
|
+
|----------|----------|----------|
|
|
88
|
+
| **Critical** | Blocks indexing or causes penalties | noindex on key pages, robots.txt blocking, manual action |
|
|
89
|
+
| **High** | Direct ranking impact | Missing title tags, slow LCP, broken canonical chains |
|
|
90
|
+
| **Medium** | Optimization opportunity | Thin content, missing schema, suboptimal alt text |
|
|
91
|
+
| **Low** | Nice-to-have improvement | Trailing slashes inconsistency, suboptimal URL structure |
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# Schema Markup Types Reference
|
|
2
|
+
|
|
3
|
+
Reference data for JSON-LD structured data validation. Updated February 2026.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Actively Recommended Types
|
|
8
|
+
|
|
9
|
+
These schema types are actively supported by Google and can generate rich results:
|
|
10
|
+
|
|
11
|
+
| Type | Use Case | Required Properties |
|
|
12
|
+
|------|----------|-------------------|
|
|
13
|
+
| **Organization** | Business identity | name, url, logo |
|
|
14
|
+
| **LocalBusiness** | Physical businesses | name, address, telephone, openingHours |
|
|
15
|
+
| **Product** | E-commerce products | name, image, offers (price, availability, priceCurrency) |
|
|
16
|
+
| **Article** | News/blog content | headline, image, datePublished, author |
|
|
17
|
+
| **BlogPosting** | Blog content | headline, image, datePublished, author |
|
|
18
|
+
| **Review** | Product/service reviews | itemReviewed, reviewRating, author |
|
|
19
|
+
| **Event** | Events | name, startDate, location |
|
|
20
|
+
| **JobPosting** | Job listings | title, description, datePosted, hiringOrganization |
|
|
21
|
+
| **Course** | Educational content | name, description, provider |
|
|
22
|
+
| **VideoObject** | Videos | name, description, thumbnailUrl, uploadDate |
|
|
23
|
+
| **BroadcastEvent** | Live streams | isLiveBroadcast, startDate |
|
|
24
|
+
| **ProfilePage** | Author profiles | mainEntity (Person) |
|
|
25
|
+
| **ProductGroup** | Product variants | name, productGroupID, hasVariant |
|
|
26
|
+
| **WebSite** | Site-level (sitelinks search) | name, url, potentialAction (SearchAction) |
|
|
27
|
+
| **BreadcrumbList** | Navigation | itemListElement |
|
|
28
|
+
| **FAQPage** | FAQs (restricted - see below) | mainEntity (Question + acceptedAnswer) |
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Restricted Types (Limited Use)
|
|
33
|
+
|
|
34
|
+
| Type | Restriction | Details |
|
|
35
|
+
|------|-------------|---------|
|
|
36
|
+
| **FAQPage** | Government/healthcare only | Since August 2023, Google restricted FAQ rich results to government and health authority websites. Commercial sites should NOT use FAQPage schema. |
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Deprecated Types (Never Use)
|
|
41
|
+
|
|
42
|
+
These types no longer generate rich results or have been explicitly deprecated:
|
|
43
|
+
|
|
44
|
+
| Type | Deprecated Since | Replacement |
|
|
45
|
+
|------|-----------------|-------------|
|
|
46
|
+
| **HowTo** | Aug 2023 | None (removed from search features) |
|
|
47
|
+
| **SpecialAnnouncement** | 2024 | None (COVID-era, sunset) |
|
|
48
|
+
| **CourseInfo** | 2024 | Use Course instead |
|
|
49
|
+
| **EstimatedSalary** | 2024 | Use JobPosting.estimatedSalary |
|
|
50
|
+
| **LearningVideo** | 2024 | Use VideoObject |
|
|
51
|
+
| **ClaimReview** | 2024 | Limited to approved fact-checkers |
|
|
52
|
+
| **VehicleListing** | 2024 | Merchant API only |
|
|
53
|
+
| **PracticeProblem** | 2024 | None |
|
|
54
|
+
| **Dataset** | 2024 | Dataset Search only (not main SERP) |
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## Critical Validation Rules
|
|
59
|
+
|
|
60
|
+
| Rule | Details |
|
|
61
|
+
|------|---------|
|
|
62
|
+
| **@context** | Must use `https://schema.org` (HTTPS, not HTTP) |
|
|
63
|
+
| **returnPolicyCountry** | Mandatory for Product schema (since March 2025) |
|
|
64
|
+
| **ISO 8601 dates** | All date fields must use ISO 8601 format |
|
|
65
|
+
| **Required properties** | All required properties must be present |
|
|
66
|
+
| **Valid URLs** | All URL fields must be valid, accessible URLs |
|
|
67
|
+
| **No empty values** | Properties must have meaningful values |
|
|
68
|
+
| **Merchant API** | Product structured data must migrate to Merchant API by August 18, 2026 |
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Implementation Format
|
|
73
|
+
|
|
74
|
+
- **Preferred**: JSON-LD in `<script type="application/ld+json">` (head or body)
|
|
75
|
+
- **Acceptable**: Microdata, RDFa
|
|
76
|
+
- **Recommendation**: Always use JSON-LD; it's easiest to maintain and Google's preferred format
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## Common Validation Errors
|
|
81
|
+
|
|
82
|
+
| Error | Severity | Fix |
|
|
83
|
+
|-------|----------|-----|
|
|
84
|
+
| Missing @context | Critical | Add `"@context": "https://schema.org"` |
|
|
85
|
+
| HTTP in @context | High | Change to HTTPS |
|
|
86
|
+
| Missing required property | High | Add the required property with valid value |
|
|
87
|
+
| Deprecated type | Medium | Remove or replace per table above |
|
|
88
|
+
| Invalid date format | Medium | Convert to ISO 8601 |
|
|
89
|
+
| Missing returnPolicyCountry | High | Add to Product/Offer schema |
|
|
90
|
+
| Nested errors in offers | Medium | Validate Offer sub-schema |
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## Business Type to Schema Mapping
|
|
95
|
+
|
|
96
|
+
| Business Type | Primary Schema Types |
|
|
97
|
+
|--------------|---------------------|
|
|
98
|
+
| **SaaS** | Organization, WebSite, Product, Article, FAQPage (if applicable) |
|
|
99
|
+
| **Local Business** | LocalBusiness, Organization, Product/Service, Review, Event |
|
|
100
|
+
| **E-commerce** | Product, ProductGroup, Organization, BreadcrumbList, Review |
|
|
101
|
+
| **Publisher** | Article, BlogPosting, Organization, WebSite, ProfilePage |
|
|
102
|
+
| **Agency** | Organization, LocalBusiness, Service, Review, Article |
|