Hopp til innhold
SilktideHjelp

Innhold som kan leses uten JavaScript

Hovedinnholdet på siden din – avsnitt, overskrifter, tabeller og priser som en besøkende kom for – må være til stede i HTML-en som serveren din returnerer på den første forespørselen. Forbedring med er helt fint. Innhold som bare dukker opp etter at JavaScript har kjørt, er usynlig for de fleste AI‑crawlere, og dermed usynlig for assistentene som siterer fra dem.

På denne siden antar vi at Fernwood har bygd markedsføringsnettstedet sitt om til en single-page‑app. I en nettleser ser det komplett ut. Vis kilde viser en nesten tom <div id="root"></div>. Det tomme skallet er det GPTBot, ClaudeBot, PerplexityBot og lignende crawlere mottar.

Hvorfor det fungerer

Tradisjonelle søkemotorer har i stor grad løst dette: Google renderer JavaScript før indeksering. Svarmotorer har ikke det. Crawlerne som forsyner ChatGPT, Claude, Perplexity og lignende systemer henter som regel bare den rå HTML-responsen og stopper der – de venter ikke på at rammeverket ditt skal hydrere, de kjører ikke bunten din, og de følger ikke klientsideruter. Silktides egen crawl‑sammenligning (rendret side vs. rå HTML) bygger på nettopp den oppførselen; se Innhold uten JavaScript.

Feiltilstanden er stille og total:

  • En side som rangerer godt i Google, kan være fullstendig fraværende i AI‑svar, fordi assistentene aldri mottok teksten.
  • Alle andre AEO‑investeringer på den siden – strukturert data, maskinlesbare datoer, svar‑først‑skriving – er verdiløse hvis crawleren aldri ser innholdet disse signalene beskriver.
  • Menneskelige besøkende med feilede eller blokkerte skript ser det samme tomme skallet, og first contentful paint blir dårligere selv om skriptene til slutt lykkes.

Dette er et problem med nettstedets arkitektur, ikke et redigeringsproblem for enkeltsider. Å fikse én URL for hånd retter ikke malen som produserer de neste hundre.

Slik sjekker du hva en crawler ser

Før du endrer noe, bekreft problemet. Tre måter, rangert fra sterkest:

  1. Silktides sjekk. Innhold uten JavaScript sammenligner den meningsfulle brødteksten på den rendret siden med den rå HTML-en som ble fanget under crawling. Den flagger sider der den rå teksten både er under ca. 10% av den rendret teksten og liten i absolutte termer – et genuint tomt skall, ikke en side som bare forbedrer seg selv.
  2. Vis kilde, ikke DevTools Elementer. I nettleseren viser "Vis sidekilde" det serveren sendte. Panelet Elementer viser DOM-en etter at JavaScript har kjørt. Hvis artikkelteksten din finnes i Elementer, men mangler i Vis kilde, vil crawlere som hopper over JS ikke se den.
  3. Hent uten en nettleser. Fra et terminalvindu: curl -sL https:\/\/fernwood.example\/pricing | head. Eller bruk en tekstbasert nettleser. Hvis prisingstabellen mangler i den utdataen, mangler den også for crawleren.

Bekreft også at crawleren i det hele tatt er tillatt inn – en perfekt HTML‑respons er ubrukelig hvis robots.txt blokkerer AI‑crawleren, eller en brannmur blokkerer den i praksis (AI‑crawlere blokkert i praksis).

Slik fikser du det

Velg tilnærmingen som passer stacken din. Alle tre gir samme resultat: Den første HTML‑responsen inneholder innholdet.

1. Server-side rendering (SSR)

Serveren renderer hver side til HTML ved forespørsel; JavaScript hydrerer deretter for interaktivitet. Dette er standardveien for rammeverk som allerede støtter det:

  • Next.js – bruk App Router med Server Components, eller getServerSideProps / getStaticProps i Pages Router. Ikke send et root som bare kjører på klienten og henter innhold etter mount.
  • Nuxt – universell / SSR‑modus (standard), ikke ssr: false.
  • Remix, SvelteKit, Astro (SSR‑modus) og tilsvarende – samme idé: dokumentresponsen inkluderer brødteksten.

Tommelregel: Hvis det er en useEffect / onMounted‑henting som legger artikkelen på siden, flytt den datahentingen til serveren.

2. Statisk sidegenerering (SSG)

Forhåndsbygg sider som ren HTML ved publisering. Ideelt for innhold som ikke endres per besøkende – blogginnlegg, dokumentasjon, markedsføringssider, prising. Astro, Eleventy, Hugo, Next.js output: 'export' og Nuxt generate produserer alle filer en crawler kan lese helt uten JavaScript.

SSG er som regel det billigste grepet for markedsførings- og innholdssider: ingen renderkostnad per forespørsel, og HTML-en på disken er nøyaktig det crawleren får.

3. Forhåndsrendring som mellomløsning

Hvis du ikke kan endre rammeverk ennå, kan en forhåndsrendringstjeneste eller et byggesteg levere et rendret HTML‑snapshot til crawlere (og ofte til førstegangsbesøkende), mens SPA-en fortsetter å kjøre for interaktive økter. Behandle dette som en mellomløsning, ikke et endemål: oppdateringsfrekvens for snapshot, cache‑invalidering og autentiserte ruter blir egne vedlikeholdsbyrder. Foretrekk å fikse rendermodusen når du kan.

Googles egne retningslinjer for JavaScript‑SEO og web.dev sin Rendering på nettet dekker det samme spekteret – SSR, SSG og progressiv forbedring – fra søkemotorens side av problemet.

Hva må være i den første HTML-en

Ikke hver piksel. Innholdet et sitat ville gjengi:

  • Selve artikkelen eller sidekroppen – overskrifter, avsnitt, lister, tabeller.
  • Priser, grenser og andre fakta du vil at assistenter skal gjenta.
  • Strukturert data i en <script type="application\/ld+json">‑blokk i den første HTML-en – JSON‑LD som injiseres først etter hydrering er like usynlig som prosaen.
  • Kanonisk URL, tittel og metabeskrivelse i <head>.

JavaScript kan fortsatt eie menyer, personalisering, diagrammer som forbedrer en allerede tilstedeværende tabell, og progressive funksjoner. Silktides sjekk er bevisst romslig med forbedringer: sider som leverer hovedinnholdet som HTML og legger atferd oppå, består.

Vanlige feilmønstre

  • Klient‑bare SPA-er – Create React App, Vite‑SPA-er og lignende oppsett som sender et tomt skall og henter ruter i nettleseren. Løsningen er SSR/SSG, ikke mer klientkode.
  • Innhold bak "Load more" eller faner som aldri finnes i HTML. Hvis eneste vei til del tre er et klikk som henter den, kommer crawlerne aldri til del tre. Foretrekk ekte URL-er eller inkluder innholdet i den første responsen.
  • "Det fungerer i Google, så vi er trygge." Googlebot‑rendering er ikke en erstatning for lesbarhet for AI‑crawlere. Å bestå hos Google og feile for GPTBot er et vanlig, usynlig skille.
  • Å blokkere crawleren og skylde på JavaScript. Sjekk alltid tilgang for AI‑crawlere og effektiv rekkevidde sammen med denne teknikken.

Slik hjelper Silktide

Hvis Silktide ikke kan lese innholdet ditt uten JavaScript, kan ikke assistentene du vil at skal sitere deg, det heller.

Relatert

Sist oppdatert

Var denne siden nyttig?