Agent AI nie wybierze sklepu dlatego, że karta produktu ma efektowną animację. Wybierze ofertę, której…

Jak usunąć duplikację opisów produktów w e-commerce? (Strategie i rozwiązania techniczne)
Duplikacji opisów produktów nie usuwa się „lepszym tekstem na każdej podstronie”. To zwykle ostatni etap, nie pierwszy. Najpierw trzeba zdecydować, które URL-e mają zostać w indeksie, które mają tylko obsługiwać użytkownika, a które w ogóle nie powinny istnieć jako samodzielne strony. Dopiero potem opłaca się inwestować w opisy, szablony i AI.
Najczęstszy błąd w sklepach? Zespół contentowy dostaje listę 10 000 produktów do „unikalizacji”, a w tym samym czasie system dalej generuje osobne adresy dla rozmiarów, kolorów, filtrów, sortowania i parametrów kampanii. Efekt: treści przybywa, ale problem zostaje. Google nadal widzi nadmiar podobnych stron, a właściciel sklepu płaci za pracę, która nie trafia tam, gdzie powinna.
Poniżej jest podejście naprawcze: najpierw decyzje indeksacyjne, potem architektura wariantów, na końcu content. W tej kolejności, nie odwrotnie.
Canonical, noindex, 301 i 404: którą dźwignię wybrać?
Najpierw trzeba rozdzielić cztery sytuacje, bo każda wymaga innego mechanizmu. rel=”canonical”, noindex, przekierowanie 301/308 i 404/410 nie są zamiennikami. Użyte na ślepo potrafią pogorszyć widoczność, zwłaszcza w sklepie z dużą liczbą wariantów i filtrów.
Canonical stosuj wtedy, gdy strona jest duplikatem albo bardzo bliską wersją innej strony, ale nadal może być potrzebna użytkownikowi lub systemowi. Google traktuje przekierowania jako bardzo silny sygnał kanonikalizacji, rel="canonical" jako silny sygnał, a obecność w sitemapie jako sygnał słabszy; te sygnały mogą się wzmacniać, ale nie dają stuprocentowej gwarancji wyboru wskazanego adresu.
Praktyczny przykład: produkt ma adres bazowy i adresy z parametrami kampanii, sortowania albo nieistotnego technicznie wyboru:
<link rel="canonical" href="https://www.sklep.pl/p/buty-runner-x" />
Wdrożeniowo trzymaj się tych zasad:
- canonical zawsze w
<head>, najlepiej generowany po stronie serwera; - używaj pełnego, absolutnego adresu URL, nie ścieżki względnej;
- canonical nie może wskazywać strony z błędem, przekierowaniem łańcuchowym,
noindexalbo inną intencją indeksacyjną; - linkowanie wewnętrzne, sitemap i canonical powinny wskazywać ten sam preferowany adres;
- nie zmieniaj canonicala JavaScriptem, jeśli w HTML jest już inna wartość.
Google wprost zaleca, aby canonical był możliwie jednoznaczny: w przypadku renderowania po stronie klienta najlepiej umieścić go w źródle HTML i nie nadpisywać JavaScriptem; przy canonicalach należy też unikać konfliktu między sitemapą, linkiem canonical i innymi sygnałami.
Noindex stosuj wtedy, gdy strona ma istnieć dla użytkownika, ale nie ma pracować w Google. To dobry wybór dla stron koszyka, konta, wyników wyszukiwania wewnętrznego, pustych lub niskowartościowych kombinacji filtrów, a czasem dla stron promocji, które po zakończeniu akcji nie powinny już pojawiać się w wynikach.
Kod:
<meta name="robots" content="noindex">
Albo dla zasobów innych niż HTML:
X-Robots-Tag: noindex
Tu jest pułapka: noindex musi zostać odczytany przez robota. Jeżeli jednocześnie zablokujesz adres w robots.txt, Google może nie zobaczyć dyrektywy noindex, a adres nadal może pojawiać się w wynikach, zwłaszcza gdy prowadzą do niego linki. Google podaje też, że po dodaniu noindex ponowne odwiedzenie strony przez robota może zająć od kilku dni do nawet miesięcy, zależnie od znaczenia adresu w sieci.
Dlatego nie rób tak:
Disallow: /filtr/
plus:
<meta name="robots" content="noindex">
Jeżeli chcesz, żeby noindex zadziałał, robot musi wejść na stronę i zobaczyć znacznik. Blokada w robots.txt ma sens przy ograniczaniu crawl budgetu dla obszarów, których nie chcesz crawlowanych, ale nie jako sposób usuwania adresów z indeksu.
301 albo 308 stosuj wtedy, gdy stary URL nie ma już samodzielnie istnieć. To nie jest subtelna sugestia, tylko decyzja architektoniczna. Użyj przekierowania, gdy:
- produkt ma nowy trwały adres;
- usuwasz duplikat URL-a po migracji;
- wersja z parametrem, końcówką, wielkością liter albo starym slugiem ma zostać zastąpiona jedną wersją;
- łączysz kilka kart produktów w jedną, bo w praktyce sprzedają ten sam produkt.
Nie przekierowuj wszystkiego hurtowo na kategorię. Jeżeli produkt „biała koszula slim M” znika, a przekierujesz go na ogólną kategorię „koszule”, użytkownik często trafia w złe miejsce. Lepsze jest przekierowanie na realny zamiennik: ten sam model, nowszą wersję, najbliższy SKU. Jeżeli zamiennika nie ma, rozważ 404/410 albo pozostawienie strony informacyjnej bez możliwości zakupu, jeśli ma ruch, linki i sens dla użytkownika.
404/410 stosuj wtedy, gdy strona nie ma zamiennika i nie powinna dalej istnieć. W e-commerce dotyczy to głównie trwale wycofanych produktów, pustych kategorii tworzonych automatycznie i starych landingów, których nie da się uczciwie przekierować. Google w dokumentacji e-commerce zaleca unikanie indeksowania stron bez użytecznej treści; dla pustych kategorii wskazuje noindex, a gdy kategoria została automatycznie usunięta z nawigacji i wyszukiwarki sklepowej, można rozważyć status 404.
Moja praktyczna kolejność decyzji wygląda tak:
- Czy URL ma odpowiednik 1:1?
Tak → przekierowanie 301/308. - Czy URL jest kopią albo prawie kopią, ale musi być dostępny?
Tak →rel="canonical". - Czy URL jest potrzebny użytkownikowi, ale nie powinien rankować?
Tak →noindex, bez blokowania wrobots.txt. - Czy URL nie ma sensu, zamiennika ani wartości?
Tak → 404/410. - Czy URL jest wariantem produktu z realną różnicą handlową?
Nie decyduj od razu. Przejdź do architektury wariantów.
Najgorsza decyzja to użycie noindex jako zamiennika canonicala. Google nie rekomenduje noindex do wymuszania wyboru strony kanonicznej w obrębie jednej witryny, bo noindex po prostu blokuje stronę przed pojawianiem się w wynikach; preferowanym rozwiązaniem dla duplikatów jest rel="canonical".
Warianty produktów w kodzie strony: jeden produkt, wiele adresów, zero chaosu
Warianty produktów trzeba projektować od strony danych, nie tylko layoutu. Jeżeli sklep sprzedaje buty w 12 rozmiarach i 5 kolorach, system może stworzyć 60 kombinacji. Pytanie brzmi: czy to ma być 60 stron do indeksowania, jedna strona z selektorem, czy coś pomiędzy?
Dobre wdrożenie zaczyna się od wyboru jednego z dwóch modeli.
Model pierwszy: jedna karta produktu, warianty wybierane na stronie.
To najlepszy wybór, gdy warianty różnią się głównie rozmiarem, pojemnością, długością kabla, opakowaniem albo innym parametrem, który nie ma własnej intencji wyszukiwania. Użytkownik wybiera wariant, ale Google ma widzieć jedną główną kartę produktu.
Wtedy:
- URL bazowy jest adresem kanonicznym;
- wariant może być preselectowany parametrem, ale canonical wskazuje bazę;
- cena, dostępność, zdjęcie i SKU zmieniają się po wyborze wariantu;
- najważniejsze dane wariantu nie mogą istnieć wyłącznie w niedostępnym JS;
- linki wewnętrzne prowadzą przede wszystkim do adresu bazowego.
Przykład:
<link rel="canonical" href="https://www.sklep.pl/p/kurtka-zimowa-nord" />
Adres z wybranym wariantem może wyglądać tak:
https://www.sklep.pl/p/kurtka-zimowa-nord?color=green&size=m
ale nadal powinien prowadzić użytkownika do właściwie ustawionej karty: zielony kolor, rozmiar M, właściwe zdjęcie, właściwa cena, właściwa dostępność i możliwość dodania do koszyka.
Google opisuje taki model jako podejście single-page: warianty są wybierane na jednej stronie, często przez parametry, a dla całej grupy produktów istnieje jeden kanoniczny URL. Jednocześnie wariant preselectowany powinien mieć bezpośredni, odrębny adres, pod którym widać właściwy obraz, cenę, dostępność i możliwość dodania produktu do koszyka.
Model drugi: osobne strony wariantów.
To ma sens, gdy warianty realnie odpowiadają na inne zapytania, mają inne zdjęcia, różną dostępność, różną cenę, osobne dane produktowe albo inną wartość dla użytkownika. Przykład: „iPhone 15 128 GB czarny” i „iPhone 15 256 GB różowy” mogą mieć inną cenę, dostępność i intencję zakupową. Podobnie meble w różnych materiałach, farby w konkretnych kolorach albo części techniczne z innymi parametrami.
W tym modelu nie wystarczy wygenerować 20 adresów z tym samym opisem. Każda strona wariantu musi być pełna i samodzielna:
- własny title z nazwą wariantu;
- własny H1, jeśli wariant ma osobną intencję;
- zdjęcie odpowiadające wariantowi;
- cena i dostępność konkretnego wariantu;
- unikalny SKU, GTIN albo inny identyfikator;
- dane strukturalne
Product; - powiązanie z grupą wariantów przez
ProductGroup,variesBy,hasVariant,productGroupIDalboisVariantOf.
Google zaleca dla wariantów produktów użycie ProductGroup oraz właściwości takich jak variesBy, hasVariant i productGroupID, aby pokazać, że kilka produktów jest wariantami jednego produktu nadrzędnego. W technicznych wytycznych Google wskazuje też, że każdy wariant powinien mieć unikalny identyfikator, np. sku lub gtin, a każda grupa produktów własny identyfikator.
Minimalny kierunek dla danych strukturalnych może wyglądać tak:
<script type="application/ld+json">
{
"@context": "https://schema.org/",
"@type": "ProductGroup",
"name": "Kurtka zimowa Nord",
"productGroupID": "NORD-2026",
"variesBy": [
"https://schema.org/size",
"https://schema.org/color"
],
"hasVariant": [
{
"@type": "Product",
"sku": "NORD-GREEN-M",
"name": "Kurtka zimowa Nord zielona M",
"color": "zielony",
"size": "M",
"image": "https://www.sklep.pl/img/nord-green-m.jpg",
"offers": {
"@type": "Offer",
"url": "https://www.sklep.pl/p/kurtka-zimowa-nord-zielona-m",
"priceCurrency": "PLN",
"price": "399.00",
"availability": "https://schema.org/InStock"
}
}
]
}
</script>
Tego kodu nie należy kopiować bez dostosowania. W realnym sklepie dane powinny wychodzić z PIM, ERP, feedu produktowego albo jednego stabilnego źródła prawdy. Jeżeli cena w HTML, schema i Merchant Center różni się między sobą, problemem przestaje być duplikacja. Zaczyna się problem z jakością danych.
Decyzja graniczna: jeżeli nie jesteś w stanie zapewnić dla wariantu osobnego zdjęcia, ceny, dostępności, SKU i treści zgodnej z widoczną zawartością strony, nie buduj indeksowalnej strony wariantu. Zrób jedną kartę produktu z selektorem i canonicalem do adresu bazowego. To mniej efektowne, ale bezpieczniejsze.
Ważny detal: Google rekomenduje, aby każdy wariant mógł być identyfikowany osobnym URL-em, np. ścieżką /t-shirt/green albo parametrem /t-shirt?color=green; przy parametrach zalecany jest zapis ?key=value, a nie skróty typu ?green. Google odradza też linkowanie wewnętrzne do tymczasowych parametrów, takich jak sesje, śledzenie kampanii czy wartości zależne od czasu.
W praktyce po stronie kodu warto wdrożyć cztery reguły:
- Parametry trwałe: kolor, rozmiar, pojemność, materiał — mogą identyfikować wariant.
- Parametry nietrwałe:
utm,session,sort,view,ref— nie powinny tworzyć indeksowalnych wersji produktu. - Parametry handlowe: dostępność w sklepie, lokalizacja, promocja czasowa — ostrożnie; często lepiej obsłużyć je dynamicznie na jednej stronie.
- Parametry treściowe: wariant z innym zdjęciem, opisem, ceną i SKU — może dostać osobny URL, ale tylko przy pełnym wdrożeniu.
Osobny problem to JavaScript. Jeżeli karta produktu renderuje się dopiero po stronie klienta, Google może zobaczyć canonical, dane produktu albo cenę później, inaczej albo niestabilnie. Google rekomenduje umieszczanie danych Product w początkowym HTML, szczególnie przy informacjach szybkozmiennych, takich jak cena i dostępność; dynamicznie generowany markup może powodować mniej częste i mniej niezawodne crawlowanie zakupowe.
Mocna, ale praktyczna zasada: jeżeli coś decyduje o indeksowaniu, kanonikalizacji albo cenie produktu, nie chowaj tego wyłącznie w interakcji po stronie klienta. Selector wariantu może być JS-owy. Ale canonical, podstawowe dane produktu, status HTTP i dane strukturalne powinny być przewidywalne już na poziomie odpowiedzi serwera lub stabilnego HTML.
Content 80/20: co przepisać ręcznie, co zautomatyzować, gdzie użyć AI
Nie da się sensownie przepisać całego katalogu ręcznie, jeśli sklep ma kilka, kilkanaście albo kilkadziesiąt tysięcy SKU. Da się natomiast przepisać te opisy, które mają największy wpływ na wynik: produkty z marżą, ruchem, dostępnością, sezonem, linkami, ekspozycją w kategoriach i potencjałem zapytań.
Tu działa zasada Pareto, ale trzeba ją zastosować brutalnie. Nie chodzi o eleganckie „poprawmy jakość treści”. Chodzi o kolejkę prac.
Podziel produkty na cztery koszyki:
1. Produkty strategiczne — ręczna praca redakcyjna
To zwykle 5–20% katalogu. Tu powinien wejść człowiek: SEO, content, category manager albo osoba znająca produkt. Opis ma odpowiadać na pytania zakupowe, a nie tylko parafrazować producenta.
Dla takiego produktu opis powinien zawierać:
- dla kogo jest produkt;
- czym różni się od tańszego/droższego modelu;
- kiedy nie warto go kupować;
- kluczowe parametry i ich konsekwencje;
- kompatybilność, ograniczenia, materiały, wymiary;
- informacje, których nie da się łatwo wyciągnąć z feedu producenta;
- krótkie porównanie wariantów, jeśli wybór nie jest oczywisty.
Przykład słabego fragmentu:
Wysokiej jakości plecak miejski wykonany z trwałych materiałów, idealny do codziennego użytkowania.
Przykład fragmentu użytkowego:
Plecak ma pojemność 22 l, więc mieści laptop 15,6”, ładowarkę, butelkę 0,7 l i cienką bluzę. Nie jest dobrym wyborem na siłownię po pracy — komora główna nie ma separacji na buty. Sprawdzi się za to przy dojazdach komunikacją, bo usztywnione plecy nie zapadają się po włożeniu laptopa.
To jest treść, której nie zrobi sam szablon „materiał + kolor + zastosowanie”.
2. Produkty powtarzalne — szablony dynamiczne
Tu największy zwrot daje dobrze zaprojektowany generator opisów. Nie chodzi o mieszarkę synonimów. Chodzi o tekst składany z realnych danych: parametrów, zastosowań, ograniczeń i różnic między wariantami.
Szablon powinien mieć warunki logiczne:
Jeżeli produkt ma parametr [wodoodporność],
dodaj blok o klasie ochrony i realnym zastosowaniu.
Jeżeli produkt ma [kompatybilność],
dodaj blok „Pasuje do...” i „Nie pasuje do...”.
Jeżeli produkt ma [materiał],
dodaj konsekwencję materiału: waga, odporność, pielęgnacja.
Jeżeli produkt ma [wariant rozmiaru],
dodaj tabelę wyboru rozmiaru albo krótką regułę wyboru.
Dobry szablon dynamiczny nie udaje literatury. Ma dowozić konkrety. Na przykład dla sklepu z częściami technicznymi opis może być krótszy, ale musi zawierać gwint, średnicę, normę, kompatybilność i ostrzeżenie przed błędnym doborem. Dla kosmetyków ważniejsze będą składniki aktywne, typ skóry, przeciwwskazania i sposób stosowania. Dla mebli: wymiary, materiał, montaż, pielęgnacja, paczki, dopuszczalne obciążenie.
3. Produkty niskiej wartości SEO — nie przepisywać na siłę
To bolesne, bo „unikalny opis dla każdego produktu” brzmi dobrze w briefie. W praktyce część SKU nie zasługuje na indywidualny opis: chwilowe produkty, warianty bez popytu, końcówki magazynowe, produkty ukryte głęboko w strukturze, kombinacje filtrów bez intencji wyszukiwania.
Dla nich lepsze będą:
- poprawna architektura canonical/noindex;
- podstawowy opis techniczny;
- dobre dane strukturalne;
- parametry w tabeli;
- sensowne linkowanie do kategorii lub produktu nadrzędnego.
Nie każdy produkt musi być landing page’em. Niektóre mają po prostu dobrze domknąć koszyk.
4. Produkty generowane masowo — AI tylko z kontrolą danych
AI może pomóc przy opisach wariantów, streszczaniu parametrów, generowaniu bloków „dla kogo”, tworzeniu porównań i wykrywaniu braków w danych. Nie powinna natomiast wymyślać cech produktu. W e-commerce to szybka droga do reklamacji, zwrotów i problemów prawnych.
Google nie zakazuje samego użycia generatywnej AI, ale ostrzega przed masowym generowaniem stron bez wartości dla użytkownika; zaleca skupienie na dokładności, jakości i trafności, także w metadanych, danych strukturalnych i altach. W kontekście e-commerce Google wskazuje też, że dane produktowe generowane przez AI, takie jak tytuły i opisy w Merchant Center, muszą być odpowiednio oznaczane jako wygenerowane przez AI.
Bezpieczny proces dla AI wygląda tak:
- Źródło danych
AI dostaje tylko zatwierdzone dane: parametry, feed producenta, PIM, instrukcję, regulamin, tabelę rozmiarów, opinie własnych klientów, jeżeli można ich legalnie użyć. - Zakaz dopisywania cech
Prompt musi zabraniać dopowiadania parametrów, certyfikatów, kompatybilności, gwarancji, kraju produkcji i efektów działania. - Struktura opisu
Model generuje opis w blokach: zastosowanie, najważniejsze cechy, ograniczenia, warianty, dobór, pielęgnacja. - Walidacja automatyczna
System sprawdza, czy w treści nie pojawiły się liczby, materiały, certyfikaty lub obietnice, których nie ma w danych źródłowych. - Kontrola ręczna dla TOP produktów
Najważniejsze SKU przechodzą przez człowieka. Produkty long tail mogą mieć kontrolę próbkową, ale nie zerową.
Przykładowy prompt operacyjny:
Napisz opis produktu na podstawie wyłącznie danych poniżej.
Nie dodawaj parametrów, których nie ma w danych.
Jeśli brakuje informacji o kompatybilności, napisz neutralnie: „Sprawdź zgodność z modelem przed zakupem”.
Nie używaj pustych określeń: wysokiej jakości, idealny, wyjątkowy, nowoczesny.
Dodaj sekcję „Kiedy wybrać ten wariant” i „Kiedy wybrać inny”.
Dane produktu:
[Nazwa]
[SKU]
[Parametry]
[Materiał]
[Wymiary]
[Kompatybilność]
[Ograniczenia]
Największy zysk zwykle nie leży w tym, że AI napisze 10 000 opisów. Zysk leży w tym, że AI może uzupełnić unikalne cechy wynikające z danych, których człowiek nie zdążyłby ręcznie opracować: różnice między wariantami, ostrzeżenia zakupowe, dopasowanie do zastosowań, krótkie porównania, sekcje „nie kupuj, jeśli…”.
Szablony dynamiczne też powinny mieć ograniczenia. Nie generuj pięciu akapitów tam, gdzie produkt ma trzy parametry. Nie twórz opisów, które różnią się tylko kolejnością zdań. Nie wciskaj fraz kluczowych do każdego wariantu, jeśli wariant nie ma własnej intencji. Lepiej mieć krótszy opis z konkretnym parametrem niż długi tekst, który da się wkleić pod dowolny produkt.
Priorytet prac contentowych ustawiłbym tak:
- Najpierw produkty z ruchem, marżą i dostępnością.
- Potem kategorie i produkty linkowane z głównej nawigacji.
- Następnie warianty z realną intencją wyszukiwania.
- Na końcu long tail, ale przez szablony i AI, nie ręcznie.
- Nie ruszać ręcznie stron, które i tak będą canonicalizowane, noindexowane albo usuwane.
To ostatnie jest ważne. Jeżeli wariant ma canonical do produktu bazowego, nie inwestuj w długi unikalny opis dla tego wariantu. Google może i tak skonsolidować sygnały na stronie kanonicznej. Jeżeli strona ma noindex, opis może pomagać użytkownikowi, ale nie powinien być priorytetem SEO. Jeżeli URL ma zniknąć przez 301 albo 404, pisanie opisu to przepalanie budżetu.
Na końcu zostaje najprostsza decyzja wdrożeniowa: najpierw napraw indeksację i architekturę wariantów, potem pisz treści. Odwrotna kolejność wygląda pracowicie, ale często tylko przykrywa bałagan.
FAQ: najczęstsze pytania o usuwanie duplikacji opisów produktów
Czy każdy zduplikowany opis produktu trzeba przepisać ręcznie?
Nie. Ręcznie warto opracować produkty strategiczne: z ruchem, marżą, dostępnością, sezonowością albo mocnym miejscem w strukturze sklepu. Resztę lepiej obsłużyć szablonami dynamicznymi, danymi produktowymi, canonicalami albo noindexem.
Kiedy użyć canonical zamiast noindex?
Gdy strona jest duplikatem lub bardzo podobną wersją innej strony, ale chcesz skonsolidować sygnały na adresie kanonicznym. noindex wybierz wtedy, gdy strona nie ma pojawiać się w wynikach wyszukiwania.
Czy można dać jednocześnie canonical i noindex?
Technicznie można, ale zwykle to zły sygnał decyzyjny. Canonical mówi: „skonsoliduj z innym adresem”. Noindex mówi: „nie pokazuj tej strony w wynikach”. W większości przypadków wybierz jedno rozwiązanie zgodne z celem URL-a.
Czy warianty kolorystyczne powinny mieć osobne URL-e?
Tylko wtedy, gdy mają realną wartość: inne zdjęcie, cenę, dostępność, SKU, dane strukturalne i potencjał wyszukiwania. Jeśli różnią się wyłącznie wyborem w selectorze, zwykle lepsza będzie jedna karta produktu z wariantami.
Czy opisy wygenerowane przez AI są bezpieczne dla SEO?
Są bezpieczniejsze wtedy, gdy bazują na prawdziwych danych produktu, przechodzą walidację i dodają wartość użytkownikowi. Ryzykowne jest masowe generowanie tekstów bez kontroli, zwłaszcza gdy AI dopisuje cechy, których produkt nie ma.
Od czego zacząć naprawę w działającym sklepie?
Od decyzji indeksacyjnej dla typów URL-i: produkt bazowy, wariant, parametr, filtr, produkt wycofany, pusta kategoria. Dopiero potem popraw canonicale, noindexy, przekierowania i strukturę wariantów. Content zostaw na etap, w którym wiesz, które strony mają faktycznie pracować w Google.
Comments (0)