Programmatic SEO to podejście do tworzenia treści, które polega na generowaniu dużej liczby stron na podstawie jednego szablonu oraz zestawu danych. Zamiast tworzyć każdą podstronę ręcznie, przygotowujemy szablon strony oraz tabelę z danymi, a następnie generator tworzy kolejne strony automatycznie.
Takie rozwiązanie jest szczególnie przydatne w serwisach, które muszą obsługiwać bardzo dużą liczbę podobnych zapytań w wyszukiwarce. Mogą to być na przykład strony z kursami walut, katalogi produktów, rankingi czy strony lokalnych usług.
W tym artykule pokazuję krok po kroku, jak stworzyć prosty projekt programmatic SEO w WordPressie. Na konkretnym przykładzie wygenerujemy strony dla wielu miast w Polsce, wykorzystując jeden szablon strony oraz tabelę z danymi miejscowości.
Spis treści
Dlaczego lokalne zapytania dobrze nadają się do programmatic SEO?
Jednym z najczęstszych zastosowań programmatic SEO są zapytania lokalne. W wielu branżach użytkownicy wpisują w wyszukiwarce bardzo podobne frazy, w których zmienia się jedynie nazwa miasta.
Typowy schemat takiego zapytania wygląda następująco:
[usługa + miasto]
Takich zapytań w praktyce są setki. Użytkownicy wpisują na przykład:
- notariusz kraków
- dietetyk kliniczny wrocław
- serwis klimatyzacji katowice
Każda z tych fraz ma identyczną konstrukcję – zmienia się jedynie lokalizacja. Z punktu widzenia SEO oznacza to, że można przygotować jedną strukturę strony i wykorzystać ją dla wielu miast, generując w ten sposób dużą liczbę podstron odpowiadających na takie zapytania.
Skąd wziąć dane do projektu?
Aby stworzyć strony dla wielu lokalizacji, potrzebna jest baza danych miast. W internecie można znaleźć różne zestawy danych, które nadają się do takich projektów — na przykład listy miejscowości lub inne publiczne zbiory danych.
W wielu projektach zdobycie odpowiednich danych okazuje się najtrudniejszą częścią całego procesu. Często potrzebne są zbiory zawierające wiele zmiennych, które dodatkowo muszą być aktualizowane na bieżąco. Dobrym przykładem są serwisy pokazujące kursy walut czy ceny produktów — tam dane najczęściej pobierane są z API.
W przypadku lokalnych usług sytuacja jest jednak dużo prostsza. Wystarczy lista miejscowości w Polsce. Takie dane są publicznie dostępne i można je znaleźć w wielu otwartych zbiorach danych.
W tym projekcie wykorzystałem repozytorium z GitHuba:
Repozytorium zawiera listę polskich miejscowości w formacie JSON. Pojedynczy rekord wygląda na przykład tak:
{
„Name”: „Kraków”,
„Type”: „city”,
„Province”: „małopolskie”,
„District”: „Kraków”,
„Latitude”: 50.0617,
„Longitude”: 19.9375
}
Ponieważ generator stron w WordPressie wygodniej pracuje z plikami CSV, najpierw przekonwertowałem plik JSON do CSV w Google Colab przy pomocy prostego skryptu Pythona:
Po wykonaniu skryptu otrzymujemy plik CSV z listą miejscowości, który można wykorzystać w generatorze stron w WordPressie.
Uwaga: w moim przypadku po wgraniu pliku CSV do generatora stron pojawił się błąd. Okazało się jednak, że problem nie leżał w danych, tylko w samym pliku. Jeśli traficie na podobny problem, spróbujcie otworzyć plik CSV i zapisać go ponownie w tym samym formacie. Po takim ponownym zapisie plik został już poprawnie odczytany przez generator stron.
Wgranie danych do generatora stron
Na tym etapie mamy już przygotowaną bazę miejscowości w formacie CSV. W wielu projektach programmatic SEO przygotowanie takich danych jest najtrudniejszą częścią całego procesu, ponieważ często trzeba je zebrać z różnych źródeł, oczyścić i ujednolicić.
W naszym przykładzie jest jednak dużo prościej – korzystamy z gotowej bazy miejscowości, którą wcześniej pobraliśmy z GitHuba i przekonwertowaliśmy do formatu CSV.
Plik zawiera podstawowe informacje o lokalizacji, między innymi:
- id
- miasto
- województwo
- powiat
- gmina
- latitude
- longitude
- slug
W prostszych projektach taka tabela mogłaby być jeszcze mniejsza. Gdybyśmy potrzebowali tylko nazwy miasta do wstawienia w treści strony, wystarczyłaby zwykła lista miejscowości. W naszym przypadku dodaliśmy kilka dodatkowych danych, ponieważ wykorzystujemy je w różnych elementach strony – na przykład przy generowaniu mapy czy sekcji lokalizacji.
Do generowania stron w tym projekcie wykorzystałem wtyczkę Page Generator Pro:
https://pl.wordpress.org/plugins/page-generator/
Wybrałem ją dlatego, że chcieliśmy stworzyć strony przy pomocy kodu HTML, CSS i JS, a nie przy użyciu buildera strony takiego jak na przykład Elementor. Dzięki temu mamy pełną kontrolę nad strukturą strony i możemy łatwo korzystać ze zmiennych bezpośrednio w kodzie.
Jeśli jednak ktoś woli rozwiązania bardziej wizualne, można skorzystać również z wtyczki LPagery:
https://pl.wordpress.org/plugins/lpagery/
LPagery działa na bardzo podobnej zasadzie, ale pozwala budować szablon strony w Elementorze lub innym builderze, bez konieczności pracy bezpośrednio w kodzie. Mechanizm działania jest jednak taki sam – generator tworzy kolejne strony na podstawie jednego szablonu oraz danych z tabeli.
Kiedy dane są już gotowe, możemy wgrać je do generatora stron w WordPressie. W tym celu przechodzimy do wtyczki Page Generator Pro i dodajemy nową zmienną.
Kroki wyglądają następująco:
- przechodzimy do Page Generator Pro → Add New Keyword
- w polu nazwy wpisujemy zmienną – w naszym przypadku: miasto
- jako źródło danych wybieramy CSV File
- następnie wgrywamy przygotowany wcześniej plik CSV z listą miejscowości
Po poprawnym wgraniu pliku wtyczka wyświetli listę rekordów z tabeli.

Wstawianie zmiennych w kodzie szablonu
Kiedy mamy już przygotowaną tabelę z danymi, kolejnym krokiem jest stworzenie szablonu strony. Taki szablon piszemy dokładnie tak samo jak zwykły kod strony HTML – z nagłówkami, sekcjami, tekstem i CSS.
Różnica polega tylko na tym, że w miejscach, gdzie mają pojawić się dane z tabeli, wstawiamy zmienne.
W naszym projekcie w poprzednim kroku zdefiniowaliśmy zmienną miasto w tabeli danych. Każdy wiersz tabeli zawiera nazwę innego miasta, dlatego generator stron może podmieniać tę wartość podczas tworzenia podstron.
Jeżeli w kodzie strony wstawimy taką zmienną:
<h1>Świadectwo energetyczne {miasto(miasto)}</h1>
to generator stron zrobi następującą rzecz:
- odczyta kolumnę miasto z tabeli
- pobierze wartość z konkretnego wiersza
- wstawi ją w miejsce zmiennej w kodzie
Jeśli w tabeli w danym wierszu znajduje się:
miasto: Aleksandrów Kujawski
to wygenerowana strona będzie zawierała:
<h1>Świadectwo energetyczne Aleksandrów Kujawski</h1>

Dokładnie ten sam mechanizm działa w innych elementach strony. Przykładowo możemy wykorzystać zmienne do wygenerowania mapy dla danego miasta.
<iframe src=”https://www.google.com/maps?q={miasto(lat)},{miasto(lng)}&z=12&output=embed”></iframe>
Generator pobierze wtedy współrzędne zapisane w tabeli i wstawi je do linku mapy. Dzięki temu każda wygenerowana podstrona pokaże mapę odpowiedniego miasta.

Najważniejsze jest to, że cały kod strony piszemy tylko raz. Generator stron wykorzystuje ten sam szablon dla wszystkich lokalizacji i jedynie podmienia wartości zmiennych na dane z kolejnych wierszy tabeli. Dzięki temu z jednego szablonu możemy wygenerować setki stron lokalnych.
Generowanie stron na podstawie szablonu
Kiedy mamy już gotowy szablon strony z wstawionymi zmiennymi, możemy zacząć generować strony na jego podstawie. Generator stron wykorzystuje przygotowany szablon i dane z tabeli, a następnie tworzy podstrony dla kolejnych wierszy w pliku CSV.
Zanim jednak wygenerujemy wszystkie strony, warto najpierw stworzyć jedną testową podstronę. Dzięki temu możemy sprawdzić, czy zmienne poprawnie się podmieniają, czy mapa działa prawidłowo oraz czy cała strona wygląda tak jak powinna.
Jeśli wszystko działa poprawnie, można uruchomić masowe generowanie stron dla całej tabeli.

Warto przy tym pamiętać, że generowanie bardzo dużej liczby podstron może mieć wpływ na działanie strony. Kilka tysięcy stron zwiększa rozmiar bazy danych WordPressa, może spowolnić panel administracyjny, a także utrudnić indeksację w Google. Dlatego w wielu projektach lepiej zaczynać od mniejszej liczby stron i stopniowo rozwijać strukturę serwisu.
Efekt końcowy i podsumowanie
Po wygenerowaniu stron na podstawie szablonu każda podstrona korzysta z tej samej struktury, ale zawiera dane z innego wiersza tabeli. Dzięki temu zmienia się między innymi nazwa miasta w nagłówkach, sekcja lokalizacji czy mapa.
Przykładową wygenerowaną stronę można zobaczyć tutaj:
https://energetyka.pl/dokumentacja/swiadectwo-energetyczne-aleksandrow-kujawski/
Na stronie zmieniają się między innymi:
- nazwa miasta w nagłówkach
- sekcja lokalizacji
- mapa z odpowiednimi współrzędnymi
Dzięki temu z jednego szablonu strony możemy wygenerować setki podstron odpowiadających na lokalne zapytania użytkowników.
Programmatic SEO pozwala więc w prosty sposób skalować tworzenie treści. Zamiast przygotowywać setki podobnych stron ręcznie, wystarczy jeden dobrze zaprojektowany szablon oraz tabela z danymi, na podstawie której generator tworzy kolejne podstrony.
Ten sam mechanizm można wykorzystać nie tylko w przypadku stron lokalnych, ale także w wielu innych projektach — na przykład katalogach usług, porównywarkach czy serwisach opartych na dużych zbiorach danych.
Rozpracowuje algorytmy i strategie, które przesuwają strony w górę wyników wyszukiwania. To prawdziwy pasjonat SEO z umiejętnością skupienia się na celu tak mocno, że potrafi „zniknąć” na kilka dni – dopóki nie zobaczy efektów swojej pracy. A kiedy potrzebuje fizycznego resetu? Siłownia wzywa! To miejsce, w którym równie konsekwentnie, jak w pracy, buduje formę.
