Kan AI-crawlere læse indhold, der gengives af JavaScript?
Ofte ikke. Googlebot gengiver JavaScript i et senere trin, men de fleste AI-crawlere dokumenterer ikke, at de gør det, og Google bemærker selv, at ikke alle bots kan køre JavaScript. Hvis din tekst først vises, når scripts er kørt, kan en AI-crawler modtage en tom side. Lever hovedindholdet i den oprindelige HTML med server-side rendering eller statiske sider.
Single-page-apps og frameworks på klientsiden er overalt, og i en browser ser de fine ud. En crawler, der kun læser den HTML, din server sender, ser noget andet: en <div id="root"></div>, nogle script-tags og lidt eller ingen tekst. For AI-svar har den side intet at citere.
På denne side
- Hvorfor overser AI-crawlere JavaScript-indhold?
- Hvordan tjekker jeg, hvad en crawler modtager?
- Hvilke sider er mest udsatte?
- Hvordan retter jeg indhold, der kun findes i JavaScript?
- Blokerer login-, samtykke- og betalingsmursskærme også AI-crawlere?
- Hvordan opdager AISeeWhy sider, der kun fungerer med JavaScript?
Hvorfor overser AI-crawlere JavaScript-indhold?
At køre JavaScript er dyrt. En crawler skal downloade scripts, udføre dem i en browsermotor og vente på, at data indlæses. Google gør det for Søgning: Det crawler, sætter sider i kø til gengivelse og gengiver dem med headless Chromium, når der er ressourcer. Alligevel anbefaler Google server-side rendering eller prerendering, fordi det er hurtigere for brugere og crawlere, og bemærker, at ikke alle bots kan køre JavaScript.
OpenAI, Anthropic og Perplexity oplyser ikke i deres crawlerdokumentation, at deres agenter udfører JavaScript. Apple siger, at Applebot kan gengive sider i en browser. Uden en klar udtalelse er den sikre antagelse for AI-crawlere, at de kun læser den oprindelige HTML.
Hvordan tjekker jeg, hvad en crawler modtager?
Se på den rå HTML, ikke den gengivne side. Browserens udviklerværktøjer viser DOM'en, efter scripts er kørt, og det er ikke, hvad en crawler får. Brug vis kilde, eller gem den rå HTML fra kommandolinjen, og søg i den:
curl -s -o page.html \
-A "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.4; +https://openai.com/gptbot" \
https://example.com/page
# Is a sentence from your main text in the raw HTML?
grep -c "a sentence from your main content" page.html
Et resultat på 0 betyder, at sætningen ikke står i den HTML, serveren sendte, så crawlere, der ikke kører scripts, finder den ikke. Et hurtigt blik på filen fortæller resten: En server-side gengivet artikel har hele sin tekst dér; en skal på klientsiden har et tomt rodelement og en liste af scripts.
Hvilke sider er mest udsatte?
- Single-page-apps bygget med React, Vue, Angular eller Svelte, der gengiver alt i browseren.
- Sider, der henter deres hovedtekst fra en API efter indlæsning, såsom produktdetaljer, priser eller anmeldelser.
- Indhold i faner, harmonikaer eller »indlæs mere«-sektioner, der kun hentes ved klik.
- Sider bag et login, en betalingsmur eller en samtykkemur, som crawleren ikke kan passere.
- Sider, der kun sætter
noindexeller den kanoniske URL via JavaScript. Google advarer om, at det kan springe gengivelsen helt over, når det sernoindexi den oprindelige HTML.
Hvordan retter jeg indhold, der kun findes i JavaScript?
Løsningen er at sende det vigtige indhold i det første svar. Vælg den letteste mulighed, din stack tillader:
- Server-side rendering (SSR): Frameworks som Next.js, Nuxt, SvelteKit og Angular SSR gengiver siden på serveren og hydrerer den i browseren.
- Statisk generering eller prerendering: Byg HTML'en ved udrulning for sider, der sjældent ændrer sig, såsom artikler, dokumentation og landingssider.
- Progressive enhancement: Læg tekst, overskrifter, links, priser og JSON-LD i HTML'en, og brug kun JavaScript til interaktion.
- Læg det vigtige direkte ind: Hvis faner skjuler indhold, så læg det hele i HTML'en, og skift synligheden med CSS eller script, i stedet for at hente det ved klik.
Du behøver ikke omlægge en hel app på én gang. Start med de sider, du vil have citeret: artikler, dokumentation, produkt- og prissider. Kontoområder og dashboards kan blive på klientsiden, for de ligger alligevel bag et login.
Undgå at servere crawlere en anden side end brugerne ud fra deres user agent. At gengive den samme HTML til alle er nemmere at vedligeholde og fjerner enhver tvivl om cloaking.
Blokerer login-, samtykke- og betalingsmursskærme også AI-crawlere?
Ja. En crawler logger ikke ind, klikker ikke på et cookiebanner og løser ikke udfordringer. Anthropic oplyser, at dets bots ikke forsøger at omgå CAPTCHA'er. Hvis en samtykkeløsning erstatter siden i HTML'en med et overlay i fuld skærm eller omdirigerer førstegangsbesøgende til en samtykkeside, får crawleren det i stedet for dit indhold.
Sørg for, at offentlige sider gengiver deres indhold i HTML'en uanset samtykkestatus, med banneret som et overlay frem for en erstatning. Hold sider, du vil have citeret, uden for loginmure, og tjek, at en crawler ikke omdirigeres til en login-side.
Hvordan opdager AISeeWhy sider, der kun fungerer med JavaScript?
AISeeWhy læser den oprindelige HTML, som hver crawler modtager den, uden at køre scripts. Når en side næsten ingen synlig tekst har, men et framework-rodelement og scripts, rapporterer den et P1-fund om, at indholdet kræver JavaScript. Den markerer også omdirigeringer, der sender crawlere et andet sted hen end til den side, en browser får.
Ofte stillede spørgsmål
Gengiver Googlebot JavaScript?
Ja. Google crawler HTML'en, sætter sider i kø til gengivelse og gengiver dem med headless Chromium, når der er ressourcer. Google anbefaler stadig server-side rendering eller prerendering.
Kører ChatGPT's, Claudes og Perplexitys crawlere JavaScript?
Leverandørernes crawlerdokumentation siger det ikke. Indtil en leverandør oplyser andet, så antag, at crawleren læser den oprindelige HTML, og sørg for, at dit indhold står i den.
Er dynamisk gengivelse til bots en god idé?
Det virker som en midlertidig løsning, men tilføjer en ekstra gengivelsessti, der skal vedligeholdes. Server-side rendering eller statisk HTML leverer det samme indhold til alle og er den enklere løsning på længere sigt.
Tæller JSON-LD, der er tilføjet af JavaScript?
Google kan læse det efter gengivelse, men crawlere, der ikke kører scripts, ser det ikke. Læg JSON-LD i den oprindelige HTML.
Kilder
- Google Search Central: grundprincipper i JavaScript-SEO
- Apple: om Applebot
- OpenAI: oversigt over OpenAI's crawlere
- Anthropic: crawler Anthropic data fra nettet, og hvordan kan ejere af websites blokere crawleren?
- Perplexity: Perplexity-crawlere