Modelowane listy odbiorców nie zawierają konkretnych osób, tylko prawdopodobieństwa. Wyjaśniam, jak powstają, gdzie ich szukać w panelu i jak czytać ich raporty.
Pytanie o GEO dostaję teraz częściej niż o cokolwiek innego związanego z treścią i prawie zawsze w tej samej formie: co dopisać do strony, żeby asystent nas polecał. Odpowiedź, której nikt nie chce usłyszeć, brzmi — nie ma takiego znacznika ani takiego pliku.
Jest natomiast rzecz mniej efektowna: sposób, w jaki treść jest pocięta, opisana i udostępniona. Modele językowe nie czytają strony tak jak człowiek i nie oceniają jej tak jak algorytm rankingowy. Pracują na fragmentach wyrwanych z otoczenia, więc przewagę mają te fragmenty, które otoczenie mają w sobie.
Zbieram tu więc to, co w lutym 2025 roku faktycznie da się zrobić po stronie treści i techniki, i oddzielam to od rzeczy sprzedawanych pod hasłem GEO bez żadnego potwierdzenia.
Zanim cokolwiek wdrożę, ustalam z klientem, o którym z trzech zjawisk rozmawiamy, bo wymagają zupełnie innej pracy.
Praktyczny wniosek: kiedy klient mówi „chcę być w AI”, zwykle ma na myśli punkt drugi. I dobrze, bo tylko tam mam narzędzia.
Mechanika jest z grubsza znana i nie jest tajemnicą. System dostaje pytanie, wyszukuje dokumenty, dzieli je na porcje tekstu, wybiera kilka najbliższych zapytaniu i na ich podstawie formułuje zdania. Dopiero na końcu dokłada odnośniki do źródeł.
Wynika z tego kilka rzeczy, które zmieniają sposób pisania. Po pierwsze, oceniana jest porcja tekstu, nie cały dokument. Artykuł może być świetny jako całość i nie dostarczyć ani jednego akapitu, który da się użyć samodzielnie.
Po drugie, porcja trafia do modelu bez nagłówka nadrzędnego, bez menu i bez tego, co napisałeś trzy akapity wyżej. Akapit zaczynający się od „ta metoda ma trzy wady” jest bezużyteczny, bo nikt nie wie, o jaką metodę chodzi.
Po trzecie, wybór fragmentów odbywa się na podstawie podobieństwa znaczeniowego, nie dopasowania słów. Upychanie synonimów nic tu nie daje. Daje natomiast nazywanie rzeczy wprost i konsekwentnie — jeśli w jednym akapicie piszę „kampania produktowa”, a w drugim „kampania zakupowa” i „PLA”, rozmywam sygnał bez żadnego zysku.
To jest sedno całej pracy i zajmuje mi najwięcej czasu przy redakcji.
Piszę akapity domknięte znaczeniowo. Podmiot nazwany, nie zastąpiony zaimkiem. Jedna myśl na akapit. Jeśli akapit odpowiada na pytanie, odpowiedź stoi w pierwszym zdaniu, a rozwinięcie w kolejnych — nie odwrotnie.
Nagłówki formułuję jako pytania albo jasne stwierdzenia i pilnuję, żeby zdanie zaraz pod nagłówkiem faktycznie na to pytanie odpowiadało. Sekcja otwierana zdaniem „zanim przejdziemy dalej, warto zrozumieć kontekst” jest z punktu widzenia takiego wyciągania fragmentów pusta.
Definicje piszę osobno i w jednym zdaniu, nawet jeśli dla czytelnika brzmi to podręcznikowo. Krótka, samodzielna definicja to fragment, który system może wziąć bez ryzyka przekręcenia sensu, i praktycznie za każdym razem, gdy sprawdzam takie odpowiedzi, widzę w nich właśnie takie zdania.
Unikam też odsyłania w treści do „powyższej tabeli” czy „poprzedniego rozdziału”. Dla człowieka to naturalne, dla mechanizmu pobierającego pojedynczy kawałek tekstu — martwe odniesienie.
Fragmenty z konkretem wygrywają z fragmentami ogólnymi, ale konkret bez opisu jest gorszy niż jego brak, bo bardzo łatwo zostaje przekręcony.
Trzymam się kilku nawyków. Każdą liczbę opisuję w tym samym zdaniu: czego dotyczy, w jakiej jednostce, za jaki okres i skąd pochodzi. Zamiast „koszt wzrósł o kilkanaście procent” piszę, o jakim koszcie mowa i w porównaniu z czym. Zamiast „obecnie”, „ostatnio” i „od niedawna” wpisuję miesiąc i rok, bo tekst będzie czytany również za rok.
Nazwy własne podaję w pełnej formie przy pierwszym użyciu i tylko wtedy dokładam skrót. To nudne, ale bez tego fragment z samym skrótem jest nierozpoznawalny.
Gdy powołuję się na cudze ustalenie, nazywam autora w zdaniu, a nie tylko w linku. Odnośnik może nie przetrwać przetworzenia treści, nazwa instytucji przetrwa. Ta sama zasada ratuje mnie zresztą przy zwykłym cytowaniu w mediach.
Najlepiej napisany akapit nie istnieje, jeśli robot go nie pobierze. Ta część jest banalna, a mimo to najczęściej wywraca cały pomysł.
Osobna sprawa to reguły w robots.txt dla robotów zbierających dane dla modeli. Bywa, że klient blokuje je jedną ręką, a drugą pyta, dlaczego go w odpowiedziach nie ma — piszę o tym w oddzielnym tekście, bo decyzja nie jest oczywista.
We wrześniu 2024 Jeremy Howard z Answer.AI opublikował propozycję pliku llms.txt — uporządkowanego spisu treści witryny w formacie zrozumiałym dla modeli. Pomysł jest sensowny i przyjął się w dokumentacjach technicznych.
Ważne jest jednak to, czego wokół niego nie ma. To propozycja jednej osoby, nie standard żadnej organizacji, i żaden duży dostawca modeli ani żadna wyszukiwarka nie potwierdziła, że ten plik czyta. Traktuję go więc jak eksperyment o niskim koszcie: jeśli klient ma rozbudowaną dokumentację, wystawienie takiego pliku nikomu nie szkodzi, ale nie sprzedaję tego jako elementu strategii.
Tak samo podchodzę do pomysłów w rodzaju osobnych „wersji dla AI” podstron czy stron generowanych wyłącznie pod modele. Widziałem propozycje takich wdrożeń i nie znam ani jednego przypadku, w którym ktoś pokazał, że to zadziałało. Ryzyko za to jest realne — duplikacja treści i cienkie podstrony to problemy, które w klasycznym wyszukiwaniu mamy opisane od lat.
Zasada, którą stosuję: wdrażam rzeczy, które mają wartość także wtedy, gdy o modelach zapomnimy. Wszystko inne to zakład o cudze plany produktowe.
Uczciwie: bardzo niewiele, i uważam, że to najważniejsze zdanie w całym tekście.
Nie ma raportu pokazującego, ile razy asystent powołał się na Twoją stronę. Wyniki są niestabilne — to samo pytanie zadane dwa razy daje inne odpowiedzi i inne źródła, a wpływ ma też historia rozmowy i kraj.
Robię więc trzy rzeczy, wiedząc, że każda jest przybliżeniem. Prowadzę stałą listę kilkunastu pytań, które zadałby klient tej firmy, i przechodzę ją co miesiąc w kilku narzędziach, zapisując zrzuty. Sprawdzam w analityce ruch z domen asystentów — jest go mało, ale kierunek zmiany coś mówi. I obserwuję liczbę wyszukiwań brandowych w Search Console, bo jeśli ktoś usłyszał nazwę w rozmowie z asystentem, często wpisze ją potem w wyszukiwarkę.
Żaden z tych pomiarów nie jest dowodem. Dlatego całą tę pracę pozycjonuję u klienta tak, jak wygląda: to porządek w treści, który i tak trzeba zrobić, z możliwym dodatkowym zwrotem.
Używamy plików cookies, aby ułatwić Ci nawigację oraz wykonywanie określonych funkcji. Szczegółowe informacje o wszystkich plikach cookies znajdziesz w każdej kategorii zgody poniżej.
Pliki cookies oznaczone jako "Niezbędne" są przechowywane w Twojej przeglądarce, ponieważ są one kluczowe dla zapewnienia podstawowych funkcji strony.
Używamy również plików cookies firm trzecich, które pomagają nam analizować, w jaki sposób korzystasz z tej strony, zapamiętują Twoje preferencje oraz dostarczają treści i reklamy odpowiednie dla Ciebie. Te pliki cookies będą przechowywane w Twojej przeglądarce tylko za Twoją uprzednią zgodą.
Możesz zdecydować, czy chcesz włączyć lub wyłączyć niektóre bądź wszystkie te pliki cookies, jednak wyłączenie niektórych z nich może wpłynąć na Twoje doświadczenia podczas przeglądania strony.
| Cookie | Czas przechowywania | Opis |
|---|---|---|
| __cf_bm | 13 minutes | Cloudflare bot management — distinguishes humans from bots. |
| rc::* | Persistent | Google reCAPTCHA — localStorage holding anti-bot challenge state. |
| Cookie | Czas przechowywania | Opis |
|---|---|---|
| wpEmojiSettingsSupports | Session | WordPress — sessionStorage flag caching whether the browser can render emoji (feature detection). |
| ytidb* | Persistent | YouTube — IndexedDB storing playback/search state for embedded videos. |
| Cookie | Czas przechowywania | Opis |
|---|---|---|
| _ga_* | 400 days | Google Analytics 4 — persists session state per property. |
| _ga | 400 days | Google Analytics — distinguishes unique users via a client id. |
| Cookie | Czas przechowywania | Opis |
|---|---|---|
| NID | 183 days | Google — stores preferences for personalized ads. |
| fr | 90 days | Meta — encrypted Facebook id and browser id for ads. |
| _gcl_au | 90 days | Google AdSense/Ads — experiments with advertising efficiency (conversion linker). |
| Cookie | Czas przechowywania | Opis |
|---|---|---|
| __Secure-YNID | 180 days | |
| YSC | Session | |
| __Secure-ROLLOUT_TOKEN | 180 days | |
| VISITOR_INFO1_LIVE | 180 days | |
| VISITOR_PRIVACY_METADATA | 180 days | |
| datr | 400 days | |
| sb | 400 days | |
| wd | 7 days |