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

Rozdział 6

Rozdział 6. Syntezator researchu

Research to czynność, którą marketer wykonuje stale i prawie nigdy nie kończy. Otwierasz dwanaście zakładek, czytasz osiem, zapamiętujesz trzy, a do briefu trafia jedna, zwykle ta ostatnia przeczytana. Nie dlatego, że była najlepsza, tylko dlatego, że była najświeższa w pamięci.

Problemem nie jest brak informacji, tylko to, że nigdy nie widzimy ich wszystkich naraz. Czytamy sekwencyjnie, a wnioskować chcielibyśmy równolegle.

W rozdziale 5 przepływ oceniał każdy element osobno i osobno o nim decydował. Tutaj zrobisz coś nowego: zbierzesz wyniki z rozproszonych źródeł w jedno miejsce i dopiero wtedy poprosisz o ocenę całości.

Co zbudujemy

System, który dostaje listę adresów, dla każdego z osobna wyciąga jedną kluczową myśl, a na końcu dopisuje jeszcze jeden wiersz: wniosek z porównania wszystkich źródeł razem. Wynikiem jest tabela w arkuszu Google, gotowa do wklejenia w briefie albo prezentacji.

Czas i koszt

Budowa: około trzydziestu minut. To długi przepływ - dziewięć węzłów, ale żaden z nich nie jest trudny.

Koszt: kilka groszy za uruchomienie. Więcej niż w rozdziale 5, bo model dostaje tym razem całe strony, a nie same nagłówki.

Czego się nauczysz

Przygotuj arkusz

1

Zanim otworzysz n8n, załóż nowy arkusz w Google Sheets. Nazwij go „Syntezator researchu" i zrób w nim dwie zakładki.

W pierwszej, „Linki", w komórce A1 wpisz nagłówek Link, a poniżej wklej adresy źródeł. Na potrzeby tego rozdziału użyjemy sześciu blogów, na których wypowiadają się ludzie mający coś do powiedzenia o marketingu, produkcie i zachowaniach użytkowników:

https://seths.blog

https://www.nngroup.com/articles/

https://sparktoro.com/blog

https://baymard.com/blog

https://world.hey.com/dhh

https://world.hey.com/jason

W drugiej zakładce, „Wyniki", w komórce A1 wpisz Link, a w B1 Teza. Resztę zostaw pustą, wypełni ją przepływ.

Wczytaj linki

2

Utwórz nowy, pusty przepływ. Dodaj wyzwalacz „Manual trigger" (uruchom ręcznie), ten sam, którego używałeś w rozdziałach 1, 3 i 4.

3

Kliknij plus przy wyzwalaczu, wpisz „Google Sheets" i wybierz z listy akcji „Get row(s) in sheet" (pobierz wiersze arkusza).

Przy polu „Credential" kliknij „Create new credential" i „Sign in with Google". To ten sam ekran logowania Google co przy Gmailu w rozdziale 3, tym razem z prośbą o dostęp do Arkuszy zamiast do poczty.

W polu „Document" wybierz z listy swój arkusz, a w polu „Sheet" zakładkę „Linki". Kliknij „Execute step".

Na ekranie zobaczyszw panelu OUTPUT sześć elementów, każdy z jednym polem Link.

Wczytanie listy linków z arkusza
Rys. 6.1. Wczytanie listy linków z arkusza

Pobierz treść

4

Kliknij plus przy węźle Google Sheets, wpisz „HTTP Request" i wybierz węzeł z listy.

W polu „Method" (metoda) zostaw GET. W polu „URL" przeciągnij pole Link z panelu danych wejściowych po lewej stronie. Kliknij „Execute step".

Na ekranie zobaczyszw panelu OUTPUT pole data, a w nim długi ciąg zaczynający się od <!DOCTYPE html>, pełen znaczników w ostrych nawiasach. To surowy kod pierwszej strony z listy.

Strona internetowa, zanim przeglądarka ją pokaże
Rys. 6.2. Strona internetowa, zanim przeglądarka ją pokaże

Obetnij, za co nie chcesz płacić

5

Zanim treść trafi do modelu, trzeba usunąć z niej to, co nie jest treścią. Kliknij plus przy węźle „HTTP Request", wpisz „Markdown" i wybierz węzeł z listy.

Ustaw „Mode" (tryb) na „HTML to Markdown". W polu „HTML" przeciągnij pole data z panelu danych wejściowych. W polu „Destination Key" (pole docelowe) wpisz „tekst" zamiast domyślnej wartości, żeby wynik nie nadpisał oryginału.

Kliknij „Execute step".

Na ekranie zobaczyszw panelu OUTPUT nowe pole tekst, a w nim ten sam artykuł, tyle że bez znaczników. Zostały nagłówki, akapity i linki. Zniknęły metadane, skrypty, style i favicony.

Ta sama strona, po odjęciu wszystkiego, co nie jest tekstem
Rys. 6.3. Ta sama strona, po odjęciu wszystkiego, co nie jest tekstem

Oceń każde źródło

6

Kliknij plus przy węźle „Markdown". Dodaj węzeł „OpenAI" z akcją „Message a model", tak jak w rozdziale 4, i wskaż dane dostępowe zapisane wtedy.

7

W polu „Model" wybierz model z bieżącej listy.

8

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

„Jesteś analitykiem. Dostajesz tekst strony internetowej, wraz z resztkami nawigacji. Znajdź główną treść i streść w jednym zdaniu, czym to źródło się w tej chwili zajmuje i jakie stanowisko zajmuje. Odpowiadasz wyłącznie tym jednym zdaniem, bez wstępu, bez cudzysłowu."

9

Dodaj drugą wiadomość, z rolą „User", i przeciągnij do niej pole tekst z panelu danych wejściowych. Uwaga: tekst, nie data. Kliknij „Execute step".

Na ekranie zobaczyszw panelu OUTPUT, w polu text, jedno zdanie.

Cała strona sprowadzona do jednego zdania
Rys. 6.4. Cała strona sprowadzona do jednego zdania

Zapisz wynik każdego źródła

10

Kliknij plus przy węźle OpenAI, dodaj kolejny węzeł „Google Sheets" i wybierz akcję „Append row in sheet" (dopisz wiersz). Użyj tych samych danych dostępowych, wskaż ten sam dokument i zakładkę „Wyniki".

W mapowaniu kolumn przeciągnij text z odpowiedzi modelu do kolumny Teza.

Kolumna Link wymaga więcej uwagi, bo adresu nie ma już w panelu wejściowym. Rozwiń w lewym panelu węzeł „Get row(s) in sheet", ten sam, od którego zaczynał się przepływ, znajdź w nim pole Link i przeciągnij je do pustego pola. W polu pojawi się dłuższe wyrażenie niż zwykle, bo n8n musi zapisać nie tylko nazwę pola, ale i to, z którego węzła je bierze.

Mapowanie wyniku na kolumny arkusza
Rys. 6.5. Mapowanie wyniku na kolumny arkusza
11

Kliknij „Execute workflow", czyli uruchom cały przepływ, nie pojedynczy krok. Poczekaj i otwórz zakładkę „Wyniki" w arkuszu.

Na ekranie zobaczyszsześć nowych wierszy, każdy z adresem i jednym zdaniem. Bez pętli. Bez węzła „Loop Over Items" z rozdziału 5.

Scal i zsyntetyzuj

12

Wróć do węzła OpenAI z kroku 6. Z jego wyjścia wychodzi już jedno połączenie, do zapisu w arkuszu. Dociągnij z tego samego wyjścia drugie połączenie, do nowego węzła. Wpisz „Summarize" i wybierz węzeł z listy.

Przepływ rozdziela się teraz na dwie równoległe gałęzie wychodzące z jednego punktu. To nie to samo, co rozgałęzienie warunkowe z rozdziału 5. Tam element szedł jedną drogą albo drugą. Tu każdy element idzie obiema naraz.

13

W sekcji „Fields to Summarize" (pola do podsumowania) wskaż pole text, czyli odpowiedź modelu z kroku 6. Jako operację wybierz „Concatenate" (sklej), a w opcji separatora ustaw nową linię. Kliknij „Execute step".

Na ekranie zobaczyszw panelu OUTPUT już nie sześć elementów, tylko jeden. W środku jedno pole tekstowe, a w nim wszystkie sześć zdań, jedno pod drugim.

Sześć osobnych odpowiedzi staje się jednym tekstem
Rys. 6.6. Sześć osobnych odpowiedzi staje się jednym tekstem
14

Kliknij plus przy węźle „Summarize" i dodaj drugi węzeł „OpenAI", z tymi samymi danymi dostępowymi i tym samym modelem.

Wiadomość z rolą „System":

„Dostajesz kilka zdań, z których każde opisuje inne źródło piszące o marketingu, produkcie i zachowaniach użytkowników. Napisz dwa zdania. W pierwszym powiedz, co te źródła mają wspólnego, jaki temat albo założenie wraca u kilku z nich. W drugim powiedz, w czym się rozchodzą albo czego żadne z nich nie porusza. Nie wymieniaj źródeł po kolei, mów o całości."

Wiadomość z rolą „User": przeciągnij pole ze sklejonym tekstem z panelu danych wejściowych. Kliknij „Execute step".

15

Kliknij plus przy drugim węźle OpenAI i dodaj trzeci węzeł „Google Sheets" z akcją „Append row in sheet", wskazujący na tę samą zakładkę „Wyniki".

W mapowaniu: w polu Link wpisz ręcznie tekst WNIOSEK OGÓLNY. Tym razem naprawdę nie ma czego przeciągać, bo ten wiersz nie odnosi się do żadnego pojedynczego źródła. W polu Teza przeciągnij odpowiedź drugiego węzła OpenAI.

16

Kliknij „Execute workflow" jeszcze raz, od początku. Otwórz zakładkę „Wyniki".

Na ekranie zobaczyszsześć wierszy źródeł, a pod nimi jeden nowy, z etykietą WNIOSEK OGÓLNY i dwoma zdaniami porównania.

Wniosek ogólny zapisany w arkuszu
Rys. 6.7. Wniosek ogólny zapisany w arkuszu

Sprawdź, czy działa

Policz wiersze w zakładce „Wyniki". Powinno ich być siedem: sześć źródeł i jeden wniosek ogólny, zawsze na końcu, bo powstaje jako ostatni.

Co może pójść nie tak

Wariacje na temat

Rozszerz polecenie systemowe z kroku 8 tak, żeby model oprócz tezy przypisywał źródłu jedno słowo - kategorię, na przykład produkt, cena albo employer branding. Dodaj w zakładce „Wyniki" trzecią kolumnę, Kategoria, i zmapuj do niej to dodatkowe słowo. Dostaniesz tabelę, którą da się sortować i filtrować, nie tylko czytać od góry do dołu.

Zamiast czekać, aż ktoś otworzy arkusz, podłącz do drugiego węzła OpenAI trzeci węzeł: „Gmail" - „Send a message", tak jak w rozdziale 5. Wyślij sobie wniosek ogólny mailem, gdy tylko powstanie, obok wiersza w arkuszu, nie zamiast niego. Arkusz zostaje archiwum wszystkich źródeł, skrzynka - powiadomieniem o tym jednym zdaniu, które faktycznie trzeba przeczytać.

Przepływ w repozytorium

Pobierz plik 06-syntezator-researchu.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 Google Sheets i OpenAI oraz podmień arkusz na własny, razem z listą adresów w zakładce „Linki".

Filtr z rozdziału 5 odpowiadał na pytanie: czy to jest istotne. Ten system odpowiada na inne: co z tego wszystkiego wynika. Nie otwiera dwunastu zakładek za ciebie - otwiera je gdzieś indziej, czyta wszystkie naraz i, w odróżnieniu od ciebie, pamięta wszystkie osiem, nie tylko trzy ostatnie.