Automatyzacja AI · Picvelo · 2026 · 8 miesięcy (rozwijany)
Auto-blog Picvelo - codzienny wpis oparty na danych z produktu
Cały blog kosztował od czerwca około 3 dolarów w tokenach. Drogie okazało się co innego: 74 wpisy pisane z pamięci modelu dały trzy kliknięcia. Obecna wersja zanim zacznie pisać, zbiera fakty z bazy produktu.
- Python
- OpenAI Responses API
- gpt-5.6
- SQLite
- Search Console API
- GitHub Actions
- Unsplash API
- PHP
Wyzwanie
Picvelo to młoda platforma SaaS na domenie bez historii, więc bez treści nie miała szans na ruch z wyszukiwarki. Pierwsza wersja bota publikowała dwa artykuły dziennie w trzech językach i po 74 wpisach przyniosła trzy kliknięcia. Search Console pokazała przyczynę: teksty edukacyjne o fotografii rankowały na pozycjach 40-90, a wersje EN i DE zebrały 389 wyświetleń bez ani jednego kliknięcia. Gorzej, że teksty były ogólnikowe, bo model pisał z pamięci i nie miał dostępu do żadnych danych o produkcie.
Nasze rozwiązanie
Bot przeszedł trzy przebudowy. Najpierw objętość: tłumaczenia wyłączone, jeden wpis dziennie, tematy zawężone do klastra komercyjnego (galerie klienckie, przekazywanie zdjęć, proofing, biznes fotografa). Potem wsad: przed pisaniem bot pobiera agregaty z bazy produkcyjnej i notatkę z wyszukiwania w sieci. Na koniec kontrola: drugi przebieg modelu recenzuje szkic, writer ma jedną rundę poprawek, a twarde bramki blokują publikację tekstu za krótkiego albo na frazę, która ma już swój wpis.
72
Artykułów na blogu
~3 $
Koszt tokenów od czerwca
46 z 63
Wpisów zaindeksowanych (14.09)
Co zbudowaliśmy
- 01 Planer klastrowy: 21 serii tematów zamiast losowania z trendów
- 02 Tematy z Search Console: frazy w zasięgu pierwszej strony
- 03 Research przed pisaniem: fakty z bazy produktu i notatka z wyszukiwania w sieci
- 04 Recenzja szkicu drugim przebiegiem modelu i jedna runda poprawek
- 05 Bramka przeciw kanibalizacji: fraza, która ma już wpis, nie dostaje drugiego
- 06 Deduplikacja po całej historii publikacji, nie po ostatnich 30 dniach
- 07 Zmienna liczba sekcji (6-9) i obowiązkowa tabela albo lista kroków
- 08 Tryb odświeżania: dopisuje sekcje do wpisów z wyświetleniami bez kliknięć
- 09 Testy przed każdym przebiegiem: czerwone testy oznaczają brak wpisu tego dnia
- 10 Hero i dwa obrazy w treści z Unsplash albo Pexels, ping IndexNow po publikacji
Spis treści +
O projekcie
Picvelo to nasza własna platforma dla fotografów. O tym, jak powstała, piszemy w tekście o budowie SaaS-a. Blog miał ją wypozycjonować na zapytania fotografów szukających narzędzia do galerii i selekcji zdjęć, a nie na ogólne hasła o fotografii, gdzie konkuruje pół internetu.
Ten projekt jest w portfolio głównie dlatego, że pokazuje, co automatyzacja treści robi źle, zanim zacznie robić dobrze. Każdą z trzech przebudów wymusił pomiar, a nie pomysł.
Czego nauczyły nas dane
Więcej nie znaczy lepiej
Pierwsza konfiguracja: dwa artykuły dziennie, po 2100 słów, tłumaczone na angielski i niemiecki. Po 74 wpisach trzy kliknięcia z wyszukiwarki. Teksty edukacyjne („trójkąt ekspozycji”, „jak ustawić ISO”) siedziały na pozycjach 40-90, bo młoda domena nie ma czym konkurować z serwisami o dziesięcioletniej historii. Tematy z klastra komercyjnego w tych samych danych stały na pozycjach 17-27, więc pula tematów została zawężona do nich.
Tłumaczenia nic nie dawały
Wersje EN i DE zebrały przez 90 dni 389 wyświetleń i zero kliknięć przy średniej pozycji 43. Od lipca bot pisze tylko po polsku.
Model nie może pisać z pamięci
Audyt z września pokazał drugi problem: teksty były poprawne i puste. Writer nie dostawał żadnego materiału źródłowego, więc o funkcjach produktu pisał to, co model wiedział o „platformach dla fotografów” w ogóle. Dziś przed pisaniem idą dwa kroki: agregaty z bazy produkcyjnej Picvelo (po SSH, tylko odczyt) i krótka notatka z wyszukiwania w sieci. Log każdego przebiegu podaje, ile znaków materiału dostał writer. Zero w obu polach oznacza tekst z pamięci i jest sygnałem do sprawdzenia.
Każdy wpis wyglądał tak samo
Na 68 opublikowanych wpisach 55 miało dokładnie jedenaście nagłówków i kończyło się tą samą trójką sekcji. 62 wpisy nie miały ani jednej tabeli. Teraz liczba sekcji zależy od tematu (6-9), zakończenie ma cztery warianty, a każdy tekst musi zawierać blok strukturalny: tabelę, listę kroków albo kryteria wyboru. Wybór jest deterministyczny, więc ponowne uruchomienie na tym samym temacie daje ten sam plan.
Jak działa dzisiaj
Codziennie rano GitHub Actions uruchamia testy. Jeśli któryś jest czerwony, tego dnia nie ma wpisu. Potem planer wybiera kolejny temat z jednej z 21 serii, uzupełniając go frazami z Search Console, które są blisko pierwszej strony. Scorer odrzuca tematy podobne do czegokolwiek z całej historii publikacji, a osobna bramka nie wpuszcza wpisu na frazę, która ma już swój artykuł. Przy codziennej publikacji to jest główne ryzyko: kolejne wpisy z tej samej serii zaczynają odbierać sobie pozycje.
Writer pisze szkic, drugi przebieg modelu wytyka konkretne wady, writer ma jedną rundę poprawek i wygrywa lepsza z dwóch wersji. Twarde bramki (m.in. minimalna długość i zajęta fraza) blokują publikację, a uwagi stylistyczne trafiają do rundy poprawek. Gotowy tekst dostaje zdjęcia i idzie prosto do bazy bloga, po czym leci ping IndexNow.
Dwa razy w tygodniu bot działa w trybie odświeżania: bierze istniejący wpis, który zbiera wyświetlenia i nie zamienia ich na kliknięcia, i dopisuje mu sekcje zamiast tworzyć nowy artykuł.
Wcześniejsza wersja publikowała przez Pull Requesty z akceptacją człowieka. Od lipca wpisy idą bez ręcznego zatwierdzania, a kontrolę przejęły testy, recenzja modelu i bramki.
Co z tego wyszło
Na blogu są 72 artykuły. Pomiar z 14 września na 63 adresach: 46 zaindeksowanych, 8 wykrytych i jeszcze nieprzetworzonych, 9 nieznanych Google. Trzy dni wcześniej 29 z 30 sprawdzanych adresów było Google nieznanych. Przyczyną nie była treść, tylko mapa witryny, której wyszukiwarka nie pobierała od 44 dni. Po naprawie mapy bot wrócił do codziennej publikacji.
Koszt nie gra tu roli: cały blog od czerwca to około 3 dolarów w tokenach, a przejście z gpt-4o na gpt-5.6 zmieniło rachunek o grosze na artykuł.
Czego nie wiemy: ile rejestracji w Picvelo przyniósł blog. Search Console pokazuje pozycje i kliknięcia, ale nie łączy wejścia z artykułu z założonym kontem, a to wdrożenie takiej atrybucji nie zbiera. Blog jest młody i ruch na długim ogonie rośnie powoli. Ten projekt, tak jak automatyzacja AI dla firm, którą budujemy dla klientów, działa dopiero wtedy, gdy model dostaje dane, a nie tylko polecenie „napisz artykuł”.
Technicznie
Python na self-hosted runnerze GitHub Actions, stan i deduplikacja w SQLite. Modele przez OpenAI Responses API: gpt-5.6-terra pisze, recenzuje i robi research z narzędziem wyszukiwania w sieci, tańszy gpt-5.6-luna planuje kolejny podtemat. Silnik bloga jest po stronie aplikacji Picvelo (PHP): renderuje HTML z bazy, dokłada kotwice w nagłówkach, linki „Zobacz też” między wpisami i schemat FAQPage. Bot świadomie nie wypala linków między artykułami w treści, bo po zapisie w bazie nie dałoby się ich zmienić bez migracji.
Zrzuty ekranu


Strona główna bloga: jeden język, tematy z klastra komercyjnego, czyli z tego, czym Picvelo naprawdę się zajmuje.
Podobny problem do rozwiązania?
Napisz krótko, o co chodzi, wycena wraca w 24 godziny.
Zapytaj o wycenę →






