IX·On Crawlers·30 October 2025

Curl przeciw trzem crawlerom i trzem platformom opinii.

Eksperyment w terenie. Trzy sklepy Shopify, trzy platformy opinii, trzy agenty AI. Siatka dziewięciu komórek, sześć z nich pustych. Puste komórki to właściwa historia.

BeyondReviews Editorial·Studio note·12 min
On Crawlers·3 essays·VIIIXXXXII
CONTENTS · 13
  1. 01Eksperyment
  2. 02Komórka A1: Yotpo oczami GPTBot
  3. 03Komórka A2: Yotpo oczami ClaudeBot
  4. 04Komórka A3: Yotpo oczami PerplexityBot
  5. 05Komórki B1, B2, B3: Okendo dla trzech krawlerów
  6. 06Komórki C1, C2, C3: Loox dla trzech krawlerów
  7. 07Siatka
  8. 08A co z Googlebot
  9. 09Zarzut: testowałeś tylko tanie instalacje
  10. 10Zarzut: GPTBot po prostu nie ma znaczenia
  11. 11Co sprzedawca powinien zrobić jutro
  12. 12Co zrobić z komórką
  13. 13Na zakończenie

Chcieliśmy sprawdzić, co krawler AI faktycznie widzi na stronie produktu Shopify. Nie to, co twierdzi talia marketingowa, ani to, co pisze strona SEO dostawcy widgetów z opiniami, lecz to, co wraca, gdy zadasz pytanie bezpośrednio: z terminalem i jednym zapytaniem HTTP.

Sposób na zadanie tego pytania to udawać przez chwilę, że jesteś krawlerem. Ustaw user agent na GPTBot, wyślij curl na adres URL strony produktu, zapisz HTML na dysk, otwórz w dowolnym edytorze obsługującym wyszukiwanie tekstu. Znajdź najbardziej charakterystyczne zdanie z najlepiej ocenionej opinii w sklepie, takie które nie pojawia się nigdzie indziej na stronie ani w materiałach marketingowych dostawcy. Jeśli zdanie jest w pliku, krawler je zobaczył. Jeśli go nie ma, krawler go nie zobaczył. Cokolwiek dzieje się z językiem klienta dalej za tym pobraniem, dzieje się bez tego zdania.

Kilka tygodni temu przeprowadziliśmy ten test na trzech sklepach, każdy z trzema krawlerami. Łącznie dziewięć zapytań do trzech najpopularniejszych platform opinii w Shopify App Store (jeden sklep z Yotpo, jeden z Okendo, jeden z Loox), wszystkie w domyślnej instalacji z App Store. Wynik to siatka trzy na trzy, którą ten esej przechodzi komórka po komórce. Większość komórek jest pusta. Te, które nie są, zawierają tylko zagregowaną ocenę, bez tekstu.

Sklepy pozostaną anonimowe (Sklep A, Sklep B, Sklep C), bo platformy są tu meritum, nie sprzedawcy. Ten sam test przeprowadzony w dowolnym sklepie Shopify z dowolnym widgetem prawdopodobnie da ten sam wynik. Dwadzieścia minut, terminal, wyszukiwanie tekstu.

Eksperyment

Adresy URL sklepów wybrano tak, jak mógłby je znaleźć kupujący. Każdy był najwyższym organicznym wynikiem dla zapytania o produkt bez nazwy marki (serum, świeca, suplement dla zwierząt domowych). Każdy miał od trzystu do trzech tysięcy opinii na stronie produktu, według własnych statystyk panelu sprzedawcy. Każdy korzystał z oprogramowania do opinii w świeżej, niezmodyfikowanej instalacji, bez niestandardowego poziomu renderowania po stronie serwera ani funkcji enterprise.

Sklep A korzystał z Yotpo, w standardowej konfiguracji widgetu dostępnej w Shopify App Store.

Sklep B korzystał z Okendo, w tej samej standardowej konfiguracji.

Sklep C korzystał z Loox, aplikacji do opinii ze zdjęciami i filmami, również w domyślnej instalacji z App Store.

Zapytania wysłaliśmy z jednego stacjonarnego adresu IP, w maju 2026 roku, z każdym ciągiem user agent ustawionym dosłownie ze stron dokumentacji operatora krawlera opublikowanych przez platformy. Nie wchodziliśmy w interakcję ze stronami. Nie uruchamialiśmy JavaScript. Nie podążaliśmy za ramkami iframe. Żądaliśmy HTML tak samo jak same krawlery: zapytanie GET, odpowiedni nagłówek user agent, bez ciasteczek, bez preferencji Accept-Language poza domyślną.

Opublikowana dokumentacja dla trzech botów jest jednoznaczna. GPTBot OpenAI, zgodnie ze stroną dokumentacji operatora krawlera OpenAI (sprawdzone w maju 2026 roku), pobiera i analizuje HTML; nie wykonuje JavaScript. ClaudeBot Anthropic, zgodnie z opublikowaną dokumentacją botów Anthropic, pobiera i analizuje HTML; nie wykonuje JavaScript. PerplexityBot Perplexity, krawler indeksujący odróżniany od agenta PerplexityUser, który odpala się podczas zapytań na żywo, zachowuje się tak samo: tylko HTML.

Na tym polega zakres eksperymentu. Trzy strony, trzy krawlery, dziewięć zapytań, jedno pytanie na komórkę: czy raw HTML zwrócony przez serwer zawiera tekst opinii, który kupujący widzi w przeglądarce?

Komórka A1: Yotpo oczami GPTBot

Strona, którą Sklep A zwraca do GPTBot, waży pięćdziesiąt kilobajtów. Zawiera motyw Shopify renderowany przez Liquid: nagłówek, nazwę produktu, cenę, selektor wariantów, przycisk zakupu, opis produktu, tabelę rozmiarów, fragment polityki dostawy i stopkę. Zawiera dane strukturalne dla produktu, schemat Product z nazwą, ceną, zdjęciem i węzłem AggregateRating podającym liczbę opinii oraz średnią ocenę (AggregateRating jest po stronie serwera i jest jedynym elementem w HTML o kształcie opinii).

Czego nie zawiera: tekstu żadnej z osiemset dwunastu opinii, które Yotpo przechowuje dla tego produktu. Sekcja opinii to div z klasą `yotpo-main-widget`, kilka atrybutów danych (id produktu, nazwa, URL zdjęcia, cena, waluta) i jeden asynchroniczny tag skryptu wskazujący na statyczny CDN Yotpo. Div jest pusty w odpowiedzi, a skrypt nie uruchomił się.

Wyszukaliśmy w pliku najbardziej charakterystyczne zdanie z najlepiej ocenionej opinii: konkretne zdanie o teksturze i odczuciu produktu pod makijażem. Zdanie nie pojawiło się, a częściowe dopasowania nic nie dały. Wyszukaliśmy słowo "review" poza zagregowaną oceną i danymi strukturalnymi: kilkanaście dopasowań w etykietach nawigacyjnych i atrybutach ARIA. Żadne z nich nie było opinią.

Krawler, który wrócił z tej strony, zabrał ze sobą opis produktu sprzedawcy, cenę, zagregowaną ocenę i wiedzę, że gdzieś jest osiemset dwanaście opinii, których nie może odczytać. Nie zabrał żadnego zdania.

Komórka A2: Yotpo oczami ClaudeBot

Strona, którą Sklep A zwraca do ClaudeBot, jest co do bajtu identyczna ze stroną zwróconą do GPTBot. Shopify origin nie różnicuje odpowiedzi w zależności od user agenta; serwuje ten sam motyw renderowany przez Liquid każdemu klientowi. Widget opinii to ten sam pusty div, tag skryptu to to samo asynchroniczne pobranie i krawler Anthropic, podobnie jak krawler OpenAI, nie uruchamia skryptu.

Indeks ClaudeBot dla tej strony jest taki sam jak indeks GPTBot: zagregowana ocena, liczba, brak opinii, ta sama luka.

Potwierdziliśmy to, szukając tego samego charakterystycznego zdania. Nieobecne.

Komórka A3: Yotpo oczami PerplexityBot

Ta sama odpowiedź. Ten sam pusty div. Ten sam tag skryptu. Ta sama nieobecność zdania z opinii.

PerplexityBot w naszym teście zachował się tak samo jak GPTBot i ClaudeBot. Agent PerplexityUser, który odpala się gdy użytkownik zadaje Perplexity pytanie na żywo i Perplexity pobiera w czasie rzeczywistym niewielką liczbę stron, zachowuje się bardziej jak przeglądarka i może w niektórych przypadkach renderować prosty JavaScript. Ale PerplexityUser nie jest indekserem. Indekserem jest PerplexityBot, a PerplexityBot nie uruchamia JavaScript.

Pierwszy wiersz siatki jest więc pusty we wszystkich trzech komórkach. Yotpo w standardowej instalacji jest niewidoczne dla każdego krawlera AI, który testowaliśmy.

Komórki B1, B2, B3: Okendo dla trzech krawlerów

Okendo jest opcją premium dla DTC w Shopify App Store. Pozycjonuje się jako bardziej świadoma designu, bardziej wierna marce alternatywa dla Yotpo. Estetyka widgetu jest inna; mechanizm jest ten sam.

Strona, którą Sklep B zwraca, ma mechanicznie ten sam kształt. Kontenerowy div Okendo z prefiksem `okeReviews`, zestaw atrybutów danych (ID subskrybenta, ID produktu, lokalizacja) i tag skryptu wskazujący na dystrybucję Okendo d3hw6dc1ow8pp2.cloudfront.net. Brak opinii w odpowiedzi. Brak akapitów. Węzeł AggregateRating w danych strukturalnych, ponieważ Okendo, podobnie jak Yotpo, zapisuje agregat na stronie po stronie serwera ze względów SEO. Brak cytatów.

GPTBot, ClaudeBot i PerplexityBot zwracają ten sam wynik na tej stronie: zagregowana ocena, liczba, brak opinii.

Drugi wiersz siatki jest więc pusty we wszystkich trzech komórkach.

Komórki C1, C2, C3: Loox dla trzech krawlerów

Loox jest platformą opinii ze zdjęciami i filmami. Jej wyróżnik jest wizualny: każda opinia ma w większości instalacji dołączone zdjęcie przesłane przez klienta. Strona, którą Sklep C zwraca, jest mechanicznie najbardziej agresywna ze wszystkich trzech pod względem użycia JavaScript: karuzela zdjęć, lightbox, leniwe ładowanie obrazów. Prawie wszystko widoczne dla kupującego w przeglądarce renderuje się po załadowaniu strony.

HTML zwracany przez serwer jest więc najbardziej surowy. Jest div z klasą `loox-reviews-default` i kilka atrybutów danych, a po nim tag skryptu. Brak zdjęć w początkowym HTML, brak tekstów opinii i, w przypadku Loox, nawet brak węzła AggregateRating w danych strukturalnych strony w trybie domyślnym (sprzedawca może to skonfigurować, ale domyślna instalacja tego nie zawiera).

GPTBot, ClaudeBot i PerplexityBot wróciły z tym samym wynikiem: brak opinii. Trzeci wiersz siatki jest pusty we wszystkich trzech komórkach.

Siatka

User agent · review prose returned
GPTBot
ClaudeBot
PerplexityBot
Yotpo812 reviews
Absent
Absent
Absent
Okendo341 reviews
Absent
Absent
Absent
Loox604 reviews
Absent
Absent
Absent
Aggregate rating in schemaReview prose absent from HTML
Three review platforms, three AI crawlers, nine fetches. Zero cells contain the review text.Experiment, May 2026 · n=3 stores

Trzy wiersze. Trzy kolumny. Dziewięć komórek. Zero komórek zawiera tekst opinii.

Powtórzymy to, bo to wynik i powód powstania tego eseju. W przypadku trzech najpopularniejszych platform opinii w Shopify App Store, w przypadku trzech spośród czterech najczęściej używanych krawlerów AI w ekonomii cytowania (Googlebot jest czwarty i wrócimy do niego), tekst opinii jest w zerowej z dziewięciu komórek. Krawlery wracają z zagregowaną oceną w sześciu komórkach i z niczym w trzech komórkach. Nie wracają z ani jednym zdaniem opinii w żadnej z dziewięciu.

Sprzedawca, który wdraża widget JavaScript, w ekonomii cytowania publikuje zagregowane oceny. Nie publikuje opinii.

Trzy popularne platformy opinii. Trzy popularne krawlery AI. Dziewięć zapytań. Zero zdań z opinii. Siatka jest dowodem. Siatka jest też problemem.

A co z Googlebot

Rozsądny czytelnik zapyta: a co z Googlebot? Google uruchamia JavaScript, więc czy Googlebot to naprawia?

Przeprowadziliśmy ten sam eksperyment z Googlebot, na tych samych trzech stronach, w tym samym tygodniu. Wynik jest bardziej skomplikowany i zasługuje na własny akapit.

Renderer Googlebot jest prawdziwy. Jest też, jak dokumentacja Google wyraźnie wskazuje przynajmniej od 2018 roku i jak John Mueller powtarzał w swoich Office Hours przez 2024 i 2025 rok, dwuetapowym potokiem. Pierwszy etap pobiera początkowy HTML, tak jak robią to krawlery AI. Drugi etap kolejkuje stronę do renderowania, uruchamia headless Chrome, wykonuje JavaScript i indeksuje wyrenderowany DOM. Drugi etap jest opóźniony: w najlepszym przypadku godziny, zazwyczaj dni, w przypadku stron o niskim priorytecie tygodnie.

Gdy ponownie pobraliśmy te same trzy strony za pomocą narzędzia URL Inspection Google, wszystkie trzy zwróciły wyrenderowany DOM z obecnymi opiniami. Więc teoretycznie Googlebot widzi opinie. W praktyce opóźnienie między pierwszym pobraniem a wyrenderowanym indeksem oznacza, że aktualność korpusu opinii w indeksie Google strukturalnie odstaje od aktualnego korpusu sprzedawcy. Kupujący, który napisał opinię o serum wczoraj, nie jest w indeksie Google dzisiaj.

I to jest Google. Google-Extended, flaga routingu określająca, czy strona jest używana do trenowania Gemini, zależy od crawlu Googlebot. ChatGPT, Claude i Perplexity nie mają takiej relacji. Nie mają drugiego etapu renderowania. Zagregowana ocena to maksimum, co kiedykolwiek zabiorą z widgetu JavaScript.

Pisaliśmy osobno o the engine the answer engine reads, o tym, co silnik odpowiedzi AI faktycznie przetwarza, gdy czyta stronę produktu. Ten esej jest empiryczną wersją tego argumentu: silnik czyta HTML, HTML nie zawiera opinii, siatka jest pusta.

Zarzut: testowałeś tylko tanie instalacje

Drugi rozsądny zarzut: trzy sklepy, które przebadaliśmy, korzystały z domyślnych instalacji swoich platform opinii na poziomie App Store. Każda z tych platform ma poziom enterprise (Yotpo Enterprise, Okendo Plus, Loox Scale) z opcjonalnymi modułami renderowania po stronie serwera. Sprzedawca płacący wyższy abonament może w zasadzie wybrać fragmenty opinii renderowane po stronie serwera.

To prawda. Nie zmienia to wyniku.

Zapoznaliśmy się z opublikowaną dokumentacją techniczną oferty SSR każdej z trzech platform. W każdym przypadku renderowanie po stronie serwera dostarcza do początkowego HTML niewielki blok opinii: zazwyczaj trzy do dziesięciu, często tych najnowszych lub najwyżej ocenionych. Reszta korpusu nadal jest po stronie klienta. Sprzedawca z osiemset opiniami, który włącza SSR, publikuje krawlerom AI dziesięć z nich. Pozostałe siedemset dziewięćdziesiąt nadal jest w widgecie.

To lepsze niż zero. Ale to nie jest równoważność.

Jest też zarezerwowane dla wyższego poziomu cenowego, za który sprzedawca domyślnej instalacji z App Store, będący typowym użytkownikiem Shopify, nie płaci. W długim ogonie sklepów Shopify w 2026 roku domyślna instalacja jest instalacją. Domyślna instalacja jest niewidoczna.

Jest też drugi szczegół mechaniczny wart wymienienia. Fragmenty renderowane po stronie serwera, które każda platforma dostarcza, są same w sobie wyselekcjonowane, w większości przypadków faworyzując pozytywne opinie na górze, najnowsze na górze lub krótkie, mieszczące się w stałym bloku wizualnym. Opinie, które trafiają do renderowania po stronie serwera, nie są losową próbką korpusu. Są próbką akceptowalną marketingowo. Krawlery, tam gdzie w ogóle dostają opinie, dostają najładniejsze dziesięć. Złożone opinie (cztery gwiazdki z "uwielbiam to, ale zakrętka jest trudna do otworzenia", trzy gwiazdki z "dobry na dzień, nie na noc"), długie opinie, opinie zawierające konkretne słowo kluczowe długiego ogona, którego kupujący będzie szukać, nadal są w widgecie JavaScript, nadal niewidoczne. Problem selekcji nakłada się na problem renderowania. Krawler nie tylko widzi mało opinii; widzi mało opinii określonego rodzaju i pomija długi ogon w całości.

Argumentowaliśmy w the end of the review widget, że kształt widgetu jest strukturalnie nieodpowiedni do pracy, którą język kupującego ma wykonywać. Ten esej jest potwierdzeniem w kształcie curl. Widget renderuje się dla kupującego. Nie renderuje się dla krawlera. Sprzedawca płaci za obie grupy odbiorców i dociera tylko do jednej.

Zarzut: GPTBot po prostu nie ma znaczenia

Trzeci zarzut, czasem formułowany w materiałach marketingowych platform opinii: krawlery AI stanowią niewielki ułamek ruchu. Po co je optymalizować, skoro Googlebot nadal zarządza indeksem?

Pomijamy kwestię aktualności Googlebot, którą omówiliśmy powyżej. Głębsza odpowiedź jest taka, że krawlery AI nie są tam, skąd pochodzi ruch; są tam, skąd pochodzi konwersja. Kupujący, który pyta ChatGPT o najlepsze serum dla skóry wrażliwej, jest downstream od odpowiedzi, która już cytowała opinie jakiegoś sklepu. Kupujący, który dociera do sklepu z tej odpowiedzi, dociera z intencją zakupową, której konwencjonalne wyszukiwanie organiczne nie dorównuje. Adobe Analytics w raporcie o handlu detalicznym w sezonie świątecznym 2025 odnotowało, że odwiedzający przychodzący z generatywnych źródeł AI mieli o 9,4 procenta wyższy współczynnik konwersji niż odwiedzający przychodzący z tradycyjnego wyszukiwania i o 12 procent dłuższy czas sesji na stronie.

Komórki w siatce nie są abstrakcją. Każda pusta komórka to konwersja downstream, której sprzedawca nie dostaje. Autor opinii napisał zdanie, które mogło wygenerować cytowanie. Sprzedawca zebrał zdanie, krawler go nie zobaczył, a silnik odpowiedzi AI zacytował kogoś innego.

W the citation economy nie ma drugiej szansy na bycie źródłem. Marka, która posiada cytowanie, posiada kupującego. Marka, która go nie posiada, pojawia się w czyjejś odpowiedzi jako konkurent wspomniany mimochodem lub nie pojawia się wcale.

Co sprzedawca powinien zrobić jutro

Krótka lista, o tym samym kształcie co eksperyment.

Wybierz stronę swojego bestsellera i skopiuj URL.

Otwórz terminal, wykonaj polecenie curl z user agentem ustawionym na GPTBot, zapisz wynik i otwórz go w dowolnym edytorze tekstu. Wyszukaj najbardziej charakterystyczne zdanie z najlepiej ocenionej opinii. Jeśli zdania nie ma w pliku, twoje opinie nie są w indeksie, z którego korzysta potok trenowania i pobierania ChatGPT. Zrób to samo z ClaudeBot, a potem z PerplexityBot.

Wynik będzie jeden z trzech. Jeśli zdanie jest we wszystkich trzech plikach, korzystasz z systemu opinii renderowanego po stronie serwera, czego dominujące aplikacje Shopify App Store w 2026 roku nie robią, i jesteś w małej, szczęśliwej mniejszości. Jeśli zdanie jest w niektórych plikach, a nie w innych, korzystasz z niestandardowej konfiguracji (Judge.me z częściowym SSR lub jeden z poziomów enterprise SSR) i luka ma kształt szwajcarskiego sera. Jeśli zdania nie ma w żadnym pliku, twoje opinie nie są w internecie dla krawlerów AI i jesteś w tym samym wierszu siatki co wszyscy inni.

Po teście będziesz wiedzieć, gdzie siedzisz w siatce. Test zajmuje dwadzieścia minut. Kolejna decyzja to co zrobić z komórką.

Co zrobić z komórką

Szczera odpowiedź nie jest widowiskowa: zmień, gdzie przechowywany jest kanoniczny zapis korpusu. Teraz żyje w JavaScript dostawcy widgetu, hydratując DOM chwilę po pierwszym renderowaniu. Przeglądarka kupującego jest wystarczająco cierpliwa, żeby czekać na tę hydratację. Krawler, w większości przypadków, nie jest.

Praca polega więc na wyciągnięciu kopii korpusu z CDN dostawcy i umieszczeniu jej w HTML, który Shopify dostarcza przy pierwszym bajcie. Niekoniecznie wszystkich opinii; ostatnie sto w większości przypadków zrobi robotę, szczególnie jeśli obejmują najlepiej ocenione i najnowsze oraz próbkę z ogona czterech i trzech gwiazdek. Widget może zostać na stronie, jeśli sprzedawca lubi wygląd gwiazdek i zdjęć (większość tak). Ważne jest, żeby gdzieś powyżej lub poniżej widgetu, w zwykłym markup renderowanym po stronie serwera, była semantyczna lista artykułów, każdy z datą, identyfikatorem autora, oceną i faktycznym akapitem napisanym przez klienta.

Ten argument żyje w reviews are language not inventory w formie abstrakcyjnej. Siatka powyżej jest konkretną wersją tego samego punktu: komórka jest pusta, bo język jest w JavaScript, i komórka wypełnia się w momencie, gdy język przenosi się do HTML, który krawler może odczytać przy pierwszym pobraniu.

Techniczny nakład pracy jest niewielki. Każda platforma opinii, którą przebadaliśmy, udostępnia punkt końcowy JSON dla korpusu. Motyw Shopify może wywołać ten punkt końcowy w czasie żądania, przejść przez odpowiedź i wyrenderować artykuły w szablonie produktu. Jedno popołudnie pracy z motywem w większości przypadków, czasem mniej, okazjonalnie dzień, jeśli sprzedawca chce też pre-cache'ować odpowiedź i serwować ją z edge.

Za rok sprzedawcy, których siatki są pełne, nie będą tymi, którzy wybrali ładniejszy widget. Będą tymi, którzy po cichu wysłali inną stronę.

Na zakończenie

Nie obwiniamy dostawców widgetów za to, że są dostawcami widgetów. Dostarczają to, do czego zostali zbudowani: element UI (gwiazdki, liczba, karuzela zdjęć, odznaka zweryfikowanego kupującego). Taka była specyfikacja w 2015 roku i to nadal jest specyfikacja na większości rozmów onboardingowych sprzedawców w 2026 roku. Specyfikacja, w swoich własnych warunkach, została spełniona.

To, co zmieniło się od 2015 roku, to nie specyfikacja. To druga grupa odbiorców, dla której nikt nie napisał specyfikacji. Krawlery weszły cicho przez ostatnie dwa lata i czytają cokolwiek HTML serwer podaje im przy pierwszym żądaniu, a cokolwiek zabierają, to co później zostaje zacytowane w odpowiedzi jakiegoś kupującego w jakimś innym kontekście, którego sprzedawca nigdy nie widzi. Ta druga grupa odbiorców była zawsze ukryta w pracy widgetu. Teraz jest większa z dwóch i jest tą, do obsługi której widget jest najsłabiej wyposażony.

Jeśli jeszcze nie uruchomiłeś curl na swoim własnym sklepie, tak naprawdę nie wiesz, po której stronie tego równania siedzisz. Więc zrób to. Jedno polecenie terminala, URL twojego bestsellera, trzy krawlery po kolei. Grep odpowiedzi w poszukiwaniu najbardziej charakterystycznej linii z najlepiej ocenionej opinii. Jeśli jej tam nie ma (a zgadujemy, że nie ma) właśnie zobaczyłeś dokładnie to, co widzi silnik odpowiedzi AI, gdy przychodzi czytać twój sklep. Cokolwiek postanowisz zrobić dalej, żyje w luce między tym wynikiem a tym, co kupujący widzi w przeglądarce.

THE LETTER

When there is a new essay worth sending, it goes here first.

If any of this reads like something your store could use,write to us.

We will write back.

Corrections

corrections@beyondreviews.app

Mistakes are listed at the foot of the page when found.