- Add /solutions hub page with 10 category cards - Add /solutions/by-concern directory page - Add /solutions/by-oil directory page - Add Solutions section to Footer with navigation links - Add Breadcrumb component for solution pages - Add translations for all solution pages (sr, en, de, fr) - Fix ExitIntentDetector JSON parsing error - Update sitemap with solution pages - Create 3 sample solution pages with data files
13 KiB
Programmatic SEO Plan for ManoonOils
Executive Summary
Create 100+ SEO-optimized landing pages from structured datasets to capture high-intent search traffic and convert visitors into serum buyers.
Dataset Ideas (7 Core Categories)
1. Ingredient Benefits Database ⭐ Highest Priority
Dataset Size: 50-100 ingredients × 4 locales = 200-400 pages
Data Structure:
interface Ingredient {
slug: string; // "rosehip-oil"
name: {
sr: "Ulje divlje ruže";
en: "Rosehip Oil";
de: "Hagebuttenöl";
fr: "Huile de rose musquée";
};
benefits: string[]; // ["anti-aging", "hydration", "scars"]
skinTypes: string[]; // ["dry", "mature", "sensitive"]
scientificName: string;
origin: string;
extractionMethod: string;
keyCompounds: string[]; // ["vitamin A", "omega-3", "antioxidants"]
usageInstructions: string;
complementaryIngredients: string[]; // ["vitamin-e", "jojoba-oil"]
relatedProducts: string[]; // Product slugs to recommend
faqs: FAQ[];
seoKeywords: {
primary: string;
secondary: string[];
longTail: string[];
};
}
Page Template: /ingredients/[slug]
- Hero: Ingredient name + key benefit
- Scientific overview
- Benefits for skin (with icons)
- How to use (with video placeholder)
- "Best for" skin types
- Related Manoon products (product cards)
- FAQ schema markup
- CTA: "Shop serums with [ingredient]"
Example Pages:
/ingredients/rosehip-oil- "Rosehip Oil for Anti-Aging: Benefits & How to Use"/ingredients/bakuchiol- "Bakuchiol: Natural Retinol Alternative"/ingredients/sea-buckthorn- "Sea Buckthorn Oil: Vitamin C Powerhouse"
2. Skin Concern Solutions ⭐ Highest Priority
Dataset Size: 20-30 concerns × 4 locales = 80-120 pages
Data Structure:
interface SkinConcern {
slug: string; // "fine-lines"
name: {
sr: "Bore i linije";
en: "Fine Lines & Wrinkles";
de: "Feine Linien";
fr: "Rides et ridules";
};
description: string;
causes: string[];
bestIngredients: string[]; // Links to ingredient pages
recommendedRoutine: {
morning: string[];
evening: string[];
};
relatedProducts: string[];
beforeAfterImages: boolean;
testimonials: Testimonial[];
seoKeywords: SEOKeywords;
}
Page Template: /concerns/[slug]
- Empathy hook: "Struggling with [concern]?"
- Explain the problem
- Best ingredients (linking to ingredient pages)
- Recommended products
- Customer results/testimonials
- Free guide download (lead capture)
- CTA: "Start your transformation"
Example Pages:
/concerns/fine-lines- "How to Reduce Fine Lines Naturally"/concerns/hyperpigmentation- "Dark Spots: Causes & Natural Solutions"/concerns/dull-skin- "Get Your Glow Back: Dull Skin Remedies"
3. Ingredient Comparison Matrix
Dataset Size: 50 ingredient pairs = 50 comparison pages
Data Structure:
interface IngredientComparison {
slug: string; // "retinol-vs-bakuchiol"
ingredientA: string; // Reference to ingredient
ingredientB: string;
comparisonPoints: {
effectiveness: string;
gentleness: string;
price: string;
availability: string;
bestFor: string[];
};
winner: string | "tie";
recommendation: string; // "Choose X if..., Choose Y if..."
relatedProducts: {
a: string[];
b: string[];
};
}
Page Template: /compare/[slug]
- Head-to-head comparison table
- Which is better for what
- Product recommendations for both
- "Can't decide? Try our quiz"
- CTA: Shop both options
Example Pages:
/compare/retinol-vs-bakuchiol/compare/vitamin-c-vs-niacinamide/compare/rosehip-vs-argan-oil
4. Seasonal Skincare Guides
Dataset Size: 4 seasons × 5 climates × 4 locales = 80 pages
Data Structure:
interface SeasonalGuide {
slug: string; // "winter-skincare-routine"
season: "winter" | "spring" | "summer" | "autumn";
climate: "cold" | "dry" | "humid" | "temperate" | "tropical";
title: LocalizedString;
challenges: string[];
recommendedIngredients: string[];
routine: {
morning: RoutineStep[];
evening: RoutineStep[];
};
productBundle: string[];
tips: string[];
}
Page Template: /guides/seasonal/[slug]
- Season-specific challenges
- Ingredient recommendations
- Step-by-step routine
- Product bundle suggestion
- "Get the seasonal routine set" CTA
Example Pages:
/guides/seasonal/winter-skincare-routine/guides/seasonal/summer-anti-aging/guides/seasonal/spring-skin-renewal
5. Age-Specific Routines
Dataset Size: 6 age groups × 4 locales = 24 pages
Data Structure:
interface AgeRoutine {
slug: string; // "skincare-routine-30s"
ageRange: string; // "20s", "30s", "40s", "50s", "60s+"
title: LocalizedString;
skinChanges: string[];
keyConcerns: string[];
recommendedIngredients: string[];
routine: DailyRoutine;
productRecommendations: string[];
preventionTips: string[];
}
Page Template: /routines/age/[slug]
- "Best skincare routine for your [age]s"
- What happens to skin at this age
- Key ingredients to start using
- Morning & evening routine
- Product recommendations
- "Shop the [age]s routine bundle"
Example Pages:
/routines/age/skincare-routine-30s/routines/age/anti-aging-routine-40s/routines/age/mature-skin-care-50s
6. Skin Type Hubs
Dataset Size: 6 skin types × 4 locales = 24 pages
Data Structure:
interface SkinType {
slug: string; // "dry-skin"
name: LocalizedString;
characteristics: string[];
causes: string[];
ingredientsToLookFor: string[];
ingredientsToAvoid: string[];
recommendedProducts: string[];
routine: DailyRoutine;
tips: string[];
}
Page Template: /skin-types/[slug]
- Quiz: "Do you have [skin type]?"
- Characteristics checklist
- Best ingredients (with links)
- Complete routine
- Products specifically for this type
- CTA: "Build your [type] routine"
Example Pages:
/skin-types/dry-skin/skin-types/sensitive-skin/skin-types/combination-skin
7. Geographic/Climate-Specific
Dataset Size: 20 regions × 4 seasons = 80 pages
Data Structure:
interface ClimateGuide {
slug: string; // "skincare-for-cold-climates"
region: string;
climate: string;
challenges: string[];
recommendedIngredients: string[];
routineModifications: string;
productBundle: string[];
localTestimonials?: Testimonial[];
}
Page Template: /climate/[slug]
- "Skincare for [climate] climates"
- Local skin challenges
- Best ingredients for this climate
- Modified routine
- "Customers in [region] love..."
Example Pages:
/climate/skincare-for-cold-climates/climate/skincare-for-humid-climates/climate/skincare-for-arid-climates
Data Storage Strategy
Option A: JSON Files (Recommended for MVP)
data/
├── ingredients/
│ ├── rosehip-oil.json
│ ├── bakuchiol.json
│ └── ...
├── concerns/
│ ├── fine-lines.json
│ ├── hyperpigmentation.json
│ └── ...
├── comparisons/
│ ├── retinol-vs-bakuchiol.json
│ └── ...
└── locales/
├── sr/
├── en/
├── de/
└── fr/
Pros:
- Easy to version control
- Simple to edit
- Fast to implement
- Works with Next.js static generation
Option B: Headless CMS (Strapi/Sanity)
Pros:
- Non-technical team can edit
- Rich media support
- Relationships between entities
Option C: Database (PostgreSQL/MongoDB)
Pros:
- Dynamic content
- User-generated content ready
- Advanced filtering
Technical Implementation
URL Structure
/ingredients/[slug] # Ingredient deep-dives
/concerns/[slug] # Problem-solving pages
/compare/[slug] # Comparison pages
/guides/seasonal/[slug] # Seasonal content
/routines/age/[slug] # Age-specific routines
/skin-types/[slug] # Skin type hubs
/climate/[slug] # Climate guides
Page Generation (Next.js)
// app/ingredients/[slug]/page.tsx
export async function generateStaticParams() {
const ingredients = await getAllIngredients();
return ingredients.map((i) => ({ slug: i.slug }));
}
export default async function IngredientPage({
params: { slug, locale }
}) {
const ingredient = await getIngredient(slug, locale);
return <IngredientTemplate data={ingredient} />;
}
SEO Template Fields (Per Page)
interface SEOTemplate {
title: string; // "Rosehip Oil for Anti-Aging | Benefits & Uses | ManoonOils"
metaDescription: string; // 155 chars with keywords
canonical: string; // Full URL
ogTitle: string;
ogDescription: string;
ogImage: string; // Dynamic OG image with ingredient
keywords: string[];
faqSchema: FAQPageSchema;
productSchema?: ProductSchema;
breadcrumb: BreadcrumbItem[];
}
Content Templates
Ingredient Page Template
H1: [Ingredient Name] for [Primary Benefit]: Complete Guide
Hero Section:
- Large ingredient image
- Key benefits (3 icons)
- CTA: "Shop [ingredient] serums"
H2: What is [Ingredient]?
- Scientific explanation
- Origin & extraction
- Key compounds
H2: Benefits of [Ingredient] for Skin
- H3: Anti-aging properties
- H3: Hydration benefits
- H3: Additional benefits
H2: Best Skin Types for [Ingredient]
- Visual skin type selector
H2: How to Use [Ingredient] in Your Routine
- Morning routine
- Evening routine
- What to pair with (links to comparisons)
H2: Our [Ingredient] Products
- Product cards with prices
- "Shop all [ingredient] products"
H2: Frequently Asked Questions
- FAQ schema markup
- 5-7 common questions
Related Content:
- Compare with similar ingredients
- Read about skin concerns it treats
CTA: "Start your [ingredient] routine"
Conversion Strategy
Lead Magnets (Email Capture)
- "The Natural Anti-Aging Guide" - PDF download
- "Ingredient Compatibility Chart" - Interactive tool
- "Personalized Routine Quiz" - Email results
- "Seasonal Skincare Calendar" - Year-long guide
Product CTAs
- Primary: "Shop [ingredient] serums" → Category page
- Secondary: "Get the complete routine" → Bundle offer
- Tertiary: "Take the skin quiz" → Lead capture
Cross-Selling
- "Customers who viewed [ingredient] also bought..."
- "Complete your routine with..."
- "Pair with [complementary ingredient] for best results"
Expected Traffic & ROI
Traffic Estimates (6-month projection)
| Dataset | Pages | Avg Monthly Searches/Page | Est. Monthly Traffic |
|---|---|---|---|
| Ingredients | 100 | 500 | 5,000 |
| Concerns | 50 | 1,000 | 10,000 |
| Comparisons | 50 | 800 | 8,000 |
| Seasonal | 80 | 300 | 6,000 |
| Age Routines | 24 | 600 | 3,000 |
| Skin Types | 24 | 700 | 3,000 |
| Climate | 80 | 200 | 2,000 |
| TOTAL | 408 | - | 37,000 |
Conversion Targets
- Organic CTR: 3-5% (industry average)
- Page-to-Product CTR: 15-20%
- Product-to-Purchase: 2-3%
- Estimated Monthly Revenue: €15,000-30,000 (at €50 AOV)
Implementation Timeline
Phase 1: Foundation (Weeks 1-2)
- Set up data structure
- Create 10 priority ingredient pages
- Build reusable templates
- Implement JSON-LD schemas
Phase 2: Core Content (Weeks 3-6)
- Create 50 ingredient pages
- Create 20 concern pages
- Build comparison tool
- Add lead magnets
Phase 3: Scale (Weeks 7-10)
- Generate all 400+ pages
- Implement internal linking
- Add dynamic OG images
- A/B test CTAs
Phase 4: Optimize (Weeks 11-12)
- Analyze top performers
- Update underperformers
- Add user-generated content
- Expand winning categories
Success Metrics
SEO Metrics
- Organic traffic: 37,000+/month by month 6
- Keyword rankings: Top 10 for 100+ keywords
- Featured snippets: Capture 20+ position 0
- Domain authority: Increase from current baseline
Business Metrics
- Revenue from organic: €15,000-30,000/month
- Email list growth: 1,000+ subscribers/month
- Customer acquisition cost: Lower than paid ads
- Lifetime value: Higher (organic customers retain better)
Next Steps
- Approve dataset priorities - Which categories to start with?
- Create data structure - Set up JSON/CMS schemas
- Build 3 sample pages - One from each priority category
- Test & iterate - Measure performance before scaling
- Full production - Generate all 400+ pages
Want me to start building the data structure and first sample pages?