SEO & GEO Audit

Strengthen search and AI visibility

Mountain Magic — preliminary audit for staging.mountain-magic.co.za

Preliminary — staging site

This audit was run against staging.mountain-magic.co.za, not the production domain. The site is still in development and a lot will change before launch — content, URLs, images, schema, and indexing settings included.

Findings and suggestions are intended as a developer handoff to make pre-launch SEO/GEO work easier. Re-run the audit on mountain-magic.co.za after go-live and treat this as a working draft, not final sign-off.

Yoast JSON-LD is already output on the homepage, but canonicals and @id values currently reference the staging hostname.

4 Pre-launch priorities
32 URLs audited
2 schema types to add

Executive summary

This audit covers 32 URLs from the Yoast sitemap (15 pages, 4 blog posts, plus legacy events, categories, and author archives). The staging site has a solid WordPress + Yoast foundation: homepage title, meta description, canonical, Open Graph, and a Yoast @graph with WebSite and Organization. Gaps for launch: LodgingBusiness schema for a hospitality property, FAQPage on the support page, staging hostnames in canonicals/JSON-LD, missing H1s on several Kadence templates, inconsistent social images on cabin pages, legacy event URLs still in the sitemap, and content polish (e.g. “Nautural” typo). Priorities: swap staging URLs before production, add lodging + FAQ schema, fix H1s and typos, then clean the sitemap. Use the full-site task list for copy-paste suggestions.

Full-site task list

Website walkthrough

Video feedback on the staging site — design, mobile UX, and how this audit fits pre-launch.

Audit scope & summary

Scope: 32 URLs from sitemap_index.xml (page, post, tribe_events, category, tag, author sitemaps).

Site-level: robots.txt and sitemap OK; Yoast WebSite + Organization in JSON-LD graph; LodgingBusiness not present; canonicals use staging hostname.

Pre-launch: Replace staging URLs; add LodgingBusiness + FAQPage schema; fix missing H1s; set per-page og:image on cabins; remove or noindex legacy event/category URLs; fix homepage typo.

View full per-page task list →

Current status

Homepage (staging.mountain-magic.co.za).

Title tag
Self catering accommodation in Hoekwil
Meta description
Present — review length at launch
⚠️
Canonical URL
Points to staging — update for production
Open Graph
locale, title, description, url on homepage
⚠️
Twitter Cards
Inconsistent across cabin and activity pages
⚠️
JSON-LD schema
Yoast graph present — add LodgingBusiness
robots.txt
Allows crawl; sitemap referenced
Sitemap
Yoast index — includes legacy events
⚠️
AI bot access
No blocks — add noindex on staging before indexing risk
Mobile
Viewport and responsive Kadence theme

Quick wins

WordPress + Yoast — highest impact before production launch.

  1. Block or noindex staging
    Until launch, prevent staging from being indexed (Yoast noindex, HTTP auth, or host firewall). Stops duplicate content if production goes live.
  2. Add LodgingBusiness schema
    Use production URL, address, phone, and amenities. Copy from Schema section below or the task list.
  3. Fix homepage typo
    “Nautural building materials” → “Natural building materials” in Eco Living Comfort.
  4. Yoast default social image
    Social → set 1200×630 default (cabin sunset or deck hero) so cabin pages share consistently.
  5. Clean legacy sitemap URLs
    Remove or redirect old event pages (creepy-crawly-crafts, lazer-tag, etc.) — they appear unrelated to current accommodation positioning.

Full recommendations

30 minHigh

Production hostname swap — Update Yoast canonicals, OG URLs, and JSON-LD @id from staging to mountain-magic.co.za on launch day.

20 minHigh

LodgingBusiness schema — Name, geo, 4 cabins, amenities (hot tub, braai, AC), contact. Critical for local and hospitality rich results.

1–2 hrsHigh

Fix H1 structure — Kadence blocks output headings as styled text without semantic H1 on key pages. Add one H1 per URL matching the page title.

30 minGEO

FAQPage on support-faq — Mirror real FAQ content; helps AI engines cite location, capacity, and amenities answers.

OngoingGEO

Statistics in copy — “6 minutes to Wilderness”, “up to 16 guests across 4 cabins”, “4 self-catering cabins” — concrete numbers AI models extract easily.

1 hrGEO

Guest review schema — Consider Review or aggregateRating once you have verified Google review data for production.

30 minMed

Cabin name capitalisation — Standardise headings (Sweet Retreat vs SWEET RETREAT vs the nook).

OngoingMed

Image alt text — Replace filename-based alts with descriptive cabin and location text.

15 minLow

Social sameAs — Add Facebook and Instagram URLs to Organization schema (links already in footer).

GEO checklist

Cite sources
⚠️ Partial
Add Garden Route tourism or distance references where relevant
Statistics
✅ Present
6 min to Wilderness, sleeps 2–6, up to 16 guests — expand on activity pages
Quotations
✅ Present
Guest reviews on homepage — consider Review schema at launch
Authoritative tone
✅ Good
Warm hospitality voice suits the property
Easy to understand
✅ Good
Clear cabin differentiation and amenities
Technical terms
⚠️ Partial
Explain KolKol hot tub for international visitors
FAQPage schema
❌ Missing
Add to support-faq page
Fluency
✅ Good
Minor typo fixes only

SEO & GEO explained

Traditional SEO focuses on how search engines crawl, index, and rank pages for keyword queries. GEO (Generative Engine Optimisation) extends this to AI search — ChatGPT, Perplexity, Google AI Overviews — by optimising for how models extract, interpret, and cite content. Both rely on clear structure (H1s, schema), quality content, and authoritative signals. The same technical and content improvements that help Google often help AI engines too.

Schema to add

Use production URLs when the site launches. Validate after publishing.

LodgingBusiness
{
  "@context": "https://schema.org",
  "@type": "LodgingBusiness",
  "name": "Mountain Magic",
  "url": "https://mountain-magic.co.za",
  "image": "https://mountain-magic.co.za/wp-content/uploads/2026/06/mountain-magic-logo-final-2.png",
  "description": "Self-catering cabin accommodation in Hoekwil on the Garden Route — forest views, hot tubs, and peaceful escapes near Wilderness.",
  "telephone": "+27-71-337-9281",
  "email": "jess@mountain-magic.co.za",
  "address": {
    "@type": "PostalAddress",
    "addressLocality": "Hoekwil",
    "addressRegion": "Western Cape",
    "postalCode": "6538",
    "addressCountry": "ZA"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": "-33.995",
    "longitude": "22.580"
  },
  "amenityFeature": [
    {"@type": "LocationFeatureSpecification", "name": "Wood-fired hot tub", "value": true},
    {"@type": "LocationFeatureSpecification", "name": "Braai facilities", "value": true},
    {"@type": "LocationFeatureSpecification", "name": "Air conditioning", "value": true}
  ],
  "numberOfRooms": 4,
  "priceRange": "$$"
}
FAQPage
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "Where is Mountain Magic located?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Mountain Magic is in Hoekwil on the Garden Route, about six minutes from Wilderness beach, restaurants, and activities."
      }
    },
    {
      "@type": "Question",
      "name": "How many guests can Mountain Magic accommodate?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Four self-catering cabins sleep between 2 and 6 guests each. Book multiple cabins for groups of up to 16."
      }
    },
    {
      "@type": "Question",
      "name": "What amenities do the cabins include?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Each cabin has a private outdoor area with braai facilities, KolKol wood-fired hot tubs, air conditioning, and views of the fynbos and valley."
      }
    }
  ]
}

Validate & check indexing

Run on staging now; re-test on production after launch.