Studio iFOX · seria „Budujemy agentic commerce", odc. 2
W pierwszym odcinku zbudowaliśmy skaner, przeskanowaliśmy dziesięć sklepów i obiecaliśmy dwie rzeczy: protokół powtarzalności na żywych danych i rozróżnienie „karty ubogiej" od „karty niewidocznej dla botów". Oba wątki dostarczyliśmy — ale nie tak, jak planowaliśmy. Plan zakładał sterylne testy. Zamiast tego produkcja sama znalazła nam błędy, a jeden z największych sklepów w Polsce okazał się mieć najciekawszy plik robots.txt, jaki widzieliśmy.
Wyniki żyją
Po sześciu dniach przeskanowaliśmy te same adresy jeszcze raz. Nikt w tych sklepach nie „optymalizował pod agenta" ( a może wręcz przeciwnie ) - a wyniki i tak drgnęły:
| Sklep / produkt | 23.07 | 29.07 | Δ |
|---|---|---|---|
| lantre.pl — MacBook Air M5 | 46 | 42 | −4 |
| tpn.gov.pl — album | 27 | 32 | +5 |
| noeli.pl — płaszczyk do chrztu | 20 | 30 | +10 |
| sferis.pl — router ZTE | 21 | 21 | 0 |
| sklep.tvp.pl — „Ranczo" box | 11 | 0→5 | patrz niżej |
| zalando.pl — spodnie M&S | 9 | 7 | −2 |
| mediamarkt.pl — telewizor Sony | 0 | zaślepka | patrz niżej |
Strony produktowe to ruchome cele: zmienia się dostępność wariantów, bloki treści, zachowanie wobec botów. Widoczność agentowa nie jest stanem — jest procesem. To zdanie wróci pod koniec tego tekstu.
Ale zanim zinterpretujemy delty, musieliśmy odpowiedzieć na niewygodne pytanie: ile z tych zmian to strony, a ile to szum naszego własnego silnika?
Powtarzalność: produkcja zrobiła protokół za nas
Skan sklepu TVP zwrócił wynik z czterema flagami evidence_mismatch — cztery przypadki, w których model podał cytat ze strony, a nasza walidacja go nie znalazła i zdegradowała odpowiedź do „brak danych". Cztery na jeden skan to nie halucynacje modelu. To sygnał, że bramka walidacyjna odrzuca prawdziwe cytaty.
Winowajca okazał się typograficzny. Nasza walidacja wymagała wierności bajtowej, a polski internet pisze twardymi spacjami ( przed jednostkami — którego, niespodzianka, klasa \s w wyrażeniach regularnych nie łapie), półpauzami zamiast dywizów i cudzysłowami drukarskimi. Model cytował wiernie semantycznie — „wydany na 40 nośnikach" — a my odrzucaliśmy cytat, bo w źródle między „na" a „40" siedziała twarda spacja. Status leciał do „brak danych", baza punktowa spadała, a wynik dryfował między dniami w rytm loterii dopasowań.
Naprawa: normalizacja typograficzna przed porównaniem (wszystkie odmiany spacji, pauz i cudzysłowów sprowadzane do form prostych) plus drugi poziom dopasowania, ślepy na interpunkcję, który nie zmienia punktacji, ale zostawia flagę w logach — żebyśmy widzieli, jak często ratuje sytuację. Zmyślone cytaty nadal odpadają: test jednostkowy z sfabrykowanym dowodem dalej kończy się odrzuceniem.
Wniosek szerszy niż nasz przypadek: jeśli walidujesz odpowiedzi modelu przez dopasowanie do źródła — a powinieneś — to typografia jest cichym zabójcą tej walidacji. Sterylny protokół powtarzalności (10 kart × 3 skany, cache czyszczony między przebiegami) odpalamy teraz na naprawionym silniku; wyniki, także niewygodne, opiszemy w kolejnym odcinku.
Zmieniliśmy też samą punktację — i mówimy o tym wprost
Ten sam skan TVP obnażył drugą wadę, tym razem projektową. Wynik: 0/100. Paski filarów: 3/25 tu, 2/15 tam. Jak 5 punktów w filarach daje zero łącznie? Bo modyfikatory ujemne (do −10 za język reklamowy, dane w obrazach, sprzeczności) były odejmowane kwotowo — proporcjonalne dla sklepu z bazą 46, eksterminacyjne dla sklepu z bazą 6.
Punktacja v2: kary nie mogą sprowadzić strony z czytelnymi danymi do zera (zero zostaje zarezerwowane dla kart bez żadnych czytelnych danych), a wynik pokazuje jawnie swoją arytmetykę: „baza 11 − kary 6". Użytkownik przestaje widzieć magię — widzi rachunek, który może zakwestionować albo naprawić. Progi komunikacyjne (0–40 „agent zgaduje" itd.) bez zmian.
Uboga, rozsypana, niewidoczna — i czwarta, której się nie spodziewaliśmy
Obiecane rozróżnienie urosło nam do czterech diagnoz.
Karta uboga — czytelna dla botów, ale bez danych. Terapia redakcyjna: tabela cech, przeznaczenie, zwroty. To mediana polskiego e-commerce.
Karta rozsypana — dane istnieją, ale nie tam, gdzie agent ich szuka. Wzorcowy przykład z Zalando: nazwy dostępnych kolorów spodni (black, navy, oatmeal…) żyją wyłącznie w tekstach alternatywnych obrazków, więc filar wariantów dostaje 0/15 mimo że informacja „technicznie jest". Bonus z tej samej karty: skaner zgłosił sprzeczność — atrybut „Długość rękawa: długi rękaw". Na spodniach. Agent porównujący po atrybutach albo ten błąd powieli, albo obniży zaufanie do całej karty. Gigant skali nie chroni przed śmieciowymi danymi.
Karta niewidoczna — crawler bez przeglądarki dostaje szkielet. Skaner rozpoznaje teraz przyczynę: zapora anty-bot (challenge, kody 403/429), aplikacja renderowana JavaScriptem (markery SPA, podpowiedź w noscript) albo zwyczajnie pusta strona — i zamiast błędu zwraca diagnozę z właściwą terapią (dopuszczenie botów w WAF vs SSR/prerender vs JSON-LD w źródłowym HTML).
Widoczność selektywna — tej nie planowaliśmy. MediaMarkt, który w pierwszym badaniu oddał botowi szkielet wart 0/100, sześć dni później oddaje już tylko zaślepkę zapory. Wygląda jak pełna blokada — dopóki nie przeczyta się ich robots.txt. A tam: skrupulatnie kuratorowana sekcja „allowing ai crawlers", która jawnie wpuszcza agentów działających w imieniu klienta — Operatora OpenAI, ChatGPT-User, Claude-User, Perplexity-User — oraz crawlery wyszukiwania AI, jednocześnie tnąc kombajny datasetowe (CCBot, Diffbot, img2dataset). To jedna z najdojrzalszych polityk botów AI, jakie widzieliśmy w polskim e-commerce: chcemy być czytani przez asystentów zakupowych, nie chcemy karmić zbieraczy danych. Egzekwuje ją zapora weryfikująca boty po infrastrukturze, nie po deklaracji — dlatego zweryfikowany agent prawdopodobnie widzi tę stronę normalnie, a niezweryfikowany skaner nie. Skaner raportuje to teraz jako osobną diagnozę: „widoczność selektywna — tylko zweryfikowane boty AI", i przy okazji pokazuje przy każdym skanie politykę botów AI z robots.txt: kto z osiemnastu znanych botów jest wpuszczony, kto wycięty.
Skaner ma już pamięć
Skoro wyniki żyją, porównywanie ich ręcznie z eksportów przestało mieć sens. Skaner zapisuje teraz każdy policzony pomiar: wynik, bazę, kary, filary, flagi, diagnozę. Widget pokazuje „poprzedni skan: 21/100 → +9" i delty per filar; panel liczy zmiany sam. Brzmi jak drobiazg — ale to jest dokładnie fundament monitoringu widoczności agentowej: dziś porównujesz dwa pomiary, jutro dostajesz alert, że twoja karta straciła 15 punktów, bo ktoś podmienił szablon. Pamięć pomiarów działa na razie w naszym narzędziu wewnętrznym — w bezpłatnym skanerze punktem odniesienia pozostaje wynik przysłany na mail, więc warto go zachować przed wprowadzeniem poprawek i porównać po nich.
W następnym odcinku
Sterylny protokół powtarzalności na naprawionym silniku — z liczbami, także jeśli będą niewygodne. I pierwsze podejście do mapy, której nikt w Polsce nie ma: kto z polskiego e-commerce w ogóle wpuszcza boty AI - na podstawie polityk robots.txt zbieranych przez skaner przy każdym pomiarze.
Skaner jest darmowy: sprawdź swoją kartę produktu — od tego tygodnia z diagnozą widoczności, polityką botów AI.

