vibes-plug 1.0.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/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
- package/BLUEPRINT.md +125 -0
- package/CHANGELOG.md +195 -0
- package/CONTRIBUTING.md +199 -0
- package/LICENSE +21 -0
- package/README.md +263 -0
- package/SECURITY.md +21 -0
- package/banner.png +0 -0
- package/package.json +25 -0
- package/plugin.json +8 -0
- package/scripts/update_skills.js +75 -0
- package/skills/ai-llm-integration-expert/SKILL.md +162 -0
- package/skills/api-design-expert/SKILL.md +310 -0
- package/skills/app-analyzer-optimizer/SKILL.md +189 -0
- package/skills/asisten_ramah/SKILL.md +41 -0
- package/skills/authentication-identity-expert/SKILL.md +45 -0
- package/skills/auto-doc-updater/SKILL.md +204 -0
- package/skills/bootstrap-to-modern/SKILL.md +87 -0
- package/skills/brainstorming/SKILL.md +353 -0
- package/skills/bun-runtime-expert/SKILL.md +211 -0
- package/skills/ci-cd-devops-architect/SKILL.md +45 -0
- package/skills/cloud-hosting-expert/SKILL.md +244 -0
- package/skills/coderabbit/SKILL.md +192 -0
- package/skills/data-telemetry-expert/SKILL.md +213 -0
- package/skills/database-orm-expert/SKILL.md +294 -0
- package/skills/design-system-architect/SKILL.md +243 -0
- package/skills/e2e-testing-expert/SKILL.md +315 -0
- package/skills/event-driven-architect/SKILL.md +81 -0
- package/skills/firebase-security-expert/SKILL.md +195 -0
- package/skills/fullstack-expert/SKILL.md +202 -0
- package/skills/fullstack-expert/references/api_design_guide.md +466 -0
- package/skills/fullstack-expert/references/devops_infrastructure.md +477 -0
- package/skills/fullstack-expert/references/multi_language_backend.md +528 -0
- package/skills/fullstack-expert/references/system_design_patterns.md +358 -0
- package/skills/fullstack-expert/scripts/api_contract_validator.py +253 -0
- package/skills/fullstack-expert/scripts/architecture_analyzer.py +326 -0
- package/skills/gemini-agent-booster/SKILL.md +135 -0
- package/skills/global-a11y-i18n-expert/SKILL.md +81 -0
- package/skills/go-programming-expert/SKILL.md +295 -0
- package/skills/hig/SKILL.md +188 -0
- package/skills/js-backend-expert/SKILL.md +192 -0
- package/skills/mcp-server-architect/SKILL.md +194 -0
- package/skills/mobile-expo-expert/SKILL.md +186 -0
- package/skills/monday-design-aesthetic/SKILL.md +67 -0
- package/skills/monorepo-architect/SKILL.md +227 -0
- package/skills/mpa-orchestrator/SKILL.md +101 -0
- package/skills/multi-agent-orchestration/SKILL.md +234 -0
- package/skills/multiple-entry-points/SKILL.md +55 -0
- package/skills/mvc-expert/SKILL.md +231 -0
- package/skills/payment-gateway-expert/SKILL.md +45 -0
- package/skills/performance-web-vitals/SKILL.md +332 -0
- package/skills/prd-architect/SKILL.md +191 -0
- package/skills/production-ready-hardener/SKILL.md +469 -0
- package/skills/production-ready-hardener/references/performance_optimization.md +441 -0
- package/skills/production-ready-hardener/references/production_checklist.md +161 -0
- package/skills/production-ready-hardener/references/security_hardening_guide.md +379 -0
- package/skills/production-ready-hardener/scripts/production_readiness_scanner.py +875 -0
- package/skills/python-programming-expert/SKILL.md +271 -0
- package/skills/realtime-collaboration-expert/SKILL.md +45 -0
- package/skills/rust-programming-expert/SKILL.md +235 -0
- package/skills/saas-billing/SKILL.md +377 -0
- package/skills/saas-multi-tenant/SKILL.md +237 -0
- package/skills/saas-mvp-launcher/SKILL.md +231 -0
- package/skills/saas-transformer/SKILL.md +446 -0
- package/skills/saas-transformer/references/billing_integration_guide.md +401 -0
- package/skills/saas-transformer/references/feature_gating_patterns.md +137 -0
- package/skills/saas-transformer/references/saas_transformation_checklist.md +121 -0
- package/skills/saas-transformer/scripts/saas_transformation_scanner.py +254 -0
- package/skills/scalability-clean-code/SKILL.md +229 -0
- package/skills/secure-fuzz-testing/SKILL.md +201 -0
- package/skills/senior-frontend/SKILL.md +161 -0
- package/skills/senior-frontend/references/frontend_best_practices.md +806 -0
- package/skills/senior-frontend/references/nextjs_optimization_guide.md +724 -0
- package/skills/senior-frontend/references/react_patterns.md +746 -0
- package/skills/senior-frontend/scripts/bundle_analyzer.py +407 -0
- package/skills/senior-frontend/scripts/component_generator.py +329 -0
- package/skills/senior-frontend/scripts/frontend_scaffolder.py +1005 -0
- package/skills/senior-fullstack/SKILL.md +167 -0
- package/skills/senior-fullstack/references/architecture_patterns.md +160 -0
- package/skills/senior-fullstack/references/development_workflows.md +222 -0
- package/skills/senior-fullstack/references/tech_stack_guide.md +190 -0
- package/skills/senior-fullstack/scripts/code_quality_analyzer.py +114 -0
- package/skills/senior-fullstack/scripts/fullstack_scaffolder.py +114 -0
- package/skills/senior-fullstack/scripts/project_scaffolder.py +114 -0
- package/skills/seo/SKILL.md +225 -0
- package/skills/seo/references/cwv-thresholds.md +108 -0
- package/skills/seo/references/eeat-framework.md +214 -0
- package/skills/seo/references/quality-gates.md +155 -0
- package/skills/seo/references/schema-types.md +118 -0
- package/skills/seo-aeo-landing-page-writer/SKILL.md +97 -0
- package/skills/seo-geo/SKILL.md +188 -0
- package/skills/session-handoff-resume/SKILL.md +158 -0
- package/skills/skill_baru/SKILL.md +147 -0
- package/skills/spa-orchestrator/SKILL.md +288 -0
- package/skills/state-management-expert/SKILL.md +272 -0
- package/skills/supabase-migration/SKILL.md +45 -0
- package/skills/supabase-security-expert/SKILL.md +243 -0
- package/skills/tailwind-expert/SKILL.md +188 -0
- package/skills/tanstack-query-expert/SKILL.md +199 -0
- package/skills/tauri-expert/SKILL.md +97 -0
- package/skills/token-saver/SKILL.md +111 -0
- package/skills/typescript-expert/SKILL.md +279 -0
- package/skills/ui-components-expert/SKILL.md +63 -0
- package/skills/ui-ux-pro-max/SKILL.md +201 -0
- package/skills/ui-ux-pro-max/data/charts.csv +26 -0
- package/skills/ui-ux-pro-max/data/colors.csv +97 -0
- package/skills/ui-ux-pro-max/data/icons.csv +101 -0
- package/skills/ui-ux-pro-max/data/landing.csv +31 -0
- package/skills/ui-ux-pro-max/data/products.csv +97 -0
- package/skills/ui-ux-pro-max/data/prompts.csv +24 -0
- package/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
- package/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
- package/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
- package/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
- package/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
- package/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/skills/ui-ux-pro-max/data/styles.csv +59 -0
- package/skills/ui-ux-pro-max/data/typography.csv +58 -0
- package/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
- package/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/skills/ui-ux-pro-max/data/web-interface.csv +31 -0
- package/skills/ui-ux-pro-max/scripts/__pycache__/core.cpython-310.pyc +0 -0
- package/skills/ui-ux-pro-max/scripts/__pycache__/core.cpython-312.pyc +0 -0
- package/skills/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-310.pyc +0 -0
- package/skills/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-312.pyc +0 -0
- package/skills/ui-ux-pro-max/scripts/core.py +257 -0
- package/skills/ui-ux-pro-max/scripts/design_system.py +493 -0
- package/skills/ui-ux-pro-max/scripts/search.py +81 -0
- package/skills/ui_ux_expert/SKILL.md +114 -0
- package/skills/vibe-code-gardener/SKILL.md +173 -0
- package/skills/web-scraper/SKILL.md +205 -0
- package/skills/web-scraper/references/data-transforms.md +397 -0
- package/skills/web-scraper/references/extraction-patterns.md +475 -0
- package/skills/web-scraper/references/output-templates.md +481 -0
- package/skills/zero-to-prod-orchestrator/SKILL.md +180 -0
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: seo
|
|
3
|
+
description: "Run a broad SEO audit across technical SEO, on-page SEO, schema, sitemaps, content quality, AI search readiness, and GEO / Audit SEO menyeluruh (Technical, On-Page, Schema, Sitemap, E-E-A-T, GEO)"
|
|
4
|
+
author: "Roedy Rustam"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# SEO Expert (2026 — AI Mode & Core Web Vitals Edition)
|
|
8
|
+
|
|
9
|
+
[English](#english) | [Bahasa Indonesia](#bahasa-indonesia)
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
<a name="english"></a>
|
|
14
|
+
## English
|
|
15
|
+
|
|
16
|
+
### Description
|
|
17
|
+
Comprehensive SEO audit covering technical SEO, on-page optimization, structured data, sitemaps, Core Web Vitals, E-E-A-T signals, and **Generative Engine Optimization (GEO)** for AI-powered search (Google AI Mode, ChatGPT Search, Perplexity).
|
|
18
|
+
|
|
19
|
+
### Trigger Conditions
|
|
20
|
+
- Running a full SEO audit on an existing web application.
|
|
21
|
+
- Optimizing technical SEO for a new Next.js / Astro site.
|
|
22
|
+
- Adding structured data (JSON-LD) for rich results and AI citation.
|
|
23
|
+
- Optimizing Core Web Vitals (LCP, INP, CLS).
|
|
24
|
+
- Preparing a site for Google AI Mode and ChatGPT Search indexing.
|
|
25
|
+
- Setting up a sitemap and `robots.txt`.
|
|
26
|
+
|
|
27
|
+
### 2026 SEO Landscape Changes
|
|
28
|
+
|
|
29
|
+
| 2024 (Old) | 2026 (Current) |
|
|
30
|
+
|---|---|
|
|
31
|
+
| AI Overviews (SGE) | **Google AI Mode** — integrated AI answers |
|
|
32
|
+
| FID metric (deprecated) | **INP** (Interaction to Next Paint) |
|
|
33
|
+
| Keyword density focus | **Topical authority + E-E-A-T** |
|
|
34
|
+
| Backlinks only | **Citations in AI responses** |
|
|
35
|
+
| `robots.txt` only | `robots.txt` + **`/llms.txt`** |
|
|
36
|
+
|
|
37
|
+
### Technical SEO Checklist
|
|
38
|
+
|
|
39
|
+
#### Core Web Vitals (2026 Targets)
|
|
40
|
+
```
|
|
41
|
+
LCP (Largest Contentful Paint) < 2.5s
|
|
42
|
+
INP (Interaction to Next Paint) < 200ms ← replaced FID
|
|
43
|
+
CLS (Cumulative Layout Shift) < 0.1
|
|
44
|
+
TTFB (Time to First Byte) < 600ms
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**INP Optimization** (the new critical metric):
|
|
48
|
+
```typescript
|
|
49
|
+
// INP is degraded by long tasks blocking the main thread
|
|
50
|
+
// Solution: Use React's useTransition to defer non-critical updates
|
|
51
|
+
import { useTransition } from 'react';
|
|
52
|
+
|
|
53
|
+
function SearchInput() {
|
|
54
|
+
const [isPending, startTransition] = useTransition();
|
|
55
|
+
|
|
56
|
+
const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
|
|
57
|
+
startTransition(() => {
|
|
58
|
+
// Defer the expensive filtering to not block INP
|
|
59
|
+
setFilteredResults(filterData(e.target.value));
|
|
60
|
+
});
|
|
61
|
+
};
|
|
62
|
+
return <input onChange={handleChange} />;
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
#### Crawlability & Indexing
|
|
67
|
+
```typescript
|
|
68
|
+
// Next.js 15 — metadata API for complete SEO
|
|
69
|
+
// app/layout.tsx
|
|
70
|
+
export const metadata: Metadata = {
|
|
71
|
+
metadataBase: new URL('https://myapp.com'),
|
|
72
|
+
title: {
|
|
73
|
+
default: 'My SaaS — One-line value proposition',
|
|
74
|
+
template: '%s | My SaaS',
|
|
75
|
+
},
|
|
76
|
+
description: '150 characters max. Include primary keyword naturally.',
|
|
77
|
+
openGraph: {
|
|
78
|
+
type: 'website',
|
|
79
|
+
url: 'https://myapp.com',
|
|
80
|
+
siteName: 'My SaaS',
|
|
81
|
+
images: [{ url: '/og.png', width: 1200, height: 630 }],
|
|
82
|
+
},
|
|
83
|
+
twitter: { card: 'summary_large_image', creator: '@handle' },
|
|
84
|
+
robots: { index: true, follow: true },
|
|
85
|
+
alternates: { canonical: 'https://myapp.com' },
|
|
86
|
+
};
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
```typescript
|
|
90
|
+
// Dynamic sitemap.ts (Next.js App Router)
|
|
91
|
+
// app/sitemap.ts
|
|
92
|
+
import { MetadataRoute } from 'next';
|
|
93
|
+
|
|
94
|
+
export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
|
|
95
|
+
const posts = await getBlogPosts();
|
|
96
|
+
|
|
97
|
+
return [
|
|
98
|
+
{ url: 'https://myapp.com', lastModified: new Date(), changeFrequency: 'weekly', priority: 1 },
|
|
99
|
+
{ url: 'https://myapp.com/features', lastModified: new Date(), changeFrequency: 'monthly', priority: 0.8 },
|
|
100
|
+
...posts.map(p => ({
|
|
101
|
+
url: `https://myapp.com/blog/${p.slug}`,
|
|
102
|
+
lastModified: new Date(p.updatedAt),
|
|
103
|
+
changeFrequency: 'monthly' as const,
|
|
104
|
+
priority: 0.6,
|
|
105
|
+
})),
|
|
106
|
+
];
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### Structured Data (JSON-LD) for AI Citation
|
|
111
|
+
```html
|
|
112
|
+
<!-- Organization schema — establishes brand entity -->
|
|
113
|
+
<script type="application/ld+json">
|
|
114
|
+
{
|
|
115
|
+
"@context": "https://schema.org",
|
|
116
|
+
"@type": "Organization",
|
|
117
|
+
"name": "My SaaS",
|
|
118
|
+
"url": "https://myapp.com",
|
|
119
|
+
"logo": "https://myapp.com/logo.png",
|
|
120
|
+
"sameAs": [
|
|
121
|
+
"https://twitter.com/myapp",
|
|
122
|
+
"https://linkedin.com/company/myapp"
|
|
123
|
+
],
|
|
124
|
+
"contactPoint": {
|
|
125
|
+
"@type": "ContactPoint",
|
|
126
|
+
"contactType": "customer support",
|
|
127
|
+
"email": "support@myapp.com"
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
</script>
|
|
131
|
+
|
|
132
|
+
<!-- SoftwareApplication schema for SaaS products -->
|
|
133
|
+
<script type="application/ld+json">
|
|
134
|
+
{
|
|
135
|
+
"@context": "https://schema.org",
|
|
136
|
+
"@type": "SoftwareApplication",
|
|
137
|
+
"name": "My SaaS",
|
|
138
|
+
"applicationCategory": "BusinessApplication",
|
|
139
|
+
"operatingSystem": "Web",
|
|
140
|
+
"offers": {
|
|
141
|
+
"@type": "Offer",
|
|
142
|
+
"price": "0",
|
|
143
|
+
"priceCurrency": "USD",
|
|
144
|
+
"description": "Free tier available"
|
|
145
|
+
},
|
|
146
|
+
"aggregateRating": {
|
|
147
|
+
"@type": "AggregateRating",
|
|
148
|
+
"ratingValue": "4.8",
|
|
149
|
+
"reviewCount": "247"
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
</script>
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
### GEO — Google AI Mode Optimization
|
|
156
|
+
Google AI Mode (formerly AI Overviews) now powers the top of search results:
|
|
157
|
+
- **Be the source**: Write comprehensive, authoritative content on your core topics.
|
|
158
|
+
- **Q&A format**: Structure content as questions and answers — AI Mode quotes these directly.
|
|
159
|
+
- **Factual and specific**: Include statistics, named entities, and dates.
|
|
160
|
+
- **`/llms.txt`**: Add an AI-readable site index (see `seo-geo` skill).
|
|
161
|
+
- **Speed**: AI Mode favors fast-loading pages (TTFB < 600ms).
|
|
162
|
+
|
|
163
|
+
### On-Page SEO Standards
|
|
164
|
+
```
|
|
165
|
+
H1: One per page — primary keyword, compelling, < 60 chars
|
|
166
|
+
H2: Section headers — secondary keywords
|
|
167
|
+
H3: Sub-sections — long-tail keywords, FAQ answers
|
|
168
|
+
Meta Title: < 60 chars — keyword + brand
|
|
169
|
+
Meta Description: < 155 chars — keyword + CTA + benefit
|
|
170
|
+
URL: lowercase, hyphens, keyword-in-slug, < 5 segments
|
|
171
|
+
Images: Descriptive alt text, WebP format, lazy loading
|
|
172
|
+
Internal links: 3-5 per long-form page to related content
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
<a name="bahasa-indonesia"></a>
|
|
178
|
+
## Bahasa Indonesia
|
|
179
|
+
|
|
180
|
+
### Deskripsi
|
|
181
|
+
Audit SEO komprehensif mencakup SEO teknikal, optimasi on-page, data terstruktur, sitemap, Core Web Vitals, sinyal E-E-A-T, dan **Generative Engine Optimization (GEO)** untuk pencarian bertenaga AI (Google AI Mode, ChatGPT Search, Perplexity).
|
|
182
|
+
|
|
183
|
+
### Kondisi Pemicu
|
|
184
|
+
- Menjalankan audit SEO penuh pada aplikasi web yang ada.
|
|
185
|
+
- Mengoptimalkan SEO teknikal untuk situs Next.js / Astro baru.
|
|
186
|
+
- Menambahkan data terstruktur (JSON-LD) untuk rich result dan kutipan AI.
|
|
187
|
+
- Mengoptimalkan Core Web Vitals (LCP, INP, CLS).
|
|
188
|
+
- Mempersiapkan situs untuk indexing Google AI Mode dan ChatGPT Search.
|
|
189
|
+
|
|
190
|
+
### Perubahan Lanskap SEO 2026
|
|
191
|
+
|
|
192
|
+
| 2024 (Lama) | 2026 (Sekarang) |
|
|
193
|
+
|---|---|
|
|
194
|
+
| AI Overviews (SGE) | **Google AI Mode** — jawaban AI terintegrasi |
|
|
195
|
+
| Metrik FID (dihentikan) | **INP** (Interaction to Next Paint) |
|
|
196
|
+
| Fokus kepadatan keyword | **Otoritas topikal + E-E-A-T** |
|
|
197
|
+
| Hanya backlink | **Kutipan dalam respons AI** |
|
|
198
|
+
| Hanya `robots.txt` | `robots.txt` + **`/llms.txt`** |
|
|
199
|
+
|
|
200
|
+
### Checklist SEO Teknikal
|
|
201
|
+
|
|
202
|
+
#### Core Web Vitals (Target 2026)
|
|
203
|
+
- LCP < 2.5 detik
|
|
204
|
+
- **INP < 200ms** ← menggantikan FID
|
|
205
|
+
- CLS < 0.1
|
|
206
|
+
- TTFB < 600ms
|
|
207
|
+
|
|
208
|
+
**Optimasi INP**: Metrik kritis baru yang mengukur responsivitas interaksi. Gunakan `useTransition` React untuk menunda pembaruan non-kritis agar tidak memblokir thread utama.
|
|
209
|
+
|
|
210
|
+
#### Crawlability & Indexing
|
|
211
|
+
Gunakan Metadata API Next.js 15 untuk SEO lengkap: `title`, `description`, `openGraph`, `twitter`, `robots`, `alternates.canonical`. Buat sitemap dinamis dengan `app/sitemap.ts` yang menyertakan semua halaman statis dan konten dinamis.
|
|
212
|
+
|
|
213
|
+
### Data Terstruktur (JSON-LD) untuk Kutipan AI
|
|
214
|
+
Tambahkan schema `Organization` untuk membangun entitas merek dan schema `SoftwareApplication` untuk produk SaaS — termasuk `aggregateRating` jika tersedia.
|
|
215
|
+
|
|
216
|
+
### GEO — Optimasi Google AI Mode
|
|
217
|
+
Google AI Mode (sebelumnya AI Overviews) kini mendukung bagian atas hasil pencarian:
|
|
218
|
+
- Tulis konten yang komprehensif dan otoritatif tentang topik inti.
|
|
219
|
+
- Strukturkan konten sebagai Q&A — AI Mode langsung mengutip ini.
|
|
220
|
+
- Sertakan statistik, entitas bernama, dan tanggal.
|
|
221
|
+
- Tambahkan `/llms.txt` sebagai indeks situs yang dapat dibaca AI.
|
|
222
|
+
- Kecepatan: AI Mode lebih memilih halaman yang memuat cepat (TTFB < 600ms).
|
|
223
|
+
|
|
224
|
+
### Standar SEO On-Page
|
|
225
|
+
H1 satu per halaman, H2 untuk header seksi, meta title < 60 karakter, meta deskripsi < 155 karakter, URL lowercase dengan tanda hubung dan keyword di slug, alt text deskriptif untuk semua gambar, 3-5 internal link per halaman long-form.
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
<!-- Updated: 2026-02-07 -->
|
|
2
|
+
# Core Web Vitals Thresholds (February 2026)
|
|
3
|
+
|
|
4
|
+
## Current Metrics
|
|
5
|
+
|
|
6
|
+
| Metric | Good | Needs Improvement | Poor |
|
|
7
|
+
|--------|------|-------------------|------|
|
|
8
|
+
| LCP (Largest Contentful Paint) | ≤2.5s | 2.5s–4.0s | >4.0s |
|
|
9
|
+
| INP (Interaction to Next Paint) | ≤200ms | 200ms–500ms | >500ms |
|
|
10
|
+
| CLS (Cumulative Layout Shift) | ≤0.1 | 0.1–0.25 | >0.25 |
|
|
11
|
+
|
|
12
|
+
## Key Facts
|
|
13
|
+
- INP replaced FID (First Input Delay) on **March 12, 2024**. FID was fully removed from all Chrome tools (CrUX API, PageSpeed Insights, Lighthouse) on **September 9, 2024**. INP is the sole interactivity metric.
|
|
14
|
+
- Evaluation uses the **75th percentile** of real user data (field data from CrUX).
|
|
15
|
+
- Google assesses at the **page level** and the **origin level**.
|
|
16
|
+
- Core Web Vitals are a **tiebreaker** ranking signal: they matter most when content quality is similar between competitors.
|
|
17
|
+
- **Thresholds unchanged since original definitions**: ignore claims of "tightened thresholds" from SEO blogs.
|
|
18
|
+
- December 2025 core update appeared to weight **mobile CWV more heavily**.
|
|
19
|
+
- As of October 2025: **57.1%** desktop sites and **49.7%** mobile sites pass all three CWV.
|
|
20
|
+
|
|
21
|
+
## LCP Subparts (February 2025 CrUX Addition)
|
|
22
|
+
|
|
23
|
+
LCP can now be broken into diagnostic subparts:
|
|
24
|
+
|
|
25
|
+
| Subpart | What It Measures | Target |
|
|
26
|
+
|---------|------------------|--------|
|
|
27
|
+
| **TTFB** | Time to First Byte (server response) | <800ms |
|
|
28
|
+
| **Resource Load Delay** | Time from TTFB to resource request start | Minimize |
|
|
29
|
+
| **Resource Load Time** | Time to download the LCP resource | Depends on size |
|
|
30
|
+
| **Element Render Delay** | Time from resource loaded to rendered | Minimize |
|
|
31
|
+
|
|
32
|
+
**Total LCP = TTFB + Resource Load Delay + Resource Load Time + Element Render Delay**
|
|
33
|
+
|
|
34
|
+
Use this breakdown to identify which phase is causing LCP issues.
|
|
35
|
+
|
|
36
|
+
## Soft Navigations API (Experimental)
|
|
37
|
+
|
|
38
|
+
**Chrome 139+ Origin Trial (July 2025)**: First step toward measuring CWV in SPAs.
|
|
39
|
+
|
|
40
|
+
- Addresses the long-standing SPA measurement blind spot
|
|
41
|
+
- Currently experimental, **no ranking impact yet**
|
|
42
|
+
- Detects "soft navigations" (URL changes without full page load)
|
|
43
|
+
- May affect future SPA CWV measurement
|
|
44
|
+
|
|
45
|
+
**Detection:** Check for SPA frameworks (React, Vue, Angular, Svelte) and warn about current CWV measurement limitations.
|
|
46
|
+
|
|
47
|
+
## Measurement Sources
|
|
48
|
+
|
|
49
|
+
### Field Data (Real Users)
|
|
50
|
+
- Chrome User Experience Report (CrUX)
|
|
51
|
+
- PageSpeed Insights (uses CrUX data)
|
|
52
|
+
- Search Console Core Web Vitals report
|
|
53
|
+
|
|
54
|
+
### Lab Data (Simulated)
|
|
55
|
+
- Lighthouse
|
|
56
|
+
- WebPageTest
|
|
57
|
+
- Chrome DevTools
|
|
58
|
+
|
|
59
|
+
> Field data is what Google uses for ranking. Lab data is useful for debugging.
|
|
60
|
+
|
|
61
|
+
## Common Bottlenecks
|
|
62
|
+
|
|
63
|
+
### LCP (Largest Contentful Paint)
|
|
64
|
+
- Unoptimized hero images (compress, use WebP/AVIF, add preload)
|
|
65
|
+
- Render-blocking CSS/JS (defer, async, critical CSS inlining)
|
|
66
|
+
- Slow server response (TTFB >200ms: use edge CDN, caching)
|
|
67
|
+
- Third-party script blocking (defer analytics, chat widgets)
|
|
68
|
+
- Web font loading delay (use font-display: swap + preload)
|
|
69
|
+
|
|
70
|
+
### INP (Interaction to Next Paint)
|
|
71
|
+
- Long JavaScript tasks on main thread (break into smaller tasks <50ms)
|
|
72
|
+
- Heavy event handlers (debounce, use requestAnimationFrame)
|
|
73
|
+
- Excessive DOM size (>1,500 elements is concerning)
|
|
74
|
+
- Third-party scripts hijacking main thread
|
|
75
|
+
- Synchronous XHR or localStorage operations
|
|
76
|
+
- Layout thrashing (multiple forced reflows)
|
|
77
|
+
|
|
78
|
+
### CLS (Cumulative Layout Shift)
|
|
79
|
+
- Images/iframes without width/height dimensions
|
|
80
|
+
- Dynamically injected content above existing content
|
|
81
|
+
- Web fonts causing layout shift (use font-display: swap + preload)
|
|
82
|
+
- Ads/embeds without reserved space
|
|
83
|
+
- Late-loading content pushing down the page
|
|
84
|
+
|
|
85
|
+
## Optimization Priority
|
|
86
|
+
|
|
87
|
+
1. **LCP**: Most impactful for perceived performance
|
|
88
|
+
2. **CLS**: Most common issue affecting user experience
|
|
89
|
+
3. **INP**: Matters most for interactive applications
|
|
90
|
+
|
|
91
|
+
## Tools
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
# PageSpeed Insights API
|
|
95
|
+
curl "https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url=URL&key=API_KEY"
|
|
96
|
+
|
|
97
|
+
# Lighthouse CLI
|
|
98
|
+
npx lighthouse URL --output json --output-path report.json
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Performance Tooling Updates (2025)
|
|
102
|
+
|
|
103
|
+
- **Lighthouse 13.0** (October 2025): Major audit restructuring with reorganized performance categories and updated scoring weights. Lighthouse is a lab tool (simulated conditions): always cross-reference with CrUX field data for real-world performance.
|
|
104
|
+
- **CrUX Vis** replaced the CrUX Dashboard (November 2025). The old Looker Studio dashboard was deprecated. Use [CrUX Vis](https://cruxvis.withgoogle.com) or the CrUX API directly.
|
|
105
|
+
- **LCP subparts** added to CrUX (February 2025): Time to First Byte (TTFB), resource load delay, resource load time, and element render delay are now available as sub-components of LCP in CrUX data.
|
|
106
|
+
- **Google Search Console 2025 features** (December 2025): AI-powered configuration for automated analysis. Branded vs. non-branded queries filter. Hourly data available in API. Custom chart annotations. Social channels tracking.
|
|
107
|
+
|
|
108
|
+
> **Mobile-first indexing** is 100% complete as of July 5, 2024. Google now crawls and indexes ALL websites exclusively with the mobile Googlebot user-agent. Ensure your mobile version contains all critical content, structured data, and meta tags.
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
# E-E-A-T Evaluation Framework
|
|
2
|
+
## Updated per Google Quality Rater Guidelines: September 11, 2025
|
|
3
|
+
## Plus December 2025 Core Update Implications
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
E-E-A-T = **E**xperience, **E**xpertise, **A**uthoritativeness, **T**rustworthiness
|
|
8
|
+
|
|
9
|
+
Trustworthiness is the most important factor. It is assessed based on the
|
|
10
|
+
other three signals plus direct trust indicators.
|
|
11
|
+
|
|
12
|
+
## CRITICAL: December 2025 Core Update
|
|
13
|
+
|
|
14
|
+
> **E-E-A-T now applies to ALL competitive queries, not just YMYL.**
|
|
15
|
+
|
|
16
|
+
The December 2025 core update was described as a "watershed moment" that:
|
|
17
|
+
- Extended E-E-A-T evaluation to virtually all competitive queries
|
|
18
|
+
- Made author attribution standards tighter across all categories
|
|
19
|
+
- Penalized anonymous or generic authorship even for non-YMYL content
|
|
20
|
+
- Significantly improved AI content quality detection
|
|
21
|
+
|
|
22
|
+
**Impact by industry:**
|
|
23
|
+
| Industry | Traffic Drops |
|
|
24
|
+
|----------|--------------|
|
|
25
|
+
| Affiliate sites | 71% average decline |
|
|
26
|
+
| Health/YMYL | 67% average decline |
|
|
27
|
+
| E-commerce | 52% average decline |
|
|
28
|
+
|
|
29
|
+
**Key takeaway:** Even entertainment and lifestyle content now requires demonstrated expertise. Generic content no longer ranks.
|
|
30
|
+
|
|
31
|
+
## YMYL (Your Money or Your Life)
|
|
32
|
+
|
|
33
|
+
Topics requiring **highest** E-E-A-T standards (but E-E-A-T now matters everywhere):
|
|
34
|
+
- Health and safety
|
|
35
|
+
- Financial advice and transactions
|
|
36
|
+
- Legal information
|
|
37
|
+
- News and current events
|
|
38
|
+
- **Elections and civic trust** (added Sept 2025)
|
|
39
|
+
- **Democratic processes** (added Sept 2025)
|
|
40
|
+
- Groups of people (potential for harm)
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Experience (Weight: 20%)
|
|
45
|
+
|
|
46
|
+
First-hand knowledge and personal involvement with the topic.
|
|
47
|
+
|
|
48
|
+
### Signals to Check
|
|
49
|
+
- [ ] Author has demonstrable first-hand experience with the topic
|
|
50
|
+
- [ ] Content includes original photos, screenshots, or data
|
|
51
|
+
- [ ] Case studies or real-world examples with specific details
|
|
52
|
+
- [ ] Personal process documentation or methodology descriptions
|
|
53
|
+
- [ ] Before/after results or outcome data
|
|
54
|
+
- [ ] Specific anecdotes that couldn't be fabricated
|
|
55
|
+
|
|
56
|
+
### Scoring
|
|
57
|
+
- **Strong**: Multiple first-hand experience signals, original content
|
|
58
|
+
- **Moderate**: Some personal experience evident
|
|
59
|
+
- **Weak**: Generic information, no personal touch
|
|
60
|
+
- **None**: Clearly AI-generated or scraped content
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## Expertise (Weight: 25%)
|
|
65
|
+
|
|
66
|
+
Formal qualifications, training, and demonstrated knowledge.
|
|
67
|
+
|
|
68
|
+
### Signals to Check
|
|
69
|
+
- [ ] Author credentials relevant to topic (bio, certifications)
|
|
70
|
+
- [ ] Technical accuracy and depth appropriate for audience
|
|
71
|
+
- [ ] Claims supported by evidence or sources
|
|
72
|
+
- [ ] Specialized vocabulary used correctly
|
|
73
|
+
- [ ] Up-to-date with current developments in the field
|
|
74
|
+
- [ ] Byline with author name and credentials visible
|
|
75
|
+
|
|
76
|
+
### Scoring
|
|
77
|
+
- **Strong**: Verified credentials, deep technical accuracy
|
|
78
|
+
- **Moderate**: Demonstrable knowledge, some credentials
|
|
79
|
+
- **Weak**: Surface-level information, no credentials
|
|
80
|
+
- **None**: Factual errors, misinformation
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## Authoritativeness (Weight: 25%)
|
|
85
|
+
|
|
86
|
+
Recognition by others as a go-to source.
|
|
87
|
+
|
|
88
|
+
### Signals to Check
|
|
89
|
+
- [ ] Site recognized as authority in its niche
|
|
90
|
+
- [ ] Author recognized as expert (external citations, speaking, publications)
|
|
91
|
+
- [ ] Content cited by other authoritative sources
|
|
92
|
+
- [ ] Industry awards, certifications, or accreditations
|
|
93
|
+
- [ ] Consistent publication history in the topic area
|
|
94
|
+
- [ ] Featured in reputable media outlets
|
|
95
|
+
- [ ] Professional affiliations
|
|
96
|
+
|
|
97
|
+
### Scoring
|
|
98
|
+
- **Strong**: Widely recognized authority, cited by others
|
|
99
|
+
- **Moderate**: Growing recognition, some external validation
|
|
100
|
+
- **Weak**: No external recognition
|
|
101
|
+
- **None**: Negative reputation, known for misinformation
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Trustworthiness (Weight: 30%)
|
|
106
|
+
|
|
107
|
+
The most important factor, overall reliability and transparency.
|
|
108
|
+
|
|
109
|
+
### Signals to Check
|
|
110
|
+
- [ ] Clear contact information (physical address, phone, email)
|
|
111
|
+
- [ ] Privacy policy and terms of service
|
|
112
|
+
- [ ] HTTPS with valid certificate
|
|
113
|
+
- [ ] Transparent about who creates content and why
|
|
114
|
+
- [ ] Customer reviews and testimonials
|
|
115
|
+
- [ ] Corrections and update history visible
|
|
116
|
+
- [ ] No deceptive practices (hidden ads, clickbait)
|
|
117
|
+
- [ ] Secure payment processing (for e-commerce)
|
|
118
|
+
- [ ] Return/refund policy visible
|
|
119
|
+
|
|
120
|
+
### Scoring
|
|
121
|
+
- **Strong**: Full transparency, verified business, positive reputation
|
|
122
|
+
- **Moderate**: Good trust signals, minor gaps
|
|
123
|
+
- **Weak**: Missing key trust signals
|
|
124
|
+
- **None**: Deceptive practices, scam indicators
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## September 2025 QRG Updates
|
|
129
|
+
|
|
130
|
+
### AI Content Assessment
|
|
131
|
+
Raters now formally evaluate whether content appears AI-generated:
|
|
132
|
+
- AI content is **acceptable** if it demonstrates genuine E-E-A-T
|
|
133
|
+
- Low-quality AI content (generic, no unique value) is penalized
|
|
134
|
+
- The presence of AI-generated content is not inherently penalizing
|
|
135
|
+
- What matters: does the content provide unique value regardless of creation method?
|
|
136
|
+
|
|
137
|
+
### Markers of Low-Quality AI Content
|
|
138
|
+
- Generic phrasing without specificity
|
|
139
|
+
- Lack of original insight or unique perspective
|
|
140
|
+
- No first-hand experience signals
|
|
141
|
+
- Factual inaccuracies
|
|
142
|
+
- Repetitive structure across multiple pages
|
|
143
|
+
- No author attribution or expertise signals
|
|
144
|
+
|
|
145
|
+
### New Spam Categories
|
|
146
|
+
- **Expired domain abuse**: Buying expired domains for their backlinks
|
|
147
|
+
- **Site reputation abuse**: Using reputable site to host low-quality content
|
|
148
|
+
- **Scaled content abuse**: Mass-producing content without value
|
|
149
|
+
|
|
150
|
+
### AI Overview Evaluation
|
|
151
|
+
Raters assess quality of AI-generated summaries in search results.
|
|
152
|
+
|
|
153
|
+
### RSL 1.0 (Really Simple Licensing)
|
|
154
|
+
New machine-readable content licensing standard (December 2025) for AI training:
|
|
155
|
+
- Backed by: Reddit, Yahoo, Medium, Quora, Cloudflare, Akamai, Creative Commons
|
|
156
|
+
- Allows publishers to specify AI licensing terms
|
|
157
|
+
- Augments robots.txt for AI-specific permissions
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
## Experience Signals Are Critical Differentiators
|
|
162
|
+
|
|
163
|
+
The December 2025 update elevated the "Experience" dimension as a key differentiator:
|
|
164
|
+
- First-person narrative ("I tested this...", "In my experience...")
|
|
165
|
+
- Original photos and screenshots (not stock images)
|
|
166
|
+
- Specific examples with verifiable details
|
|
167
|
+
- Process documentation showing actual work done
|
|
168
|
+
|
|
169
|
+
**Why:** AI can generate expertise-sounding content but cannot fabricate genuine experience.
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## Overall Scoring Guide
|
|
174
|
+
|
|
175
|
+
| Score | Description |
|
|
176
|
+
|-------|-------------|
|
|
177
|
+
| 90-100 | Exceptional E-E-A-T, authority site, recognized expert, full transparency |
|
|
178
|
+
| 70-89 | Strong E-E-A-T, demonstrated expertise, good trust signals |
|
|
179
|
+
| 50-69 | Moderate E-E-A-T, some signals, room for improvement |
|
|
180
|
+
| 30-49 | Weak E-E-A-T, minimal signals, significant gaps |
|
|
181
|
+
| 0-29 | Very low E-E-A-T, no visible signals, potential trust issues |
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
## Improvement Recommendations by Score
|
|
186
|
+
|
|
187
|
+
### 0-29 (Critical)
|
|
188
|
+
1. Add contact information and about page
|
|
189
|
+
2. Establish author identity with credentials
|
|
190
|
+
3. Implement HTTPS
|
|
191
|
+
4. Remove deceptive elements
|
|
192
|
+
|
|
193
|
+
### 30-49 (Major)
|
|
194
|
+
1. Add author bios with credentials
|
|
195
|
+
2. Include first-hand experience content
|
|
196
|
+
3. Get external citations/mentions
|
|
197
|
+
4. Add customer testimonials
|
|
198
|
+
|
|
199
|
+
### 50-69 (Moderate)
|
|
200
|
+
1. Deepen content with original research
|
|
201
|
+
2. Build topical authority through content clusters
|
|
202
|
+
3. Pursue industry recognition
|
|
203
|
+
4. Document processes and methodologies
|
|
204
|
+
|
|
205
|
+
### 70-89 (Minor)
|
|
206
|
+
1. Maintain freshness with regular updates
|
|
207
|
+
2. Expand author presence across platforms
|
|
208
|
+
3. Pursue speaking/publication opportunities
|
|
209
|
+
4. Add video/multimedia demonstrating expertise
|
|
210
|
+
|
|
211
|
+
### 90-100 (Maintenance)
|
|
212
|
+
1. Continue publishing high-quality content
|
|
213
|
+
2. Monitor and respond to reputation issues
|
|
214
|
+
3. Keep credentials and certifications current
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
# Content Quality Gates
|
|
2
|
+
|
|
3
|
+
## Minimum Word Counts by Page Type
|
|
4
|
+
|
|
5
|
+
| Page Type | Min Words | Unique Content % | Notes |
|
|
6
|
+
|-----------|-----------|-----------------|-------|
|
|
7
|
+
| Homepage | 500 | 100% | Must clearly communicate value proposition |
|
|
8
|
+
| Service / Feature Page | 800 | 100% | Detailed explanation of offering |
|
|
9
|
+
| Location (Primary) | 600 | 60%+ | City headquarters or main service area |
|
|
10
|
+
| Location (Secondary) | 500 | 40%+ | Satellite locations |
|
|
11
|
+
| Blog Post | 1,500 | 100% | In-depth, valuable content |
|
|
12
|
+
| Product Page | 400 | 80%+ | Unique descriptions, specs |
|
|
13
|
+
| Category Page | 400 | 100% | Unique intro, not just product listings |
|
|
14
|
+
| About Page | 400 | 100% | Company story, team, values |
|
|
15
|
+
| Landing Page | 600 | 100% | Focused conversion content |
|
|
16
|
+
| FAQ Page | 800 | 100% | Comprehensive Q&A |
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Location Page Thresholds
|
|
21
|
+
|
|
22
|
+
### Warning Level (30+ pages)
|
|
23
|
+
- ⚠️ **WARNING** at 30+ location pages
|
|
24
|
+
- Enforce 60%+ unique content per page
|
|
25
|
+
- Content must include:
|
|
26
|
+
- Unique local information (landmarks, neighborhoods)
|
|
27
|
+
- Location-specific services or offerings
|
|
28
|
+
- Local team or staff information
|
|
29
|
+
- Genuine customer testimonials from that area
|
|
30
|
+
|
|
31
|
+
### Hard Stop (50+ pages)
|
|
32
|
+
- 🛑 **HARD STOP** at 50+ location pages
|
|
33
|
+
- Require explicit user justification
|
|
34
|
+
- Must demonstrate:
|
|
35
|
+
- Legitimate business presence in each location
|
|
36
|
+
- Unique content strategy for each page
|
|
37
|
+
- Local signals (Google Business Profile, local reviews)
|
|
38
|
+
|
|
39
|
+
### Why This Matters
|
|
40
|
+
Google's doorway page algorithm penalizes programmatic location pages with thin/duplicate content. Signs of doorway pages:
|
|
41
|
+
- Only city/state name changed between pages
|
|
42
|
+
- No unique local information
|
|
43
|
+
- No local business signals
|
|
44
|
+
- Keyword-stuffed URLs
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Safe vs. Risky Programmatic Pages
|
|
49
|
+
|
|
50
|
+
### Safe at Scale ✅
|
|
51
|
+
| Page Type | Why It's Safe |
|
|
52
|
+
|-----------|---------------|
|
|
53
|
+
| Integration pages | Real setup documentation, unique technical content |
|
|
54
|
+
| Template/tool pages | Downloadable assets, unique functionality |
|
|
55
|
+
| Glossary pages | 200+ word unique definitions |
|
|
56
|
+
| Product pages | Unique specs, images, reviews |
|
|
57
|
+
| User profile pages | User-generated unique content |
|
|
58
|
+
|
|
59
|
+
### Penalty Risk ❌
|
|
60
|
+
| Page Type | Why It's Risky |
|
|
61
|
+
|-----------|----------------|
|
|
62
|
+
| Location pages with only city swapped | Duplicate content, doorway pages |
|
|
63
|
+
| "Best [tool] for [industry]" | Often thin, no industry-specific value |
|
|
64
|
+
| "[Competitor] alternative" | Requires genuine comparison data |
|
|
65
|
+
| AI-generated mass content | No unique value, E-E-A-T failure |
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## Title Tag Requirements
|
|
70
|
+
|
|
71
|
+
| Aspect | Requirement |
|
|
72
|
+
|--------|-------------|
|
|
73
|
+
| Minimum length | 30 characters |
|
|
74
|
+
| Maximum length | 60 characters (Google truncates ~60) |
|
|
75
|
+
| Primary keyword | Near the beginning |
|
|
76
|
+
| Brand name | At end (if included) |
|
|
77
|
+
| Uniqueness | Each page must have unique title |
|
|
78
|
+
|
|
79
|
+
### Good Examples
|
|
80
|
+
- "Emergency Plumbing Services in Austin | ABC Plumbing"
|
|
81
|
+
- "How to Fix a Leaky Faucet: Step-by-Step Guide"
|
|
82
|
+
- "Enterprise SEO Software | Comprehensive Platform"
|
|
83
|
+
|
|
84
|
+
### Bad Examples
|
|
85
|
+
- "Home" (too short, not descriptive)
|
|
86
|
+
- "Best Plumbing Services for All Your Plumbing Needs in Austin Texas and Surrounding Areas" (too long)
|
|
87
|
+
- "ABC Plumbing - Plumbing - Plumber - Plumbing Services" (keyword stuffing)
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## Meta Description Requirements
|
|
92
|
+
|
|
93
|
+
| Aspect | Requirement |
|
|
94
|
+
|--------|-------------|
|
|
95
|
+
| Minimum length | 120 characters |
|
|
96
|
+
| Maximum length | 160 characters (Google truncates ~155-160) |
|
|
97
|
+
| Call-to-action | Include compelling CTA |
|
|
98
|
+
| Primary keyword | Include naturally |
|
|
99
|
+
| Uniqueness | Each page must have unique description |
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## Image Alt Text Requirements
|
|
104
|
+
|
|
105
|
+
| Aspect | Requirement |
|
|
106
|
+
|--------|-------------|
|
|
107
|
+
| Required on | All non-decorative images |
|
|
108
|
+
| Length | 10-125 characters |
|
|
109
|
+
| Content | Describe the image content, not "image" or filename |
|
|
110
|
+
| Keywords | Include naturally where relevant |
|
|
111
|
+
| Decorative images | Use `alt=""` or `role="presentation"` |
|
|
112
|
+
|
|
113
|
+
### Good Examples
|
|
114
|
+
- "Professional plumber repairing kitchen sink faucet"
|
|
115
|
+
- "Red 2024 Toyota Camry sedan front view"
|
|
116
|
+
- "Team meeting in modern office conference room"
|
|
117
|
+
|
|
118
|
+
### Bad Examples
|
|
119
|
+
- "image.jpg" (filename, not description)
|
|
120
|
+
- "plumber plumbing plumber services" (keyword stuffing)
|
|
121
|
+
- "Click here" (not descriptive)
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## Internal Linking Guidelines
|
|
126
|
+
|
|
127
|
+
| Page Type | Internal Links Target |
|
|
128
|
+
|-----------|----------------------|
|
|
129
|
+
| Blog post (1,500+ words) | 5-10 internal links |
|
|
130
|
+
| Service page | 3-5 internal links |
|
|
131
|
+
| Category page | Links to all child pages |
|
|
132
|
+
| Product page | 2-4 internal links |
|
|
133
|
+
|
|
134
|
+
### Anchor Text Rules
|
|
135
|
+
- Use descriptive anchor text (not "click here")
|
|
136
|
+
- Vary anchor text (don't always use exact match keywords)
|
|
137
|
+
- Link to relevant, related content
|
|
138
|
+
- Ensure no orphan pages (every page linked from at least one other page)
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## Content Freshness Signals
|
|
143
|
+
|
|
144
|
+
| Content Type | Update Frequency |
|
|
145
|
+
|--------------|------------------|
|
|
146
|
+
| News/current events | Within hours/days |
|
|
147
|
+
| Blog posts (evergreen) | Review annually |
|
|
148
|
+
| Product pages | When specs change |
|
|
149
|
+
| Service pages | Review quarterly |
|
|
150
|
+
| Company info | When changes occur |
|
|
151
|
+
|
|
152
|
+
### Required Elements
|
|
153
|
+
- Publication date visible (for articles/blogs)
|
|
154
|
+
- Last updated date (if significantly revised)
|
|
155
|
+
- Changelog for major updates (optional but good)
|