- Rewrite README.md with current architecture, features and stack - Update docs/API.md with all current endpoints (corporate, BI, client 360) - Update docs/ARCHITECTURE.md with cache, modular queries, services, ETL - Update docs/GUIA-USUARIO.md for all roles (admin, corporate, agente) - Add docs/INDEX.md documentation index - Add PROJETO.md comprehensive project reference - Add BI-CCC-Implementation-Guide.md - Include AI agent configs (.claude, .agents, .gemini, _bmad) - Add netbird VPN configuration - Add status report Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
392 lines
12 KiB
Markdown
392 lines
12 KiB
Markdown
# Saga's SEO Strategy Guide
|
|
|
|
**When to load:** During Content & Language phase (step-05) for any public website project
|
|
|
|
---
|
|
|
|
## Core Principle
|
|
|
|
**SEO is content strategy, not an afterthought.** Keywords, URL structure, and page-level optimization should be planned during the project brief — not bolted on during development.
|
|
|
|
---
|
|
|
|
## 1. Keyword Strategy
|
|
|
|
### Keyword Research Process
|
|
|
|
1. **Gather existing research** — Ask client for keywords they want to rank for
|
|
2. **Analyze competitors** — What terms do competing businesses rank for?
|
|
3. **Map user intent** — What would a real person search for?
|
|
4. **Localize per language** — Keywords don't translate directly
|
|
|
|
### Keyword Categories by Intent
|
|
|
|
| Category | Intent | Example (Mechanic) |
|
|
|----------|--------|---------------------|
|
|
| **Service** | Looking for specific service | "bilservice Öland" |
|
|
| **Location** | Near-me searches | "bilverkstad norra Öland" |
|
|
| **Problem** | Has a specific issue | "AC reparation bil" |
|
|
| **Brand** | Looking for the business | "Källa Fordonservice" |
|
|
| **Informational** | Seeking knowledge | "när byta bromsklossar" |
|
|
|
|
### Keyword Localization
|
|
|
|
Keywords don't translate word-for-word. For each language:
|
|
|
|
- What would a **native speaker** actually search?
|
|
- What **local terminology** is used? (e.g., "däck" vs "tire" vs "Reifen")
|
|
- What **misspellings** are common?
|
|
- What **long-tail phrases** exist? (e.g., "bilverkstad med AC-service nära mig")
|
|
|
|
---
|
|
|
|
## 2. URL Structure
|
|
|
|
### Best Practices
|
|
|
|
- **Short and descriptive** — `/tjanster/ac-service` not `/page?id=42`
|
|
- **Lowercase, hyphens** — `/dack-service` not `/Däck_Service`
|
|
- **Keyword-rich** — Include primary keyword in slug
|
|
- **Consistent pattern** — Same depth/format across the site
|
|
- **No special characters** — Use ASCII equivalents (å→a, ä→a, ö→o in URL slugs)
|
|
|
|
### Multi-language URL Patterns
|
|
|
|
**Recommended: Subdirectory structure**
|
|
|
|
```
|
|
example.com/ → Primary language (Swedish)
|
|
example.com/en/ → English
|
|
example.com/de/ → German
|
|
```
|
|
|
|
**Alternative: Translated slugs**
|
|
|
|
```
|
|
example.com/tjanster/dackservice → Swedish
|
|
example.com/en/services/tyre-service → English
|
|
example.com/de/dienste/reifenservice → German
|
|
```
|
|
|
|
### Page-Keyword Map
|
|
|
|
Create a table mapping every page to its target keywords:
|
|
|
|
```markdown
|
|
| Page | URL Slug | Primary Keyword (SE) | Primary Keyword (EN) | Primary Keyword (DE) |
|
|
|------|----------|---------------------|---------------------|---------------------|
|
|
| Hem | / | bilverkstad Öland | car repair Öland | Autowerkstatt Öland |
|
|
| Service | /service | bilservice | car service | Autoservice |
|
|
| AC service | /ac-service | AC service bil | car AC service | Klimaanlage Auto |
|
|
```
|
|
|
|
This map is referenced by Freya during page specification to ensure every page targets the right keywords.
|
|
|
|
---
|
|
|
|
## 3. Heading Hierarchy
|
|
|
|
### Rules
|
|
|
|
- **One H1 per page** — The main page title, contains primary keyword
|
|
- **Logical H2→H3 flow** — No skipping levels
|
|
- **Keywords in headings** — Natural, not stuffed
|
|
- **H1 ≠ Page Title tag** — They can differ (H1 visible on page, title tag in search results)
|
|
|
|
### Example
|
|
|
|
```
|
|
H1: Bilservice på Öland — Källa Fordonservice
|
|
H2: Våra tjänster
|
|
H3: Service och underhåll
|
|
H3: AC-service
|
|
H3: Däckservice
|
|
H2: Varför välja oss?
|
|
H2: Kontakta oss
|
|
```
|
|
|
|
---
|
|
|
|
## 4. Internal Linking Strategy
|
|
|
|
### Principles
|
|
|
|
- **Every page should link to at least 2 other pages** on the site
|
|
- **Use descriptive anchor text** — "Läs mer om vår AC-service" not "Klicka här"
|
|
- **Link related content** — Service pages link to vehicle type pages and vice versa
|
|
- **Create hub pages** — Main service page links to all sub-service pages
|
|
- **Footer links** — Provide site-wide navigation fallback
|
|
|
|
### Link Hierarchy
|
|
|
|
```
|
|
Hem (hub)
|
|
├── Service → links to vehicle types
|
|
├── Reparationer → links to related services
|
|
├── AC service → links to booking
|
|
├── Däckservice → links to seasonal articles
|
|
├── Articles → link to related services
|
|
└── Vehicle types → link to relevant services
|
|
```
|
|
|
|
---
|
|
|
|
## 5. Local SEO
|
|
|
|
### NAP Consistency (Name, Address, Phone)
|
|
|
|
**The exact same business information must appear:**
|
|
- On every page of the website (header/footer)
|
|
- In Google Business Profile
|
|
- In directory listings
|
|
- In structured data
|
|
|
|
```
|
|
Name: Källa Fordonservice
|
|
Address: Löttorpsvägen 31, 387 73 Löttorp
|
|
Phone: 0485-270 70
|
|
Email: info@kallafordon.se
|
|
```
|
|
|
|
### Google Business Profile
|
|
|
|
Ensure client has:
|
|
- [ ] Claimed and verified Google Business Profile
|
|
- [ ] Correct business hours
|
|
- [ ] Correct business category (e.g., "Auto Repair Shop")
|
|
- [ ] Photos uploaded
|
|
- [ ] Description with keywords
|
|
- [ ] Service area defined
|
|
|
|
### Local Keywords
|
|
|
|
Include location in key pages:
|
|
- Page titles: "Bilverkstad i Löttorp på Öland"
|
|
- Meta descriptions: "...norra Öland..."
|
|
- H1 headings: "Bilservice på Öland"
|
|
- Body text: Natural mention of location
|
|
|
|
---
|
|
|
|
## 6. Multi-Language SEO
|
|
|
|
### hreflang Tags
|
|
|
|
Every page must declare its language variants:
|
|
|
|
```html
|
|
<link rel="alternate" hreflang="sv" href="https://example.com/tjanster/" />
|
|
<link rel="alternate" hreflang="en" href="https://example.com/en/services/" />
|
|
<link rel="alternate" hreflang="de" href="https://example.com/de/dienste/" />
|
|
<link rel="alternate" hreflang="x-default" href="https://example.com/tjanster/" />
|
|
```
|
|
|
|
### Canonical URLs
|
|
|
|
- Each language version has its own canonical URL
|
|
- `x-default` points to the primary language
|
|
- No duplicate content issues between language versions
|
|
|
|
### Per-Language Optimization
|
|
|
|
Each language version needs **independently optimized**:
|
|
- Page title
|
|
- Meta description
|
|
- H1 heading
|
|
- Image alt text
|
|
- Structured data
|
|
|
|
Do NOT just translate the Swedish SEO — research what users in each language actually search for.
|
|
|
|
---
|
|
|
|
## 7. Image SEO
|
|
|
|
### File Naming
|
|
|
|
- **Descriptive names:** `kalla-fordonservice-ac-service.jpg` not `IMG_4521.jpg`
|
|
- **Hyphens between words:** `dack-service-oland.jpg`
|
|
- **No special characters:** Use ASCII in filenames
|
|
|
|
### Alt Text
|
|
|
|
- **Describe the image content** for screen readers
|
|
- **Include keyword naturally** where relevant
|
|
- **All languages** must have alt text
|
|
|
|
```markdown
|
|
Alt Text:
|
|
- SE: "Mekaniker utför AC-service på personbil i Källa Fordonservice verkstad"
|
|
- EN: "Mechanic performing AC service on car at Källa Fordonservice workshop"
|
|
- DE: "Mechaniker führt Klimaanlagen-Service am Auto in der Källa Fordonservice Werkstatt durch"
|
|
```
|
|
|
|
### Image Format & Size
|
|
|
|
- **WebP** for modern browsers (with JPEG/PNG fallback)
|
|
- **Lazy loading** for below-the-fold images
|
|
- **Responsive images** with srcset for different screen sizes
|
|
- **Max file size:** < 200KB per image (< 100KB preferred)
|
|
- **Max page weight:** < 3MB total (images + CSS + JS)
|
|
- **Dimensions:** Always specify width and height attributes (prevents CLS)
|
|
- **Hero images:** Max 400KB, serve responsive versions (mobile: 768px wide, desktop: 1920px wide)
|
|
|
|
---
|
|
|
|
## 8. Content SEO Principles
|
|
|
|
### Write for Humans First
|
|
|
|
- Natural language, not keyword stuffing
|
|
- Answer the user's actual question
|
|
- Provide genuine value
|
|
|
|
### Keyword Placement (Natural)
|
|
|
|
| Location | Priority | Guideline |
|
|
|----------|----------|-----------|
|
|
| Page title tag | High | Include primary keyword |
|
|
| H1 heading | High | Include primary keyword (can differ from title) |
|
|
| Meta description | High | Include primary keyword + CTA |
|
|
| First paragraph | Medium | Mention primary keyword early |
|
|
| H2 headings | Medium | Include secondary keywords |
|
|
| Body text | Medium | Natural mentions, no stuffing |
|
|
| Image alt text | Medium | Describe image, keyword if relevant |
|
|
| URL slug | Medium | Short, keyword-rich |
|
|
| Internal link text | Low | Descriptive, keyword when natural |
|
|
|
|
### Content Length Guidelines
|
|
|
|
| Page Type | Minimum Words | Guideline |
|
|
|-----------|--------------|-----------|
|
|
| Landing page | 300 | Focused, action-oriented |
|
|
| Service page | 400-600 | Describe service, benefits, process |
|
|
| Article/blog | 600-1200 | In-depth, informational |
|
|
| About page | 300-500 | Story, trust, credentials |
|
|
| Contact page | 150-300 | Clear, practical |
|
|
|
|
---
|
|
|
|
## 9. Structured Data (Schema.org)
|
|
|
|
### Required for Local Business Sites
|
|
|
|
```json
|
|
{
|
|
"@context": "https://schema.org",
|
|
"@type": "AutoRepair",
|
|
"name": "Källa Fordonservice",
|
|
"address": {
|
|
"@type": "PostalAddress",
|
|
"streetAddress": "Löttorpsvägen 31",
|
|
"addressLocality": "Löttorp",
|
|
"postalCode": "387 73",
|
|
"addressCountry": "SE"
|
|
},
|
|
"telephone": "+46485-27070",
|
|
"url": "https://kallafordon.se",
|
|
"openingHoursSpecification": [...]
|
|
}
|
|
```
|
|
|
|
### Common Schema Types
|
|
|
|
| Schema Type | Use For |
|
|
|------------|---------|
|
|
| `LocalBusiness` / `AutoRepair` | Business identity |
|
|
| `Service` | Individual service pages |
|
|
| `FAQPage` | FAQ sections |
|
|
| `BreadcrumbList` | Navigation breadcrumbs |
|
|
| `Article` | Blog/news articles |
|
|
| `Organization` | About/corporate pages |
|
|
|
|
### Plan During Project Brief
|
|
|
|
Document which schema types each page needs:
|
|
|
|
```markdown
|
|
| Page | Schema Type | Key Properties |
|
|
|------|-------------|----------------|
|
|
| Hem | LocalBusiness | name, address, phone, hours |
|
|
| Service | Service | name, description, provider |
|
|
| Nyheter article | Article | headline, datePublished, author |
|
|
```
|
|
|
|
---
|
|
|
|
## 10. Technical SEO Checklist
|
|
|
|
Capture these decisions during platform requirements:
|
|
|
|
- [ ] **XML Sitemap** — Auto-generated, includes all languages, referenced in robots.txt
|
|
- [ ] **Robots.txt** — Allows crawling, blocks admin/private pages, references sitemap
|
|
- [ ] **SSL/HTTPS** — All pages served over HTTPS
|
|
- [ ] **Mobile-first** — Responsive, passes Google Mobile-Friendly test
|
|
- [ ] **Core Web Vitals** — LCP < 2.5s, FID < 100ms, CLS < 0.1
|
|
- [ ] **Page speed** — < 3 seconds on 4G, total page weight < 3MB
|
|
- [ ] **404 handling** — Custom 404 page with navigation
|
|
- [ ] **Redirects** — 301 redirects for old URLs (if site migration)
|
|
- [ ] **Canonical URLs** — Self-referencing canonical on every page
|
|
- [ ] **Structured data** — Schema.org markup on key pages
|
|
- [ ] **hreflang** — Language alternates declared (if multilingual)
|
|
- [ ] **Favicon** — Site icon for browser tabs, bookmarks, and mobile home screen (multiple sizes: 16x16, 32x32, 180x180, 192x192)
|
|
- [ ] **Security headers** — HSTS, CSP, X-Content-Type-Options, X-Frame-Options, Referrer-Policy, Permissions-Policy (configure at server/hosting level)
|
|
- [ ] **Image optimization** — All images < 200KB, WebP format, width/height specified, lazy loading below fold
|
|
- [ ] **CSS/JS optimization** — Minified, compressed (gzip/brotli), no render-blocking resources
|
|
|
|
---
|
|
|
|
## Output: SEO Strategy Section
|
|
|
|
When completing step-05, produce this section for the content-language document:
|
|
|
|
```markdown
|
|
## SEO Strategy
|
|
|
|
### Page-Keyword Map
|
|
|
|
| Page | URL Slug | Primary Keyword (SE) | Primary Keyword (EN) | Primary Keyword (DE) |
|
|
|------|----------|---------------------|---------------------|---------------------|
|
|
| ... | ... | ... | ... | ... |
|
|
|
|
### URL Structure
|
|
|
|
Pattern: `example.com/{slug}` (SE), `example.com/en/{slug}` (EN), `example.com/de/{slug}` (DE)
|
|
|
|
### Local SEO
|
|
|
|
- **Business Name:** ...
|
|
- **Address:** ...
|
|
- **Phone:** ...
|
|
- **Google Business Profile:** Claimed? Yes/No
|
|
- **Business Category:** ...
|
|
|
|
### Structured Data Plan
|
|
|
|
| Page | Schema Type |
|
|
|------|-------------|
|
|
| All pages | LocalBusiness (in footer/header) |
|
|
| Service pages | Service |
|
|
| Articles | Article |
|
|
|
|
### Keyword Usage Guidelines
|
|
|
|
- Page titles: Primary keyword + brand name
|
|
- H1: Primary keyword (can differ from title tag)
|
|
- Meta descriptions: Primary keyword + benefit + CTA
|
|
- Body: Natural keyword density, no stuffing
|
|
- Images: Descriptive alt text with keyword where relevant
|
|
```
|
|
|
|
---
|
|
|
|
## Related Resources
|
|
|
|
- **Meta Content Guide:** `../freya/meta-content-guide.md` — Page-level meta content specification
|
|
- **Content Language Template:** `../../templates/1-project-brief/content-language.template.md`
|
|
- **Platform Requirements:** `../../templates/1-project-brief/platform-requirements.template.md`
|
|
|
|
---
|
|
|
|
*SEO is a first-class citizen in WDS — planned at project brief, applied at page specification, verified at quality gate.*
|