Kan AI-crawlers läsa innehåll som renderas av JavaScript?
Ofta inte. Googlebot renderar JavaScript i ett senare steg, men de flesta AI-crawlers dokumenterar inte att de gör det, och Google noterar själva att inte alla bottar kan köra JavaScript. Om din text först visas när skript körs kan en AI-crawler få en tom sida. Leverera huvudinnehållet i den första HTML-koden med serverrendering eller statiska sidor.
Single-page-appar och klientbaserade ramverk finns överallt, och i en webbläsare ser de bra ut. En crawler som bara läser den HTML som din server skickar ser något annat: en <div id="root"></div>, några script-taggar och lite eller ingen text. För AI-svar har den sidan inget att citera.
På den här sidan
- Varför missar AI-crawlers JavaScript-innehåll
- Hur kontrollerar jag vad en crawler får
- Vilka sidor löper störst risk
- Hur åtgärdar jag innehåll som bara finns i JavaScript
- Blockerar inloggnings-, samtyckes- och betalväggsskärmar också AI-crawlers
- Hur upptäcker AISeeWhy sidor som bara fungerar med JavaScript
Varför missar AI-crawlers JavaScript-innehåll
Att köra JavaScript är dyrt. En crawler måste ladda ned skripten, köra dem i en webbläsarmotor och vänta på att data laddas. Google gör detta för Sök: den genomsöker, köar sidor för rendering och renderar dem med headless Chromium när resurserna räcker. Trots det rekommenderar Google serverrendering eller förrendering eftersom det är snabbare för användare och crawlers, och noterar att inte alla bottar kan köra JavaScript.
OpenAI, Anthropic och Perplexity anger inte i sin crawler-dokumentation att deras agenter kör JavaScript. Apple säger att Applebot kan rendera sidor i en webbläsare. Utan ett tydligt uttalande är det säkra antagandet för AI-crawlers att de bara läser den första HTML-koden.
Hur kontrollerar jag vad en crawler får
Titta på den råa HTML-koden, inte på den renderade sidan. Webbläsarens utvecklarverktyg visar DOM efter att skripten körts, vilket inte är vad en crawler får. Använd view-source, eller spara den råa HTML-koden från kommandoraden och sök 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
Ett resultat på 0 betyder att meningen inte finns i den HTML som servern skickade, så crawlers som inte kör skript hittar den inte. En snabb titt på filen visar resten: en serverrenderad artikel har hela sin text där; ett klientbaserat skal har ett tomt rotelement och en lista med skript.
Vilka sidor löper störst risk
- Single-page-appar byggda med React, Vue, Angular eller Svelte som renderar allt i webbläsaren.
- Sidor som hämtar sin huvudtext från ett API efter inläsning, till exempel produktinformation, priser eller recensioner.
- Innehåll i flikar, dragspel eller ”visa mer”-avsnitt som bara begärs vid klick.
- Sidor bakom en inloggning, en betalvägg eller en samtyckesvägg som crawlern inte kan ta sig förbi.
- Sidor som anger
noindexeller den kanoniska URL:en bara via JavaScript. Google varnar för att när den sernoindexi den ursprungliga HTML-koden kan den hoppa över renderingen helt.
Hur åtgärdar jag innehåll som bara finns i JavaScript
Lösningen är att skicka det viktiga innehållet i det första svaret. Välj det lättaste alternativet som din stack tillåter:
- Serverrendering (SSR): ramverk som Next.js, Nuxt, SvelteKit och Angular SSR renderar sidan på servern och hydrerar den i webbläsaren.
- Statisk generering eller förrendering: bygg HTML-koden vid driftsättning för sidor som sällan ändras, till exempel artiklar, dokumentation och landningssidor.
- Progressiv förbättring: lägg text, rubriker, länkar, priser och JSON-LD i HTML-koden och använd JavaScript bara för interaktion.
- Lägg det viktiga direkt i sidan: om flikar döljer innehåll, lägg allt i HTML-koden och växla synligheten med CSS eller skript i stället för att hämta det vid klick.
Du behöver inte konvertera en hel app på en gång. Börja med sidorna du vill ska citeras: artiklar, dokumentation, produkt- och prissidor. Kontoområden och instrumentpaneler kan förbli klientbaserade, eftersom de ändå ligger bakom en inloggning.
Undvik att servera crawlers en annan sida än användarna utifrån deras user agent. Att rendera samma HTML för alla är enklare att underhålla och undanröjer all tvekan om cloaking.
Blockerar inloggnings-, samtyckes- och betalväggsskärmar också AI-crawlers
Ja. En crawler loggar inte in, klickar inte på en cookie-banner och löser inga utmaningar. Anthropic säger att deras bottar inte försöker runda CAPTCHA. Om en samtyckeshanterare ersätter sidan med ett helskärmsöverlägg i HTML-koden, eller omdirigerar förstagångsbesökare till en samtyckessida, får crawlern det i stället för ditt innehåll.
Se till att publika sidor renderar sitt innehåll i HTML-koden oavsett samtyckesstatus, med bannern som ett överlägg i stället för en ersättning. Håll sidor som du vill ska citeras utanför inloggningsväggar och kontrollera att en crawler inte omdirigeras till en inloggningssida.
Hur upptäcker AISeeWhy sidor som bara fungerar med JavaScript
AISeeWhy läser den första HTML-koden så som varje crawler får den, utan att köra skript. När en sida har nästan ingen synlig text men ett ramverks rotelement och skript rapporterar den ett P1-fynd om att innehållet kräver JavaScript. Den flaggar också omdirigeringar som skickar crawlers någon annanstans än till sidan som en webbläsare får.
Vanliga frågor
Renderar Googlebot JavaScript?
Ja. Google genomsöker HTML-koden, köar sidor för rendering och renderar dem med headless Chromium när resurserna räcker. Google rekommenderar ändå serverrendering eller förrendering.
Kör crawlers från ChatGPT, Claude och Perplexity JavaScript?
Deras leverantörers dokumentation om crawlers säger inte det. Tills en leverantör anger något annat bör du anta att crawlern läser den första HTML-koden och se till att ditt innehåll finns i den.
Är dynamisk rendering för bottar en bra idé?
Det fungerar som en nödlösning men lägger till en andra renderingsväg att underhålla. Serverrendering eller statisk HTML serverar samma innehåll till alla och är den enklare långsiktiga lösningen.
Räknas JSON-LD som läggs till av JavaScript?
Google kan läsa det efter rendering, men crawlers som inte kör skript ser det inte. Lägg JSON-LD i den första HTML-koden.
Källor
- Google Search Central: JavaScript SEO basics
- Apple: About Applebot
- OpenAI: Overview of OpenAI crawlers
- Anthropic: Does Anthropic crawl data from the web, and how can site owners block the crawler?
- Perplexity: Perplexity crawlers