Jak działa ta kontrola
Scanaris pobiera HTML Twojej strony dokładnie tak, jak serwuje go serwer, bez uruchamiania JavaScriptu, usuwa z niego skrypty, style, znaczniki noscript, szablony i SVG, i mierzy, ile widocznego tekstu zostaje w body. Otwiera ustalenie, o średniej wadze, tylko gdy spełnione są dwa warunki naraz: ten tekst ma mniej niż 250 znaków, a HTML zawiera pusty kontener aplikacji jednostronicowej, czyli <div> z id root, app, __next, __nuxt lub q-app bez niczego w środku. Strona z renderowaniem po stronie serwera lub generowaniem statycznym ma tekst w początkowym HTML-u i nigdy nie jest oznaczana; strona z małą ilością treści, ale bez kontenera SPA, też nie. Próg jest celowo niski, żeby nie dawać fałszywych alarmów.
Dlaczego to ważne
Googlebot uruchamia JavaScript, ale w drugim przebiegu, który może trwać dniami i ma ograniczony budżet. Roboty asystentów AI (GPTBot, ClaudeBot, PerplexityBot) zasadniczo nie uruchamiają go wcale: czytają HTML, który dostają, i tyle. Jeśli Twój HTML to <div id="root"></div> i skrypt, dla nich Twoja strona jest pusta. Nie mogą indeksować tego, czego nie widzą, ani cytować tego, czego nie czytają, więc gdy ktoś pyta ChatGPT o Twoją kategorię produktu, nie istniejesz. To najczęstszy problem stron zrobionych narzędziami AI, które generują czysto kliencką aplikację React lub Vue, i najbardziej niewidoczny, bo w przeglądarce wszystko wygląda idealnie.
Jak to naprawić
- Włącz renderowanie po stronie serwera. W Nuxt jest domyślnie włączone (
ssr: true); jeśli je wyłączyłeś, włącz ponownie. W Next.js App Router renderuje na serwerze, chyba że oznaczysz komponent'use client'na samej górze. W czystym Vite z Reactem lub Vue nie ma SSR: przejdź na Next.js, Remix, Nuxt lub Astro albo generuj publiczne strony jako statyczny HTML. - Jeśli migracja nie wchodzi w grę, prerenderuj: wygeneruj HTML publicznych ścieżek w czasie builda (Nuxt
nitro.prerender, eksport statyczny Next.js, Astro domyślnie) albo użyj usługi prerenderingu, która serwuje botom wyrenderowany HTML. - Co najmniej umieść kluczową treść w HTML-u: nagłówek, opis tego, co robisz, i główne linki, nawet jeśli aplikacja zastąpi je przy ładowaniu. To właśnie zobaczą boty.
- Sprawdź strony, które mają znaczenie, nie tylko główną: blog i strony produktów to te, które cytują asystenci.
Sprawdź, czy naprawione
curl -s https://twojadomena.pl | sed -e 's/<script[^>]*>.*<\/script>//g' -e 's/<[^>]*>/ /g' | tr -s ' \n' ' ' | wc -c
Jeśli wynik zatrzymuje się na kilkudziesięciu znakach, treść rysuje JavaScript. Powinno być ich tysiące. Inny sposób: w przeglądarce wyłącz JavaScript w narzędziach deweloperskich i odśwież; to, co widzisz, widzą boty.
Często zadawane pytania
Google indeksuje mnie dobrze. Dlaczego ma mnie to obchodzić?
Bo coraz więcej osób pyta asystenta zamiast szukać, a ci asystenci nie uruchamiają Twojego JavaScriptu. I bo nawet w Google opóźnione renderowanie o dni opóźnia indeksowanie Twoich zmian. Liczby i powody są w dlaczego aplikacje zbudowane z AI są niewidoczne dla AI.
Moja aplikacja to prywatny panel za logowaniem. Czy to mnie dotyczy?
Nie: to, co jest za uwierzytelnianiem, nie powinno być indeksowane. Ta kontrola ma znaczenie dla stron publicznych, tych, które chcesz pokazać. Jeśli Twoja strona to tylko panel plus landing, zrób z landingu HTML.
Mam SSR, a i tak wychodzi mało tekstu.
W takim razie HTML niesie strukturę, ale mało prawdziwej treści, i warto sprawdzić, czy landing w ogóle coś mówi. Nagłówki, które porządkują tę treść, sprawdza nagłówki.