TL;DR Duplikaty w WordPressie to nie kara, tylko problem wyboru reprezentatywnego URL-a. Główni winowajcy: tagi, archiwa autora i dat, paginacja, wyniki
?s=, strony załączników i parametry URL. Kolejność działań: audyt, decyzja o typie archiwum, sygnały (canonical, noindex, 301), sitemap, kontrola. Zasada: kategorie zwykle zostają indeksowane, tagi i archiwa dat to decyzja kontekstowa. Nie canonicalizuj paginacji do strony 1 i nie używaj robots.txt do canonicalizacji. Po uporządkowaniu sprawdź raport indeksowania i widoczność w AI, np. w Semly.
Duplicate content w WordPressie - co naprawdę się dzieje
Zacznijmy od uspokajającej wiadomości: duplikaty same w sobie nie są karą. Google wprost pisze, że część duplikatów jest normalna i nie łamie zasad spamowych. Problem jest inny. Kiedy ten sam tekst jest dostępny pod wieloma adresami, Google musi wybrać jeden reprezentatywny URL. I nie zawsze wybierze ten, który ty byś wskazał.
To właśnie sedno tematu. Duplicate content w WordPressie to najczęściej problem wyboru URL-a, a nie powód do paniki. Konsekwencje są jednak realne:
sygnały się rozmywają, bo linki i zaangażowanie rozkładają się na kilka adresów,
crawl budget jest marnowany na strony, które nic nie wnoszą,
modele AI mają słabszy "source of truth", czyli nie wiedzą, którą wersję traktować jako główną.
Canonicalizacja to sposób wskazania wersji głównej. Warto zapamiętać jedno: rel=canonical to podpowiedź, nie rozkaz. Google może wybrać inny URL. Dlatego liczy się hierarchia sygnałów: przekierowanie 301 jest najmocniejsze, potem rel=canonical, a na końcu sitemap.
Na co uważać: nie zakładaj, że po uporządkowaniu archiwów pozycje wzrosną. Celem jest porządek i czytelny sygnał, nie gwarancja wyniku.
Duplikat to nie to samo co kanibalizacja. Duplikat to kilka adresów z tą samą treścią. Kanibalizacja to kilka różnych treści walczących o tę samą frazę. Obie rzeczy warto rozdzielić, bo naprawia się je inaczej.
Skąd biorą się duplikaty na blogu WordPressa
WordPress domyślnie generuje wiele wersji tych samych treści. Oto najczęstsze źródła i to, jak je rozpoznać.
Źródło duplikatu | Objaw w GSC | Narzędzie do wykrycia |
|---|---|---|
Archiwa tagów | "Duplicate, Google chose different canonical" | GSC Page Indexing, Screaming Frog |
Archiwa kategorii | "Alternate page with proper canonical tag" | GSC Page Indexing |
Archiwa autora i dat | Dziesiątki podobnych URL-i | Screaming Frog (tryb listy) |
Paginacja ( | Osobne URL-e z tym samym tytułem | Screaming Frog, GSC |
Wyniki wyszukiwania | URL-e z parametrem | GSC, logi serwera |
Strony załączników | URL-e typu | Screaming Frog |
Parametry URL (UTM, filtry) | Wiele wersji tego samego adresu | GSC, logi serwera |
Wersje staging/testowe | Zaindeksowane subdomeny | GSC, |
Feedy RSS | Rzadko indeksowane, ale bywają | GSC |
Wersje językowe bez hreflang | Podobne treści w kilku językach | Screaming Frog |
W praktyce najczęściej widać tagi i archiwa dat. To one mnożą dziesiątki, a przy dużym blogu setki podobnych adresów. W GSC rozpoznasz je po statusie "Duplicate" albo "Alternate page with proper canonical tag".
Krok 1 - Audyt: zbierz listę URL-i do decyzji
Zanim cokolwiek zmienisz, zbierz dane. Bez tego łatwo noindexować coś, co powinno zostać.
Eksport z GSC. Wejdź w Page Indexing i pobierz listę URL-i. Zwróć uwagę na statusy: zaindeksowane, "Alternate page with proper canonical tag", "Duplicate, Google chose different canonical".
Crawl w Screaming Frog. Uruchom tryb listy i porównaj tytuły oraz treści. Zobaczysz, które strony są do siebie podobne.
Policz typy archiwów. Wypisz, ile masz tagów, kategorii, archiwów autora i dat.
Oznacz każdy URL. Przy każdym wpisz jedną decyzję: zostaw, noindex, 301, popraw canonical.
Czego potrzebujesz: dostępu do GSC, Screaming Frog (lub podobnego crawlera), listy taksonomii i ustawień SEO w WordPressie.
Punkty kontrolne:
Czy liczba URL-i w sitemap zgadza się z liczbą zaindeksowanych?
Czy nie ma wersji http i https oraz z www i bez www?
Checklista audytu (do wykonania po kolei):
Eksport Page Indexing z GSC.
Crawl całego bloga w Screaming Frog.
Lista wszystkich typów taksonomii.
Liczba URL-i per typ archiwum.
Sprawdzenie duplikatów tytułów.
Sprawdzenie wersji http/https i www.
Sprawdzenie parametrów
?s=i UTM.Sprawdzenie stron załączników.
Sprawdzenie wersji staging.
Sprawdzenie hreflang przy wersjach językowych.
Porównanie sitemap z liczbą zaindeksowanych URL-i.
Przypisanie decyzji do każdego typu archiwum.
Jeśli masz 500 tagów, nie analizuj każdego osobno. Zacznij od typów. Sprawdź, które tagi mają ruch i unikalny opis, a resztę potraktuj grupowo.
Krok 2 - Decyzja per typ archiwum (drzewko decyzyjne)
To najważniejsza część. Nie ma jednej odpowiedzi dla wszystkich. Jest decyzja zależna od kontekstu.
Drzewko decyzyjne:
Kategoria z opisem, linkami i ruchem → zostaw indeksowaną, dopracuj treść.
Kategoria pusta lub z 1–2 wpisami → noindex albo scal z inną.
Tag z ruchem i unikalnym opisem → zostaw.
Tag bez treści i bez ruchu → noindex.
Archiwum autora (blog jednoautorski) → noindex.
Archiwum autora (blog wieloautorski) → decyzja zależna od wartości.
Archiwum dat → zwykle noindex. Archiwizuj po temacie, nie po dacie.
Paginacja → zostaw indeksowaną, każda strona ma własny canonical.
?s=, załączniki, staging → noindex, 301 lub blokada.
Typ archiwum | Rekomendacja | Uzasadnienie | Narzędzie |
|---|---|---|---|
Kategoria z treścią | Indeksuj | Może rankować jak landing page | Yoast / Rank Math |
Kategoria pusta | Noindex lub scal | Cienka treść, brak wartości | Rank Math, 301 |
Tag z ruchem | Indeksuj | Realne zapotrzebowanie | Yoast / Rank Math |
Tag bez ruchu | Noindex | Mnoży duplikaty | Rank Math |
Archiwum autora | Noindex (blog jednoautorski) | Powtarzalna lista wpisów | Yoast |
Archiwum dat | Noindex | Data nie jest tematem | Yoast |
Paginacja | Indeksuj, self-canonical | Różne zestawy linków | Ustawienia WP |
| Noindex | Wewnętrzna wyszukiwarka | Rank Math |
Załączniki | 301 do wpisu | Brak wartości jako strona | Wtyczka / kod |
Staging | Blokada | Nie powinno być w indeksie | robots.txt, hasło |
Na co uważać: noindex zużywa crawl budget. Googlebot i tak pobiera stronę, a potem ją odrzuca. Dla małego bloga to bez znaczenia. Dla dużego serwisu to realny koszt. Google podaje, że crawl budget dotyczy głównie witryn z milionem i więcej unikalnych URL-i albo z ponad 10 tysiącami zmieniających się dziennie. Poniżej tego progu liczy się przede wszystkim sitemap i raport indeksowania.
I jeszcze jedno: nie używaj robots.txt do canonicalizacji. To nie jest narzędzie do wskazywania wersji głównej.
Krok 3 — Wdrożenie sygnałów: canonical, noindex, 301
Masz decyzje. Czas je wdrożyć.
Canonical self-referential. Każda strona powinna wskazywać sama na siebie. To domyślne ustawienie większości wtyczek SEO, ale warto je sprawdzić.
Noindex, follow dla cienkich archiwów. W Yoast znajdziesz to w ustawieniach taksonomii. W Rank Math w Titles & Meta, w sekcji Category/Tag Archives Robots Meta. W AIOSEO podobnie, w ustawieniach archiwów.
301 dla scalonych tagów i kategorii. Jeśli łączysz dwa tagi, stary adres musi przekierować na nowy.
Usuń duplikaty z sitemap. Nie ma sensu zgłaszać URL-i, które mają być noindex.
Sprawdź spójność. Canonical, przekierowanie, linki wewnętrzne, sitemap, HTTPS i hostname muszą wskazywać ten sam URL.
Na co uważać: nie ustawiaj noindex na stronach, które chcesz mieć w indeksie. I pamiętaj, że noindex nie zadziała, jeśli ten sam URL jest zablokowany w robots.txt. Googlebot nie pobierze strony, więc nie zobaczy znacznika.
Punkty kontrolne: po 2–4 tygodniach wróć do GSC. Sprawdź, czy liczba URL-i ze statusem "Duplicate" maleje i czy canonical się zgadza.
Krok 4 - Kontrola i pomiar efektu
Uporządkowanie to nie koniec. Trzeba sprawdzić, czy działa.
GSC Page Indexing. Porównaj liczbę zaindeksowanych URL-i przed i po.
URL Inspection. Sprawdź pojedyncze adresy, które budziły wątpliwości.
Crawl Stats i logi serwera. Zobacz, czy Googlebot nie traci czasu na archiwa, które nic nie wnoszą.
Widoczność w AI. Tu wchodzi Semly. Platforma monitoruje, czy modele takie jak ChatGPT, Gemini czy Claude cytują właściwe URL-e. Metryki Mention Rate i Citation Rate pokazują, jak często marka się pojawia i jak często jest cytowana. To uzupełnienie SEO, nie zamiennik.
Hipoteza: uporządkowana architektura ułatwia modelom wybór kanonicznego źródła. Nie mamy na to twardych danych, ale logika jest prosta. Im mniej podobnych adresów, tym łatwiej wskazać ten właściwy. Badania Yext pokazują, że zweryfikowane, ustrukturyzowane dane odpowiadają za 54,53% odrębnych źródeł cytowań w AI. To nie dowód, ale mocna wskazówka, że porządek się opłaca.
Po jakim czasie widać efekt? Zwykle po kilku tygodniach. Zmiany w indeksie nie są natychmiastowe.
Najczęstsze błędy i jak je naprawić
Błąd | Objaw | Naprawa |
|---|---|---|
Noindex wszystkiego "na wszelki wypadek" | Znikają wartościowe kategorie | Wróć do drzewka decyzyjnego |
Canonicalizacja paginacji do strony 1 | Google gubi kolejne strony | Ustaw self-canonical |
robots.txt zamiast canonical | Google wybiera URL sam | Użyj |
Noindex plus blokada w robots.txt | Noindex nie działa | Usuń blokadę |
Scalanie tagów bez 301 | Zostają martwe URL-e | Dodaj przekierowania |
Niespójne sygnały | Google wybiera sam | Ujednolić canonical, linki, sitemap |
Dwa pytania wracają najczęściej. "Dlaczego moje noindex nie działa?" Prawie zawsze dlatego, że URL jest zablokowany w robots.txt. "Dlaczego Google wybrał inny canonical?" Bo sygnały były sprzeczne. Przekierowanie, canonical, linki wewnętrzne i sitemap wskazywały różne adresy.
Co dalej — kolejne kroki i warianty
Porządek w archiwach to fundament. Co można zrobić dalej?
Rozbuduj wartościowe kategorie w landing pages. Dodaj opis, linkowanie wewnętrzne i breadcrumbs. Kategoria z treścią może pracować lepiej niż pojedynczy wpis.
Dodaj llms.txt i JSON-LD. Dzięki temu AI ma jasne, ustrukturyzowane źródło. Semly pomaga przygotować taką bazę wiedzy i tłumaczy ofertę na format zrozumiały dla modeli. Więcej o tym, jak przygotować WordPressa do widoczności w AI, znajdziesz w poradniku GEO dla WordPressa.
Masz tysiące tagów? Rozważ masowe scalanie i noindex. Grupuj po temacie, nie zostawiaj setek cienkich archiwów.
Duplikaty z parametrów? Popraw konfigurację. UTM i filtry nie powinny tworzyć osobnych, indeksowanych URL-i.
Problem systemowy? Wtedy warto spojrzeć szerzej. Semly integruje się z WooCommerce i WordPressem, więc porządek w treściach łączy się z monitoringiem widoczności w AI.
Chcesz sprawdzić, jak Twoja marka wypada w odpowiedziach AI? Zamów darmowy raport widoczności w AI w Semly. Zobaczysz, które URL-e są cytowane i gdzie masz luki. Bez obietnic pozycji, po prostu konkretne dane. Więcej poradników o SEO i widoczności w AI znajdziesz na blogu Semly.
FAQ
Czy duplikaty to kara? Nie. Google traktuje część duplikatów jako normalne zjawisko. Problem to rozmyte sygnały i marnowany crawl budget, nie kara.
Czy noindexować tagi? Tylko te bez ruchu i bez unikalnego opisu. Tag z realnym zapotrzebowaniem i treścią może zostać indeksowany.
Czy paginacja to duplikat? Nie w takim sensie, żeby ją canonicalizować do strony 1. Każda strona paginacji ma własny canonical. Google wycofało rel=next/prev, ale to nie znaczy, że kolejne strony mają wskazywać na pierwszą.
Czy noindex marnuje crawl budget? Tak, Googlebot pobiera stronę, a potem ją odrzuca. Dla małych blogów to nieistotne. Przy dużych serwisach warto rozważyć inne rozwiązania, np. 404 dla usuniętych treści.