SEO-modulet giver automatiske offentlige sider for instruktører og holdtyper plus et dashboard med 8 værktøjer: Oversigt (trafik+crawl), Sundhedstjek (per-side audit), Søgeord (fra Google-referrer), AI-bots (ChatGPT/Claude/Perplexity m.fl.), Preview (Google/Facebook/LinkedIn), Schema (LocalBusiness-validator), Redirects (301/302) og Search Console (impressions/kliks fra Google).
Kernebegreber
- SEO-sider: Automatisk genererede offentlige sider pr. instruktør og holdtype med beskrivelse, billede og kommende hold.
- SEO-titel (meta title): Overskriften der vises i Googles søgeresultater. Maks ~70 tegn.
- Meta-beskrivelse (meta description): Teksten under titlen i søgeresultater. Anbefalet 150-160 tegn, maks 200.
- Sitemap: /sitemap.xml — auto-opdateret liste som Google bruger til at finde og indeksere siderne.
- Crawl: Når Google/Bing's bot besøger en side for at tilføje den til søgeresultater. Typisk 2-4 uger før første crawl.
- Sundhedstjek: per-side audit der viser hvilke sider mangler SEO-titel/meta-beskrivelse + hvilke instruktør-bios/holdbeskrivelser er for korte.
- Schema-validator: 100-point score på din LocalBusiness JSON-LD (åbningstider, adresse, telefon, sociale medier, CVR osv.).
- Redirects (301/302): tenant-styret omdirigerings-tabel der bevarer SEO-værdi når sider flyttes/slettes. Lookup sker i middleware med Redis-cache.
- AI-crawlere: GPTBot (OpenAI), ClaudeBot (Anthropic), PerplexityBot, Google-Extended, Bytespider (TikTok), Amazonbot, Applebot-Extended m.fl. — bot_name parses fra User-Agent.
- Søgeord-tracking: q=/query= parses fra Google/Bing/DuckDuckGo/Yahoo/Yandex/Baidu-referrer og gemmes i search_query.
- Google Search Console (GSC): OAuth-integration der henter impressions/kliks/CTR/position direkte fra Google. Refresh-token gemmes encrypted.
- Søgeord (keywords-meta-tag): Google bruger IKKE meta keywords-tagget længere — placeringer optjenes via tekst, overskrifter og links.
Sådan gør du
- Slå SEO-modul til: Indstillinger → Hjemmeside & indhold (/admin/indstillinger/funktioner/hjemmeside) → find "SEO-modul" → slå toggle til.
- Sæt forsidens SEO-titel/beskrivelse: Indstillinger → Branding & info → udfyld "Studionavn" (=titel) og "Tagline" (=meta-description, maks 160 tegn).
- Sæt SEO på blog-indlæg: /admin/blog → åbn indlægget → klap "SEO-indstillinger" ud i højre side → udfyld SEO-titel og meta-beskrivelse.
- Sæt SEO på custom side (/side/...): Åbn siden → klik blyantsikon i headeren → vælg "SEO-indstillinger" → udfyld og gem.
- Forbedr instruktør-sider: /admin/instructors → tilføj slug + beskrivelse + billede på hver profil.
- Forbedr holdtype-sider: Hold → Holdskabeloner (/admin/classes/templates) → tilføj slug + beskrivelse + billede.
- Indsend sitemap til Google: Kopiér sitemap-URL fra dashboard → tilføj i Google Search Console.
- Find sider der mangler SEO-felter: /admin/seo → fane "Sundhedstjek" → filtrer på "Fejl" eller "Advarsler" → klik "Rediger" pr. side.
- Se hvilke søgeord bringer trafik: /admin/seo → fane "Søgeord" → top-50 søgeord parsed fra Google/Bing-referrer.
- Se AI-bot-aktivitet: /admin/seo → fane "AI-bots" → ChatGPT, Claude, Perplexity, Google-Extended m.fl. + deres mest besøgte sider.
- Preview en side: /admin/seo → fane "Preview" → indtast sti → se Google-søgeresultat + Facebook/LinkedIn/Twitter-card.
- Tjek schema-helbred: /admin/seo → fane "Schema" → 100-point score for LocalBusiness + Organization + fix-liste.
- Opret redirect: /admin/seo → fane "Redirects" → "Ny redirect" → fra-sti, til-sti, 301/302. Aktiv straks via middleware.
- Forbind GSC: /admin/seo → fane "Search Console" → "Forbind med Google" → OAuth → vælg verificeret site → se impressions/kliks/CTR/position.
Regler / grænser
- Modulet er tier-unlock-gated — låses op automatisk via progressive feature-unlocks eller aktiveres manuelt.
- Når modulet er slået fra, omdirigerer /admin/seo til indstillingssiden — data slettes ikke.
- Instruktør- og holdtype-sider er auto-genererede; titel og description bygges fra navn/beskrivelse — de redigeres ved at opdatere bio/beskrivelse, ikke som separate SEO-felter.
- Blog-indlæg uden SEO-titel falder tilbage til indlægstitlen; uden meta-beskrivelse bruges uddraget.
- Custom side uden SEO-titel falder tilbage til sidens titel; uden meta-beskrivelse vises ingen.
- Forsidens meta-description = tenant.tagline; udfyldes under Branding & info.
- Instruktører og holdtyper SKAL have slug for at blive inkluderet i sitemap.
- Google indekserer ikke øjeblikkeligt: typisk 2-4 uger fra aktivering til første resultater vises.
- Bot-trafik (crawls) tælles separat fra menneske-besøg i statistikken.
- Søgeord-tracking virker kun når referrer indeholder query-parameteren — Google har siden 2013 fjernet de fleste, så data er begrænset (det er derfor GSC-integration giver mere komplet billede).
- Redirects: source-sti skal starte med /, target kan være lokal eller ekstern (https://). Loop-detection forhindrer A→B→A. 301 anbefales for SEO; 302 er midlertidig. Hits opdateres på hver match (fire-and-forget).
- GSC-integration kræver at admin allerede har verificeret sitet i Google Search Console (manuelt). Refresh-token encrypted med ENCRYPTION_KEY. GSC-data har 2-3 dages reporting-lag.
- Schema-validator-score: 10 point per fejl, 3 per advarsel, max 100. Tjekker LocalBusiness + Organization-schemas.
FAQ
- Hvad indeholder SEO-modulet i alt? — 8 faner på /admin/seo: Oversigt, Sundhedstjek, Søgeord, AI-bots, Preview, Schema, Redirects, Search Console.
- Hvilke AI-bots tracker vi? — GPTBot, ChatGPT-User, OAI-SearchBot, ClaudeBot, Claude-Web, anthropic-ai, PerplexityBot, Perplexity-User, Google-Extended, GoogleOther, Bytespider, Amazonbot, Applebot, Applebot-Extended, Meta-ExternalAgent, cohere-ai, MistralAI-User, YouBot, DuckAssistBot.
- Hvor opretter jeg en redirect? — /admin/seo → fane "Redirects" → "Ny redirect". Source skal starte med /. 301 anbefalet.
- Hvad gør GSC-integrationen? — Henter Google-impressions/kliks/CTR/position direkte fra Google Search Console via OAuth — viser hvilke søgeord Google FAKTISK har vist din side på.
- Hvor slår jeg SEO fra? — Indstillinger → Hjemmeside & indhold → toggle "SEO-modul" fra.
- Hvor sætter jeg SEO-titel/meta-beskrivelse på forsiden? — Indstillinger → Branding & info. Tagline = meta-description; Studionavn = titel.
- Hvor sætter jeg SEO-titel/meta-beskrivelse på et blog-indlæg? — /admin/blog → åbn indlægget → "SEO-indstillinger" i højre side.
- Hvor sætter jeg SEO på en custom side (om-os, faq osv.)? — På selve siden, klik blyantsikon i headeren → "SEO-indstillinger".
- Hvorfor ser SEO-værktøjer (Morningscore, Ahrefs) at jeg ikke har søgeord? — Google bruger ikke meta keywords. Placeringer optjenes via indhold; det "felt" findes ikke længere som SEO-signal.
- Hvorfor ser jeg ingen data? — Første crawl tager typisk 2-4 uger. Indsend sitemap til Google Search Console for at fremskynde.
- Koster det ekstra? — Nej, SEO-modulet er inkluderet når det er låst op.
- Kan jeg skjule enkelte sider? — Nej, alle instruktør- og holdtype-sider med slug indekseres. Fjern slug for at udelade en side.
- Hvad er forskellen på besøg og crawl? — Besøg er mennesker, crawls er søgemaskine-bots der indekserer siden.
- Kan jeg bruge mit eget analyse-værktøj? — Ja, tilføj GA4/GTM/Meta Pixel under Sporing & markedsføring (samme side som SEO-toggle).