- 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
9.4 KiB
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:
{
"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] iskustvanajbolji serum za [concern] posle 40
Page Template Components
Using existing:
OilForConcernPageTemplatecomponent- 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
- Deploy to production
- Submit sitemap to Google
- Monitor indexing
- Track rankings for target keywords
- Plan Phase 2 (next 20 pages)
Appendix: Existing Infrastructure
Components already built:
OilForConcernPageTemplate- Main page templateProductsGrid- Product display with add-to-cartFAQSchema- Schema markup componentdataLoader.ts- Data fetching utilitiestypes.ts- TypeScript interfaces/[locale]/solutions/[slug]/page.tsx- Route handler
Components reused from site:
Header- With logo, nav, hamburger menuFooter- Full footer with linksProductReviews- Testimonial sectionBeforeAfterGallery- 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