Discussion Technical SEO AI Crawling

Mit JavaScript-tunge site er usynlig for AI-crawlere - dynamisk rendering til undsætning?

FR
FrontendLead_Marcus · Frontend Engineering Lead
· · 76 upvotes · 11 comments
FM
FrontendLead_Marcus
Frontend Engineering Lead · 30. december 2025

Vi har netop opdaget, hvorfor vi er usynlige for ChatGPT og Perplexity – hele vores site er en React SPA med client-side rendering.

Problemet:

  • Alt vores indhold indlæses via JavaScript
  • AI-crawlere ser tomme HTML-skaller
  • Nul synlighed i AI-genererede svar
  • Konkurrenter med statiske sites bliver i stedet nævnt

Det jeg har lært:

  • GPTBot, ClaudeBot, PerplexityBot render ikke JavaScript
  • De ser kun det oprindelige HTML-svar
  • Vores flotte React-app ligner en tom side for dem

Løsningen jeg overvejer:

  • Dynamisk rendering med Prerender.io
  • Eller migrere til Next.js med SSR
  • Eller Rendertron som self-hostet løsning

Er der nogen, der har implementeret dynamisk rendering specifikt for AI-synlighed? Fungerede det? Hvor hurtigt så I forbedringer i AI-citater?

11 comments

11 kommentarer

DS
DevOpsArchitect_Sarah Ekspert Platform Engineer · 30. december 2025

Marcus, vi gik gennem præcis den samme rejse for seks måneder siden. Dynamisk rendering var en game-changer for vores AI-synlighed.

Sådan gjorde vi:

FremgangsmådeFordeleUlemperVores erfaring
Prerender.ioNem opsætning, managedMånedlig omkostningBrugt i 3 måneder
RendertronGratis, self-hostetKræver infrastrukturNuværende løsning
Next.js SSRBedst på lang sigtFuld omskrivningFremtidsplan
Statisk genereringHurtigstBegrænset dynamikDelvist i brug

Resultater efter Rendertron:

  • AI-crawler succesrate: 0% → 98%
  • ChatGPT-citater: 0 → 47 på 90 dage
  • Perplexity-omtaler: 0 → 23 på 90 dage

Vigtig indsigt:

Det afgørende er user agent-detektion. Du skal sende disse specifikke bots til forudrenderede sider:

  • GPTBot
  • ChatGPT-User
  • ClaudeBot
  • PerplexityBot
  • Bytespider

Glem ikke at holde dine cachede sider opdaterede. Forældet indhold er værre end intet indhold.

FM
FrontendLead_Marcus OP · 30. december 2025
Replying to DevOpsArchitect_Sarah

98% succesrate er utroligt. Hvordan håndterer I cache-invalidering? Vi har indhold, der ofte opdateres – produktpriser, tilgængelighed, osv.

Og har I oplevet nogen påvirkning på jeres hostingomkostninger med Rendertron?

DS
DevOpsArchitect_Sarah · 30. december 2025
Replying to FrontendLead_Marcus

Cache-invalideringsstrategi:

  1. Tidsbaseret TTL – 24 timer for det meste indhold
  2. Eventbaseret – Webhook udløser re-render ved CMS-opdateringer
  3. Prioritetskø – Sider med meget trafik re-renderes oftere
  4. On-demand – API-endpoint til manuel invalidation

Omkostningspåvirkning:

Vi kører Rendertron på AWS:

  • t3.medium instans: ~30$/måned
  • CloudFront caching reducerer reelle renderinger med 80%
  • Samlet ekstraomkostning: ~50$/måned

Sammenlign med Prerender.io:

  • Deres mellemste plan: 99$/måned
  • Til gengæld ingen vedligeholdelse

For ofte ændrende indhold som priser, renderer vi on-demand med kort TTL (1 time) og cacher på CDN-niveau. AI-crawlere besøger alligevel ikke så ofte – måske et par gange om dagen.

Pro tip: Log dine AI-crawler-besøg. Du vil blive overrasket over, hvor sjældent de faktisk kommer.

SK
SEOTechnical_Kevin Technical SEO Consultant · 29. december 2025

Forskellen i JavaScript-rendering er enorm, og de fleste sites opdager det aldrig.

Forskningsdata:

Fra Vercels crawler-undersøgelse:

  • GPTBot: 569 millioner forespørgsler/måned (0% JavaScript-rendering)
  • ClaudeBot: 370 millioner forespørgsler/måned (0% JavaScript-rendering)
  • Googlebot: Renderer JavaScript (men med forsinkelser)

Hvad AI-crawlere faktisk henter:

CrawlerHTML %JS-filer %Kan afvikle?
GPTBot57,7%11,5%Nej
ClaudeBot35,4%23,8%Nej
PerplexityBot~60%~15%Nej
Googlebot100%100%Ja

Problemet:

De henter JavaScript-filer som tekst, men kan ikke køre dem. Hvis dit indhold kræver JS, er det usynligt.

Vigtig kontrol:

Se din sidekilde (ikke inspect element). Hvis du mest ser tomme divs og script-tags, ser AI-crawlere det samme.

RT
ReactDeveloper_Tom · 29. december 2025

Vi migrerede fra Create React App til Next.js netop af denne grund.

Migrationsforløb:

  1. Uge 1-2: Opsæt Next.js app router
  2. Uge 3-4: Migrér komponenter (mest copy-paste)
  3. Uge 5-6: Implementer getServerSideProps/getStaticProps
  4. Uge 7-8: Test og deployment

Før/Efter:

Før (CRA):

<div id="root"></div>
<script src="/static/js/main.chunk.js"></script>

Efter (Next.js):

<article>
  <h1>Hele indholdet her</h1>
  <p>Al tekst synlig for crawlere...</p>
</article>

Resultater:

  • Første AI-citation kom 3 uger efter lancering
  • Nu gennemsnitligt 15-20 AI-citater om måneden
  • Sideindlæsningstid forbedret (bonus!)

Investeringen var det værd. Dynamisk rendering er et plaster. SSR/SSG er den rigtige løsning.

CL
CrawlerMonitor_Lisa Ekspert · 29. december 2025

Noget mange overser: Du skal faktisk verificere, at AI-crawlere kan se dit indhold.

Sådan tester du:

  1. User agent test:

    curl -A "GPTBot" https://ditsite.dk/side
    
  2. Tjek for rigtigt indhold:

    • Se efter dit nøgleindhold i svaret
    • Ikke bare en loading spinner eller placeholder
  3. Overvåg i produktion:

    • Log AI-crawler-forespørgsler
    • Følg render-succes/fejl
    • Få advarsler ved afvigelser

Typiske fejl vi har set:

ProblemSymptomLøsning
Middleware fejlkonfigureretForkerte user agentsOpdatér regex-mønstre
Cache serverer gammelt indholdForældet info i AISænk TTL
Render timeoutDelvist indholdForlæng timeout
Auth wallsBlokerede crawlereWhitelist bot-IP’er

Brug Am I Cited til at tjekke om det virker. Du kan overvåge, om du begynder at dukke op i AI-svar efter implementering af dynamisk rendering. Det er den ultimative validering.

PD
PerformanceEngineer_David · 28. december 2025

Performance-overvejelser der betyder noget:

Rendering-latens:

AI-crawlere har timeouts. Hvis din forudrenderede side er for langsom:

  • GPTBot: Ser ud til at timeoute efter ca. 30 sekunder
  • ClaudeBot: Lignende adfærd
  • PerplexityBot: Lidt mere tålmodig

Optimeringsprioriteter:

  1. Cache alt muligt – Første hit renderer, efterfølgende tjener cache
  2. Prioritér above-the-fold indhold – Sikr at vigtigt indhold vises først
  3. Lazy load billeder – Men inkluder alt-tekst i initial HTML
  4. Minimer tredjeparts scripts – De gør rendering langsommere

Vores tal efter optimering:

  • Gennemsnitlig renderingstid: 2,3 sekunder
  • Cache hit-rate: 87%
  • Crawler-succesrate: 99,2%

Glem ikke strukturerede data. Dine forudrenderede sider bør inkludere schema markup. AI-crawlere bruger dette til at forstå indholdet.

SA
StartupFounder_Amy · 28. december 2025

Til dem med stramt budget – her er quick-win tilgangen:

Minimal levedygtig dynamisk rendering:

  1. Brug Cloudflare Workers – 5$/måned plan
  2. Puppeteer i en Worker – Forudrender on demand
  3. Cache i Cloudflare – Server cachede versioner

Samlet pris: ~10-15$/måned

Kode-struktur:

  • Worker opfanger AI-crawler-forespørgsler
  • Puppeteer renderer siden
  • Cache gemmer resultat i 24 timer
  • Efterfølgende forespørgsler serveres fra cache

Vores resultater:

  • Opsætningstid: 1 weekend
  • Pris: 12$/måned
  • AI-synlighed: Fra nul til synlighed i ChatGPT efter 6 uger

Det er ikke lige så robust som Prerender.io eller Next.js, men det virker for startups.

AR
AgencyDirector_Rachel · 27. december 2025

Kundecase-perspektiv:

Kundens situation:

  • Stor e-handelsside (50.000 produkter)
  • Angular SPA med client-side rendering
  • Nul AI-synlighed
  • Konkurrenter dominerer AI-anbefalinger

Implementering:

  • Prerender.io (valgte managed grundet skala)
  • Enterprise-plan for højvolumen caching
  • Custom integration med deres CMS

Tidslinje:

  • Uge 1-2: Integration
  • Uge 3-4: Cache warming (50.000 sider)
  • Måned 2: Første AI-citater opdaget
  • Måned 3: 340% stigning i AI-synlighed

Cost-benefit:

  • Prerender.io pris: 499$/måned (enterprise)
  • Ekstra AI-trafikværdi: ~15.000$/måned
  • ROI: Klart positivt

Vigtig læring:

For store sites er cache warming-fasen kritisk. Du kan ikke vente på, at AI-crawlere opdager alle dine sider. Forudrender proaktivt.

WM
WebStandardsAdvocate_Mike · 27. december 2025

Kontroversiel holdning: måske skal vi stoppe med at bygge JavaScript-tunge sites?

Det brede billede:

  • AI-crawlere kan ikke render JS
  • Nogle brugere har deaktiveret JS
  • Langsomme netværk kæmper med JS-bundles
  • Hjælpemidler har ofte problemer med SPAs

Progressive enhancement:

Overvej at bygge sites, der virker uden JavaScript, og så forbedre med JS:

  1. Serveren renderer fuld HTML
  2. JavaScript gør det interaktivt
  3. Fungerer for alle – mennesker og bots

Moderne værktøjer der hjælper:

  • Astro (delvis hydration)
  • SvelteKit (SSR som standard)
  • Next.js (hybrid rendering)
  • Nuxt (samme tilgang)

Dynamisk rendering er et workaround for et problem, vi selv har skabt. Den rigtige løsning er at bygge tilgængeligt fra start.

FM
FrontendLead_Marcus OP Frontend Engineering Lead · 27. december 2025

Denne tråd har givet mig en klar plan. Her er vores plan:

Kort sigt (næste 2 uger):

  • Implementér Rendertron for øjeblikkelig AI-synlighed
  • User agent-detektion for GPTBot, ClaudeBot, PerplexityBot
  • 24-timers cache TTL med eventbaseret invalidation

Mellemlang sigt (næste kvartal):

  • Evaluér Next.js-migration for nøglesider
  • A/B-test SSR vs. dynamisk rendering performance
  • Byg overvågningsdashboard for AI-crawler-adgang

Lang sigt (6 måneder):

  • Fuld migration til hybrid rendering framework
  • Server-side rendering af alt indekserbart indhold
  • Client-side enhancement for interaktivitet

Nøglemålepunkter jeg vil følge:

  • AI-crawler succesrate (mål: >95%)
  • Tid til første AI-citation
  • Citationsvolumen over tid
  • Cache-effektivitet

Investeringsoverblik:

  • Rendertron hosting: ~50$/måned
  • Ingeniørtimer: 2 uger
  • Forventet ROI: AI-synlighed inden for 60 dage

Tak til alle. Data om crawler-adfærd og implementeringsdetaljer var præcis det, jeg havde brug for.

Til andre med JS-tunge sites: Det er ikke længere valgfrit. AI-crawlere er en væsentlig trafikkilde, og de kan ikke se dit JavaScript-indhold.

Have a Question About This Topic?

Get personalized help from our team. We'll respond within 24 hours.

Frequently Asked Questions

Hvorfor kan AI-crawlere ikke se JavaScript-indhold?
De fleste AI-crawlere, herunder GPTBot, ClaudeBot og PerplexityBot, kan ikke afvikle JavaScript. De ser kun det oprindelige HTML-svar fra din server. Det betyder, at alt indhold, der hentes dynamisk via JavaScript, er usynligt for AI-systemer, hvilket påvirker din synlighed i AI-genererede svar.
Hvad er dynamisk rendering for AI?
Dynamisk rendering serverer forudrenderet HTML til AI-crawlere, mens brugere får client-side renderet indhold. Den registrerer crawler user agents og sender dem til statiske HTML-versioner af dine sider, så AI-systemer kan tilgå alt dit indhold.
Hvordan implementerer jeg dynamisk rendering?
Implementer dynamisk rendering med tjenester som Prerender.io, Rendertron eller egne løsninger. Konfigurér dit server-middleware til at opdage AI-crawler user agents (GPTBot, ClaudeBot, PerplexityBot) og server forudrenderede HTML-versioner af dine sider til dem.

Overvåg AI-crawleres adgang til dit site

Følg hvordan GPTBot, ClaudeBot og PerplexityBot tilgår dit indhold. Sikr dig at din dynamiske rendering virker for AI-synlighed.

Lær mere