Automatyzacja AI · Tomasz Pagacz - Jubiler Pagacz · 2026 · 10 miesięcy (rozwijany)

Auto-blog jubilera - pipeline SEO na GPT-5

Blog, który przez rok urósł do 100+ artykułów bez ani jednej godziny copywritingu - tematy bierze z pozycji 5-30 w Search Console, więc pisze o tym, na co strona już prawie rankuje.

  • Python
  • GPT-5
  • OpenAI Embeddings
  • WordPress REST API
  • GitHub Actions
  • PHP
Zobacz stronę live ↗
Auto-blog jubilera - pipeline SEO na GPT-5

Wyzwanie

Sklep jubilerski z katalogiem 19 500 produktów potrzebował treści, żeby wejść na długi ogon zapytań - porady o diamentach, próbach złota, wycenie, obrączkach. Agencja copywriterska za 30 artykułów miesięcznie to koszt rzędu kilku tysięcy złotych, a właściciel nie ma czasu pisać sam. Dodatkowy problem: kilkadziesiąt artykułów bez linkowania wewnętrznego to martwy balast, którego Google nie widzi jako spójnego tematu.

Nasze rozwiązanie

Zbudowaliśmy pipeline w Pythonie odpalany cronem na self-hosted runnerze. Temat wybiera z danych Search Console - bierze zapytania siedzące na pozycji 5-30 przy niskim CTR, czyli te, gdzie mały ruch treścią daje realny skok. GPT-5 pisze artykuł na bazie kontekstu biznesowego klienta (certyfikaty IGI, szkolenia w Antwerpii, zakres usług), gpt-image-2 generuje ilustrację i sprawdza ją modelem wizyjnym, a embeddingi dobierają linki do pokrewnych artykułów. Publikacja idzie przez REST API WordPressa, po niej ping IndexNow i aktualizacja llms.txt.

100+

Artykułów

1 dziennie

Publikacji

0 h

Pracy ręcznej

Co zbudowaliśmy

  • 01 Wybór tematu z Search Console (striking distance, pozycje 5-30)
  • 02 11 klastrów tematycznych z deduplikacją po embeddingach
  • 03 Artykuł GPT-5 na bazie kontekstu biznesowego klienta
  • 04 Ilustracja gpt-image-2 z review przez model wizyjny
  • 05 Linkowanie wewnętrzne na embeddingach (pasmo 0.35-0.90)
  • 06 Publikacja przez WordPress REST API + IndexNow
  • 07 llms.txt - strona czytelna dla modeli AI
  • 08 Audyt klastrów, konsolidacja duplikatów i przekierowania 301
  • 09 Tryb refresh - odświeżanie starych wpisów zamiast pisania nowych
Spis treści +

O projekcie

Jubiler Pagacz sprzedaje biżuterię, którą kupuje się raz w życiu - pierścionki zaręczynowe, obrączki, diamenty inwestycyjne. Ludzie przed takim zakupem czytają: jaka próba złota, jak sprawdzić certyfikat, ile kosztuje renowacja. Blog miał przechwycić te zapytania i doprowadzić czytelnika do salonu w Bielsku-Białej. To nie zastępuje pozycjonowania lokalnego samego salonu - od czego zacząć w tym mieście, piszemy osobno - tylko rozszerza zasięg o zapytania poradnikowe, na które salon jeszcze nie odpowiadał.

Problem nie polegał na tym, żeby napisać dziesięć tekstów. Polegał na tym, żeby pisać je codziennie przez rok, każdy o czymś innym, każdy podlinkowany do pozostałych i do stron usługowych.

Co zbudowaliśmy

Temat z danych, nie z sufitu

Pipeline pyta Search Console o zapytania, na które strona wyświetla się na pozycji 5-30 przy zerowym lub minimalnym CTR. To zapytania, gdzie Google już uznał stronę za w miarę trafną - dopisanie porządnego artykułu jest tu tańsze niż walka o head-term od zera. Gdy takich tematów brakuje, bot sięga do puli 11 klastrów tematycznych i odrzuca wszystko, co po embeddingach wygląda na duplikat istniejącego wpisu.

Tekst z kontekstem firmy

GPT-5 dostaje nie tylko temat, ale i plik z kontekstem biznesowym: kim jest Tomasz Pagacz, jakie ma certyfikaty (IGI, szkolenia w Antwerpii, członkostwo w SRJ), jakie usługi i pod jakimi adresami. Dzięki temu artykuł powołuje się na realne kompetencje i linkuje do właściwej podstrony usługowej, zamiast produkować generyczną treść o biżuterii.

Obraz generowany, nie ze stocku

Hero powstaje w gpt-image-2, dostaje nakładkę tekstową, a potem wraca do modelu wizyjnego na sprawdzenie. Zdjęcia stockowe biżuterii wyglądają wszędzie tak samo - generowana grafika przynajmniej należy tylko do tego bloga.

Linkowanie, które nie psuje treści

Embeddingi (text-embedding-3-small) liczą podobieństwo nowego artykułu do wszystkich istniejących i wybierają te w paśmie 0.35-0.90: dość blisko, żeby link miał sens, dość daleko, żeby nie był duplikatem. Model wplata maksymalnie pięć linków w treść, a guard odrzuca odpowiedź, w której zmieniło się cokolwiek poza dodanymi znacznikami <a>.

Widoczność po publikacji

Po opublikowaniu leci ping IndexNow (Bing, Yandex, Seznam) i aktualizacja llms.txt - pliku, w którym modele AI znajdują uporządkowaną mapę usług i specjalizacji firmy. Osobne mu-pluginy pilnują limitu publikacji i przekierowań 301 po konsolidacji duplikatów.

Co z tego wyszło

Po dziesięciu miesiącach pipeline ma ponad sto opublikowanych artykułów i utrzymuje rytm mniej więcej jednego dziennie, bez godziny pracy redakcyjnej po stronie klienta. Blog stoi dziś obok sklepu internetowego, który zbudowaliśmy dla tego samego klienta wcześniej, a sam pipeline to jeden z przykładów automatyzacji AI dla firm, którą budujemy.

Czego nie wiemy i czego nie mierzymy: nie mamy zestawienia pozycji ani ruchu z Search Console sprzed i po wdrożeniu, więc nie potwierdzimy, o ile realnie wzrosła widoczność bloga jako całości - tematy są zresztą dobierane tak, żeby startować już z pozycji 5-30, więc część efektu i tak byłaby widoczna bez automatyzacji. Nie mamy też danych, ile ze stu kilkudziesięciu artykułów faktycznie doprowadziło kogoś do zapytania w salonie - to wymagałoby atrybucji, której to wdrożenie nie zbiera. To, co możemy potwierdzić, to rytm publikacji i brak pracy ręcznej. Tego, czy przekłada się to na sprzedaż, nie sprawdzaliśmy.

Technicznie

Python 3.13 w trwałym venv na self-hosted runnerze GitHub Actions (VPS klienta), cron codziennie o 8:00 UTC. Modele: GPT-5 do pisania, gpt-5-mini do zadań pomocniczych, gpt-image-2 do grafiki, text-embedding-3-small do podobieństwa. Publikacja przez WordPress REST API na Application Password. Logika czysto obliczeniowa (dobór linków, walidacja kluczy IndexNow, scoring klastrów) jest oddzielona od wywołań sieciowych, więc pokrywają ją testy jednostkowe.

Zrzuty ekranu

Blog po roku pracy pipeline'u: wpisy z 29 i 30 sierpnia, kategorie z licznikami, generowane grafiki z nakładką tekstową.
Artykuł GPT-5 - tabela parametrów certyfikatu i pierwszoosobowy głos rzeczoznawcy, nie generyczna treść o biżuterii.
Listing bloga: filtry kategorii i siatka wpisów generowanych codziennie z Search Console.
Ten sam artykuł na telefonie.

Podobny problem do rozwiązania?

Napisz krótko, o co chodzi — wycena wraca w 24 godziny.

Zapytaj o wycenę