‹ Spis treści Rozdział 5 Pobierz przepływy

Rozdział 5

Rozdział 5. Monitor konkurencji

Monitoring konkurencji to jedna z tych czynności, które każdy strateg deklaruje, a mało kto naprawdę wykonuje. Nie z lenistwa. Po prostu czytanie dwudziestu newsletterów i sprawdzanie ośmiu stron codziennie przegrywa z każdym pilniejszym zadaniem, a pilniejsze zadanie jest zawsze. Automatyzacja nie rozwiązuje tu problemu braku czasu, tylko problem braku rytmu. Maszyna sprawdza codziennie, bo nie ma nic pilniejszego do zrobienia.

Zbudujesz teraz pierwszy z trzech systemów tego poradnika. Wszystkie węzły, które go tworzą, znasz już z rozdziałów 3 i 4 - poza dwoma, i to właśnie one zamieniają listę artykułów w coś, co samo decyduje, co jest warte twojej uwagi.

Co zbudujemy

System, który każdego ranka sam przeszuka doniesienia prasowe o wybranej marce, dla każdego z nich zapyta model, czy jest istotne, i przyśle ci mailem tylko te, które przeszły przez to sito.

Czas i koszt

Budowa zajmie około dwudziestu minut. Dwa nowe węzły wymagają więcej klikania niż wszystko, co robiłeś do tej pory, a jeden z nich trzeba połączyć w sposób, który na pierwszy rzut oka wygląda dziwnie.

Koszt jednego uruchomienia to koszt pojedynczego zapytania z rozdziału 4, pomnożony przez liczbę wiadomości z danego dnia. Przy kilkunastu wiadomościach mówimy o ułamku grosza. Warto jednak zapamiętać sam mechanizm mnożenia, bo to on decyduje o rachunku w każdym większym systemie, który kiedykolwiek zbudujesz.

Czego się nauczysz

1

Zanim otworzysz n8n, przygotuj to, z czego przepływ będzie czerpał. Wklej do przeglądarki ten adres:

https://news.google.com/rss/search?q=LEGO+when:1d&hl=pl&gl=PL&ceid=PL:pl

Zobaczysz surowy plik pełen znaczników w ostrych nawiasach. Nie przejmuj się, jeśli nic z tego nie rozumiesz. Sprawdź na razie tylko jedną rzecz: czy między znacznikami widać polskie tytuły artykułów. Jeśli tak, to znaczy, że źródło działa.

Ten adres to zwykłe wyszukiwanie w Google News, tyle że w formie, którą potrafi wczytać maszyna. Fragment po q= to twoje zapytanie, when:1d zawęża wyniki do ostatniej doby, a trzy końcowe parametry ustawiają język i kraj na polski.

2

Utwórz nowy, pusty przepływ. Dodaj węzeł „Schedule Trigger", ustaw „Trigger Interval" na „Days", godzinę na 7am i minutę na 0. To ten sam węzeł, który poznałeś w rozdziale 3.

3

Dodaj węzeł „RSS Read" i połącz go z wyzwalaczem. W polu „URL" wklej adres przygotowany w kroku 1. Kliknij „Execute step".

Na ekranie zobaczyszw panelu OUTPUT listę wiadomości, a nad nią liczbę znalezionych elementów. Przy popularnej marce i oknie jednodniowym może to być kilkanaście pozycji.

Wynik zapytania prasowego, gotowy do oceny
Rys. 5.1. Wynik zapytania prasowego, gotowy do oceny
4

Przyjrzyj się teraz kolumnie title. Każdy tytuł kończy się myślnikiem i nazwą źródła - redakcji, na zasadzie: „Wielka gratka dla fanów klocków Lego - Radio Szczecin". To wygodne, bo w jednym polu masz i temat, i źródło, a przy ocenie istotności źródło bywa ważniejsze od nagłówka.

Zajrzyj też do kolumny content. Zamiast treści artykułu znajdziesz w niej znaczniki HTML z linkiem. Tak wygląda ten kanał i nic z tym nie zrobimy. Pracujemy więc na samym tytule.

Dodaj pętlę

5

Kliknij znak plus przy prawej krawędzi węzła „RSS Read". Wpisz „Loop" i wybierz węzeł „Loop Over Items" (pętla po elementach). Na ekranie zobaczysz: nie jeden węzeł, ale dwa. Obok pętli n8n dołożył sam z siebie węzeł z napisem „Replace Me" (zastąp mnie). To nie jest błąd i nie jest to część twojego przepływu. To podpowiedź. n8n pokazuje ci gotowy kształt pętli i mówi wprost: tutaj wstaw pracę, którą chcesz powtarzać dla każdego elementu, a potem zawróć. Popatrz na sam węzeł pętli. Ma on dwa wyjścia po prawej stronie, jedno pod drugim, podpisane „done" (gotowe) i „loop" (pętla). To pierwszy węzeł, który ma dwa wyjścia, i pierwszy, który sam z siebie nie robi nic użytecznego. Cała jego wartość bierze się z tego, jak go połączysz.

Kliknij zatem węzeł „Replace Me" i usuń go klawiszem Delete. Zbudujesz tę część sam, żeby zobaczyć, z czego się składa.

Dwa wyjścia, dwa zupełnie różne znaczenia
Rys. 5.2. Dwa wyjścia, dwa zupełnie różne znaczenia
6

Otwórz węzeł i sprawdź pole „Batch Size" (rozmiar paczki). Zostaw wartość 1 i zamknij panel.

Wstaw ocenę modelu

7

Z wyjścia „loop" dodaj węzeł „OpenAI" i wybierz akcję „Message a model", tak jak w rozdziale 4. Wskaż dane dostępowe, które zapisałeś wtedy: pojawią się na liście gotowe, bez ponownego wklejania klucza.

8

Dodaj wiadomość z rolą „System" i wpisz w niej:

„Jesteś analitykiem monitorującym rynek dla firmy zajmującej się [twoja branża]. Oceniasz, czy poniższy tytuł prasowy jest dla tej firmy istotny. Odpowiadasz wyłącznie jednym słowem: TAK albo NIE. Bez wyjaśnień, bez kropki, bez żadnego dodatkowego tekstu."

9

Dodaj drugą wiadomość, z rolą „User", i przeciągnij do niej pole title z panelu danych wejściowych po lewej stronie.

Na ekranie zobaczyszpod polem podgląd z prawdziwym tytułem pierwszej wiadomości.

10

Kliknij „Execute step" i sprawdź, co model odpowiedział. Rozwiń w panelu OUTPUT gałąź content, a pod nią 0, i znajdź pole text. Powinno zawierać jedno słowo.

Polecenie, które zmusza model do odpowiedzi jednym słowem
Rys. 5.3. Polecenie, które zmusza model do odpowiedzi jednym słowem

Rozdziel ścieżki

11

Z wyjścia węzła OpenAI dodaj węzeł „IF". Kliknij „Add condition" (dodaj warunek).

Do górnego pola warunku przeciągnij text z panelu danych wejściowych, czyli odpowiedź modelu. Typ porównania ustaw na „String", operator na „contains" (zawiera), a w dolnym polu wpisz TAK.

Warunek, który rozdziela wiadomości na dwie ścieżki
Rys. 5.4. Warunek, który rozdziela wiadomości na dwie ścieżki
12

Zamknij panel. Węzeł IF ma teraz dwa wyjścia: „true" (prawda) u góry i „false" (fałsz) u dołu.

Z wyjścia „true" dodaj węzeł „Gmail" - „Send a message". Ustaw „Resource" na „Message" i „Operation" na „Send", tak jak w rozdziale 3. W polu „To" wpisz swój adres, w „Subject" na przykład „Monitoring: nowa wiadomość", a do treści przeciągnij title i link, pamiętając o wciśnięciu Entera między jednym a drugim.

Zamknij pętlę

13

To najważniejszy krok w tym rozdziale i jedyny, który wygląda nienaturalnie.

Przeciągnij połączenie od wyjścia węzła „Gmail" z powrotem do wejścia węzła „Loop Over Items". Potem zrób to samo z wyjściem „false" węzła IF.

Rozgałęzienie zamknięte w pętli
Rys. 5.5. Rozgałęzienie zamknięte w pętli

Powód jest prosty, choć nieoczywisty. Węzeł „Loop Over Items" nie wypuści następnego elementu, dopóki nie dostanie sygnału, że poprzedni został obsłużony. Sygnałem jest właśnie ta linia zwrotna. Obie ścieżki muszą wracać, także ta, na której nic się nie stało. Wiadomość odrzucona przez filtr również wymaga zamknięcia sprawy, bo pętla nie rozróżnia sukcesu od pominięcia, tylko obsłużone od nieobsłużonych.

Wyjście „done", jak widzisz, w tym przypadku wisi puste. Ale tak ma być, więc zostawiamy to w ten sposób.

Uruchom

14

Kliknij „Execute workflow".

Na ekranie zobaczyszwęzły zapalające się po kolei, a potem cykl powtarzający się w kółko: OpenAI, IF, czasem Gmail, powrót. Licznik pod węzłem OpenAI rośnie z każdym okrążeniem. Na końcu zapali się wyjście „done".

Sprawdź, czy działa

Otwórz skrzynkę pocztową. Powinno w niej być tyle wiadomości, ile tytułów model uznał za istotne.

Może być ich zero i to również jest poprawny wynik, nie awaria. Znaczy tyle, że dziś nie napisano nic, co dotyczyłoby wybranej marki. Żeby się upewnić, że przepływ naprawdę zadziałał, zajrzyj do węzła IF i sprawdź, ile elementów poszło każdą ze ścieżek. Suma powinna zgadzać się z liczbą wiadomości z węzła RSS Read.

Zajrzyj też do zakładki „Executions". Uruchomienie powinno być zielone, a przy węźle OpenAI powinna stać liczba wykonań równa liczbie wiadomości.

Poranny przegląd, który robi się sam
Rys. 5.6. Poranny przegląd, który robi się sam

Co może pójść nie tak

Wariacje na temat

Obserwuj dwie marki naraz. Nie potrzebujesz do tego drugiego węzła. Wystarczy zmienić zapytanie w adresie, wpisując q=LEGO+OR+Playmobil+when:1d. Reszta przepływu obsłuży to bez żadnej zmiany.

Zamiast maila poproś model o jedno zdanie streszczenia. Zmień polecenie tak, żeby zwracało ocenę i krótkie uzasadnienie, i wstaw to uzasadnienie do treści wiadomości. Kosztuje odrobinę więcej, bo model pisze więcej, ale poranny przegląd czyta się wtedy znacznie szybciej.

Przepływ w repozytorium

Pobierz plik 05-monitor-konkurencji.json ze strony heuristica.pl/automatyzacje-n8n i zaimportuj go tak samo jak w rozdziale 1. Po imporcie wskaż własne dane dostępowe do OpenAI i Gmaila oraz podmień markę w adresie kanału.

Rozgałęzienie odpowiada na pytanie, co zrobić z tym elementem. Pętla odpowiada na pytanie, co z następnym. Wszystko, co zbudujesz dalej, będzie kombinacją odpowiedzi na te dwa pytania, w coraz bardziej rozbudowanych wariantach.