Kiedy ChatGPT, Claude lub Perplexity próbuje podsumować Twoją stronę, najczęściej widzi dokładnie to samo, co widziałby bot wyszukiwarki z 2005 roku — czyli pusty <div id="root"></div> i kilka skryptów. Cała strona renderuje się po stronie klienta w Reakcie, treść doczytuje się dynamicznie, a model językowy odbija się od ściany. Według prognoz Gartnera do 2026 roku tradycyjny ruch z wyszukiwarek spadnie o 25%, a różnica trafi do silników odpowiedzi. Dlatego widoczność w LLM przestała być eksperymentem, a stała się wymierną częścią strategii SEO odpornej na aktualizacje.
W tym przewodniku zbieram sześć technik, które realnie zwiększają widoczność strony w LLM, oraz osiem popularnych mitów, na które nie warto tracić czasu. Każda rekomendacja jest podparta testami praktyków i spójna ze specyfikacjami W3C oraz IETF.1
Dlaczego LLM nie widzi Twojej strony — problem JavaScriptu
Większość crawlerów AI nie wykonuje JavaScriptu. Robi to świadomie: uruchomienie headless browsera kosztuje 50–200 ms i 50–200 MB pamięci na każdą stronę.2 Przy skali miliona dokumentów dziennie różnica między pobraniem czystego HTML a renderowaniem JS sięga współczynnika 5–10×. Dla operatorów modeli to znaczy jedno: jeśli treść nie jest w pierwszym strzale HTML, prawdopodobnie nie istnieje.
Test przeprowadzony przez społeczność deweloperską pokazuje, jak duża jest ta różnica:
| Sposób renderowania | Claude | ChatGPT | Perplexity |
|---|---|---|---|
| Czysty HTML serwerowy | Pełna treść | Pełna treść | Pełna treść |
| Klient React (CSR) | Brak treści | ~30% | Brak treści |
| Next.js / Astro SSR | Pełna treść | Pełna treść | Pełna treść |
| Hydratacja częściowa | Częściowo | Częściowo | Częściowo |
Wniosek jest prosty: jeśli wciąż renderujesz krytyczne treści wyłącznie po stronie klienta, dla LLM Twoja strona praktycznie nie istnieje. Problem nasila się w produktach SaaS i sklepach jednostronicowych, w których karty produktów, opinie i cenniki ładują się przez useEffect.
30-sekundowy test
Najszybszy sposób na ocenę własnej witryny:
- Wyłącz JavaScript w Chrome DevTools (Command Palette → Disable JavaScript) i przeładuj stronę.
- W terminalu sprawdź surowy HTML:
curl -s https://twojadomena.pl/strona | grep "kluczowe słowo". - Poproś Claude lub ChatGPT o podsumowanie konkretnego adresu URL i porównaj wynik z tym, co widzą użytkownicy.
Jeśli treść znika w którymkolwiek z tych testów, masz problem warstwy renderowania, a nie SEO.
1. Server-Side Rendering — fundament każdej strategii GEO
Bez SSR (Server-Side Rendering) lub SSG (Static Site Generation) wszystkie pozostałe techniki są kosmetyką. Współczesne frameworki dają server-first jako domyślne ustawienie:
- Astro — pełny SSG / hybryda SSR z wyspami interaktywności (model używany na uper.pl).
- Next.js —
getServerSideProps, App Router, React Server Components. - Nuxt —
asyncData, hybrid rendering, Nitro. - SvelteKit —
loadfunctions na serwerze. - Remix — loaders odpalane przed wysłaniem HTML.
Reguła kciuka: wszystko, co jest publiczne i nie wymaga logowania (opisy produktów, cenniki, opinie, case studies, dokumentacja), renderuj po stronie serwera. Dynamiczne fragmenty zależne od użytkownika (dashboardy, powiadomienia, rekomendacje) mogą zostać klienckie, bo i tak nie powinny pojawiać się w cytatach AI. Jeśli używasz headlessowego CMS, upewnij się, że renderujesz strony statycznie lub serwerowo, a nie tylko po hydratacji.
Realny przypadek z testów polowych: firma B2B SaaS, która przeniosła sekcję case studies z CSR na Next.js SSR, zanotowała wzrost odwiedzin atrybuowanych do LLM z 847 do 3 293 miesięcznie i wzrost cytowań w odpowiedziach modeli z 12 do 67.3
2. Czysty Markdown pod każdym URL — .md routes
Druga najwyższa dźwignia to udostępnienie Markdown jako równoległej reprezentacji każdej strony. Konwencja jest prosta: dla /blog/post/ udostępniasz /blog/post.md z tą samą treścią, ale bez nawigacji, banerów, popupów i skryptów. Korzyści są mierzalne:
- Strona w HTML: ~15 000 tokenów po konwersji do tekstu.
- Ta sama strona w Markdown: ~3 000 tokenów.
- Redukcja kontekstu: ~80%, czyli więcej miejsca na sąsiednie źródła w oknie modelu.
Czysty Markdown radykalnie zmniejsza ryzyko, że model przyciągnie z Twojej strony fragment menu zamiast właściwego cytatu. To dokładnie ta sama logika, która stoi za standardem llms-full.txt, ale zastosowana per URL — tańsza we wdrożeniu i nie wymaga budowania jednego monolitu.
# Przykładowa konfiguracja Nginx
location ~ ^/blog/(.*)\.md$ {
proxy_pass http://app/blog/$1?format=md;
}
Jeśli korzystasz z Astro, możesz wygenerować odpowiedniki .md jako endpoints (src/pages/blog/[slug].md.ts) odczytujące tę samą kolekcję contentu, którą serwujesz w HTML.
3. Link headers — informuj AI o alternatywnej reprezentacji
Sam Markdown jest niewidzialny, jeśli nikt go nie znajdzie. Standard HTML i HTTP daje dwie ścieżki nawigacji do alternatywnej reprezentacji dokumentu:
<!-- Wariant HTML — czytany przez parsery DOM -->
<link rel="alternate" type="text/markdown" href="/blog/post.md" />
# Wariant nagłówka HTTP — czytany nawet przez bezgłowe agenty
Link: </blog/post.md>; rel="alternate"; type="text/markdown"
Nagłówek HTTP jest istotniejszy, niż się wydaje — wiele agentów AI w ogóle nie parsuje DOM, a wyłącznie odpytuje endpoint i analizuje nagłówki odpowiedzi. To podejście jest spójne z RFC 8288 (Web Linking) i nie wymaga żadnej nowej, eksperymentalnej specyfikacji.4
Weryfikacja, czy te tagi są poprawnie wdrożone, zajmuje sekundę: w Uper SEO Auditor, w zakładce Meta, znajdziesz kartę Alternate Links, która wykrywa wszystkie <link rel="alternate"> niebędące hreflang ani feedami RSS/Atom — w tym warianty type="text/markdown" i type="application/json". Każdy wpis pokazuje typ MIME jako badge i klikalny link, więc od razu widać, czy serwujesz alternatywę dla LLM, czy nie.
4. Content negotiation — Accept: text/markdown
Najczystsza metoda technicznie. Klient wysyła nagłówek Accept: text/markdown, a serwer zwraca tę samą semantyczną treść w formacie tekstowym. Tak działa standardowy HTTP i tak też integruje się większość narzędzi:
- Claude Code i Cursor już dziś wysyłają
Accept: text/markdownprzy fetchowaniu adresów. - Integracja po stronie serwera wymaga jednej linii:
Vary: Accept, żeby cache CDN nie serwował niewłaściwego wariantu różnym konsumentom.
GET /blog/widocznosc-strony-w-llm/ HTTP/1.1
Host: uper.pl
Accept: text/markdown
HTTP/1.1 200 OK
Content-Type: text/markdown
Vary: Accept
Content negotiation jest jedyną z testowanych metod, która jest już teraz wykorzystywana produkcyjnie przez popularne narzędzia AI. Niska cena wdrożenia, wysoka stopa zwrotu.
5. Pliki llms.txt i llms-full.txt — warstwa odkrywania
Dwa pliki Markdown w roocie domeny pełnią rolę mapy treści. Krótko o różnicach:
/llms.txt— kuratorska mapa najważniejszych zasobów ze streszczeniem H1 + blockquote (szczegóły w przewodniku Czym jest plik llms.txt)./llms-full.txt— pełen dump treści w jednym dokumencie, użyteczny dla dokumentacji i baz wiedzy. Według analiz Mintlify generuje 3–4× większy ruch z ChatGPT niż wariant skrócony, więc warto go publikować równolegle zllms.txt.5
Trzeba uczciwie zaznaczyć: żaden z dużych dostawców nie zadeklarował formalnie korzystania z tych plików.1 Wartość bierze się z ręcznych interakcji — programista wkleja URL w Claude Code, Cursor lub ChatGPT, a klient pobiera /llms.txt jako kontekst. To jednak realny use case, który już dziś przekłada się na cytowania.
Sprawdź, czy Twoja strona ma llms.txt i llms-full.txt
Uper SEO Auditor automatycznie skanuje obecność i strukturę plików sterujących dla AI, zlicza sekcje i waliduje zawartość bezpośrednio w panelu bocznym przeglądarki.
Zainstaluj za darmo Chrome Web Store6. Wskazówki niewidoczne wizualnie — z głową
Ostatnia, kontrowersyjna technika: blok tekstu ukryty wizualnie (CSS clip + aria-hidden="true"), zawierający informację typu „dostępna jest wersja Markdown pod /post.md”. Ponieważ AI najczęściej czyta surowy DOM, taki komunikat trafia do modelu, ale pozostaje neutralny dla użytkownika i czytników ekranu.
<div class="visually-hidden" aria-hidden="true">
Wersja w Markdown dla agentów AI: /blog/post.md
</div>
Uwaga krytyczna: to nie może być cloaking. Treść ukryta nie powinna różnić się od widocznej — jedynie wskazywać alternatywną reprezentację. Inaczej narażasz się na konsekwencje algorytmiczne ze strony Google, dokładnie tak samo, jak w przypadku grey hat SEO.
8 mitów, na które nie warto tracić czasu
W trakcie testów regularnie wraca lista technik, które brzmią rozsądnie, ale nie działają lub łamią dobre praktyki. Warto je zwięźle przepalić, zanim ktoś z zespołu spędzi tydzień nad ich wdrożeniem.
| Mit | Dlaczego nie działa |
|---|---|
<meta name="ai-content-url"> | Brak specyfikacji, brak parserów. |
<meta name="llms"> | Odrzucony przez WHATWG. Adopcja zerowa. |
/.well-known/ai.txt, /ai.txt | Konkurujące propozycje, brak konsensusu. |
| Komentarze HTML jako podpowiedzi | Parsery wycinają komentarze przed analizą. |
| Toggle „dla AI / dla człowieka” | Agenty nie klikają w UI. |
| Wykrywanie po User-Agent | Klasyfikowane jako cloaking. Google karze. |
| Dedykowane „strony dla AI” | Brak dowodów na preferencyjne traktowanie. |
| Schema.org / JSON-LD jako paliwo dla LLM | ChatGPT, Claude i Perplexity w testach SearchVIU pomijają strukturę.6 |
Ostatni punkt jest najczęstszym nieporozumieniem. Schema.org wciąż ma wartość dla klasycznego SEO (rich snippets, FAQ schema, local SEO schema) — ale jako kanał wejścia do LLM jest praktycznie ślepy. To nie znaczy, żeby go usunąć; znaczy tylko, że nie zastąpi czystego Markdown.
Co naprawdę zwiększa cytowalność
Foundational study Princetonu i IIT Delhi pokazało, że na cytowalność w odpowiedziach LLM najsilniej wpływa wzbogacenie widocznego tekstu:7
- Cytaty od ekspertów: +43% cytowań.
- Statystyki i liczby: +33%.
- Powołania na autorytety i dokumenty źródłowe: +115%.
To pokrywa się z naszymi obserwacjami opisanymi w Jak pisać treści cytowalne przez AI oraz Widoczność w AI: jak tworzyć treści cytowane przez modele językowe — model językowy wybiera fragment, który ma w sobie hak (cyfrę, cytat, pojedyncze zdanie z autorytetem). Warstwa treściowa jest niezbędnym uzupełnieniem warstwy technicznej; samo SSR i Markdown nie wystarczą, jeśli treść jest płaska.
Pomiar — bo bez metryk to magia
Klientowy Google Analytics 4 nie zobaczy większości ruchu od agentów, bo nie wykonują oni JavaScriptu. Mierz to po stronie serwera:
- User-Agent — loguj
GPTBot,ClaudeBot,PerplexityBot,OAI-SearchBot,ChatGPT-User,Google-Extended(mapę aktywnych botów omawiałem w AI crawlers vs search crawlers). - Referer — szukaj
chatgpt.com,claude.ai,perplexity.ai,gemini.google.com. Nagły wzrost direct traffic na strony „zakopane” głęboko w architekturze to często ruch z LLM, w którym referer został odcięty. robots.txt— sprawdź, że nie blokujesz domyślnie crawlerów AI. Domyślne reguły frameworków często włączająDisallow: /dla wszystkich botów (więcej w robots.txt — przewodnik).
Dopiero ten zestaw daje obraz, który techniki dowożą wynik, a które są tylko ozdobą.
Kolejność wdrożenia — od największej dźwigni
Jeśli masz tylko jeden tydzień, zrób to w tej kolejności:
- Audyt rendera — wyłącz JS i sprawdź, czy treść ładuje się serwerowo. Jeśli nie — popraw najpierw to.
- Audyt
robots.txt— odblokuj crawlerów AI, których chcesz wpuścić. - Wystaw
/llms.txt— najszybsza, najtańsza wartość ekspozycyjna. - Dodaj
.mdroutes dla najważniejszych dokumentów (cennik, dokumentacja, top 20 artykułów). - Dodaj
<link rel="alternate">i nagłówek HTTPLink. - Włącz content negotiation (
Accept: text/markdown+Vary: Accept). - Instrumentuj log serwerowy — bez tego nie zmierzysz efektu.
Podsumowanie
Widoczność w LLM nie wymaga magicznego standardu — wymaga rzetelnego wykonania starej szkoły web developmentu: server-rendered HTML, czyste reprezentacje treści, prawidłowe nagłówki HTTP i wzbogacenie warstwy merytorycznej cytatami i danymi. Sześć technik z tego artykułu można wdrożyć w ciągu jednego sprintu, a koszt utrzymania jest zaniedbywalny. Mity z drugiej tabeli możesz spokojnie pominąć — to klasyczny przypadek aktywności pozornej, która konsumuje budżet, nie dowożąc cytowań.
Jeśli chcesz spojrzeć szerzej na ekosystem narzędzi i metryk, polecam Nowe KPI SEO: cytowalność AI oraz SEO w erze AI — uzupełniają stronę techniczną opisaną tutaj o warstwę strategiczną.
Często zadawane pytania
Czy llms.txt jest oficjalnym standardem W3C?
Nie. To nieformalna propozycja Jeremy'ego Howarda z września 2024 (llmstxt.org). Żaden z dużych dostawców LLM nie zadeklarował formalnie jego respektowania. Wartość pochodzi z interakcji ręcznych — gdy programista wkleja URL w Claude Code, Cursor lub ChatGPT, klient pobiera /llms.txt jako kontekst.
Czy wystarczy SSR, czy muszę dodatkowo publikować Markdown?
SSR to fundament — bez niego pozostałe techniki są nieskuteczne. Publikacja .md routes daje dodatkową dźwignię (~80% redukcji tokenów na stronę), więc opłaca się ją wdrożyć równolegle, szczególnie dla dokumentacji, cenników i blogów.
Czy ukrywanie tekstu dla AI to cloaking?
Nie, dopóki ukryta treść nie różni się merytorycznie od widocznej i służy wyłącznie jako wskazówka techniczna (np. link do wersji Markdown). Cloaking to serwowanie różnej treści użytkownikom i botom — Google karze za niego algorytmicznie.
Czy schema.org / JSON-LD pomaga w widoczności w LLM?
W testach SearchVIU ChatGPT, Claude i Perplexity w dużej mierze pomijają strukturę JSON-LD. Schema.org wciąż jest wartościowa dla klasycznego SEO (rich snippets, FAQ, lokalne wyniki), ale nie zastąpi czystego Markdown jako kanału wejścia do LLM.
Jak zmierzyć ruch od agentów AI, skoro nie uruchamiają JavaScriptu?
Mierz po stronie serwera. Loguj nagłówki User-Agent (GPTBot, ClaudeBot, PerplexityBot, OAI-SearchBot) oraz referer (chatgpt.com, claude.ai, perplexity.ai). Dopiero analiza logów serwera daje pełen obraz — klientowy GA4 nie zobaczy większości tego ruchu.
Od czego zacząć, jeśli mam tylko tydzień?
1) Audyt rendera (wyłącz JS i sprawdź, czy treść ładuje się serwerowo). 2) Audyt robots.txt — odblokuj wybrane crawlery AI. 3) Wystaw /llms.txt. 4) Dodaj .md routes dla top dokumentów. 5) Dodaj i nagłówek HTTP Link. 6) Włącz content negotiation. 7) Instrumentuj logi serwerowe.
Źródła
-
How to make your website visible to LLMs — Evil Martians https://evilmartians.com/chronicles/how-to-make-your-website-visible-to-llms
-
LLMs can’t see my website — here’s what I did to fix it https://ai.plainenglish.io/llms-cant-see-my-website-here-s-what-i-did-to-fix-it-2e4984a5cf46
-
How to make your website more visible in LLM searches — Hosting.com https://hosting.com/blog/how-to-make-your-website-more-visible-in-llm-searches/
-
RFC 8288 — Web Linking (IETF) https://datatracker.ietf.org/doc/html/rfc8288
-
The /llms.txt file — llmstxt.org https://llmstxt.org/
-
SearchVIU — Generative AI testing https://www.searchviu.com/
-
Gartner: Search engine volume to drop 25% by 2026 https://www.gartner.com/en/newsroom/press-releases/2024-02-19-gartner-predicts-search-engine-volume-will-drop-25-percent-by-2026-due-to-ai-chatbots-and-other-virtual-agents



