
Automatyczny blog za 34 centy: jak zbudowałem News Radar
Automatyczny blog bez bólu portfela, czyli jak złożyłem News Radar za 34 centy
Kiedyś na jednej z facebookowych grup mignęła mi reklama kursu o automatycznych blogach. Widziałem kilka takich wdrożeń - lokalne newsy, zaciągane z sieci artykuły. Większość z tego to był czysty "AI slop" - masowo produkowane pomyje, pozbawione wartości, napchane reklamami tak, że nie dało się tego przeglądać. Zastanawiałem się, jak zbudować automatyczny agregator, który faktycznie ma sens. Jako że mój projekt służy jako poligon doświadczalny, postanowiłem to sprawdzić, zaprzęgając do pracy wyłącznie model Gemini Pro.
Żeby nie produkować kolejnego spamu, odciąłem się od przypadkowych źródeł. Wykorzystałem duże, branżowe newslettery. Bazuję na prawdziwych, wyselekcjonowanych danych. Zbudowanie całego przepływu zajęło mi około 10 godzin pracy z AI w trybie głębokiego myślenia. Ustawienie API i zabezpieczeń przed banami na scrapowanych serwerach poszło całkiem sprawnie.
Budowanie automatyzacji treści w oparciu o wyszukiwarki internetowe to najdroższa z możliwych dróg. Wykorzystanie gotowych, dużych newsletterów jako bazy wejściowej obcina koszty do minimum i gwarantuje stabilne źródło informacji.
Wielu "ekspertów" mówi o zaawansowanym researchu przez AI. Obalam ten mit: to najszybsza droga do przepalenia budżetu. Mój radar nie szuka niczego w sieci. Mam bezpośrednie źródło w postaci etykietowanych maili. Wszystko, co się da, optymalizuję czystym JavaScriptem. Używam Groka w trybie myślącym do analizy - import i output kosztują grosze. Wynik? Za przetworzenie całego wsadu zapłaciłem dokładnie 34 centy. Dla kogoś z wielką firmą to śmieszne pieniądze. Dla mnie - gościa, który do tej pory płacił po jednym cencie miesięcznie za API - to zauważalny skok, ale kosztowo wciąż jest to rozwiązanie wybitne.
Sam mechanizm strony, szablon i wygląd wygenerowałem w 15 minut z gotowego promptu, przepuszczając to przez moje narzędzia do zarządzania wytycznymi. Interesuje nas to, co pod spodem.
Projekt: News Radar "Bez Spiny" - starcie założeń z rzeczywistością w n8n
Postawienie agregatora na tanim serwerze Mikrus wydawało się proste: pobrać maile, wyciągnąć linki, przepuścić przez model językowy i wrzucić na serwer. Rzeczywistość brutalnie zweryfikowała te plany.
Fundamenty, czyli co wymyśliłem na start
Musiałem podjąć decyzje architektoniczne, które nie zajadą serwera z minimalnymi zasobami.
- Architektura Flat-File CMS: Odrzuciłem ciężkie bazy SQL. Zdecydowałem się na oparcie front-endu o płaskie pliki tekstowe. Prosty skrypt PHP skanuje folder z plikami HTML, a ich nazwy zamienia na nagłówki sekcji na stronie. Zero zapytań do bazy.
- Routing na poziomie Gmaila: Zamiast budować wielkiego "Switcha" w n8n do weryfikacji każdego maila, stworzyłem filtry i etykiety bezpośrednio w skrzynce pocztowej. System pobiera od razu posegregowane dane.
- Architektura Event-Driven: Rozbiłem projekt na małe, niezależne przepływy. Każdy newsletter ma swój własny flow, który "śpi", dopóki na danej etykiecie nie pojawi się nowa wiadomość.
Brudne dane i korporacyjny tracking
Kiedy wpadły pierwsze paczki danych, zaczął się dramat. Każdy wydawca miał własny format, a maile były naszpikowane śmieciami.
- Uniwersalna czarna lista: Maile były pełne linków do sponsorów i polityki prywatności. Stworzyłem w n8n pojedynczy węzeł z kodem JS (zgodnie z zasadą DRY z ang. Don't Repeat Yourself – "nie powtarzaj się"), który filtruje domeny. Jeśli coś nas irytuje, blokuję to w jednym miejscu.
- Obchodzenie trackingu: Duże newslettery ukrywają docelowe adresy za kodowaniem URL, a niektóre używają nawet Base64. Zamiast męczyć AI, zaprzęgliśmy do pracy chirurgiczne skrypty JavaScript, które w locie rozkodowują adresy i ucinają parametry śledzące przed wysłaniem ich do analizy.
- Ściana od Yahoo: Korporacje posiadają systemy anty-DDoS. Żądania pobrania treści z Yahoo Finance odbijały się od WAF. Decyzja była krótka: ignorujemy ich, domena trafiła na czarną listę.
Sztuczna inteligencja jako bezlitosny filtr
Nie bawiłem się w skomplikowane algorytmy tekstowe. Podpiąłem model Grok przez LangChain z twardymi wytycznymi. Model ma produkować streszczenia na maksimum 400 znaków, w luźnym tonie i z przeliczaniem walut na złotówki. Co ważniejsze, Grok działa jako ostateczna bramka logiczna. Odrzuca ukryte reklamy ETF-ów, a dla cyberbezpieczeństwa skupia się na realnych lukach i zagrożeniach.
Nigdy nie ufaj surowym danym z zewnętrznych źródeł. Przepuszczenie ich przez tani, ale restrykcyjnie spromptowany model AI jako bramkę decyzyjną (TAK/NIE) pozwala odsiać 90% bezużytecznego szumu przed publikacją.
Kryzys architektoniczny w n8n: nieskończona pętla
To była najdroższa lekcja z obsługi n8n. W pewnym momencie system wygenerował 90 newsów zamiast 10 i zaczął dławić serwer nieustannym nadpisywaniem plików.
- Zarządzanie pamięcią: Węzeł FTP w n8n wymaga pliku, nie czystego tekstu. Zamiast mielić dyskiem twardym, zamieniliśmy wygenerowany tekst w wirtualny bufor w pamięci RAM, gotowy do wysyłki w locie.
- Multiplikacja danych: Pętla operacyjna była źle spięta z węzłami publikującymi. System wpadał w zapętlenie, wysyłając te same zduplikowane wiersze.
Zasada budowania stabilnych pętli w n8n: musisz bezwzględnie oddzielić tor przetwarzania pojedynczych elementów od toru końcowej publikacji. Architektura bezstanowa i wymuszenie czyszczenia brudnopisu to jedyny sposób na uniknięcie awarii serwera.
Narzędzia zbrodni, czyli lista wykorzystanych węzłów
Poniżej zestawienie elementów, na których opiera się cała maszyneria agregatora w n8n.
- Gmail Trigger: Serce architektury opartej na zdarzeniach. Nasłuchuje konkretnych etykiet i automatycznie oznacza maile jako przeczytane, ucinając konieczność budowania pętli sprzątających.
- Code: Chirurg do czarnej roboty. Odpowiada za Regex, dekodowanie Base64, nakładanie czarnej listy, budowanie semantycznego HTML-a oraz czyszczenie pamięci podręcznej.
- Split In Batches: Iteruje po linkach, puszczając je pojedynczo do weryfikacji.
- HTTP Request: Uderza do API Jiny, zamieniając strony docelowe w czysty, pozbawiony szumu Markdown.
- Wait: Anty-ban. Wymusza pauzy między requestami, chroniąc darmowe limity API.
- Information Extractor & xAI Model: Mózg operacji. Strukturyzuje tekst do JSON-a, analizuje, podejmuje decyzję o publikacji i pisze mięsiste streszczenia.
- If: Rozjazd logiczny. Na podstawie decyzji Groka puszcza dane dalej lub przechodzi do kolejnego linku.
- Google Sheets: Wirtualny brudnopis sesji. Zapisuje zatwierdzone newsy, a po zbiorczym pobraniu i publikacji jest bezlitośnie czyszczony do zera.
- FTP: Publikator. Loguje się na Mikrusa i nadpisuje pliki HTML gotową paczką.