- Add 10 oil-for-concern solution pages with localized slugs - Support 4 languages: sr, en, de, fr with proper canonical URLs - Add solutions hub, by-concern, and by-oil directory pages - Filter bundle products from solutions pages - Add hideLangSwitcher prop to Header component - Update translations for all languages - Fix canonical URLs to include locale prefix
379 lines
9.4 KiB
Markdown
379 lines
9.4 KiB
Markdown
# Programmatic SEO Implementation Plan
|
|
## ManoonOils Serbian Market - Phase 1
|
|
|
|
**Branch:** `feature/programmatic-seo`
|
|
**Scope:** Create 10 priority "Oil for Concern" pages in Serbian
|
|
**Estimated Time:** 2-3 days
|
|
|
|
---
|
|
|
|
## Executive Summary
|
|
|
|
Create 10 high-priority programmatic SEO pages targeting Serbian market with Serbian-language URLs and content. Pages will focus on top oil/concern combinations based on search volume and product alignment.
|
|
|
|
---
|
|
|
|
## Deliverables
|
|
|
|
### 1. Data Schema (JSON Files)
|
|
|
|
**Location:** `data/oil-for-concern/`
|
|
|
|
**10 Priority Pages:**
|
|
|
|
| # | Slug (Serbian) | Oil | Concern | Priority |
|
|
|---|----------------|-----|---------|----------|
|
|
| 1 | `najbolje-ulje-divlje-ruze-za-bore` | Ulje divlje ruže | Bore | ⭐⭐⭐ |
|
|
| 2 | `najbolje-arganovo-ulje-za-suvu-kozu` | Arganovo ulje | Suva koža | ⭐⭐⭐ |
|
|
| 3 | `najbolje-jojoba-ulje-za-akne` | Jojoba ulje | Akne | ⭐⭐⭐ |
|
|
| 4 | `najbolje-ulje-divlje-ruze-za-tamne-pjege` | Ulje divlje ruže | Tamne pjege | ⭐⭐⭐ |
|
|
| 5 | `najbolje-arganovo-ulje-za-bore` | Arganovo ulje | Bore | ⭐⭐ |
|
|
| 6 | `najbolje-ulje-pasjeg-trna-za-hiperpigmentaciju` | Ulje pasjeg trna | Hiperpigmentacija | ⭐⭐ |
|
|
| 7 | `najbolje-jojoba-ulje-za-masnu-kozu` | Jojoba ulje | Masna koža | ⭐⭐ |
|
|
| 8 | `najbolje-ulje-slatkog-badema-za-osetljivu-kozu` | Ulje slatkog badema | Osetljiva koža | ⭐⭐ |
|
|
| 9 | `najbolje-ulje-divlje-ruze-za-oziljke-od-akni` | Ulje divlje ruže | Ožiljci od akni | ⭐⭐ |
|
|
| 10 | `najbolje-arganovo-ulje-za-podocnjake` | Arganovo ulje | Podočnjaci | ⭐⭐ |
|
|
|
|
---
|
|
|
|
## JSON Schema Structure
|
|
|
|
Each file must follow this exact structure:
|
|
|
|
```json
|
|
{
|
|
"slug": "serbian-slug-here",
|
|
"oilSlug": "oil-identifier",
|
|
"concernSlug": "concern-identifier",
|
|
"pageTitle": {
|
|
"sr": "Serbian title",
|
|
"en": "English title",
|
|
"de": "German title",
|
|
"fr": "French title"
|
|
},
|
|
"metaTitle": {
|
|
"sr": "Serbian meta title | ManoonOils",
|
|
"en": "English meta title | ManoonOils",
|
|
"de": "German meta title | ManoonOils",
|
|
"fr": "French meta title | ManoonOils"
|
|
},
|
|
"metaDescription": {
|
|
"sr": "Serbian meta description",
|
|
"en": "English meta description",
|
|
"de": "German meta description",
|
|
"fr": "French meta description"
|
|
},
|
|
"oilName": {
|
|
"sr": "Serbian oil name",
|
|
"en": "English oil name",
|
|
"de": "German oil name",
|
|
"fr": "French oil name"
|
|
},
|
|
"concernName": {
|
|
"sr": "Serbian concern name",
|
|
"en": "English concern name",
|
|
"de": "German concern name",
|
|
"fr": "French concern name"
|
|
},
|
|
"whyThisWorks": {
|
|
"sr": "Detailed explanation in Serbian (200+ words)",
|
|
"en": "English translation",
|
|
"de": "German translation",
|
|
"fr": "French translation"
|
|
},
|
|
"keyBenefits": {
|
|
"sr": ["6 benefits in Serbian"],
|
|
"en": ["6 benefits in English"],
|
|
"de": ["6 benefits in German"],
|
|
"fr": ["6 benefits in French"]
|
|
},
|
|
"howToApply": {
|
|
"sr": ["6 steps in Serbian"],
|
|
"en": ["6 steps in English"],
|
|
"de": ["6 steps in German"],
|
|
"fr": ["6 steps in French"]
|
|
},
|
|
"expectedResults": {
|
|
"sr": "Timeline explanation in Serbian",
|
|
"en": "English translation",
|
|
"de": "German translation",
|
|
"fr": "French translation"
|
|
},
|
|
"timeframe": {
|
|
"sr": "Short timeframe summary in Serbian",
|
|
"en": "English translation",
|
|
"de": "German translation",
|
|
"fr": "French translation"
|
|
},
|
|
"complementaryIngredients": [
|
|
"vitamin-c",
|
|
"panthenol",
|
|
"sandalwood",
|
|
"sweet-almond-oil"
|
|
],
|
|
"productsToShow": [
|
|
"manoon-anti-age-serum"
|
|
],
|
|
"customerResults": [
|
|
{
|
|
"quote": {
|
|
"sr": "Serbian testimonial",
|
|
"en": "English translation",
|
|
"de": "German translation",
|
|
"fr": "French translation"
|
|
},
|
|
"name": "Name",
|
|
"age": 45,
|
|
"skinType": "Serbian skin type",
|
|
"timeframe": "Serbian timeframe"
|
|
}
|
|
],
|
|
"faqs": [
|
|
{
|
|
"question": {
|
|
"sr": "Question in Serbian",
|
|
"en": "English translation",
|
|
"de": "German translation",
|
|
"fr": "French translation"
|
|
},
|
|
"answer": {
|
|
"sr": "Answer in Serbian",
|
|
"en": "English translation",
|
|
"de": "German translation",
|
|
"fr": "French translation"
|
|
}
|
|
}
|
|
],
|
|
"seoKeywords": {
|
|
"sr": {
|
|
"primary": ["3-5 primary keywords"],
|
|
"secondary": ["3-5 secondary keywords"],
|
|
"longTail": ["3-5 long-tail keywords"]
|
|
},
|
|
"en": {
|
|
"primary": ["3-5 primary keywords"],
|
|
"secondary": ["3-5 secondary keywords"],
|
|
"longTail": ["3-5 long-tail keywords"]
|
|
},
|
|
"de": {
|
|
"primary": ["3-5 primary keywords"],
|
|
"secondary": ["3-5 secondary keywords"],
|
|
"longTail": ["3-5 long-tail keywords"]
|
|
},
|
|
"fr": {
|
|
"primary": ["3-5 primary keywords"],
|
|
"secondary": ["3-5 secondary keywords"],
|
|
"longTail": ["3-5 long-tail keywords"]
|
|
}
|
|
},
|
|
"relatedPages": {
|
|
"otherOilsForSameConcern": [
|
|
"serbian-slug-1",
|
|
"serbian-slug-2"
|
|
],
|
|
"sameOilForOtherConcerns": [
|
|
"serbian-slug-3",
|
|
"serbian-slug-4"
|
|
]
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## Content Guidelines
|
|
|
|
### whyThisWorks Section (200+ words)
|
|
- Scientific explanation of mechanism
|
|
- Reference to specific compounds (vitamin A, fatty acids, etc.)
|
|
- Comparison to synthetic alternatives
|
|
- Why this oil specifically helps this concern
|
|
|
|
### keyBenefits (6 items)
|
|
- Specific, measurable benefits
|
|
- Focus on the target concern
|
|
- Include both immediate and long-term benefits
|
|
|
|
### howToApply (6 steps)
|
|
- Specific dosage (2-3 kapi)
|
|
- Application technique
|
|
- Frequency
|
|
- Best time of day
|
|
- Areas to focus on
|
|
- Tips for better absorption
|
|
|
|
### expectedResults
|
|
- Week 1-2: Initial improvements
|
|
- Week 4-6: Visible changes
|
|
- Week 8-12: Significant results
|
|
- Long-term maintenance
|
|
|
|
### customerResults (2 testimonials)
|
|
- Realistic names (Serbian)
|
|
- Ages 35-55
|
|
- Specific skin types
|
|
- Realistic timeframes
|
|
- Authentic language
|
|
|
|
### FAQs (3 questions)
|
|
- Common concerns about usage
|
|
- Safety/side effects
|
|
- Timeline expectations
|
|
|
|
---
|
|
|
|
## Manoon Product Ingredients Reference
|
|
|
|
**Use these ingredients in content:**
|
|
- Sweet almond oil (ulje slatkog badema)
|
|
- Panthenol
|
|
- Vitamin C
|
|
- Sandalwood (sandalovina)
|
|
- Apple oil (jabukovo ulje)
|
|
|
|
---
|
|
|
|
## URL Structure
|
|
|
|
```
|
|
/sr/resenja/najbolje-ulje-divlje-ruze-za-bore
|
|
/sr/resenja/najbolje-arganovo-ulje-za-suvu-kozu
|
|
...
|
|
```
|
|
|
|
Note: Keep existing `/solutions/` routing but create Serbian slugs for new pages.
|
|
|
|
---
|
|
|
|
## Translation Requirements
|
|
|
|
**Primary Language:** Serbian (native, authentic)
|
|
**Secondary Languages:** English, German, French (professional translation quality)
|
|
|
|
**Tone:**
|
|
- Informative but approachable
|
|
- Scientific but not clinical
|
|
- Encouraging but not hyped
|
|
- Trustworthy, expert advice
|
|
|
|
---
|
|
|
|
## SEO Keywords Strategy
|
|
|
|
### Primary Keywords Pattern:
|
|
- `[oil] za [concern]`
|
|
- `najbolje [oil] za [concern]`
|
|
- `prirodno rešenje za [concern]`
|
|
|
|
### Secondary Keywords:
|
|
- `serum za [concern]`
|
|
- `[oil] protiv [concern]`
|
|
- `prirodna nega za [concern]`
|
|
|
|
### Long-Tail Keywords:
|
|
- `kako ukloniti [concern] prirodnim putem`
|
|
- `[oil] iskustva`
|
|
- `najbolji serum za [concern] posle 40`
|
|
|
|
---
|
|
|
|
## Page Template Components
|
|
|
|
**Using existing:**
|
|
- `OilForConcernPageTemplate` component
|
|
- Header with logo and navigation
|
|
- Footer
|
|
- ProductReviews section
|
|
- BeforeAfterGallery (existing from homepage)
|
|
- ProductsGrid
|
|
- FAQSchema
|
|
|
|
**Tracking:**
|
|
- Rybbit (already configured)
|
|
- Mautic (already configured)
|
|
|
|
---
|
|
|
|
## Implementation Steps
|
|
|
|
### Step 1: Create JSON Data Files (Day 1)
|
|
- [ ] Create all 10 JSON files in `data/oil-for-concern/`
|
|
- [ ] Verify valid JSON structure
|
|
- [ ] Test with dataLoader
|
|
|
|
### Step 2: Verify Routing (Day 1)
|
|
- [ ] Test `/sr/resenja/{serbian-slug}` works
|
|
- [ ] Verify canonical URLs correct
|
|
- [ ] Check hreflang tags
|
|
|
|
### Step 3: Content Review (Day 2)
|
|
- [ ] Review Serbian content for authenticity
|
|
- [ ] Verify translations for other languages
|
|
- [ ] Check all internal links work
|
|
|
|
### Step 4: Testing (Day 2)
|
|
- [ ] Test all 10 pages render correctly
|
|
- [ ] Verify product grids display
|
|
- [ ] Check mobile responsiveness
|
|
- [ ] Validate schema markup
|
|
|
|
### Step 5: Polish (Day 3)
|
|
- [ ] Optimize images if needed
|
|
- [ ] Add any missing related pages links
|
|
- [ ] Final SEO review
|
|
|
|
---
|
|
|
|
## Success Criteria
|
|
|
|
- [ ] 10 pages created with Serbian slugs
|
|
- [ ] All pages render correctly at `/sr/resenja/{slug}`
|
|
- [ ] Header/Footer/Tracking all present
|
|
- [ ] Product grids display correctly
|
|
- [ ] Before/After gallery shows
|
|
- [ ] Schema markup validates
|
|
- [ ] No console errors
|
|
- [ ] Mobile responsive
|
|
|
|
---
|
|
|
|
## Next Steps After Completion
|
|
|
|
1. Deploy to production
|
|
2. Submit sitemap to Google
|
|
3. Monitor indexing
|
|
4. Track rankings for target keywords
|
|
5. Plan Phase 2 (next 20 pages)
|
|
|
|
---
|
|
|
|
## Appendix: Existing Infrastructure
|
|
|
|
**Components already built:**
|
|
- `OilForConcernPageTemplate` - Main page template
|
|
- `ProductsGrid` - Product display with add-to-cart
|
|
- `FAQSchema` - Schema markup component
|
|
- `dataLoader.ts` - Data fetching utilities
|
|
- `types.ts` - TypeScript interfaces
|
|
- `/[locale]/solutions/[slug]/page.tsx` - Route handler
|
|
|
|
**Components reused from site:**
|
|
- `Header` - With logo, nav, hamburger menu
|
|
- `Footer` - Full footer with links
|
|
- `ProductReviews` - Testimonial section
|
|
- `BeforeAfterGallery` - Before/after slider
|
|
|
|
**Tracking already configured:**
|
|
- Rybbit script in layout
|
|
- Mautic tracking in layout
|
|
|
|
---
|
|
|
|
## Notes
|
|
|
|
- Use existing page template - no new component development needed
|
|
- Focus on high-quality content in Serbian
|
|
- Ensure ingredients match actual Manoon products
|
|
- Keep URLs in Serbian for better local SEO
|
|
- All translations should be professional quality
|