.obsidian/app.json
... ...
@@ -0,0 +1,3 @@
1
+{
2
+ "promptDelete": false
3
+}
... ...
\ No newline at end of file
.obsidian/appearance.json
... ...
@@ -0,0 +1 @@
1
+{}
... ...
\ No newline at end of file
.obsidian/core-plugins.json
... ...
@@ -0,0 +1,33 @@
1
+{
2
+ "file-explorer": true,
3
+ "global-search": true,
4
+ "switcher": true,
5
+ "graph": true,
6
+ "backlink": true,
7
+ "canvas": true,
8
+ "outgoing-link": true,
9
+ "tag-pane": true,
10
+ "footnotes": false,
11
+ "properties": true,
12
+ "page-preview": true,
13
+ "daily-notes": true,
14
+ "templates": true,
15
+ "note-composer": true,
16
+ "command-palette": true,
17
+ "slash-command": false,
18
+ "editor-status": true,
19
+ "bookmarks": true,
20
+ "markdown-importer": false,
21
+ "zk-prefixer": false,
22
+ "random-note": false,
23
+ "outline": true,
24
+ "word-count": true,
25
+ "slides": false,
26
+ "audio-recorder": false,
27
+ "workspaces": false,
28
+ "file-recovery": true,
29
+ "publish": false,
30
+ "sync": true,
31
+ "bases": true,
32
+ "webviewer": false
33
+}
... ...
\ No newline at end of file
.obsidian/workspace.json
... ...
@@ -0,0 +1,235 @@
1
+{
2
+ "main": {
3
+ "id": "5fe25e20fc615e15",
4
+ "type": "split",
5
+ "children": [
6
+ {
7
+ "id": "ed31e4f56661a548",
8
+ "type": "tabs",
9
+ "children": [
10
+ {
11
+ "id": "1e42444549bf026e",
12
+ "type": "leaf",
13
+ "state": {
14
+ "type": "markdown",
15
+ "state": {
16
+ "file": "Modul 4 - Integracje z uslugami/1. Webhook.md",
17
+ "mode": "source",
18
+ "source": false
19
+ },
20
+ "icon": "lucide-file",
21
+ "title": "1. Webhook"
22
+ }
23
+ }
24
+ ]
25
+ }
26
+ ],
27
+ "direction": "vertical"
28
+ },
29
+ "left": {
30
+ "id": "02ec691b0bc841cf",
31
+ "type": "split",
32
+ "children": [
33
+ {
34
+ "id": "fa6ca44f6da6a20d",
35
+ "type": "tabs",
36
+ "children": [
37
+ {
38
+ "id": "5ca128c23f44ee36",
39
+ "type": "leaf",
40
+ "state": {
41
+ "type": "file-explorer",
42
+ "state": {
43
+ "sortOrder": "alphabetical",
44
+ "autoReveal": false
45
+ },
46
+ "icon": "lucide-folder-closed",
47
+ "title": "Przeglądarka plików"
48
+ }
49
+ },
50
+ {
51
+ "id": "25ae1a9876377b5f",
52
+ "type": "leaf",
53
+ "state": {
54
+ "type": "search",
55
+ "state": {
56
+ "query": "",
57
+ "matchingCase": false,
58
+ "explainSearch": false,
59
+ "collapseAll": false,
60
+ "extraContext": false,
61
+ "sortOrder": "alphabetical"
62
+ },
63
+ "icon": "lucide-search",
64
+ "title": "Szukaj"
65
+ }
66
+ },
67
+ {
68
+ "id": "407f83272683fb90",
69
+ "type": "leaf",
70
+ "state": {
71
+ "type": "bookmarks",
72
+ "state": {},
73
+ "icon": "lucide-bookmark",
74
+ "title": "Ulubione"
75
+ }
76
+ }
77
+ ]
78
+ }
79
+ ],
80
+ "direction": "horizontal",
81
+ "width": 300
82
+ },
83
+ "right": {
84
+ "id": "066f3f1474fbf334",
85
+ "type": "split",
86
+ "children": [
87
+ {
88
+ "id": "03e6e884d75cc5ee",
89
+ "type": "tabs",
90
+ "children": [
91
+ {
92
+ "id": "62f3b2cf217ed2a1",
93
+ "type": "leaf",
94
+ "state": {
95
+ "type": "backlink",
96
+ "state": {
97
+ "file": "Modul 2 - Wstep do n8n/Czym różni się trigger od akcji.md",
98
+ "collapseAll": false,
99
+ "extraContext": false,
100
+ "sortOrder": "alphabetical",
101
+ "showSearch": false,
102
+ "searchQuery": "",
103
+ "backlinkCollapsed": false,
104
+ "unlinkedCollapsed": true
105
+ },
106
+ "icon": "links-coming-in",
107
+ "title": "Linki zwrotne do Czym różni się trigger od akcji"
108
+ }
109
+ },
110
+ {
111
+ "id": "88d311d37d30bc7e",
112
+ "type": "leaf",
113
+ "state": {
114
+ "type": "outgoing-link",
115
+ "state": {
116
+ "file": "Modul 2 - Wstep do n8n/Czym różni się trigger od akcji.md",
117
+ "linksCollapsed": false,
118
+ "unlinkedCollapsed": true
119
+ },
120
+ "icon": "links-going-out",
121
+ "title": "Łącza wychodzące z Czym różni się trigger od akcji"
122
+ }
123
+ },
124
+ {
125
+ "id": "34c39f2bdc506c98",
126
+ "type": "leaf",
127
+ "state": {
128
+ "type": "tag",
129
+ "state": {
130
+ "sortOrder": "frequency",
131
+ "useHierarchy": true,
132
+ "showSearch": false,
133
+ "searchQuery": ""
134
+ },
135
+ "icon": "lucide-tags",
136
+ "title": "Tagi"
137
+ }
138
+ },
139
+ {
140
+ "id": "7d3fe10a94a96a3d",
141
+ "type": "leaf",
142
+ "state": {
143
+ "type": "all-properties",
144
+ "state": {
145
+ "sortOrder": "frequency",
146
+ "showSearch": false,
147
+ "searchQuery": ""
148
+ },
149
+ "icon": "lucide-archive",
150
+ "title": "Wszystkie atrybuty"
151
+ }
152
+ },
153
+ {
154
+ "id": "afcb5652fc83df54",
155
+ "type": "leaf",
156
+ "state": {
157
+ "type": "outline",
158
+ "state": {
159
+ "file": "Modul 2 - Wstep do n8n/Czym różni się trigger od akcji.md",
160
+ "followCursor": false,
161
+ "showSearch": false,
162
+ "searchQuery": ""
163
+ },
164
+ "icon": "lucide-list",
165
+ "title": "Konspekt Czym różni się trigger od akcji"
166
+ }
167
+ }
168
+ ]
169
+ }
170
+ ],
171
+ "direction": "horizontal",
172
+ "width": 300,
173
+ "collapsed": true
174
+ },
175
+ "left-ribbon": {
176
+ "hiddenItems": {
177
+ "switcher:Otwórz okno szybkiego wyboru": false,
178
+ "graph:Otwórz graf": false,
179
+ "canvas:Stwórz nową tablicę": false,
180
+ "daily-notes:Otwórz codzienną notatkę": false,
181
+ "templates:Wstaw szablon": false,
182
+ "command-palette:Otwórz listę poleceń": false,
183
+ "bases:Stwórz nową bazę danych": false
184
+ }
185
+ },
186
+ "active": "1e42444549bf026e",
187
+ "lastOpenFiles": [
188
+ "Modul 6 - Warsztaty praktyczne/4. Telegram.md",
189
+ "Modul 6 - Warsztaty praktyczne/3. Google Sheet.md",
190
+ "Modul 6 - Warsztaty praktyczne/2. Pogoda.md",
191
+ "Modul 6 - Warsztaty praktyczne/1. ChatBot.md",
192
+ "Modul 5 - Implementacja agenta AI/4. Połączenie API i tokeny.md",
193
+ "Modul 5 - Implementacja agenta AI/3. Rola promptu w agencie AI.md",
194
+ "Modul 5 - Implementacja agenta AI/2. Rola modelu językowego.md",
195
+ "Modul 5 - Implementacja agenta AI/1. Czym jest agent AI w kontekście automatyzacji.md",
196
+ "Modul 4 - Integracje z uslugami/2.1 GCP Tworzenie porjektu.md",
197
+ "Modul 4 - Integracje z uslugami/2. Warsztat GCP.md",
198
+ "Modul 4 - Integracje z uslugami/1. Webhook.md",
199
+ "Modul 3 - Budujemy pierwsza automatyzacje/Przesłanie pobranych danych do wskazanego miejsca (np. komunikator firmowy).md",
200
+ "Modul 3 - Budujemy pierwsza automatyzacje/Utworzenie funkcji harmonogramu (Cron).md",
201
+ "Modul 3 - Budujemy pierwsza automatyzacje/Pobranie danych z zewnętrznego serwisu.md",
202
+ "Modul 3 - Budujemy pierwsza automatyzacje/Analiza działania i struktury danych.md",
203
+ "Modul 2 - Wstep do n8n/Przegląd popularnych node’ów.md",
204
+ "Modul 2 - Wstep do n8n/Po co nam n8n.md",
205
+ "Modul 2 - Wstep do n8n/Jak działa przepływ (flow → node → dane → kolejny node).md",
206
+ "Modul 2 - Wstep do n8n/Interfejs n8n i logika działania.md",
207
+ "Modul 2 - Wstep do n8n/Czym różni się trigger od akcji.md",
208
+ "Modul 1 - Wprowadzenie do automatyzacji i n8n/Przedstawienie narzędzia n8n.md",
209
+ "Modul 1 - Wprowadzenie do automatyzacji i n8n/Jak przeprowadzić automatyzację bez umiejętności programowania.md",
210
+ "Modul 1 - Wprowadzenie do automatyzacji i n8n/Czym są systemy automatyzacji no-code.md",
211
+ "Modul 1 - Wprowadzenie do automatyzacji i n8n/Co to jest automatyzacja.md",
212
+ "grafiki/m4_p1-webhook-title.png",
213
+ "grafiki/Gemini_Generated_Image_hiodd9hiodd9hiod.png",
214
+ "grafiki/m4_p9-gcp-api-biblioteki.png",
215
+ "grafiki/Gemini_Generated_Image_mbs9qbmbs9qbmbs9.png",
216
+ "grafiki/m4_p8-gcp-odbiorcy-oauth.png",
217
+ "grafiki/Gemini_Generated_Image_uczh8luczh8luczh.png",
218
+ "grafiki/m4_p7-gcp-gmail-konfiguracja.png",
219
+ "grafiki/Gemini_Generated_Image_eznsuoeznsuoezns.png",
220
+ "grafiki/m4_p6-gcp-redirect-uri.png",
221
+ "grafiki/Gemini_Generated_Image_l8l89hl8l89hl8l8.png",
222
+ "Modul 6 - Warsztaty praktyczne/5. Gemini.md",
223
+ "Modul 6 - Warsztaty praktyczne/6. SSH.md",
224
+ "Modul 6 - Warsztaty praktyczne/6. SSH",
225
+ "Modul 6 - Warsztaty praktyczne/10. ",
226
+ "Modul 6 - Warsztaty praktyczne/9. PDF converter",
227
+ "Modul 6 - Warsztaty praktyczne/9. ",
228
+ "Modul 6 - Warsztaty praktyczne/7. ",
229
+ "Modul 6 - Warsztaty praktyczne/6. ",
230
+ "Modul 6 - Warsztaty praktyczne/5. ",
231
+ "Modul 6 - Warsztaty praktyczne/4. ",
232
+ "Modul 6 - Warsztaty praktyczne/3. Sheet",
233
+ "Modul 6 - Warsztaty praktyczne/1. ChatBot"
234
+ ]
235
+}
... ...
\ No newline at end of file
Modul 1 - Wprowadzenie do automatyzacji i n8n/Co to jest automatyzacja.md
... ...
@@ -0,0 +1,17 @@
1
+![Automatyzacja](../grafiki/m1_p1_automatyzacja.png)
2
+# Co to jest automatyzacja?
3
+
4
+Automatyzacja to proces, w którym powtarzalne zadania i czynności są wykonywane przez systemy lub narzędzia, zamiast przez człowieka. Celem automatyzacji jest oszczędność czasu, ograniczenie błędów oraz zwiększenie efektywności pracy.
5
+
6
+W praktyce automatyzacja polega na:
7
+- Przekazaniu rutynowych obowiązków maszynom lub oprogramowaniu,
8
+- Ustawieniu reguł, które uruchamiają określone działania automatycznie,
9
+- Integracji różnych narzędzi i usług, aby współpracowały bez ręcznej ingerencji.
10
+
11
+Przykłady automatyzacji w firmie:
12
+- Automatyczne wysyłanie powiadomień do zespołu,
13
+- Przenoszenie danych między systemami (np. z formularza do arkusza Google Sheets),
14
+- Tworzenie raportów i podsumowań bez udziału pracownika,
15
+- Wykrywanie i klasyfikacja zgłoszeń klientów przez AI.
16
+
17
+Automatyzacja nie wymaga programowania – dzięki narzędziom no-code (np. n8n) każdy może tworzyć własne automaty, nawet bez wiedzy technicznej.
... ...
\ No newline at end of file
Modul 1 - Wprowadzenie do automatyzacji i n8n/Czym s\304\205 systemy automatyzacji no-code.md
... ...
@@ -0,0 +1,58 @@
1
+
2
+![Systemy no-code](../grafiki/m1_p2_no-code-title.png)
3
+
4
+Wyobraź sobie, że chcesz zautomatyzować powtarzalne zadania w pracy, ale nie znasz programowania. Systemy no-code pozwalają Ci to zrobić za pomocą prostych, wizualnych narzędzi – wystarczy przeciągnąć odpowiednie bloki i połączyć je w logiczny przepływ.
5
+
6
+**Jak działają?**
7
+- Zamiast pisać kod, korzystasz z gotowych elementów (np. „wyślij e-mail”, „dodaj wiersz do arkusza”, „wyślij powiadomienie na Slacku”).
8
+- Łączysz je w sekwencje, które automatycznie wykonują zadania za Ciebie.
9
+- Możesz integrować różne aplikacje, nawet jeśli pochodzą od różnych producentów.
10
+
11
+---
12
+
13
+### **Przykłady zastosowań no-code**
14
+
15
+- Automatyczne przesyłanie danych z formularza do arkusza Google Sheets.
16
+- Wysyłanie powiadomień do zespołu, gdy pojawi się nowe zgłoszenie.
17
+- Tworzenie raportów i zestawień bez udziału programisty.
18
+- Integracja narzędzi marketingowych, sprzedażowych i obsługi klienta.
19
+- Synchronizacja plików między różnymi usługami chmurowymi.
20
+
21
+---
22
+
23
+### **Najpopularniejsze platformy no-code**
24
+
25
+- **Microsoft Power Automate**
26
+ - Pozwala automatyzować procesy w ekosystemie Microsoft 365 (Outlook, SharePoint, Teams) i łączyć je z zewnętrznymi usługami.
27
+ - Przykład: Automatyczne zapisywanie załączników z maila na SharePoint i powiadamianie zespołu na Teams.
28
+ - Gotowe szablony ułatwiają start nawet osobom bez doświadczenia.
29
+
30
+- **Zapier**
31
+ - Łączy ponad 5000 aplikacji i pozwala tworzyć „Zaps” – automatyczne przepływy uruchamiane przez wybrane zdarzenia.
32
+ - Przykład: Po otrzymaniu nowego wpisu w Google Sheets, wyślij powiadomienie na Slacka.
33
+ - Bardzo intuicyjny interfejs, idealny do prostych automatyzacji.
34
+
35
+- **Make (dawniej Integromat)**
36
+ - Umożliwia budowanie złożonych automatyzacji z wieloma krokami, warunkami i transformacjami danych.
37
+ - Przykład: Pobierz dane z API, przetwórz je i wyślij raport e-mailem.
38
+ - Świetny wybór dla osób, które chcą tworzyć bardziej rozbudowane automatyzacje bez programowania.
39
+
40
+- **IFTTT (If This Then That)**
41
+ - Proste reguły typu „jeśli X, to Y” – idealne do automatyzacji codziennych czynności i smart home.
42
+ - Przykład: Jeśli wyślesz e-mail, automatycznie zapisz załącznik na Dysku Google.
43
+ - Bardzo prosty interfejs, szybkie wdrożenie.
44
+
45
+- **n8n**
46
+ - Otwarte narzędzie do automatyzacji i integracji, daje dużą elastyczność i kontrolę nad przepływami.
47
+ - Przykład: Zbuduj automatyzację, która pobiera dane z różnych źródeł, przetwarza je i wysyła do wybranej aplikacji.
48
+ - Możliwość wdrożenia lokalnie lub w chmurze – idealne dla firm dbających o bezpieczeństwo danych.
49
+
50
+---
51
+
52
+### **Dlaczego warto korzystać z no-code?**
53
+
54
+- Oszczędność czasu i pieniędzy – nie musisz zatrudniać programisty.
55
+- Szybkie wdrożenie automatyzacji nawet przez osoby nietechniczne.
56
+- Łatwość modyfikacji i skalowania rozwiązań.
57
+- Integracja z wieloma popularnymi aplikacjami i usługami.
58
+- Większa innowacyjność i elastyczność w codziennej pracy.
... ...
\ No newline at end of file
Modul 1 - Wprowadzenie do automatyzacji i n8n/Jak przeprowadzi\304\207 automatyzacj\304\231 bez umiej\304\231tno\305\233ci programowania.md
... ...
@@ -0,0 +1,67 @@
1
+
2
+![Automatyzacja bez kodowania](../grafiki/m1_p3-bez-programowania-title.png)
3
+
4
+Wyobraź sobie, że codziennie wykonujesz te same, powtarzalne czynności: kopiujesz dane, wysyłasz powiadomienia, generujesz raporty. Zamiast tracić czas na rutynę, możesz skorzystać z narzędzi no-code i sprawić, że te zadania wykonają się same – bez pisania ani jednej linijki kodu!
5
+
6
+---
7
+
8
+### **Krok po kroku – jak zacząć?**
9
+
10
+1. **Zdefiniuj cel automatyzacji**
11
+ - Zastanów się, które zadania są powtarzalne i zajmują najwięcej czasu (np. kopiowanie danych, wysyłanie powiadomień, generowanie raportów).
12
+ - Przykład: Chcesz, aby nowe zgłoszenia z formularza trafiały automatycznie do arkusza Google Sheets.
13
+
14
+2. **Wybierz narzędzie no-code**
15
+ - Przykłady: n8n, Zapier, Make, Power Automate, IFTTT.
16
+ - Sprawdź, które narzędzie najlepiej integruje się z Twoimi aplikacjami (np. Gmail, Google Sheets, Slack).
17
+ - Wiele z nich oferuje gotowe szablony – możesz zacząć od prostych automatyzacji i stopniowo je rozbudowywać.
18
+
19
+3. **Zaprojektuj przepływ pracy**
20
+ - Skorzystaj z interfejsu „przeciągnij i upuść”.
21
+ - Dodaj bloki: wejście (np. nowy e-mail), akcja (np. dodaj wiersz do arkusza), wyjście (np. wyślij powiadomienie).
22
+ - Połącz je w logiczną sekwencję.
23
+ - Przykład: Po otrzymaniu nowego maila z załącznikiem, zapisz plik na Dysku Google i wyślij powiadomienie na Slacku.
24
+
25
+4. **Przetestuj automatyzację**
26
+ - Uruchom przepływ i sprawdź, czy działa zgodnie z oczekiwaniami.
27
+ - W razie potrzeby popraw ustawienia lub dodaj kolejne kroki.
28
+ - Testuj różne scenariusze, aby mieć pewność, że automatyzacja działa niezawodnie.
29
+
30
+5. **Wdrażaj i rozwijaj**
31
+ - Po udanym teście możesz wdrożyć automatyzację na stałe.
32
+ - Dodawaj kolejne integracje i usprawnienia według potrzeb.
33
+ - Monitoruj efekty i modyfikuj przepływy, gdy pojawią się nowe potrzeby.
34
+
35
+---
36
+
37
+### **Przykład praktyczny**
38
+
39
+Załóżmy, że chcesz automatycznie zapisywać załączniki z maila na Dysku Google i informować zespół na Slacku:
40
+
41
+- Wybierasz narzędzie (np. Zapier).
42
+- Ustawiasz trigger: „nowy e-mail z załącznikiem”.
43
+- Dodajesz akcję: „zapisz załącznik na Dysku Google”.
44
+- Dodajesz kolejną akcję: „wyślij powiadomienie na Slacku”.
45
+- Testujesz i gotowe!
46
+
47
+Możesz rozbudować ten przepływ o kolejne kroki, np. automatyczne przypisanie zadania w Asanie lub wysłanie podsumowania do Google Sheets.
48
+
49
+---
50
+
51
+### **Dlaczego warto?**
52
+
53
+- Oszczędzasz czas i eliminujesz rutynę.
54
+- Nie musisz znać programowania.
55
+- Możesz szybko wdrażać nowe pomysły i usprawnienia.
56
+- Automatyzacja jest dostępna dla każdego!
57
+- Zyskujesz więcej czasu na kreatywne i rozwojowe zadania.
58
+
59
+---
60
+
61
+### **Wskazówki praktyczne**
62
+
63
+- Zacznij od prostych automatyzacji i stopniowo je rozbudowuj.
64
+- Korzystaj z gotowych szablonów dostępnych w narzędziach no-code.
65
+- Testuj automatyzacje na małej próbce danych, zanim wdrożysz je na większą skalę.
66
+- Dokumentuj swoje przepływy, aby łatwo je modyfikować w przyszłości.
67
+- Nie bój się eksperymentować – większość narzędzi no-code jest bardzo intuicyjna!
... ...
\ No newline at end of file
Modul 1 - Wprowadzenie do automatyzacji i n8n/Przedstawienie narz\304\231dzia n8n.md
... ...
@@ -0,0 +1,103 @@
1
+![n8n – automatyzacja dla każdego](../grafiki/m1_p4-n8n-title.png)
2
+
3
+n8n to nowoczesne, otwarte narzędzie do automatyzacji procesów i integracji aplikacji, które pozwala tworzyć zaawansowane przepływy pracy bez programowania.
4
+
5
+---
6
+
7
+### **Czym jest n8n?**
8
+
9
+- To platforma typu no-code/low-code, która umożliwia łączenie różnych aplikacji, usług i systemów w automatyczne przepływy (workflows).
10
+- Pozwala na integrację z ponad 300 aplikacjami (np. Gmail, Slack, Google Sheets, Discord, Twitter, API REST).
11
+- Umożliwia budowanie logiki warunkowej, przetwarzanie danych, obsługę pętli i wiele więcej – wszystko w intuicyjnym, graficznym edytorze.
12
+- Jest dostępna jako aplikacja webowa, którą możesz uruchomić lokalnie, na serwerze lub w chmurze.
13
+
14
+---
15
+
16
+### **Jak uruchomić n8n?**
17
+
18
+1. **Lokalnie na komputerze**
19
+ - Wymagania: Node.js (zalecana wersja 18+), npm lub yarn.
20
+ - Instalacja:
21
+ ```bash
22
+ npm install n8n -g
23
+ n8n start
24
+ ```
25
+ - Po uruchomieniu edytor dostępny jest pod adresem http://localhost:5678
26
+
27
+2. **W kontenerze Docker**
28
+ - Najprostszy sposób na uruchomienie n8n na serwerze lub VPS:
29
+ ```bash
30
+ docker run -it --rm -p 5678:5678 n8nio/n8n
31
+ ```
32
+ - Możesz też skorzystać z gotowych plików docker-compose.
33
+
34
+3. **W chmurze (n8n.cloud)**
35
+ - Dostępna jest wersja SaaS – nie wymaga instalacji, wystarczy założyć konto na stronie https://n8n.io
36
+
37
+---
38
+
39
+### **Licencja n8n**
40
+
41
+- n8n jest dostępne na licencji [Fair Code](https://faircode.io/), która pozwala na darmowe użycie do celów niekomercyjnych i testowych.
42
+- Wersja open-source jest dostępna na GitHubie: https://github.com/n8n-io/n8n
43
+- W przypadku wdrożeń komercyjnych (np. w firmie, dla klientów) wymagane jest wykupienie licencji lub korzystanie z n8n.cloud.
44
+
45
+---
46
+
47
+### **Dlaczego warto wybrać n8n?**
48
+
49
+- Bardzo duża elastyczność i możliwość rozbudowy przepływów.
50
+- Otwartość – możesz samodzielnie hostować i modyfikować narzędzie.
51
+- Integracje z popularnymi aplikacjami i API.
52
+- Aktywna społeczność i bogata dokumentacja.
53
+- Możliwość automatyzacji zadań, które w innych narzędziach są płatne lub ograniczone.
54
+
55
+---
56
+
57
+### **Przykładowe zastosowania n8n**
58
+
59
+- Automatyczne pobieranie danych z różnych źródeł i generowanie raportów.
60
+- Wysyłanie powiadomień do zespołu na Slacku po pojawieniu się nowego zgłoszenia.
61
+- Integracja systemów CRM, e-mail, social media i narzędzi marketingowych.
62
+- Przetwarzanie plików, synchronizacja danych, obsługa webhooków.
63
+
64
+---
65
+
66
+### **Automatyzacja w praktyce – jak działa n8n?**
67
+
68
+n8n pozwala tworzyć automatyczne przepływy pracy (workflows), które łączą różne aplikacje i usługi bez potrzeby programowania. Każdy workflow składa się z tzw. "node'ów" – bloków, które wykonują konkretne zadania (np. pobierają dane, wysyłają e-mail, przetwarzają pliki, komunikują się z API).
69
+
70
+**Jak wygląda proces automatyzacji w n8n?**
71
+
72
+1. **Wybierasz trigger** – czyli zdarzenie, które uruchamia workflow (np. nowy e-mail, webhook, określony czas).
73
+2. **Dodajesz kolejne kroki** – np. pobranie danych z Google Sheets, przetworzenie ich, wysłanie powiadomienia na Slacku.
74
+3. **Łączysz node'y w graficznym edytorze** – wszystko odbywa się metodą "przeciągnij i upuść".
75
+4. **Testujesz i uruchamiasz automatyzację** – możesz obserwować przebieg procesu i analizować wyniki.
76
+
77
+---
78
+
79
+### **Przykład workflow w n8n**
80
+
81
+Załóżmy, że chcesz:
82
+- Automatycznie pobierać nowe zgłoszenia z formularza Google Forms,
83
+- Zapisywać je w arkuszu Google Sheets,
84
+- Wysyłać powiadomienie do zespołu na Slacku.
85
+
86
+W n8n:
87
+- Ustawiasz trigger: nowy wpis w Google Forms (np. przez webhook lub integrację z Google Sheets).
88
+- Dodajesz node: zapis danych do Google Sheets.
89
+- Dodajesz node: wysłanie wiadomości na Slacku.
90
+- Łączysz wszystko w jeden workflow i uruchamiasz.
91
+
92
+---
93
+
94
+### **n8n a inne narzędzia**
95
+
96
+- n8n daje większą elastyczność niż typowe platformy no-code, bo pozwala na rozbudowaną logikę, pętle, warunki, obsługę API i własne skrypty.
97
+- Możesz hostować n8n samodzielnie, co daje pełną kontrolę nad danymi i kosztami.
98
+- Wersja open-source jest darmowa do użytku niekomercyjnego, a licencja Fair Code pozwala na testy i naukę bez opłat.
99
+
100
+---
101
+
102
+**Podsumowanie:**
103
+n8n to narzędzie, które pozwala każdemu – bez programowania – zautomatyzować pracę, połączyć różne systemy i tworzyć własne rozwiązania integracyjne. Dzięki otwartości, elastyczności i bogatej dokumentacji, n8n jest świetnym wyborem zarówno dla początkujących, jak i zaawansowanych użytkowników.
Modul 2 - Wstep do n8n/Czym r\303\263\305\274ni si\304\231 trigger od akcji.md
... ...
@@ -0,0 +1,53 @@
1
+
2
+![Trigger vs Akcja](../grafiki/m2_p1-trigger-vs-akcja-title.png)
3
+
4
+W n8n (i innych narzędziach automatyzacji) przepływ pracy składa się z różnych bloków, które pełnią określone funkcje. Najważniejsze z nich to **trigger** i **akcja**.
5
+
6
+---
7
+
8
+### **Trigger – co to jest?**
9
+
10
+Trigger to element, który uruchamia cały workflow. Jest punktem startowym automatyzacji – reaguje na określone zdarzenie lub warunek.
11
+
12
+**Przykłady triggerów:**
13
+- Otrzymanie nowego e-maila
14
+- Dodanie nowego wiersza do arkusza Google Sheets
15
+- Otrzymanie webhooka (np. z formularza na stronie)
16
+- Określony czas (np. codziennie o 8:00)
17
+
18
+W n8n trigger to pierwszy node w workflow, który „wybudza” automatyzację do działania.
19
+
20
+---
21
+
22
+### **Akcja – co to jest?**
23
+
24
+Akcja to zadanie, które jest wykonywane po uruchomieniu workflow przez trigger. Może być ich wiele w jednym przepływie – każda akcja realizuje konkretną funkcję.
25
+
26
+**Przykłady akcji:**
27
+- Wysłanie powiadomienia na Slacku
28
+- Dodanie rekordu do bazy danych
29
+- Przetworzenie pliku i zapisanie go na Dysku Google
30
+- Wysłanie e-maila z podsumowaniem
31
+
32
+W n8n akcje to kolejne node'y, które wykonują zadania po wyzwoleniu przez trigger.
33
+
34
+---
35
+
36
+### **Przykład praktyczny**
37
+
38
+Załóżmy, że chcesz:
39
+- Po otrzymaniu nowego zgłoszenia z formularza (trigger: webhook)
40
+- Dodać dane do arkusza Google Sheets (akcja)
41
+- Wysłać powiadomienie do zespołu na Slacku (akcja)
42
+
43
+Workflow w n8n:
44
+1. **Trigger:** Webhook odbiera zgłoszenie
45
+2. **Akcja:** Dodaj dane do Google Sheets
46
+3. **Akcja:** Wyślij wiadomość na Slacku
47
+
48
+---
49
+
50
+**Podsumowanie:**
51
+- **Trigger** uruchamia workflow, reaguje na zdarzenie
52
+- **Akcja** wykonuje konkretne zadanie po wyzwoleniu przez trigger
53
+- Dzięki temu możesz budować automatyzacje, które reagują na różne sytuacje i realizują dowolne działania!
... ...
\ No newline at end of file
Modul 2 - Wstep do n8n/Interfejs n8n i logika dzia\305\202ania.md
... ...
@@ -0,0 +1,42 @@
1
+
2
+![Interfejs n8n](../grafiki/m2_p2-interfejs-title.png)
3
+# Interfejs n8n i logika działania
4
+
5
+
6
+n8n oferuje intuicyjny, graficzny interfejs, który pozwala na łatwe projektowanie automatyzacji bez programowania. Wszystko odbywa się metodą „przeciągnij i upuść”, a każdy element workflow jest widoczny na diagramie.
7
+
8
+---
9
+
10
+### **Główne elementy interfejsu n8n**
11
+
12
+- **Canvas (płótno)** – główna przestrzeń robocza, na której budujesz workflow, dodajesz i łączysz node'y.
13
+- **Node'y (bloki)** – każdy node to pojedyncza akcja, trigger lub operacja na danych. Node'y mają różne typy: integracje z aplikacjami, logika, przetwarzanie danych.
14
+- **Panel właściwości** – po kliknięciu node'a możesz skonfigurować jego ustawienia (np. dane wejściowe, parametry, autoryzację).
15
+- **Menu boczne** – dostęp do listy node'ów, ustawień workflow, historii uruchomień, dokumentacji.
16
+- **Przyciski uruchamiania/testowania** – pozwalają uruchomić workflow, przetestować go na żywo i zobaczyć wyniki.
17
+
18
+---
19
+
20
+### **Logika działania workflow w n8n**
21
+
22
+1. **Trigger** – workflow zaczyna się od triggera, który reaguje na zdarzenie (np. nowy e-mail, webhook, określony czas).
23
+2. **Przepływ danych** – dane przechodzą przez kolejne node'y, gdzie są przetwarzane, filtrowane, modyfikowane.
24
+3. **Akcje** – workflow wykonuje zadania, np. wysyła powiadomienia, zapisuje dane, komunikuje się z API.
25
+4. **Warunki i pętle** – możesz dodawać logikę warunkową (if/else), pętle, rozgałęzienia, aby workflow był bardziej zaawansowany.
26
+5. **Wynik** – na końcu workflow możesz zobaczyć rezultat działania, np. raport, wiadomość, zapisane dane.
27
+
28
+---
29
+
30
+### **Przykład prostego workflow w n8n**
31
+
32
+- **Trigger:** Otrzymanie nowego zgłoszenia przez webhook
33
+- **Node:** Przetwarzanie danych (np. sprawdzenie poprawności)
34
+- **Node:** Dodanie danych do Google Sheets
35
+- **Node:** Wysłanie powiadomienia na Slacku
36
+
37
+Każdy krok jest widoczny na diagramie, możesz go testować, modyfikować i rozbudowywać według potrzeb.
38
+
39
+---
40
+
41
+**Podsumowanie:**
42
+Interfejs n8n jest przejrzysty i elastyczny, a logika działania workflow pozwala na budowanie zarówno prostych, jak i bardzo zaawansowanych automatyzacji – wszystko bez programowania!
... ...
\ No newline at end of file
Modul 2 - Wstep do n8n/Jak dzia\305\202a przep\305\202yw (flow \342\206\222 node \342\206\222 dane \342\206\222 kolejny node).md
... ...
@@ -0,0 +1,88 @@
1
+
2
+![Flow w n8n](../grafiki/m2_p3-flow-title.png)
3
+
4
+
5
+W n8n każdy workflow to sekwencja połączonych ze sobą node'ów, przez które przepływają dane. Zrozumienie tego mechanizmu jest kluczowe dla tworzenia efektywnych automatyzacji.
6
+
7
+---
8
+
9
+### **Podstawowa logika przepływu**
10
+
11
+Workflow w n8n działa w sposób sekwencyjny:
12
+
13
+1. **Trigger uruchamia workflow** – pierwszym elementem jest zawsze trigger (np. webhook, harmonogram, nowy e-mail)
14
+2. **Dane trafiają do pierwszego node'a** – trigger przekazuje dane wejściowe (input) do następnego node'a
15
+3. **Node przetwarza dane** – każdy node wykonuje swoją funkcję: pobiera, modyfikuje, filtruje lub wysyła dane
16
+4. **Dane płyną do kolejnego node'a** – wyjście (output) jednego node'a staje się wejściem (input) następnego
17
+5. **Workflow kończy się** – gdy wszystkie node'y wykonają swoje zadania lub gdy nie ma już kolejnych kroków
18
+
19
+---
20
+
21
+### **Jak wyglądają dane między node'ami?**
22
+
23
+Dane w n8n przechodzą w formacie **JSON**. Każdy node może:
24
+- Odczytać dane z poprzedniego kroku
25
+- Przetworzyć je (np. wyfiltrować, połączyć, przekształcić)
26
+- Przekazać je dalej do kolejnego node'a
27
+
28
+**Przykład:**
29
+```json
30
+{
31
+ "name": "Jan Kowalski",
32
+ "email": "jan@example.com",
33
+ "status": "aktywny"
34
+}
35
+```
36
+
37
+Taki obiekt może być przekazywany między node'ami i każdy z nich może operować na tych danych.
38
+
39
+---
40
+
41
+### **Praktyczny przykład przepływu**
42
+
43
+Załóżmy workflow, który:
44
+1. Odbiera zgłoszenie z formularza (webhook)
45
+2. Zapisuje dane do Google Sheets
46
+3. Wysyła powiadomienie na Slacku
47
+
48
+**Przepływ danych:**
49
+
50
+**Node 1: Webhook (trigger)**
51
+- Odbiera dane z formularza
52
+- Output: `{ "name": "Anna", "message": "Problem z logowaniem" }`
53
+
54
+**Node 2: Google Sheets**
55
+- Input: dane z webhooka
56
+- Akcja: dodaje wiersz do arkusza
57
+- Output: potwierdzenie zapisu
58
+
59
+**Node 3: Slack**
60
+- Input: dane z webhooka i potwierdzenie z Google Sheets
61
+- Akcja: wysyła wiadomość "Nowe zgłoszenie od Anna: Problem z logowaniem"
62
+- Output: potwierdzenie wysłania
63
+
64
+---
65
+
66
+### **Kluczowe zasady przepływu danych**
67
+
68
+- **Każdy node widzi dane z poprzedniego kroku** – możesz odwołać się do nich za pomocą wyrażeń `{{ $json.nazwa_pola }}`
69
+- **Dane mogą się rozgałęziać** – jeden node może przekazać dane do wielu następnych node'ów (np. różne ścieżki w zależności od warunku)
70
+- **Można filtrować i transformować dane** – node'y typu "Set", "Function", "Filter" pozwalają modyfikować strukturę i zawartość danych
71
+- **Testowanie jest kluczowe** – n8n pozwala uruchomić workflow krok po kroku i zobaczyć, jakie dane przepływają przez każdy node
72
+
73
+---
74
+
75
+### **Rozgałęzienia i warunki**
76
+
77
+Przepływ nie musi być liniowy. Możesz użyć node'a **IF** do rozgałęzienia:
78
+
79
+```
80
+Webhook → IF (sprawdź status)
81
+ ├─ Jeśli "pilne" → Slack + Email
82
+ └─ Jeśli "normalne" → Google Sheets
83
+```
84
+
85
+---
86
+
87
+**Podsumowanie:**
88
+Przepływ w n8n to sekwencja połączonych node'ów, przez które dane przechodzą od triggera aż do końcowego działania. Każdy node przetwarza dane i przekazuje je dalej, co pozwala na budowanie zarówno prostych, jak i bardzo złożonych automatyzacji.
... ...
\ No newline at end of file
Modul 2 - Wstep do n8n/Po co nam n8n.md
... ...
@@ -0,0 +1,68 @@
1
+![Po co n8n](../grafiki/m2_p4-po-co-n8n-title.png)
2
+
3
+W świecie pełnym różnych narzędzi do automatyzacji (Zapier, Make, Power Automate) warto zadać pytanie: dlaczego właśnie n8n? Co sprawia, że to narzędzie wyróżnia się na tle konkurencji?
4
+
5
+---
6
+
7
+### **Otwartość i kontrola nad danymi**
8
+
9
+n8n jest **open-source**, co oznacza, że:
10
+- Masz pełną kontrolę nad swoimi danymi – możesz hostować n8n lokalnie lub na własnym serwerze
11
+- Nie musisz martwić się o limity, cenzurę czy zmiany w polityce prywatności dostawcy
12
+- Możesz modyfikować kod źródłowy i dostosować narzędzie do swoich potrzeb
13
+- Nie jesteś uzależniony od zewnętrznego dostawcy SaaS
14
+
15
+---
16
+
17
+### **Elastyczność i zaawansowane możliwości**
18
+
19
+W przeciwieństwie do typowych platform no-code, n8n oferuje:
20
+- **Zaawansowaną logikę** – warunki, pętle, rozgałęzienia, funkcje JavaScript
21
+- **Integrację z API** – łatwy dostęp do dowolnych usług przez HTTP Request
22
+- **Przetwarzanie danych** – node'y do filtrowania, transformacji, łączenia danych
23
+- **Możliwość tworzenia własnych node'ów** – jeśli czegoś brakuje, możesz to dodać
24
+
25
+---
26
+
27
+### **Oszczędność kosztów**
28
+
29
+- Zapier, Make i inne narzędzia SaaS pobierają opłaty za każde uruchomienie workflow (tzw. "tasks" lub "operations")
30
+- n8n self-hosted jest **darmowe** – płacisz tylko za hosting (VPS, serwer lokalny)
31
+- Dla małych i średnich firm to ogromna oszczędność, szczególnie przy dużej liczbie automatyzacji
32
+
33
+---
34
+
35
+### **Bogata biblioteka integracji**
36
+
37
+n8n oferuje ponad 300 gotowych integracji z popularnymi usługami:
38
+- Gmail, Google Sheets, Google Drive
39
+- Slack, Discord, Telegram
40
+- Notion, Airtable, Trello
41
+- OpenAI, Anthropic, Hugging Face
42
+- API REST, Webhooks, Cron
43
+
44
+I wiele, wiele więcej.
45
+
46
+---
47
+
48
+### **Dla kogo jest n8n?**
49
+
50
+- **Dla firm**, które chcą zachować kontrolę nad danymi i obniżyć koszty automatyzacji
51
+- **Dla developerów**, którzy potrzebują elastyczności i możliwości rozbudowy
52
+- **Dla entuzjastów automatyzacji**, którzy chcą tworzyć zaawansowane workflow bez ograniczeń
53
+- **Dla osób uczących się** – n8n to świetne narzędzie do nauki automatyzacji i integracji
54
+
55
+---
56
+
57
+### **Przykładowe scenariusze użycia n8n**
58
+
59
+- Automatyczne pobieranie danych z różnych źródeł i generowanie raportów
60
+- Integracja systemów CRM, e-mail, social media i narzędzi marketingowych
61
+- Budowa własnych botów i asystentów AI
62
+- Synchronizacja danych między aplikacjami
63
+- Automatyzacja procesów biznesowych bez angażowania zespołu IT
64
+
65
+---
66
+
67
+**Podsumowanie:**
68
+n8n to narzędzie dla osób, które cenią **otwartość, elastyczność i kontrolę**. Dzięki niemu możesz budować zaawansowane automatyzacje bez ograniczeń, oszczędzając czas i pieniądze. To platforma, która rośnie razem z Twoimi potrzebami.
... ...
\ No newline at end of file
Modul 2 - Wstep do n8n/Przegl\304\205d popularnych node\342\200\231\303\263w.md
... ...
@@ -0,0 +1,78 @@
1
+
2
+![Popularne nody](../grafiki/m2_p5-popularne-nody-title.png)
3
+
4
+
5
+![Popularne node'y w n8n](../grafiki/m2_p6-popularne-nody-title.png)
6
+
7
+W n8n znajdziesz setki node'ów do integracji z różnymi usługami. Poniżej przedstawiam top 10 najpopularniejszych node'ów, ze szczególnym uwzględnieniem ekosystemu Google.
8
+
9
+---
10
+
11
+### **1. Google Sheets**
12
+- Odczyt danych (Get Rows)
13
+- Dodawanie nowych wierszy (Append Row)
14
+- Aktualizacja i usuwanie danych
15
+- Przykład: automatyczne zapisywanie zgłoszeń z formularza do arkusza
16
+
17
+### **2. Google Drive**
18
+- Pobieranie plików
19
+- Przesyłanie nowych dokumentów
20
+- Tworzenie folderów
21
+- Przykład: automatyczne archiwizowanie załączników z maila
22
+
23
+### **3. Google Calendar**
24
+- Tworzenie wydarzeń
25
+- Odczyt i aktualizacja spotkań
26
+- Przykład: automatyczne dodawanie spotkań na podstawie zgłoszeń
27
+
28
+### **4. Google Gmail**
29
+- Wysyłanie e-maili
30
+- Odczyt wiadomości
31
+- Przesyłanie załączników
32
+- Przykład: automatyczne powiadomienia o nowych zgłoszeniach
33
+
34
+### **5. Google Contacts**
35
+- Dodawanie i aktualizacja kontaktów
36
+- Odczyt listy kontaktów
37
+- Przykład: synchronizacja kontaktów z CRM
38
+
39
+### **6. Google Cloud Storage**
40
+- Przesyłanie i pobieranie plików
41
+- Zarządzanie bucketami
42
+- Przykład: backup plików z workflow
43
+
44
+### **7. Google Tasks**
45
+- Tworzenie i aktualizacja zadań
46
+- Odczyt listy zadań
47
+- Przykład: automatyczne generowanie zadań na podstawie zgłoszeń
48
+
49
+### **8. Google Analytics**
50
+- Pobieranie statystyk
51
+- Analiza ruchu na stronie
52
+- Przykład: raportowanie wyników kampanii marketingowych
53
+
54
+
55
+### **9. HTTP Request**
56
+- Najbardziej uniwersalny node w n8n – pozwala na komunikację z dowolnym API (GET, POST, PUT, DELETE)
57
+- Umożliwia pobieranie, wysyłanie, aktualizowanie i usuwanie danych w zewnętrznych serwisach
58
+- Przykład: pobieranie danych o pogodzie, wysyłanie zgłoszeń do CRM, integracja z niestandardowymi usługami
59
+
60
+### **10. Slack**
61
+- Wysyłanie wiadomości na kanały i do użytkowników
62
+- Powiadomienia o nowych zgłoszeniach, raportach, błędach
63
+- Przykład: automatyczne informowanie zespołu o nowych zadaniach, przesyłanie raportów, alerty systemowe
64
+
65
+---
66
+
67
+### **Przykładowy workflow z node'ami Google**
68
+
69
+1. **Trigger:** Webhook odbiera zgłoszenie z formularza
70
+2. **Google Sheets:** Zapisuje dane zgłoszenia
71
+3. **Google Drive:** Archiwizuje załącznik
72
+4. **Google Calendar:** Dodaje spotkanie
73
+5. **Google Gmail:** Wysyła potwierdzenie do klienta
74
+
75
+---
76
+
77
+**Podsumowanie:**
78
+Node'y Google w n8n pozwalają na pełną automatyzację pracy z dokumentami, pocztą, kalendarzem, plikami i danymi. Dzięki nim możesz zbudować workflow, który zintegruje wszystkie kluczowe usługi Google w jednym miejscu – bez programowania.
... ...
\ No newline at end of file
Modul 3 - Budujemy pierwsza automatyzacje/Analiza dzia\305\202ania i struktury danych.md
... ...
@@ -0,0 +1,157 @@
1
+# Analiza działania i struktury danych
2
+
3
+![Analiza danych w n8n](../grafiki/m3_p3-analiza-danych-title.png)
4
+
5
+Kluczem do efektywnego tworzenia automatyzacji w n8n jest zrozumienie, jak dane przepływają między node'ami i jak je analizować. n8n oferuje wbudowane narzędzia do debugowania i inspekcji danych.
6
+
7
+---
8
+
9
+### **Jak wyglądają dane w n8n?**
10
+
11
+Dane w n8n przechodzą w formacie **JSON** (JavaScript Object Notation). Każdy node:
12
+- Przyjmuje dane wejściowe (input)
13
+- Przetwarza je
14
+- Zwraca dane wyjściowe (output)
15
+
16
+**Przykład struktury danych:**
17
+```json
18
+{
19
+ "name": "Anna Kowalska",
20
+ "email": "anna@example.com",
21
+ "age": 28,
22
+ "active": true,
23
+ "tags": ["vip", "newsletter"]
24
+}
25
+```
26
+
27
+---
28
+
29
+### **Inspekcja danych w node'dzie**
30
+
31
+Po uruchomieniu workflow możesz zobaczyć dane w każdym node'dzie:
32
+
33
+1. Kliknij na node, który chcesz zbadać
34
+2. W prawym panelu zobaczysz:
35
+ - **Input**: dane wejściowe z poprzedniego node'a
36
+ - **Output**: dane wyjściowe, które node przekazuje dalej
37
+3. Możesz rozwinąć obiekty JSON i zobaczyć szczegółową strukturę
38
+
39
+---
40
+
41
+### **Dostęp do danych w wyrażeniach**
42
+
43
+W n8n możesz odwoływać się do danych za pomocą wyrażeń:
44
+
45
+**Składnia:**
46
+- `{{ $json.pole }}` – odwołanie do pola z obecnego node'a
47
+- `{{ $node["Nazwa Node"].json.pole }}` – odwołanie do danych z konkretnego node'a
48
+- `{{ $item(0).$json.pole }}` – odwołanie do pierwszego elementu (jeśli dane są w tablicy)
49
+
50
+**Przykłady:**
51
+```javascript
52
+// Pobierz imię
53
+{{ $json.name }}
54
+
55
+// Pobierz pierwszy tag
56
+{{ $json.tags[0] }}
57
+
58
+// Połącz dane
59
+{{ $json.name }} - {{ $json.email }}
60
+
61
+// Odwołanie do innego node'a
62
+{{ $node["HTTP Request"].json.temperature }}
63
+```
64
+
65
+---
66
+
67
+### **Node'y do przetwarzania danych**
68
+
69
+**1. Set (ustawianie wartości)**
70
+- Tworzenie nowych pól
71
+- Modyfikacja istniejących danych
72
+- Usuwanie niepotrzebnych pól
73
+
74
+**2. Filter (filtrowanie)**
75
+- Przepuszczenie tylko tych danych, które spełniają warunek
76
+- Przykład: tylko użytkownicy starsi niż 18 lat
77
+
78
+**3. Split In Batches (dzielenie na partie)**
79
+- Podział dużych zbiorów danych na mniejsze grupy
80
+- Przydatne przy limitach API
81
+
82
+**4. Merge (łączenie danych)**
83
+- Połączenie danych z różnych źródeł
84
+- Np. dane użytkownika + dane zamówień
85
+
86
+**5. Function (kod JavaScript)**
87
+- Zaawansowane przetwarzanie przez własny kod
88
+- Przykład: złożone obliczenia, formatowanie
89
+
90
+---
91
+
92
+### **Przykład praktyczny: analiza odpowiedzi API**
93
+
94
+Załóżmy, że pobierasz dane użytkowników z API:
95
+
96
+**Odpowiedź API:**
97
+```json
98
+{
99
+ "users": [
100
+ {"id": 1, "name": "Jan", "status": "active"},
101
+ {"id": 2, "name": "Anna", "status": "inactive"},
102
+ {"id": 3, "name": "Piotr", "status": "active"}
103
+ ]
104
+}
105
+```
106
+
107
+**Zadanie:** Wyciągnij tylko aktywnych użytkowników
108
+
109
+**Workflow:**
110
+
111
+1. **HTTP Request** – pobierz dane
112
+2. **Function** – wyciągnij tablicę users:
113
+```javascript
114
+return items[0].json.users.map(user => ({json: user}));
115
+```
116
+3. **Filter** – filtruj po status:
117
+ - Warunek: `{{ $json.status }}` equals `active`
118
+4. **Set** – przygotuj finalną listę
119
+
120
+---
121
+
122
+### **Debugowanie workflow**
123
+
124
+**Uruchamianie krok po kroku:**
125
+- Kliknij na konkretny node i użyj "Execute Node"
126
+- Zobacz output i sprawdź, czy dane są poprawne
127
+
128
+**Logowanie danych:**
129
+- Dodaj node **Function** z kodem:
130
+```javascript
131
+console.log($json);
132
+return items;
133
+```
134
+- Logi zobaczysz w konsoli serwera n8n
135
+
136
+**Użyj node'a "No Operation (do nothing)":**
137
+- Dodaj go na końcu, aby zobaczyć finalne dane bez wykonywania akcji
138
+
139
+---
140
+
141
+### **Najczęstsze problemy**
142
+
143
+**Problem 1: "Cannot read property of undefined"**
144
+- Sprawdź, czy pole faktycznie istnieje w danych
145
+- Użyj operatora `?.` dla bezpiecznego dostępu: `{{ $json.user?.name }}`
146
+
147
+**Problem 2: Tablica zamiast obiektu**
148
+- Jeśli dane są w tablicy, użyj `$json[0].pole`
149
+
150
+**Problem 3: Brak danych w node'dzie**
151
+- Upewnij się, że poprzedni node zwrócił dane
152
+- Sprawdź, czy workflow został uruchomiony w całości
153
+
154
+---
155
+
156
+**Podsumowanie:**
157
+Analiza danych to fundament pracy z n8n. Dzięki inspekcji output'ów, wyrażeniom i node'om do przetwarzania możesz precyzyjnie kontrolować przepływ i transformację danych w swoich automatyzacjach.
... ...
\ No newline at end of file
Modul 3 - Budujemy pierwsza automatyzacje/Pobranie danych z zewn\304\231trznego serwisu.md
... ...
@@ -0,0 +1,68 @@
1
+![Pobieranie danych z zewnętrznego serwisu](../grafiki/m3_p4-pobranie-danych-zewnetrznych.png)
2
+
3
+# Pobieranie danych z zewnętrznego serwisu
4
+
5
+Pobieranie danych z zewnętrznych serwisów to jeden z najczęstszych scenariuszy automatyzacji w n8n. Dzięki temu możesz integrować swoje workflow z dowolną usługą internetową, systemem lub aplikacją.
6
+
7
+---
8
+
9
+### **Jak można pobierać dane z zewnętrznych serwisów?**
10
+
11
+#### 1. **Node HTTP Request**
12
+Najbardziej uniwersalny sposób. Pozwala na komunikację z dowolnym API (GET, POST, PUT, DELETE).
13
+- Wybierz metodę (najczęściej GET do pobierania danych)
14
+- Podaj adres URL API
15
+- Dodaj parametry, nagłówki, autoryzację jeśli wymaga tego serwis
16
+- Przetwarzaj odpowiedź (najczęściej w formacie JSON)
17
+
18
+**Przykład:**
19
+Pobranie danych o pogodzie z OpenWeatherMap:
20
+- URL: `https://api.openweathermap.org/data/2.5/weather?q=Warsaw&appid=TWÓJ_KLUCZ_API&units=metric`
21
+- Wynik: JSON z informacjami o temperaturze, wilgotności, opisie pogody
22
+
23
+#### 2. **Dedykowane node'y integracyjne**
24
+W n8n znajdziesz gotowe node'y do najpopularniejszych serwisów:
25
+- Google Sheets, Gmail, Drive
26
+- Slack, Discord, Teams
27
+- Airtable, Notion, Trello
28
+- Bazy danych (MySQL, PostgreSQL, MongoDB)
29
+- Serwisy e-commerce, CRM, social media
30
+
31
+Node'y te mają uproszczoną konfigurację i automatycznie obsługują autoryzację oraz formatowanie danych.
32
+
33
+#### 3. **Webhook**
34
+Możesz skonfigurować node Webhook, który odbiera dane wysyłane z zewnętrznego serwisu (np. formularz na stronie, system zgłoszeń, inna aplikacja).
35
+- Ustaw endpoint webhooka w n8n
36
+- Skonfiguruj zewnętrzny serwis, aby wysyłał dane do tego adresu
37
+- Dane pojawią się w workflow i mogą być dalej przetwarzane
38
+
39
+#### 4. **Integracja przez OAuth2 lub API Key**
40
+Wiele serwisów wymaga autoryzacji:
41
+- API Key – klucz w nagłówku lub parametrze
42
+- OAuth2 – logowanie przez konto Google, Facebook, Microsoft
43
+- Basic Auth – login i hasło
44
+
45
+n8n obsługuje te metody w node'ach HTTP Request oraz dedykowanych integracjach.
46
+
47
+---
48
+
49
+### **Praktyczny workflow: pobieranie danych z API i zapis do Google Sheets**
50
+
51
+1. **HTTP Request** – pobierz dane z API (np. lista użytkowników)
52
+2. **Set** – wyciągnij interesujące Cię pola
53
+3. **Google Sheets** – zapisz dane do arkusza
54
+4. **Slack** – wyślij powiadomienie o nowym wpisie
55
+
56
+---
57
+
58
+### **Wskazówki praktyczne**
59
+- Sprawdź dokumentację API, z którego chcesz pobierać dane
60
+- Testuj zapytania w node HTTP Request – zobacz, jak wygląda odpowiedź
61
+- Używaj node'ów Set i Function do przetwarzania i filtrowania danych
62
+- Zwracaj uwagę na limity API (rate limits)
63
+- Dbaj o bezpieczeństwo kluczy API i danych
64
+
65
+---
66
+
67
+**Podsumowanie:**
68
+W n8n możesz pobierać dane z dowolnego serwisu – przez HTTP Request, dedykowane node'y, webhooki czy integracje z autoryzacją. To otwiera ogromne możliwości automatyzacji i integracji w Twoich workflow.
... ...
\ No newline at end of file
Modul 3 - Budujemy pierwsza automatyzacje/Przes\305\202anie pobranych danych do wskazanego miejsca (np. komunikator firmowy).md
... ...
@@ -0,0 +1,180 @@
1
+![Przesłanie pobranych danych do komunikatora](../grafiki/m3_p5-przeslanie-danych-komunikator.png)
2
+
3
+# Przesłanie pobranych - kanły odbiorcze
4
+
5
+
6
+
7
+Po pobraniu i przetworzeniu danych często chcesz je wysłać do konkretnego miejsca – komunikatora firmowego (Slack, Discord, Teams), arkusza, bazy danych lub e-maila. n8n oferuje dedykowane node'y do najpopularniejszych serwisów.
8
+
9
+---
10
+
11
+### **Najpopularniejsze komunikatory w n8n**
12
+
13
+**1. Slack**
14
+- Wysyłanie wiadomości na kanały
15
+- Wiadomości prywatne
16
+- Aktualizowanie wiadomości
17
+- Reakcje, wątki
18
+
19
+**2. Discord**
20
+- Wysyłanie wiadomości na serwery/kanały
21
+- Embedy (bogate wiadomości z grafiką)
22
+- Webhooki
23
+
24
+**3. Microsoft Teams**
25
+- Wiadomości do kanałów
26
+- Powiadomienia
27
+- Karty adaptacyjne
28
+
29
+**4. Telegram**
30
+- Boty
31
+- Wiadomości do użytkowników/grup
32
+- Inline keyboards
33
+
34
+---
35
+
36
+### **Przykład 1: Wysyłanie danych na Slacka**
37
+
38
+Załóżmy, że pobierasz dane o pogodzie i chcesz wysłać je na kanał Slack.
39
+
40
+**Krok 1: Przygotuj dane**
41
+- Użyj node **HTTP Request**, aby pobrać dane o pogodzie
42
+- Przykładowy output:
43
+```json
44
+{
45
+ "city": "Warsaw",
46
+ "temperature": 15.2,
47
+ "description": "cloudy"
48
+}
49
+```
50
+
51
+**Krok 2: Dodaj node Slack**
52
+1. Dodaj node: **Slack**
53
+2. Wybierz akcję: **Post Message**
54
+3. Wybierz kanał (np. `#general`)
55
+4. Wpisz wiadomość:
56
+```
57
+Pogoda w {{ $json.city }}:
58
+Temperatura: {{ $json.temperature }}°C
59
+Opis: {{ $json.description }}
60
+```
61
+
62
+**Krok 3: Uruchom workflow**
63
+- Slack otrzyma wiadomość:
64
+```
65
+Pogoda w Warsaw:
66
+Temperatura: 15.2°C
67
+Opis: cloudy
68
+```
69
+
70
+---
71
+
72
+### **Przykład 2: Wysyłanie embeda na Discorda**
73
+
74
+Discord obsługuje bogate wiadomości (embedy) z grafiką, kolorami i polami.
75
+
76
+**Krok 1: Dodaj node Discord**
77
+1. Dodaj node: **Discord**
78
+2. Wybierz akcję: **Send Message**
79
+3. Podaj Webhook URL (utwórz go w ustawieniach kanału Discord)
80
+
81
+**Krok 2: Przygotuj embed**
82
+W polu "Message" wybierz tryb JSON i wpisz:
83
+```json
84
+{
85
+ "embeds": [
86
+ {
87
+ "title": "Nowe zgłoszenie",
88
+ "description": "{{ $json.message }}",
89
+ "color": 3447003,
90
+ "fields": [
91
+ {
92
+ "name": "Autor",
93
+ "value": "{{ $json.name }}",
94
+ "inline": true
95
+ },
96
+ {
97
+ "name": "Email",
98
+ "value": "{{ $json.email }}",
99
+ "inline": true
100
+ }
101
+ ],
102
+ "timestamp": "{{ $now }}"
103
+ }
104
+ ]
105
+}
106
+```
107
+
108
+---
109
+
110
+### **Przykład 3: Wysyłanie do Microsoft Teams**
111
+
112
+**Krok 1: Uzyskaj Webhook URL**
113
+- W Teams przejdź do kanału → Connectors → Incoming Webhook
114
+- Skopiuj URL
115
+
116
+**Krok 2: Dodaj node HTTP Request**
117
+1. Metoda: **POST**
118
+2. URL: (wklej webhook URL)
119
+3. Body (JSON):
120
+```json
121
+{
122
+ "@type": "MessageCard",
123
+ "title": "Nowy raport",
124
+ "text": "Dane zostały zaktualizowane: {{ $json.summary }}"
125
+}
126
+```
127
+
128
+---
129
+
130
+### **Formatowanie wiadomości**
131
+
132
+**Markdown w Slack:**
133
+```
134
+*pogrubienie*
135
+_kursywa_
136
+~przekreślenie~
137
+`kod`
138
+```quote```
139
+```
140
+
141
+**Mentions w Slack:**
142
+- Użytkownik: `<@USER_ID>`
143
+- Kanał: `<#CHANNEL_ID>`
144
+- Wszyscy: `<!channel>`
145
+
146
+**Kolory w Discord embed:**
147
+- Czerwony: 15158332
148
+- Zielony: 3066993
149
+- Niebieski: 3447003
150
+
151
+---
152
+
153
+### **Obsługa błędów i powiadomień**
154
+
155
+Możesz wysyłać powiadomienia o błędach:
156
+
157
+**Workflow:**
158
+1. Dodaj node **Error Trigger** (uruchamia się przy błędzie)
159
+2. Połącz z node'm Slack/Discord
160
+3. Wiadomość:
161
+```
162
+⚠️ Błąd w workflow "{{ $workflow.name }}":
163
+{{ $json.error.message }}
164
+```
165
+
166
+---
167
+
168
+### **Inne miejsc docelowych dla danych**
169
+
170
+- **Email** – node Gmail, SendGrid, SMTP
171
+- **Google Sheets** – zapis do arkusza
172
+- **Airtable** – dodawanie rekordów
173
+- **Notion** – tworzenie stron/baz danych
174
+- **Database** – MySQL, PostgreSQL, MongoDB
175
+- **Webhook** – wysyłanie do dowolnego endpointu
176
+
177
+---
178
+
179
+**Podsumowanie:**
180
+Wysyłanie danych to ostatni, ale kluczowy krok automatyzacji. Dzięki dedykowanym node'om możesz łatwo integrować n8n z komunikatorami, arkuszami, bazami danych i wieloma innymi usługami – wszystko bez konieczności ręcznego przesyłania informacji.
... ...
\ No newline at end of file
Modul 3 - Budujemy pierwsza automatyzacje/Utworzenie funkcji harmonogramu (Cron).md
... ...
@@ -0,0 +1,30 @@
1
+# Utworzenie funkcji harmonogramu (Cron)
2
+
3
+![Funkcja harmonogramu (Cron)](../grafiki/m3_p6-cron-harmonogram.png)
4
+
5
+---
6
+
7
+## Harmonogram (Cron) w n8n – wyjaśnienie
8
+
9
+W n8n harmonogram (Cron) pozwala automatycznie uruchamiać workflow w określonych odstępach czasu – np. codziennie, co godzinę, w wybrane dni tygodnia lub miesiąca. Dzięki temu możesz zautomatyzować cykliczne zadania bez ręcznego uruchamiania.
10
+
11
+### Jak to działa w n8n?
12
+- Używasz node'a **Schedule** (lub **Cron**), który jest punktem startowym workflow.
13
+- W node'cie ustawiasz regułę Cron, np. `0 8 * * 1-5` (każdy dzień roboczy o 8:00).
14
+- Po wyzwoleniu node Schedule uruchamia kolejne kroki workflow – np. pobranie danych, wysłanie raportu, synchronizację z API.
15
+
16
+#### Przykłady zastosowań:
17
+- Codzienne pobieranie danych z zewnętrznego serwisu i zapisywanie do bazy.
18
+- Automatyczne wysyłanie raportów sprzedażowych co poniedziałek.
19
+- Regularne sprawdzanie statusu systemów i powiadamianie zespołu na Slacku.
20
+
21
+#### Zalety:
22
+- Pełna automatyzacja cyklicznych procesów.
23
+- Elastyczność – możesz ustawić dowolny harmonogram.
24
+- Integracja z dowolnymi node'ami n8n (API, e-mail, komunikatory, bazy danych).
25
+
26
+---
27
+
28
+**Podsumowanie:**
29
+Node harmonogramu (Cron) w n8n to kluczowy element do budowy automatyzacji, które mają działać regularnie i bez udziału człowieka. Pozwala na precyzyjne planowanie i uruchamianie workflow w dowolnych odstępach czasu.
30
+
Modul 4 - Integracje z uslugami/1. Webhook.md
... ...
@@ -0,0 +1,264 @@
1
+![Webhook w n8n](../grafiki/m4_p1-webhook-title.png)
2
+
3
+# Webhook w n8n
4
+
5
+Webhook to jeden z najpotężniejszych i najczęściej używanych mechanizmów w automatyzacji. Zrozumienie jego działania otwiera drzwi do nieograniczonych możliwości integracji.
6
+
7
+---
8
+
9
+## Czym jest webhook?
10
+
11
+Webhook to endpoint HTTP (unikalny adres URL), który odbiera dane wysyłane z zewnętrznych źródeł w czasie rzeczywistym. To jak "odbiornik" czekający na wiadomości z zewnątrz.
12
+
13
+**Prosta analogia:**
14
+Wyobraź sobie skrzynkę pocztową z konkretnym adresem. Każdy, kto zna ten adres, może wysłać do niej list. Webhook działa podobnie – to adres, na który inne aplikacje mogą wysyłać dane.
15
+
16
+**Technicznie:**
17
+- Webhook = URL endpoint w Twojej aplikacji (n8n)
18
+- Zewnętrzny serwis wysyła żądanie HTTP POST na ten URL
19
+- Twoja aplikacja otrzymuje dane i może je przetworzyć
20
+
21
+---
22
+
23
+## Jak działa webhook?
24
+
25
+### **Tradycyjne API vs Webhook**
26
+
27
+**Tradycyjne API (polling):**
28
+```
29
+Twoja aplikacja: "Hej API, masz coś dla mnie?"
30
+API: "Nie."
31
+[5 sekund później]
32
+Twoja aplikacja: "Hej API, masz coś dla mnie?"
33
+API: "Nie."
34
+[5 sekund później]
35
+Twoja aplikacja: "Hej API, masz coś dla mnie?"
36
+API: "Tak! Oto dane."
37
+```
38
+Musisz ciągle pytać, czy są nowe dane. To nieefektywne.
39
+
40
+**Webhook (push):**
41
+```
42
+Webhook: [czeka cicho]
43
+API: "Hej! Mam nowe dane dla Ciebie!" [wysyła dane na webhook]
44
+Webhook: "Dzięki! Zaczynam przetwarzanie."
45
+```
46
+API samo przesyła dane, gdy coś się wydarzy. Efektywne i w czasie rzeczywistym.
47
+
48
+---
49
+
50
+## Rola webhooka w n8n
51
+
52
+W n8n webhook pełni kluczową rolę jako **trigger** – punkt startowy workflow.
53
+
54
+### **Webhook jako trigger:**
55
+
56
+1. **Tworzysz node Webhook** w workflow
57
+2. **n8n generuje unikalny URL** (np. `https://twoj-n8n.com/webhook/abc123`)
58
+3. **Konfigurujesz zewnętrzny serwis**, aby wysyłał dane na ten URL
59
+4. **Gdy dane dotrą, workflow się uruchamia** automatycznie
60
+
61
+---
62
+
63
+## Do czego służy webhook?
64
+
65
+### **1. Formularze kontaktowe**
66
+Gdy ktoś wypełni formularz na stronie:
67
+```
68
+Formularz → Webhook → n8n → Google Sheets + Email + Slack
69
+```
70
+
71
+### **2. Systemy zgłoszeń**
72
+Nowe zgłoszenie od klienta:
73
+```
74
+System → Webhook → n8n → CRM + Powiadomienie + Ticket
75
+```
76
+
77
+### **3. Powiadomienia z innych aplikacji**
78
+GitHub, Stripe, Shopify, WordPress – setki usług obsługuje webhooki:
79
+```
80
+GitHub (nowy commit) → Webhook → n8n → Slack (powiadomienie zespołu)
81
+```
82
+
83
+### **4. Integracja między systemami**
84
+Połączenie dwóch aplikacji, które same nie potrafią się komunikować:
85
+```
86
+System A → Webhook → n8n → System B
87
+```
88
+
89
+### **5. Automatyzacja procesów biznesowych**
90
+```
91
+E-commerce (nowe zamówienie) → Webhook → n8n →
92
+ → Aktualizacja magazynu
93
+ → Wysyłka faktury
94
+ → Powiadomienie do zespołu
95
+```
96
+
97
+---
98
+
99
+## Typy webhooków w n8n
100
+
101
+### **1. Production Webhook**
102
+- Stały, unikalny URL
103
+- Używany w środowisku produkcyjnym
104
+- Workflow musi być aktywny (włączony)
105
+- Dane są przetwarzane automatycznie
106
+
107
+### **2. Test Webhook**
108
+- Tymczasowy URL do testowania
109
+- Używany podczas budowy workflow
110
+- Ważny tylko podczas sesji testowej
111
+- Pozwala zobaczyć, jakie dane przychodzą
112
+
113
+---
114
+
115
+## Jak stworzyć webhook w n8n?
116
+
117
+### **Krok 1: Dodaj node Webhook**
118
+1. W workflow kliknij "+"
119
+2. Wybierz **Webhook** (Trigger)
120
+3. Ustaw metodę HTTP (najczęściej **POST**)
121
+4. Opcjonalnie: ustaw własną ścieżkę (np. `/kontakt`)
122
+
123
+### **Krok 2: Skopiuj URL**
124
+n8n wygeneruje URL, np.:
125
+```
126
+https://twoj-n8n.com/webhook/a1b2c3d4-e5f6-7890-abcd-ef1234567890
127
+```
128
+
129
+### **Krok 3: Skonfiguruj źródło danych**
130
+W zewnętrznej aplikacji (formularz, CRM, inna usługa):
131
+- Znajdź opcję "Webhook" lub "Integration"
132
+- Wklej skopiowany URL
133
+- Ustaw metodę: POST
134
+- Zapisz
135
+
136
+### **Krok 4: Testuj**
137
+1. W n8n kliknij **"Listen for Test Webhook"**
138
+2. Wyślij testowe dane z zewnętrznej aplikacji
139
+3. Zobaczysz dane w n8n
140
+4. Buduj dalszą część workflow
141
+
142
+---
143
+
144
+## Przykład: formularz kontaktowy
145
+
146
+**Formularz HTML:**
147
+```html
148
+<form action="https://twoj-n8n.com/webhook/abc123" method="POST">
149
+ <input name="name" placeholder="Imię" required>
150
+ <input name="email" type="email" placeholder="Email" required>
151
+ <textarea name="message" placeholder="Wiadomość" required></textarea>
152
+ <button type="submit">Wyślij</button>
153
+</form>
154
+```
155
+
156
+**Workflow w n8n:**
157
+```
158
+Webhook (odbiera dane)
159
+ ↓
160
+Set (formatuje dane)
161
+ ↓
162
+Google Sheets (zapisuje zgłoszenie)
163
+ ↓
164
+Discord (powiadomienie do zespołu)
165
+ ↓
166
+HTTP Request (odpowiedź do użytkownika: "Dziękujemy!")
167
+```
168
+
169
+**Dane otrzymane przez webhook:**
170
+```json
171
+{
172
+ "body": {
173
+ "name": "Jan Kowalski",
174
+ "email": "jan@example.com",
175
+ "message": "Chciałbym uzyskać więcej informacji..."
176
+ }
177
+}
178
+```
179
+
180
+---
181
+
182
+## Bezpieczeństwo webhooków
183
+
184
+### **1. Używaj HTTPS**
185
+Zawsze korzystaj z szyfrowanego połączenia (https://).
186
+
187
+### **2. Weryfikuj źródło**
188
+Niektóre usługi wysyłają sygnaturę lub token weryfikacyjny:
189
+```
190
+X-Signature: abc123...
191
+```
192
+Możesz sprawdzić to w node'dzie Function.
193
+
194
+### **3. Ukryj URL**
195
+Nie publikuj URL webhooka publicznie – traktuj go jak hasło.
196
+
197
+### **4. Waliduj dane**
198
+Sprawdzaj, czy otrzymane dane są poprawne, zanim je przetworzysz.
199
+
200
+---
201
+
202
+## Debugowanie webhooków
203
+
204
+### Problem: Webhook nie odbiera danych
205
+Sprawdź, czy workflow jest aktywny (włączony)
206
+Sprawdź URL – czy jest poprawnie wklejony w zewnętrznej aplikacji
207
+Sprawdź metodę HTTP (POST/GET)
208
+Sprawdź logi serwera n8n
209
+
210
+### Problem: Dane przychodzą, ale są puste
211
+Sprawdź format danych (JSON, form-data, XML)
212
+Sprawdź nagłówek Content-Type
213
+Zobacz, co faktycznie przychodzi w Input node'a Webhook
214
+
215
+### Narzędzia pomocnicze:
216
+- Postman – wysyłanie testowych żądań HTTP
217
+- curl – testowanie z linii komend
218
+- webhook.site – inspekcja przychodzących danych
219
+
220
+---
221
+
222
+## Zalety webhooków
223
+
224
+Reakcja w czasie rzeczywistym – dane są przetwarzane natychmiast
225
+Efektywność – nie musisz ciągle odpytywać API (polling)
226
+Uniwersalność – prawie każda usługa obsługuje webhooki
227
+Prostota – łatwa konfiguracja, nie wymaga programowania
228
+Skalowalność – możesz obsługiwać tysiące zdarzeń
229
+
230
+---
231
+
232
+## Wady webhooków
233
+
234
+Wymaga publicznego URL – n8n musi być dostępny z internetu
235
+Bezpieczeństwo – musisz chronić endpoint przed nadużyciami
236
+Brak gwarancji dostarczenia – jeśli serwer n8n jest wyłączony, dane mogą zostać utracone
237
+Debugowanie – trudniej testować niż scheduled workflows
238
+
239
+---
240
+
241
+## Kiedy używać webhooka?
242
+
243
+Gdy potrzebujesz reakcji w czasie rzeczywistym
244
+Gdy integrujesz usługi, które wysyłają powiadomienia
245
+Gdy budujesz API endpoint dla zewnętrznych aplikacji
246
+Gdy łączysz formularze, systemy zgłoszeń, e-commerce
247
+
248
+**Nie używaj webhooka, gdy:**
249
+Chcesz regularnie odpytywać API (użyj Schedule Trigger)
250
+Źródło danych nie obsługuje webhooków (użyj HTTP Request w pętli)
251
+
252
+---
253
+
254
+## Podsumowanie
255
+
256
+Webhook to fundamentalny mechanizm w automatyzacji i integracji. W n8n pełni rolę **triggera w czasie rzeczywistym**, który odbiera dane z zewnętrznych źródeł i uruchamia workflow.
257
+
258
+**Zapamiętaj:**
259
+- Webhook = URL endpoint odbierający dane
260
+- Działa na zasadzie "push" (usługa wysyła dane sama)
261
+- To najczęstszy sposób integracji aplikacji webowych
262
+- Umożliwia budowanie zaawansowanych automatyzacji bez programowania
263
+
264
+Teraz możesz tworzyć workflow, które reagują natychmiast na wydarzenia w innych systemach – formularze, zgłoszenia, zamówienia, powiadomienia i wiele więcej!
Modul 4 - Integracje z uslugami/2. Warsztat GCP.md
... ...
@@ -0,0 +1,199 @@
1
+![Warsztat GCP](../grafiki/m4_p1-warsztat-gcp-title.png)
2
+
3
+Ten warsztat przeprowadzi Cię przez pełną integrację n8n z usługami Google Cloud Platform. Nauczysz się łączyć z Google Sheets, autoryzować przez OAuth2, pobierać i zapisywać dane oraz budować kompletny workflow z webhookiem i powiadomieniami.
4
+
5
+---
6
+
7
+## 1. Połączenie z Google Sheets
8
+
9
+Google Sheets to jedno z najpopularniejszych narzędzi do współdzielenia i przechowywania danych w chmurze. W n8n możesz:
10
+- Odczytywać dane z arkuszy
11
+- Dodawać nowe wiersze
12
+- Aktualizować i usuwać dane
13
+- Wyszukiwać konkretne rekordy
14
+
15
+**Wymagania:**
16
+- Konto Google
17
+- Arkusz Google Sheets (może być pusty na start)
18
+- Konfiguracja OAuth2 w Google Cloud Console
19
+
20
+---
21
+
22
+## 2. Autoryzacja przez Google OAuth
23
+
24
+OAuth2 to bezpieczny standard autoryzacji, który pozwala aplikacjom (takim jak n8n) uzyskać dostęp do Twoich danych Google bez udostępniania hasła.
25
+
26
+**Jak działa OAuth2?**
27
+1. Aplikacja (n8n) prosi o pozwolenie dostępu
28
+2. Logujesz sie do GCP
29
+3. Potwierdzasz uprawnienia
30
+4. Google generuje token dostępu
31
+5. n8n używa tokenu do komunikacji z API Google
32
+
33
+**Zalety:**
34
+- Bezpieczeństwo – nie udostępniasz hasła
35
+- Kontrola – możesz odwołać dostęp w każdej chwili
36
+- Zakres uprawnień – aplikacja ma dostęp tylko do tego, co zatwierdzisz
37
+
38
+---
39
+
40
+## 3. Czym jest Client ID i Client Secret
41
+
42
+To para kluczy, które identyfikują Twoją aplikację w systemie OAuth2.
43
+
44
+**Client ID:**
45
+- Publiczny identyfikator aplikacji
46
+- Mówi Google, która aplikacja próbuje się połączyć
47
+- Przykład: `123456789-abc.apps.googleusercontent.com`
48
+
49
+**Client Secret:**
50
+- Tajny klucz aplikacji
51
+- Służy do weryfikacji autentyczności żądań
52
+- **Nigdy nie udostępniaj go publicznie!**
53
+
54
+**Jak je uzyskać?**
55
+1. Przejdź do [Google Cloud Console](https://console.cloud.google.com)
56
+2. Utwórz nowy projekt (lub wybierz istniejący)
57
+3. Włącz API (Google Sheets API, Gmail API, Drive API)
58
+4. Przejdź do "Credentials" → "Create Credentials" → "OAuth 2.0 Client ID"
59
+5. Wybierz typ: "Web application"
60
+6. Dodaj Redirect URI: `https://twoja-domena-n8n.com/rest/oauth2-credential/callback`
61
+7. Skopiuj Client ID i Client Secret
62
+
63
+---
64
+
65
+## 4. Ustawienie połączenia OAuth2 w n8n
66
+
67
+**Krok po kroku:**
68
+
69
+1. **W n8n dodaj credentials:**
70
+ - Przejdź do Settings → Credentials
71
+ - Kliknij "Add Credential"
72
+ - Wybierz "Google OAuth2 API"
73
+
74
+2. **Wypełnij dane:**
75
+ - Client ID: (skopiuj z Google Cloud Console)
76
+ - Client Secret: (skopiuj z Google Cloud Console)
77
+ - Scope: wybierz odpowiednie uprawnienia (np. `https://www.googleapis.com/auth/spreadsheets`)
78
+
79
+3. **Autoryzuj:**
80
+ - Kliknij "Connect"
81
+ - Zaloguj się na konto Google
82
+ - Potwierdź uprawnienia
83
+
84
+4. **Zapisz credentials:**
85
+ - Nadaj nazwę (np. "Google Sheets - Konto firmowe")
86
+ - Zapisz
87
+
88
+Teraz możesz używać tych credentials w node'ach Google Sheets, Gmail, Drive itd.
89
+
90
+---
91
+
92
+## 5. Integracja API na podstawie Google Cloud
93
+
94
+Google Cloud oferuje setki API do różnych usług. Aby z nich korzystać:
95
+
96
+**1. Włącz API w Google Cloud Console:**
97
+- Google Sheets API
98
+- Gmail API
99
+- Google Drive API
100
+- Google Calendar API
101
+- i wiele innych
102
+
103
+**2. Upewnij się, że OAuth2 ma odpowiednie zakresy (scopes):**
104
+- Sheets: `https://www.googleapis.com/auth/spreadsheets`
105
+- Gmail: `https://www.googleapis.com/auth/gmail.modify`
106
+- Drive: `https://www.googleapis.com/auth/drive`
107
+
108
+**3. Użyj odpowiedniego node'a w n8n:**
109
+- Wybierz credentials, które skonfigurowałeś
110
+- Wybierz operację (Get, Create, Update, Delete)
111
+- Uzupełnij parametry
112
+
113
+---
114
+
115
+## 6. Odczyt danych z arkusza (Get Rows)
116
+
117
+**Node: Google Sheets → Get Rows**
118
+
119
+**Przykład:**
120
+Masz arkusz z listą klientów i chcesz pobrać wszystkie dane.
121
+
122
+**Konfiguracja:**
123
+1. Wybierz credentials
124
+2. Wybierz arkusz (Spreadsheet)
125
+3. Wybierz zakładkę (Sheet)
126
+4. Opcjonalnie: ustaw zakres (Range), np. `A1:D100`
127
+5. Uruchom node
128
+
129
+**Output:**
130
+```json
131
+[
132
+ {"Imię": "Jan", "Email": "jan@example.com", "Status": "aktywny"},
133
+ {"Imię": "Anna", "Email": "anna@example.com", "Status": "nieaktywny"}
134
+]
135
+```
136
+
137
+**Wskazówki:**
138
+- Dane są zwracane jako tablica obiektów
139
+- Pierwsza linia arkusza to nagłówki kolumn
140
+- Możesz filtrować dane node'm **Filter** lub **Function**
141
+
142
+---
143
+
144
+## 7. Dodanie nowego wiersza (Append Row)
145
+
146
+**Node: Google Sheets → Append Row**
147
+
148
+**Przykład:**
149
+Zapisujesz nowe zgłoszenie z formularza do arkusza.
150
+
151
+**Konfiguracja:**
152
+1. Wybierz credentials
153
+2. Wybierz arkusz i zakładkę
154
+3. Podaj dane do zapisania:
155
+ - Możesz ręcznie wpisać wartości
156
+ - Lub użyć wyrażeń: `{{ $json.name }}`, `{{ $json.email }}`
157
+
158
+**Przykład danych:**
159
+```
160
+Kolumna A: {{ $json.name }}
161
+Kolumna B: {{ $json.email }}
162
+Kolumna C: {{ $json.message }}
163
+Kolumna D: {{ $now }}
164
+```
165
+
166
+**Output:**
167
+Wiersz zostanie dodany na końcu arkusza.
168
+
169
+**Wskazówki:**
170
+- Upewnij się, że kolejność kolumn odpowiada strukturze arkusza
171
+- Możesz użyć node'a **Set** do przygotowania danych przed zapisem
172
+
173
+---
174
+
175
+## 8. Testowe pobranie danych z Gmaila lub Drive przez API
176
+
177
+### **Gmail - odczyt wiadomości**
178
+
179
+**Node: Gmail → Get Messages**
180
+
181
+1. Wybierz credentials
182
+2. Ustaw filtry (np. tylko nieprzeczytane, od konkretnego nadawcy)
183
+3. Uruchom node
184
+
185
+**Output:**
186
+Lista wiadomości e-mail z treścią, załącznikami, nadawcą itd.
187
+
188
+### **Google Drive - lista plików**
189
+
190
+**Node: Google Drive → List**
191
+
192
+1. Wybierz credentials
193
+2. Opcjonalnie: ustaw folder
194
+3. Ustaw filtry (np. tylko pliki PDF)
195
+
196
+**Output:**
197
+Lista plików z metadanymi (nazwa, ID, typ, data utworzenia)
198
+
199
+---
Modul 4 - Integracje z uslugami/2.1 GCP Tworzenie porjektu.md
... ...
@@ -0,0 +1,340 @@
1
+![Tworzenie projektu w GCP](../grafiki/Gemini_Generated_Image_z5sp1ez5sp1ez5sp.png)
2
+
3
+## Krok 1: Wejdź do Google Cloud Console
4
+
5
+Przejdź do [Google Cloud Console](https://console.cloud.google.com) i zaloguj się na swoje konto Google.
6
+
7
+---
8
+
9
+## Krok 2: Wybierz projekt
10
+
11
+W górnym lewym rogu ekranu, obok logo Google Cloud, znajdziesz rozwijane menu wyboru projektu.
12
+
13
+**Co zobaczysz:**
14
+- Nazwę obecnego projektu (jeśli już jakiś masz)
15
+- Możliwość przełączania się między projektami
16
+- Opcję **"Utwórz projekt"** (NEW PROJECT)
17
+
18
+Kliknij na to menu, aby otworzyć okno wyboru projektu.
19
+
20
+![GCP Tworzenie projektu](../grafiki/m4_p2-gcp-tworzenie-projektu-title.png)
21
+
22
+
23
+
24
+---
25
+
26
+## Krok 3: Utwórz nowy projekt
27
+
28
+![GCP Nowy projekt](../grafiki/m4_p2-gcp-nowy-projekt.png)
29
+
30
+W oknie wyboru projektów kliknij przycisk **"NEW PROJECT"** lub **"Utwórz projekt"**.
31
+
32
+**Formularz tworzenia projektu:**
33
+
34
+1. **Nazwa projektu** (Project name)
35
+ - Podaj dowolną nazwę, np. `n8n-integracja`, `Automatyzacja-Google`, `MojaFirma-API`
36
+ - Nazwa powinna być opisowa i łatwa do zapamiętania
37
+
38
+2. **Organizacja** (Organization) – opcjonalne
39
+ - Jeśli masz konto Google Workspace, możesz przypisać projekt do organizacji
40
+ - Jeśli pracujesz indywidualnie, zostaw domyślną opcję "No organization"
41
+
42
+3. **Lokalizacja** (Location) – opcjonalne
43
+ - Wybierz folder, jeśli organizujesz projekty hierarchicznie
44
+ - Możesz pominąć, jeśli nie używasz folderów
45
+
46
+**Ważne:**
47
+- Każdy projekt ma unikalny **Project ID**, który jest generowany automatycznie na podstawie nazwy
48
+- Project ID może być edytowany przed utworzeniem projektu
49
+- Po utworzeniu projektu, ID nie może być zmienione
50
+
51
+
52
+
53
+
54
+---
55
+
56
+## Krok 4: Kliknij "CREATE" (Utwórz)
57
+
58
+Po wypełnieniu nazwy projektu kliknij przycisk **"CREATE"** lub **"Utwórz"**.
59
+
60
+Google Cloud utworzy projekt i przekieruje Cię do jego dashboardu. Proces może zająć kilka sekund.
61
+
62
+---
63
+
64
+## Krok 5: Ekran zgody
65
+
66
+![GCP Ekran zgody](../grafiki/m4_p2-gcp-ekran-zgody.png)
67
+
68
+Po utworzeniu projektu Google Cloud Platform może wyświetlić **ekran zgody OAuth** (OAuth Consent Screen). Jest to kluczowy krok, jeśli planujesz integrować zewnętrzne aplikacje (jak n8n) z usługami Google.
69
+
70
+### **Czym jest ekran zgody?**
71
+
72
+Ekran zgody to strona, którą widzą użytkownicy, gdy aplikacja (np. n8n) prosi o dostęp do ich danych Google (np. Gmail, Google Sheets, Drive).
73
+
74
+**Co zawiera ekran zgody:**
75
+- Nazwę aplikacji
76
+- Logo aplikacji (opcjonalnie)
77
+- Informacje o tym, do jakich danych aplikacja chce uzyskać dostęp
78
+- Linki do polityki prywatności i warunków użytkowania
79
+- Przycisk "Zezwól" lub "Odrzuć"
80
+
81
+### **Dlaczego to ważne?**
82
+
83
+Bez skonfigurowania ekranu zgody nie będziesz mógł:
84
+- Autoryzować n8n przez OAuth2
85
+- Uzyskać dostępu do Google Sheets, Gmail, Drive i innych usług Google
86
+- Tworzyć automatyzacji łączących się z Twoim kontem Google
87
+
88
+### **Konfiguracja ekranu zgody**
89
+
90
+![GCP Consent Screen](../grafiki/m4_p2-gcp-consent-screen.png)
91
+
92
+Po przejściu do sekcji **"OAuth consent screen"**, zobaczysz opcje wyboru typu użytkowników oraz przycisk **"Rozpocznij"** lub **"Get Started"**.
93
+
94
+**Kliknij przycisk "Rozpocznij"**, aby przejść do formularza konfiguracji ekranu zgody. W następnym kroku wypełnisz szczegółowe informacje o aplikacji i zakresach uprawnień.
95
+
96
+---
97
+
98
+## Krok 6: Tworzenie aplikacji
99
+
100
+![GCP Tworzenie aplikacji](../grafiki/m4_p2-gcp-tworzenie-aplikacji.png)
101
+
102
+Po skonfigurowaniu ekranu zgody następnym krokiem jest utworzenie **aplikacji OAuth 2.0** w Google Cloud Platform. To właśnie ta aplikacja będzie reprezentować n8n i umożliwi mu dostęp do Twoich usług Google.
103
+
104
+### **Czym jest aplikacja w kontekście GCP?**
105
+
106
+W Google Cloud Platform **aplikacja** to zestaw credentials (danych uwierzytelniających), które pozwalają zewnętrznym narzędziom (jak n8n) łączyć się z Twoimi usługami Google przez OAuth 2.0.
107
+
108
+**Kluczowe elementy aplikacji:**
109
+- **Client ID** – publiczny identyfikator aplikacji, który mówi Google, która aplikacja próbuje się połączyć
110
+- **Client Secret** – tajny klucz aplikacji, służący do weryfikacji autentyczności żądań (nigdy nie udostępniaj go publicznie!)
111
+- **Redirect URIs** – adresy URL, na które Google może wysyłać odpowiedzi po autoryzacji (np. `https://twoja-domena-n8n.com/rest/oauth2-credential/callback`)
112
+- **Scopes (zakresy uprawnień)** – lista usług Google, do których aplikacja może uzyskać dostęp (np. Google Sheets, Gmail, Drive)
113
+
114
+### **Dlaczego potrzebujesz aplikacji?**
115
+
116
+Bez utworzenia aplikacji OAuth 2.0:
117
+- n8n nie będzie mogło się autoryzować w Google
118
+- Nie uzyskasz Client ID i Client Secret potrzebnych do konfiguracji credentials w n8n
119
+- Nie będziesz mógł tworzyć automatyzacji łączących się z Google Sheets, Gmail, Drive itd.
120
+
121
+### **Proces tworzenia aplikacji**
122
+
123
+W następnych krokach:
124
+1. Przejdziesz do sekcji **"Credentials"** w Google Cloud Console
125
+2. Wybierzesz **"Create Credentials"** → **"OAuth 2.0 Client ID"**
126
+3. Określisz typ aplikacji (najczęściej **"Web application"**)
127
+4. Dodasz Redirect URI (adres callback z n8n)
128
+5. Skopiujesz Client ID i Client Secret do n8n
129
+
130
+---
131
+
132
+## Krok 7: Wybór typu odbiorców
133
+
134
+![GCP Typ odbiorcy](../grafiki/m4_p2-gcp-typ-odbiorcy.png)
135
+
136
+Podczas konfiguracji ekranu zgody OAuth musisz wybrać **typ odbiorców** (User Type), który określa, kto będzie mógł korzystać z Twojej aplikacji.
137
+
138
+### **Wewnętrzny (Internal)**
139
+
140
+Dostęp tylko dla użytkowników z Twojej organizacji Google Workspace. Nie musisz przesyłać aplikacji do weryfikacji przez Google. Wybierz tę opcję, jeśli automatyzacje mają być używane wyłącznie w Twojej firmie.
141
+
142
+### **Z zewnątrz (External)**
143
+
144
+Każdy użytkownik testowy posiadający konto Google może uzyskać dostęp. Twoja aplikacja będzie działała w trybie testowym i dostępna tylko dla użytkowników, których dodasz do listy użytkowników testowych. Gdy aplikacja będzie gotowa do środowiska produkcyjnego, może być konieczne przesłanie jej do weryfikacji przez Google. Wybierz tę opcję, jeśli chcesz korzystać z automatyzacji na osobistym koncie Google lub udostępnić aplikację szerszemu gronu użytkowników.
145
+
146
+**Dla celów integracji n8n z osobistym kontem Google lub małego zespołu wystarczy opcja "Z zewnątrz" (External) z dodaniem swojego emaila jako użytkownika testowego.**
147
+
148
+---
149
+
150
+## Krok 8: Dane kontaktowe administratora aplikacji
151
+
152
+![GCP Dane kontaktowe](../grafiki/m4_p2-gcp-dane-kontaktowe.png)
153
+
154
+Po wybraniu typu odbiorców musisz podać **dane kontaktowe administratora aplikacji**. To informacje, które Google będzie wyświetlać użytkownikom na ekranie zgody oraz wykorzystywać do komunikacji w przypadku problemów z aplikacją.
155
+
156
+**Wymagane dane:**
157
+- **Adres email administratora** – Twój adres email, na który Google może wysyłać powiadomienia dotyczące aplikacji
158
+- **Nazwa aplikacji** – nazwa wyświetlana użytkownikom podczas autoryzacji (np. "n8n Automatyzacja", "Moja Firma - Integracje")
159
+
160
+**Opcjonalne dane:**
161
+- **Logo aplikacji** – możesz dodać własne logo, które będzie wyświetlane na ekranie zgody
162
+- **Link do polityki prywatności** – jeśli aplikacja jest publiczna lub używana przez zewnętrznych użytkowników
163
+- **Link do warunków użytkowania** – dla aplikacji publicznych
164
+
165
+Po wypełnieniu tych danych kliknij **"Zapisz i kontynuuj"** lub **"Save and Continue"**, aby przejść do kolejnego kroku konfiguracji.
166
+
167
+---
168
+
169
+![GCP Kolejny krok](../grafiki/m4_p2-gcp-kolejny-krok.png)
170
+
171
+---
172
+Krok 9. Przejdz do danych logowania
173
+
174
+![Podsumowanie GCP](../grafiki/m4_p4-gcp-podsumowanie.png)
175
+
176
+---
177
+
178
+## 10. Dane logowania w GCP przy tworzeniu aplikacji
179
+
180
+Dane logowania (credentials) w Google Cloud Platform to zestaw informacji, które pozwalają Twojej aplikacji (np. n8n) bezpiecznie łączyć się z usługami Google. Są one niezbędne do autoryzacji i komunikacji przez OAuth2.
181
+
182
+**Główne elementy danych logowania:**
183
+- **Client ID** – publiczny identyfikator Twojej aplikacji. Informuje Google, która aplikacja próbuje się połączyć.
184
+- **Client Secret** – tajny klucz, który potwierdza autentyczność aplikacji. Nigdy nie udostępniaj go publicznie!
185
+- **Redirect URI** – adres URL, na który Google przekieruje użytkownika po udanej autoryzacji. Musi być zgodny z konfiguracją w n8n.
186
+
187
+**Po co są potrzebne?**
188
+- Umożliwiają bezpieczne logowanie i autoryzację użytkowników.
189
+- Pozwalają aplikacji uzyskać dostęp do wybranych usług Google (np. Gmail, Sheets, Drive).
190
+- Są wymagane do skonfigurowania integracji OAuth2 w n8n.
191
+
192
+**Jak je uzyskać?**
193
+1. Po utworzeniu aplikacji w GCP przejdź do sekcji "Credentials".
194
+2. Wybierz "Create Credentials" → "OAuth 2.0 Client ID".
195
+3. Skopiuj wygenerowany Client ID i Client Secret.
196
+4. Wprowadź je w konfiguracji node'a n8n (np. Google Sheets, Gmail).
197
+
198
+**Podsumowanie:**
199
+Dane logowania to klucz do bezpiecznej integracji n8n z Google. Dzięki nim Twoje workflow może automatycznie pobierać, zapisywać i przetwarzać dane z usług Google zgodnie z uprawnieniami nadanymi przez użytkownika.
200
+
201
+![Dane logowania w GCP](../grafiki/m4_p5-gcp-dane-logowania.png)
202
+
203
+---
204
+
205
+## Wyjaśnienie pól przy tworzeniu identyfikatora klienta OAuth w GCP
206
+
207
+Na etapie tworzenia identyfikatora klienta OAuth w Google Cloud Platform musisz wypełnić kilka kluczowych pól:
208
+
209
+**Typ aplikacji**
210
+- Wybierz "Aplikacja internetowa" – to najczęstszy wybór dla integracji z n8n, która działa jako web service.
211
+
212
+**Nazwa**
213
+- Nazwa klienta OAuth 2.0. Służy tylko do identyfikacji w konsoli Google, nie jest widoczna dla użytkowników. Możesz wpisać np. "n8n Integracja".
214
+
215
+**Autoryzowane źródła JavaScript**
216
+- Te URI są wymagane tylko, jeśli Twoja aplikacja korzysta z autoryzacji bezpośrednio z przeglądarki (np. SPA). W przypadku n8n najczęściej możesz zostawić puste.
217
+
218
+**Autoryzowane identyfikatory URI przekierowania**
219
+- To najważniejsze pole dla integracji z n8n!
220
+- Musisz tu podać adres, na który Google przekieruje użytkownika po udanej autoryzacji OAuth2.
221
+- W n8n jest to adres callback, np.:
222
+ - `https://twoja-domena-n8n.com/rest/oauth2-credential/callback`
223
+ - Jeśli używasz n8n lokalnie: `http://localhost:5678/rest/oauth2-credential/callback`
224
+- Bez poprawnego URI nie będzie możliwe dokończenie procesu autoryzacji – Google wyświetli błąd (jak na obrazku: "Identyfikator URI nie może być pusty").
225
+- Możesz dodać wiele URI, jeśli masz kilka środowisk (produkcyjne, testowe).
226
+
227
+**Uwaga:**
228
+- Po dodaniu URI, Google automatycznie doda domeny do ekranu zgody OAuth jako "domeny autoryzowane".
229
+- Zmiany mogą zacząć obowiązywać po kilku minutach do kilku godzin.
230
+
231
+**Podsumowanie:**
232
+- Najważniejsze dla n8n jest poprawne podanie identyfikatora URI przekierowania – bez tego integracja nie zadziała.
233
+- Pozostałe pola możesz skonfigurować według własnych potrzeb, ale dla n8n najczęściej wystarczy podstawowa konfiguracja.
234
+
235
+11. Wpradzenie danych do n8n
236
+
237
+![Przykład poprawnego URI przekierowania w GCP](../grafiki/m4_p6-gcp-redirect-uri.png)
238
+
239
+---
240
+
241
+Na przesłanym obrazie widzisz okno konfiguracji połączenia Gmail OAuth2 w n8n
242
+
243
+- **OAuth Redirect URL**
244
+ - Adres URL, na który Google przekieruje użytkownika po autoryzacji.
245
+ - Ten adres należy skopiować i wkleić w konfiguracji aplikacji w Google Cloud Platform (pole "Autoryzowane identyfikatory URI przekierowania").
246
+ - Przykład: `https://n8n.sodmin.pt/rest/oauth2-credential/callback`
247
+
248
+- **Client ID**
249
+ - Publiczny identyfikator aplikacji wygenerowany w Google Cloud Platform.
250
+ - Pozwala Google rozpoznać, która aplikacja próbuje się połączyć.
251
+ - Wymagane do poprawnej autoryzacji.
252
+
253
+- **Client Secret**
254
+ - Tajny klucz aplikacji wygenerowany w Google Cloud Platform.
255
+ - Służy do weryfikacji autentyczności żądań.
256
+ - Nigdy nie udostępniaj go publicznie!
257
+
258
+- **Allowed HTTP Request Domains**
259
+ - Określa, do jakich domen n8n może wysyłać żądania HTTP w ramach tego połączenia.
260
+ - Domyślnie ustawione na "All" (wszystkie domeny dozwolone).
261
+ - Możesz ograniczyć do wybranych domen dla większego bezpieczeństwa.
262
+
263
+- **Enterprise plan users can pull in credentials from external vaults**
264
+ - Informacja dla użytkowników wersji Enterprise – mogą pobierać dane logowania z zewnętrznych sejfów (vaults).
265
+
266
+- **Save**
267
+ - Przycisk zapisujący konfigurację połączenia.
268
+
269
+Każde z tych pól jest niezbędne do poprawnej integracji Gmaila z n8n przez OAuth2. Prawidłowe wypełnienie gwarantuje bezpieczne i stabilne połączenie z usługą Google.
270
+
271
+![Konfiguracja Gmail OAuth2 w n8n](../grafiki/m4_p7-gcp-gmail-konfiguracja.png)
272
+
273
+---
274
+
275
+## 12. Klient OAuth został utworzony – co oznaczają te dane?
276
+
277
+Na załączonym obrazie widzisz podsumowanie utworzenia klienta OAuth w Google Cloud Platform. Otrzymujesz dwie kluczowe informacje:
278
+
279
+- **Identyfikator klienta (Client ID)**
280
+ - To publiczny identyfikator Twojej aplikacji. Pozwala Google rozpoznać, która aplikacja próbuje się połączyć z usługami Google.
281
+ - Wprowadzasz go w konfiguracji n8n, aby powiązać workflow z konkretną aplikacją Google.
282
+
283
+- **Tajny klucz klienta (Client Secret)**
284
+ - To prywatny, poufny klucz, który służy do weryfikacji autentyczności Twojej aplikacji.
285
+ - Jest niezbędny do bezpiecznej komunikacji między n8n a Google – potwierdza, że żądania pochodzą od zaufanej aplikacji.
286
+ - **Nigdy nie udostępniaj tego klucza publicznie!**
287
+ - Po czerwcu 2025 r. nie będzie można ponownie wyświetlić ani pobrać tego klucza po zamknięciu okna – musisz go skopiować i bezpiecznie przechowywać.
288
+
289
+**Dlaczego te dane są tak ważne?**
290
+- **Identyfikator klienta** pozwala Google rozpoznać Twoją aplikację i powiązać ją z uprawnieniami, które nadajesz.
291
+- **Tajny klucz klienta** chroni przed nieautoryzowanym dostępem – tylko aplikacja posiadająca ten klucz może uzyskać dostęp do Twoich danych przez OAuth2.
292
+- Utrata lub ujawnienie tajnego klucza może narazić Twoje konto na nieautoryzowany dostęp – zawsze przechowuj go w bezpiecznym miejscu.
293
+
294
+**Podsumowanie:**
295
+- Te dwie pozycje są fundamentem bezpiecznej integracji n8n z Google. Bez nich nie skonfigurujesz połączenia OAuth2 i nie uzyskasz dostępu do usług Google z poziomu workflow.
296
+
297
+![Odbiorcy ekranu zgody OAuth w GCP](../grafiki/m4_p8-gcp-odbiorcy-oauth.png)
298
+
299
+---
300
+
301
+## Kim są odbiorcy ekranu zgody OAuth?
302
+
303
+Odbiorcy ekranu zgody OAuth to użytkownicy, którzy mogą autoryzować aplikację i udzielić jej dostępu do swoich danych Google. W GCP możesz określić:
304
+
305
+- **Użytkownicy testowi** – osoby dodane ręcznie na ekranie zgody OAuth. Tylko oni mogą korzystać z aplikacji w trybie testowym.
306
+- **Użytkownicy wewnętrzni** – jeśli wybierzesz typ "Internal", dostęp mają tylko członkowie Twojej organizacji Google Workspace.
307
+- **Użytkownicy zewnętrzni** – jeśli aplikacja przejdzie weryfikację Google, dostęp mogą uzyskać wszyscy użytkownicy Google.
308
+
309
+**Dlaczego to ważne?**
310
+- W trybie testowym (najczęściej na początku integracji) tylko użytkownicy testowi mogą autoryzować aplikację – musisz dodać swój adres e-mail na ekranie zgody.
311
+- W produkcji (po weryfikacji) aplikacja może być dostępna dla szerszego grona odbiorców.
312
+- Odbiorcy ekranu zgody decydują, kto faktycznie może korzystać z Twojej integracji n8n z Google.
313
+
314
+
315
+13. Przejdz do bibliteki interfejsów API i włącz potrzebne interfejsy
316
+![Biblioteki interfejsów API w GCP](../grafiki/m4_p9-gcp-api-biblioteki.png)
317
+
318
+---
319
+
320
+## Czym są biblioteki interfejsów API w GCP?
321
+
322
+Biblioteki interfejsów API (API Libraries) w Google Cloud Platform to zestaw usług, które musisz aktywować, aby Twoja aplikacja mogła korzystać z wybranych funkcji Google (np. kalendarza, poczty, dysku). Bez ich włączenia integracja z n8n nie będzie działać poprawnie.
323
+
324
+**Jakie biblioteki trzeba włączyć dla n8n?**
325
+
326
+Aby zintegrować n8n z najpopularniejszymi usługami Google, musisz aktywować następujące biblioteki API w konsoli GCP:
327
+
328
+- Google Calendar API
329
+- Gmail API
330
+- Google Drive API
331
+
332
+**Jak to zrobić?**
333
+1. Przejdź do konsoli Google Cloud Platform.
334
+2. Wybierz swój projekt.
335
+3. Wejdź w sekcję "APIs & Services" → "Library".
336
+4. Wyszukaj powyższe usługi i kliknij "Enable" (Włącz).
337
+
338
+**Dlaczego to ważne?**
339
+- Bez aktywacji odpowiednich bibliotek API Twoja aplikacja nie uzyska dostępu do danych Google.
340
+- Włączenie API jest wymagane do poprawnej autoryzacji i działania node'ów n8n (np. pobierania maili, wydarzeń z kalendarza, plików z dysku).
Modul 5 - Implementacja agenta AI/1. Czym jest agent AI w kontek\305\233cie automatyzacji.md
... ...
@@ -0,0 +1,270 @@
1
+![Czym jest agent AI w kontekście automatyzacji](../grafiki/m5_p1-agent-ai-diagram.png)
2
+
3
+# Czym jest agent AI w kontekście automatyzacji?
4
+
5
+Agent AI to inteligentny system, który potrafi samodzielnie podejmować decyzje, wykonywać zadania i reagować na zmieniające się warunki – bez konieczności ręcznego sterowania przez człowieka. W przeciwieństwie do tradycyjnych automatyzacji, które działają według z góry określonych reguł, agent AI potrafi analizować kontekst, rozumieć język naturalny i dostosowywać swoje działania do sytuacji.
6
+
7
+---
8
+
9
+## **Czym różni się agent AI od zwykłej automatyzacji?**
10
+
11
+| **Tradycyjna automatyzacja** | **Agent AI** |
12
+|------------------------------|--------------|
13
+| Działa według stałych reguł (jeśli X, to Y) | Analizuje kontekst i podejmuje decyzje |
14
+| Wymaga precyzyjnego programowania | Rozumie język naturalny i intent użytkownika |
15
+| Nie radzi sobie z nietypowymi sytuacjami | Potrafi dostosować się do nowych warunków |
16
+| Wykonuje tylko to, co zaprogramowano | Może planować wieloetapowe działania |
17
+
18
+**Przykład:**
19
+- **Zwykła automatyzacja:** Gdy otrzymasz e-mail z fakturą, zapisz ją do folderu "Faktury".
20
+- **Agent AI:** Gdy otrzymasz e-mail, przeanalizuj jego treść, zdecyduj czy to faktura, wyciągnij dane (kwota, termin płatności), zapisz plik w odpowiednim folderze, a jeśli termin płatności jest bliski – wyślij przypomnienie.
21
+
22
+---
23
+
24
+## **Jak działa agent AI?**
25
+
26
+Agent AI składa się z kilku kluczowych elementów:
27
+
28
+1. **Zdolność do rozumienia języka naturalnego (NLP)**
29
+ - Agent potrafi czytać i interpretować tekst (e-maile, dokumenty, czaty)
30
+ - Rozumie intencję użytkownika, nawet jeśli zapytanie nie jest precyzyjne
31
+
32
+2. **Pamięć i kontekst**
33
+ - Agent pamięta wcześniejsze interakcje i dane
34
+ - Może odwoływać się do historii rozmów lub poprzednich akcji
35
+
36
+3. **Zdolność do podejmowania decyzji**
37
+ - Agent analizuje dostępne informacje i wybiera najlepsze działanie
38
+ - Potrafi zarządzać niepewnością i priorytetami
39
+
40
+4. **Wykonywanie akcji przez narzędzia (tools)**
41
+ - Agent nie tylko analizuje dane – faktycznie wykonuje zadania
42
+ - Może korzystać z różnych API, aplikacji i systemów
43
+
44
+---
45
+
46
+## **Narzędzia (tools) – klucz do mocy agenta AI**
47
+
48
+Narzędzia to funkcje, które agent może wywoływać, aby wykonywać konkretne zadania. Bez narzędzi agent byłby tylko "mówcą" – mógłby analizować i rozmawiać, ale nie mógłby niczego zrobić.
49
+
50
+### **Przykłady narzędzi, które można podpiąć do agenta AI:**
51
+
52
+#### **1. Narzędzia do komunikacji**
53
+- **Slack / Discord / Teams**
54
+ - Wysyłanie wiadomości do kanałów
55
+ - Tworzenie powiadomień
56
+ - Odpowiadanie na zapytania użytkowników
57
+
58
+- **Email (Gmail, Outlook)**
59
+ - Wysyłanie i odbieranie e-maili
60
+ - Tworzenie wersji roboczych wiadomości
61
+ - Kategoryzowanie i filtrowanie korespondencji
62
+
63
+- **SMS / WhatsApp**
64
+ - Wysyłanie powiadomień SMS
65
+ - Automatyczne odpowiedzi na wiadomości
66
+
67
+#### **2. Narzędzia do zarządzania danymi**
68
+- **Google Sheets / Excel**
69
+ - Odczytywanie i zapisywanie danych
70
+ - Tworzenie raportów
71
+ - Wyszukiwanie i filtrowanie rekordów
72
+
73
+- **Bazy danych (PostgreSQL, MySQL, MongoDB)**
74
+ - Wykonywanie zapytań SQL
75
+ - Dodawanie, aktualizowanie i usuwanie rekordów
76
+ - Generowanie analiz
77
+
78
+- **Airtable / Notion**
79
+ - Zarządzanie projektami
80
+ - Tworzenie i aktualizowanie zadań
81
+ - Organizowanie dokumentacji
82
+
83
+#### **3. Narzędzia do pracy z plikami**
84
+- **Google Drive / Dropbox**
85
+ - Pobieranie i przesyłanie plików
86
+ - Tworzenie folderów
87
+ - Udostępnianie dokumentów
88
+
89
+- **PDF Tools**
90
+ - Wyciąganie tekstu z PDF
91
+ - Łączenie i dzielenie plików PDF
92
+ - Konwersja dokumentów
93
+
94
+- **OCR (Optical Character Recognition)**
95
+ - Rozpoznawanie tekstu na obrazach i skanach
96
+ - Przetwarzanie faktur i dokumentów
97
+
98
+#### **4. Narzędzia do integracji z systemami biznesowymi**
99
+- **CRM (Salesforce, HubSpot)**
100
+ - Dodawanie i aktualizowanie kontaktów
101
+ - Tworzenie szans sprzedaży (opportunities)
102
+ - Zarządzanie pipeline'em sprzedażowym
103
+
104
+- **ERP (SAP, Odoo)**
105
+ - Zarządzanie zamówieniami
106
+ - Kontrola stanów magazynowych
107
+ - Tworzenie faktur
108
+
109
+- **HR (BambooHR, Workday)**
110
+ - Zarządzanie urloPami
111
+ - Onboarding nowych pracowników
112
+ - Generowanie raportów kadrowych
113
+
114
+#### **5. Narzędzia do automatyzacji zadań**
115
+- **Kalendarz (Google Calendar, Outlook Calendar)**
116
+ - Tworzenie spotkań
117
+ - Sprawdzanie dostępności
118
+ - Wysyłanie zaproszeń
119
+
120
+- **Task Management (Asana, Trello, Monday.com)**
121
+ - Tworzenie zadań
122
+ - Przypisywanie osób odpowiedzialnych
123
+ - Śledzenie postępów
124
+
125
+- **Zapier / Make**
126
+ - Łączenie różnych aplikacji
127
+ - Uruchamianie złożonych automatyzacji
128
+
129
+#### **6. Narzędzia do wyszukiwania i analizy informacji**
130
+- **Web Scraping**
131
+ - Pobieranie danych ze stron internetowych
132
+ - Monitorowanie zmian na stronach
133
+ - Zbieranie informacji konkurencyjnych
134
+
135
+- **API REST**
136
+ - Komunikacja z zewnętrznymi serwisami
137
+ - Pobieranie danych w czasie rzeczywistym
138
+ - Integracja z niestandardowymi systemami
139
+
140
+- **SQL Query Tools**
141
+ - Wykonywanie zapytań do baz danych
142
+ - Generowanie raportów analitycznych
143
+ - Tworzenie dashboardów
144
+
145
+#### **7. Narzędzia do przetwarzania danych**
146
+- **Code Interpreter / Python Executor**
147
+ - Wykonywanie skryptów Python
148
+ - Przetwarzanie i analiza danych
149
+ - Tworzenie wykresów i wizualizacji
150
+
151
+- **JSON / XML Parser**
152
+ - Przetwarzanie złożonych struktur danych
153
+ - Konwersja formatów
154
+ - Walidacja danych
155
+
156
+- **Text Processing**
157
+ - Podsumowywanie tekstów
158
+ - Tłumaczenie dokumentów
159
+ - Ekstrakcja kluczowych informacji
160
+
161
+#### **8. Narzędzia do obsługi klienta**
162
+- **Ticketing Systems (Zendesk, Freshdesk)**
163
+ - Tworzenie zgłoszeń
164
+ - Odpowiadanie na tickety
165
+ - Eskalacja problemów
166
+
167
+- **Chatbots (Intercom, Drift)**
168
+ - Automatyczne odpowiedzi na pytania klientów
169
+ - Przekierowanie do odpowiedniego działu
170
+ - Zbieranie feedbacku
171
+
172
+- **Knowledge Base Search**
173
+ - Wyszukiwanie w bazie wiedzy
174
+ - Odpowiadanie na FAQ
175
+ - Sugerowanie artykułów pomocy
176
+
177
+---
178
+
179
+## **Jak agent AI wykorzystuje narzędzia?**
180
+
181
+Agent AI działa w następujący sposób:
182
+
183
+1. **Odbiera zadanie lub zapytanie**
184
+ - Np. "Przeanalizuj ostatnie 50 e-maili i znajdź wszystkie faktury, które wymagają pilnej płatności"
185
+
186
+2. **Analizuje, jakie narzędzia są potrzebne**
187
+ - Agent wie, że musi użyć narzędzia do odczytu e-maili (Gmail API)
188
+ - Następnie narzędzia do analizy tekstu (OCR + NLP)
189
+ - I wreszcie narzędzia do zapisu (Google Sheets)
190
+
191
+3. **Wykonuje sekwencję akcji**
192
+ - Pobiera e-maile z ostatnich 7 dni
193
+ - Analizuje każdy e-mail i załączniki
194
+ - Wyciąga kwoty, terminy płatności i dane kontrahentów
195
+ - Zapisuje wyniki do arkusza
196
+ - Wysyła powiadomienie na Slacku z listą pilnych płatności
197
+
198
+4. **Raportuje wynik**
199
+ - "Znalazłem 3 faktury wymagające płatności w ciągu 48h. Szczegóły w arkuszu 'Pilne faktury'. Wysłałem powiadomienie do zespołu finansowego."
200
+
201
+---
202
+
203
+## **Przykładowe zastosowania agenta AI w n8n**
204
+
205
+### **1. Agent obsługi klienta**
206
+**Narzędzia:**
207
+- Gmail (odbiór i wysyłanie e-maili)
208
+- Knowledge Base Search (wyszukiwanie w bazie wiedzy)
209
+- Zendesk (tworzenie ticketów)
210
+- Slack (powiadomienia dla zespołu)
211
+
212
+**Działanie:**
213
+Agent automatycznie odpowiada na e-maile klientów, wyszukuje rozwiązania w bazie wiedzy, a jeśli nie znajdzie odpowiedzi – tworzy ticket i powiadamia zespół.
214
+
215
+### **2. Agent analityczny**
216
+**Narzędzia:**
217
+- Google Sheets (odczyt danych sprzedażowych)
218
+- SQL Database (zapytania do bazy produkcyjnej)
219
+- Python Executor (analiza i wizualizacja)
220
+- Slack (wysyłanie raportów)
221
+
222
+**Działanie:**
223
+Co rano agent pobiera dane sprzedażowe, wykonuje analizy, generuje wykresy i wysyła raport do zespołu zarządzającego.
224
+
225
+### **3. Agent HR**
226
+**Narzędzia:**
227
+- Gmail (odbiór CV)
228
+- Google Calendar (planowanie rozmów rekrutacyjnych)
229
+- Notion (baza kandydatów)
230
+- Slack (powiadomienia dla rekruterów)
231
+
232
+**Działanie:**
233
+Agent automatycznie przetwarza CV, wyciąga kluczowe informacje, dodaje kandydatów do bazy, a następnie proponuje terminy rozmów kwalifikacyjnych.
234
+
235
+### **4. Agent finansowy**
236
+**Narzędzia:**
237
+- Gmail (odbiór faktur)
238
+- OCR (rozpoznawanie tekstu na fakturach)
239
+- Google Sheets (rejestr płatności)
240
+- Bank API (sprawdzanie salda i wykonywanie płatności)
241
+- Slack (powiadomienia o pilnych płatnościach)
242
+
243
+**Działanie:**
244
+Agent automatycznie przetwarza faktury, wyciąga dane, rejestruje w systemie, sprawdza saldo i wykonuje płatności lub powiadamia o konieczności dopłaty.
245
+
246
+---
247
+
248
+## **Zalety używania agentów AI w automatyzacji**
249
+
250
+✅ **Inteligentne decyzje** – agent potrafi analizować kontekst i reagować elastycznie
251
+✅ **Rozumienie języka naturalnego** – możesz komunikować się z agentem jak z człowiekiem
252
+✅ **Wielozadaniowość** – agent może wykonywać złożone, wieloetapowe procesy
253
+✅ **Skalowalność** – jeden agent może obsługiwać setki zadań równocześnie
254
+✅ **Oszczędność czasu** – automatyzacja zadań, które wcześniej wymagały ręcznej pracy
255
+
256
+---
257
+
258
+## **Podsumowanie**
259
+
260
+Agent AI to przełom w automatyzacji – zamiast sztywnych reguł, mamy inteligentny system zdolny do samodzielnego rozwiązywania problemów. Kluczem do jego mocy są **narzędzia (tools)**, które pozwalają agentowi faktycznie działać – wysyłać e-maile, zapisywać dane, wykonywać płatności, generować raporty i wiele więcej.
261
+
262
+W n8n możesz budować agentów AI, którzy łączą siłę sztucznej inteligencji z praktycznymi integracjami biznesowymi – tworząc automatyzacje, które wcześniej były nieosiągalne.
263
+
264
+---
265
+
266
+**W kolejnych modułach dowiesz się:**
267
+- Jak zbudować własnego agenta AI w n8n
268
+- Jak podłączać narzędzia i definiować ich działanie
269
+- Jak trenować agenta i dostosowywać jego zachowanie
270
+- Jakie są najlepsze praktyki w projektowaniu agentów AI
Modul 5 - Implementacja agenta AI/2. Rola modelu j\304\231zykowego.md
... ...
@@ -0,0 +1,247 @@
1
+![Rola modelu językowego w agencie AI](../grafiki/m5_p2-model-jezykowy.png)
2
+
3
+# Rola modelu językowego w agencie AI
4
+
5
+Model językowy to "mózg" agenta AI – to on odpowiada za rozumienie języka naturalnego, analizowanie kontekstu, podejmowanie decyzji i generowanie odpowiedzi. Bez modelu językowego agent byłby tylko zestawem sztywnych reguł – z nim staje się inteligentnym systemem zdolnym do elastycznego rozwiązywania problemów.
6
+
7
+---
8
+
9
+## **Do czego służy model językowy w agencie AI?**
10
+
11
+### **1. Rozumienie języka naturalnego (NLU – Natural Language Understanding)**
12
+
13
+Model językowy analizuje tekst i rozumie jego znaczenie, intencję oraz kontekst.
14
+
15
+**Przykłady:**
16
+- Użytkownik pisze: *"Chcę sprawdzić, czy ktoś odpowiedział na mojego ostatniego e-maila do działu sprzedaży"*
17
+- Model rozumie:
18
+ - Akcja: sprawdzenie e-maili
19
+ - Kontekst: ostatni wysłany e-mail
20
+ - Odbiorca: dział sprzedaży
21
+ - Cel: znalezienie odpowiedzi
22
+
23
+### **2. Ekstrakcja informacji**
24
+
25
+Model potrafi wyciągać konkretne dane z nieustrukturyzowanego tekstu.
26
+
27
+**Przykłady:**
28
+- Z e-maila: *"Prosimy o przesłanie faktury na kwotę 2500 zł do 15 grudnia 2025"*
29
+- Model wyciąga:
30
+ - Typ dokumentu: faktura
31
+ - Kwota: 2500 zł
32
+ - Termin: 15 grudnia 2025
33
+
34
+### **3. Podejmowanie decyzji**
35
+
36
+Model analizuje dostępne informacje i wybiera najlepsze działanie.
37
+
38
+**Przykład:**
39
+- Sytuacja: Otrzymano e-mail z prośbą o informacje o produkcie
40
+- Model decyduje:
41
+ - Czy może odpowiedzieć sam (jeśli ma informacje w bazie wiedzy)
42
+ - Czy powinien przekazać do człowieka (jeśli pytanie jest złożone)
43
+ - Czy powinien zebrać więcej danych przed odpowiedzią
44
+
45
+### **4. Wybór i wywoływanie narzędzi (tools)**
46
+
47
+Model decyduje, które narzędzia użyć do wykonania zadania.
48
+
49
+**Przykład:**
50
+- Zapytanie: *"Wyślij raport sprzedażowy z ostatniego tygodnia do zespołu managementu"*
51
+- Model wybiera narzędzia:
52
+ 1. Google Sheets – pobranie danych sprzedażowych
53
+ 2. Python – wygenerowanie wykresu
54
+ 3. Gmail – wysłanie e-maila z raportem
55
+
56
+### **5. Generowanie odpowiedzi**
57
+
58
+Model tworzy naturalnie brzmiące odpowiedzi dostosowane do kontekstu.
59
+
60
+**Przykład:**
61
+- Dane: Faktura nr 123/2025, kwota 3500 zł, termin płatności: 10 grudnia
62
+- Model generuje: *"Faktura nr 123/2025 na kwotę 3500 zł została zarejestrowana. Termin płatności upływa 10 grudnia – to za 5 dni. Czy mam wysłać przypomnienie do działu finansowego?"*
63
+
64
+### **6. Zarządzanie kontekstem i pamięcią**
65
+
66
+Model pamięta wcześniejsze interakcje i odwołuje się do nich.
67
+
68
+**Przykład:**
69
+- Użytkownik (1): *"Pokaż mi faktury z listopada"*
70
+- Agent: *"Znalazłem 12 faktur z listopada. Łączna kwota: 45 000 zł"*
71
+- Użytkownik (2): *"A ile z nich jest niezapłaconych?"*
72
+- Agent (pamięta kontekst): *"5 faktur na łączną kwotę 18 500 zł pozostaje niezapłaconych"*
73
+
74
+---
75
+
76
+## **Popularne modele językowe używane w agentach AI**
77
+
78
+### **OpenAI – rodzina modeli GPT**
79
+
80
+#### **GPT-4o (GPT-4 Optimized)**
81
+- **Opis:** Najnowsza, zoptymalizowana wersja GPT-4, łącząca szybkość z wysoką jakością
82
+- **Mocne strony:**
83
+ - Szybsze niż GPT-4, tańsze w użyciu
84
+ - Bardzo dobre rozumienie kontekstu
85
+ - Świetne w złożonym rozumowaniu
86
+ - Obsługa text + obrazy
87
+- **Zastosowania w agentach:**
88
+ - Analiza dokumentów i obrazów (faktury, umowy, diagramy)
89
+ - Złożone zadania wymagające logicznego myślenia
90
+ - Obsługa klienta z kontekstem wizualnym
91
+
92
+#### **GPT-4 Turbo**
93
+- **Opis:** Szybsza i tańsza wersja GPT-4 z większym oknem kontekstowym (128k tokenów)
94
+- **Mocne strony:**
95
+ - Bardzo duże okno kontekstowe (może przetworzyć długie dokumenty)
96
+ - Dobra jakość przy niższych kosztach
97
+ - Szybka odpowiedź
98
+- **Zastosowania w agentach:**
99
+ - Analiza długich dokumentów (raporty, umowy, protokoły)
100
+ - Agenci wymagający dużej pamięci kontekstowej
101
+ - Zadania wymagające przetwarzania wielu źródeł jednocześnie
102
+
103
+#### **GPT-3.5 Turbo**
104
+- **Opis:** Starszy, tańszy model, wciąż bardzo popularny
105
+- **Mocne strony:**
106
+ - Niski koszt użycia
107
+ - Szybka odpowiedź
108
+ - Wystarczający do prostych zadań
109
+- **Zastosowania w agentach:**
110
+ - Proste automaty odpowiedzi (chatboty FAQ)
111
+ - Klasyfikacja tekstu
112
+ - Generowanie prostych raportów
113
+
114
+#### **GPT-4o-mini**
115
+- **Opis:** Najmniejszy i najtańszy model z rodziny GPT-4, zoptymalizowany pod kątem kosztów
116
+- **Mocne strony:**
117
+ - Bardzo niski koszt
118
+ - Szybka odpowiedź
119
+ - Nadal lepsza jakość niż GPT-3.5
120
+- **Zastosowania w agentach:**
121
+ - Masowa klasyfikacja (e-maile, tickety)
122
+ - Proste ekstrakcje danych
123
+ - Wstępne filtrowanie przed użyciem droższych modeli
124
+
125
+---
126
+
127
+### **Google – rodzina modeli Gemini**
128
+
129
+#### **Gemini 1.5 Pro**
130
+- **Opis:** Najpotężniejszy model Google z ogromnym oknem kontekstowym (do 2 milionów tokenów)
131
+- **Mocne strony:**
132
+ - **Gigantyczne okno kontekstowe** – może przetworzyć całe książki, wielogodzinne nagrania audio/wideo
133
+ - Multimodalność (text, obrazy, audio, wideo)
134
+ - Świetne rozumowanie i analiza
135
+ - Bardzo dobre w zadaniach wymagających długoterminowej pamięci
136
+- **Zastosowania w agentach:**
137
+ - Analiza całych projektów (setek plików jednocześnie)
138
+ - Przetwarzanie długich nagrań wideo/audio
139
+ - Agenci wymagający bardzo długiej pamięci kontekstowej
140
+ - Analiza wielowątkowych rozmów i dokumentacji
141
+
142
+#### **Gemini 1.5 Flash**
143
+- **Opis:** Szybsza i tańsza wersja Gemini, zoptymalizowana pod kątem wydajności
144
+- **Mocne strony:**
145
+ - Bardzo szybka odpowiedź
146
+ - Niższy koszt niż Pro
147
+ - Wciąż duże okno kontekstowe (do 1 miliona tokenów)
148
+ - Multimodalność
149
+- **Zastosowania w agentach:**
150
+ - Szybkie chatboty obsługi klienta
151
+ - Real-time analiza strumieni danych
152
+ - Agenci wymagający małych opóźnień
153
+ - Masowe przetwarzanie z dobrą jakością
154
+
155
+#### **Gemini 1.0 Pro**
156
+- **Opis:** Starszy model Google, wciąż dostępny i użyteczny
157
+- **Mocne strony:**
158
+ - Solidna jakość
159
+ - Niższy koszt
160
+ - Stabilne API
161
+- **Zastosowania w agentach:**
162
+ - Standardowe zadania NLP
163
+ - Proste agenty konwersacyjne
164
+ - Klasyfikacja i ekstrakcja danych
165
+
166
+---
167
+
168
+## **Porównanie: OpenAI vs Google Gemini**
169
+
170
+| **Cecha** | **OpenAI (GPT)** | **Google (Gemini)** |
171
+|-----------|------------------|---------------------|
172
+| **Jakość rozumowania** | Bardzo wysoka (GPT-4o, GPT-4 Turbo) | Bardzo wysoka (Gemini 1.5 Pro) |
173
+| **Okno kontekstowe** | Do 128k tokenów (GPT-4 Turbo) | **Do 2M tokenów (Gemini 1.5 Pro)** |
174
+| **Multimodalność** | Text + obrazy (GPT-4o) | Text + obrazy + audio + wideo |
175
+| **Szybkość** | Szybka (GPT-4o, GPT-3.5) | Bardzo szybka (Gemini Flash) |
176
+| **Koszt** | Średni do wysoki | Niższy (szczególnie Flash) |
177
+| **Stabilność API** | Bardzo dobra | Dobra, szybko się rozwija |
178
+| **Ekosystem narzędzi** | Bardzo rozbudowany | Rozwijający się |
179
+
180
+---
181
+
182
+## **Jak wybrać model dla swojego agenta?**
183
+
184
+### **Wybierz GPT-4o lub Gemini 1.5 Pro, jeśli:**
185
+- Potrzebujesz najwyższej jakości rozumowania
186
+- Agent ma wykonywać złożone zadania wymagające logiki
187
+- Budzet pozwala na wyższe koszty
188
+- Chcesz przetwarzać obrazy, dokumenty wizualne
189
+
190
+### **Wybierz GPT-4 Turbo, jeśli:**
191
+- Potrzebujesz dużego okna kontekstowego (długie dokumenty)
192
+- Agent ma przetwarzać wiele źródeł jednocześnie
193
+- Szukasz dobrego balansu między jakością a kosztem
194
+
195
+### **Wybierz Gemini 1.5 Flash, jeśli:**
196
+- Potrzebujesz bardzo szybkich odpowiedzi
197
+- Agent ma obsługiwać duży ruch użytkowników
198
+- Chcesz niskie koszty przy dobrej jakości
199
+- Potrzebujesz multimodalności (audio/wideo)
200
+
201
+### **Wybierz GPT-3.5 Turbo lub GPT-4o-mini, jeśli:**
202
+- Budżet jest ograniczony
203
+- Zadania są proste (klasyfikacja, FAQ, proste ekstrakcje)
204
+- Agent ma działać masowo (tysiące zapytań dziennie)
205
+
206
+---
207
+
208
+## **Model językowy w n8n**
209
+
210
+W n8n możesz używać modeli językowych przez:
211
+
212
+1. **AI Agent Node** – gotowy węzeł do tworzenia agentów AI
213
+2. **OpenAI Node** – bezpośrednia integracja z GPT
214
+3. **Google AI Node** – integracja z Gemini
215
+4. **HTTP Request Node** – własne wywołania API do modeli
216
+
217
+**Przykład konfiguracji w n8n:**
218
+```
219
+1. Trigger (Webhook lub Email)
220
+2. AI Agent Node
221
+ - Model: GPT-4o lub Gemini 1.5 Flash
222
+ - Tools: Gmail, Google Sheets, Slack
223
+ - Instrukcja: "Jesteś agentem obsługi klienta..."
224
+3. Response Node
225
+```
226
+
227
+---
228
+
229
+## **Podsumowanie**
230
+
231
+Model językowy to serce agenta AI – bez niego agent nie mógłby rozumieć języka naturalnego, podejmować decyzji ani generować odpowiedzi. Wybór odpowiedniego modelu zależy od:
232
+
233
+- **Złożoności zadań** (proste vs złożone rozumowanie)
234
+- **Wymagań kontekstowych** (krótkie vs długie dokumenty)
235
+- **Budżetu** (niski vs wysoki koszt)
236
+- **Szybkości** (real-time vs batch processing)
237
+- **Multimodalności** (tylko text vs text+obraz+audio+wideo)
238
+
239
+Najpopularniejsze wybory to **GPT-4o** (OpenAI) dla uniwersalnej wysokiej jakości oraz **Gemini 1.5 Flash** (Google) dla szybkich i tanich aplikacji z dużym kontekstem.
240
+
241
+---
242
+
243
+**W kolejnym module dowiesz się:**
244
+- Jak skonfigurować model językowy w n8n
245
+- Jak zoptymalizować prompty dla agentów AI
246
+- Jak zarządzać kosztami API modeli językowych
247
+- Jak testować i monitorować działanie agentów AI
Modul 5 - Implementacja agenta AI/3. Rola promptu w agencie AI.md
... ...
@@ -0,0 +1,404 @@
1
+### **Jak AI interpretuje zapytania?**
2
+
3
+![Jak AI interpretuje zapytania](../grafiki/blok1-p2-ai-interpretuje-zapytania-title.png)
4
+
5
+- **Tokenizacja** – Model dzieli zapytanie na mniejsze jednostki językowe zwane tokenami – mogą to być słowa, części słów lub znaki interpunkcyjne. To pierwszy krok przetwarzania tekstu.
6
+- **Analiza wzorców językowych** – AI rozpoznaje wzorce, schematy gramatyczne i struktury zdaniowe na podstawie danych treningowych. Nie rozumie znaczenia, ale identyfikuje układy znane z przeszłych danych.
7
+- **Kontekst bieżący** – Model analizuje pełen kontekst rozmowy lub zapytania – uwzględnia wcześniejsze wiadomości, dane wejściowe oraz ciągłość tematu, aby lepiej dopasować odpowiedź.
8
+- **Dopasowywanie do celu i stylu** – AI stara się wygenerować odpowiedź zgodną z wykrytym celem użytkownika oraz dostosowaną do zadanego stylu, np. formalnego, technicznego, humorystycznego itp.
9
+- **Brak zrozumienia „prawdziwego świata"** – AI nie posiada świadomości ani wiedzy o rzeczywistości – jego odpowiedzi mogą być logiczne i przekonujące, ale niekoniecznie prawdziwe. Bazują wyłącznie na danych tekstowych.
10
+</div>
11
+
12
+---
13
+
14
+
15
+<div align="center">
16
+
17
+### **Attention**
18
+![Attention](../grafiki/blok1-p2-attention-title.png)
19
+
20
+Mechanizm **attention** pozwala modelowi skupić się na najważniejszych częściach tekstu podczas przetwarzania i generowania odpowiedzi.
21
+
22
+Jak działa?
23
+
24
+Gdy AI analizuje token (słowo lub jego fragment), nie rozpatruje go w izolacji. Zamiast tego:
25
+
26
+- Patrzy na wszystkie inne tokeny w zdaniu lub kontekście.
27
+- Dla każdego z nich oblicza wagę, czyli jak bardzo jest on istotny w danym momencie.
28
+
29
+To się dzieje równolegle – AI analizuje **wszystkie relacje między tokenami** naraz.
30
+
31
+**Przykład praktyczny:**
32
+
33
+Zdanie:
34
+
35
+„Kasia powiedziała Oli, że jej zeszyt jest brudny."
36
+
37
+Słowo „jej" jest niejednoznaczne – czy chodzi o zeszyt Kasi, czy Oli?
38
+
39
+Mechanizm attention pozwala modelowi „spojrzeć" na całe zdanie, by określić, do kogo „jej" się odnosi – może „skupić uwagę" na „Oli", jeśli kontekst tego wymaga.
40
+
41
+**Attention** stara się rozpoznać kontekst danego słowa wśród innych słów.
42
+
43
+</div>
44
+
45
+---
46
+
47
+
48
+<div align="center">
49
+
50
+### **Czym jest „temperature" w promptowaniu AI?**
51
+
52
+![Temperature](../grafiki/blok1-p2-temperature-title.png)
53
+
54
+Temperatura określa poziom kreatywności i losowości w odpowiedzi.
55
+
56
+LLMy nie tworzą odpowiedzi z góry zaprogramowanych. Zamiast tego przewidują kolejne słowa na podstawie prawdopodobieństwa.
57
+
58
+Na przykład:
59
+
60
+"Kiedy pada deszcz, zabieram ze sobą..."
61
+
62
+Model oblicza:
63
+
64
+85% szans: „parasol”
65
+10% szans: „kurtkę”
66
+3% szans: „uśmiech”
67
+2% szans: „pieska”
68
+
69
+- Jeśli **temperatura = 0**: Model zawsze wybierze najbardziej przewidywalną odpowiedź („parasol") – odpowiedzi są spójne, bezpieczne, powtarzalne
70
+- Jeśli **temperatura = 1**: Model czasem wybierze mniej typowe słowa („uśmiech", „pieska") – odpowiedzi są bardziej różnorodne i kreatywne
71
+
72
+Zadanie:
73
+Przygotuj jeden prosty prompt (np. „Napisz krótki opis jesiennego lasu” albo „Wymyśl nazwę dla kawiarni”). Następnie uruchom go kilkukrotnie przy różnych wartościach **temperature**:
74
+- **0.0**
75
+- **0.3**
76
+- **0.7**
77
+- **1.0**
78
+
79
+Porównaj otrzymane odpowiedzi i zastanów się:
80
+- Jak zmienił się styl, spójność i kreatywność odpowiedzi w zależności od wartości _temperature_?
81
+- Które odpowiedzi były najbardziej przewidywalne, a które zaskakujące?
82
+- Przy której wartości uzyskałeś efekt najlepiej pasujący do Twojego celu?
83
+
84
+Na końcu zapisz swoje wnioski i przygotuj krótkie podsumowanie do omówienia na forum grupy.
85
+</div>
86
+
87
+---
88
+
89
+<div align="center">
90
+
91
+### **Efekt dżina – dlaczego precyzja promptu jest kluczowa?**
92
+
93
+![Efekt dżina](../grafiki/blok1-p2-efekt-djina.png)
94
+
95
+</div>
96
+
97
+Wyobraź sobie, że korzystasz z modelu językowego jak z magicznego dżina spełniającego życzenia. Jeśli powiesz: „Chcę nowe auto”, dżin może zinterpretować to na wiele sposobów – niekoniecznie tak, jak oczekujesz. Przykład:
98
+
99
+> Proszę dżina o nowe auto. Zamiast natychmiastowego pojawienia się samochodu, dżin sprawia, że mój ojciec kupuje nowe auto, potem umiera, a ja dziedziczę ten samochód. Życzenie spełnione – ale nie w taki sposób, jak chciałem!
100
+
101
+**Co pokazuje ta metafora?**
102
+
103
+- Modele językowe (podobnie jak dżin) nie „czytają w myślach” i nie domyślają się naszych intencji.
104
+- Odpowiedź będzie zgodna z literalnym znaczeniem promptu, nawet jeśli nie o to nam chodziło.
105
+- Brak precyzji prowadzi do nieoczekiwanych, czasem absurdalnych rezultatów.
106
+
107
+**Wniosek:**
108
+
109
+Im bardziej precyzyjny, jednoznaczny i szczegółowy prompt, tym większa szansa, że model AI wygeneruje odpowiedź zgodną z naszymi oczekiwaniami. Warto zawsze doprecyzować:
110
+- Kto/co ma być podmiotem działania
111
+- Jaki jest cel i kontekst
112
+- Jakiego efektu oczekujemy
113
+
114
+Dzięki temu unikniemy „efektu dżina” i otrzymamy dokładnie to, czego potrzebujemy.
115
+
116
+___
117
+## Precyzja promptu w agentach AI
118
+
119
+![Precyzja promptu w agentach AI](../grafiki/blok1-p4-precyzja-promptu-title.png)
120
+
121
+W przypadku klasycznych modeli językowych każde zapytanie możemy doskonalić w trakcie rozmowy – przez iterację, doprecyzowanie, poprawienie błędów. **Założeniem agenta AI jest minimalizacja naszej pracy i kontaktu do absolutnego minimum**. Dążymy do sytuacji, w której wystarczy np. wrzucić notatki ze spotkania, a agent sam wykonuje całą pracę – analizuje, kategoryzuje, tworzy raporty, wysyła powiadomienia. Brak iteracji oznacza, że **prompt musi być precyzyjny od samego początku**, bo agent działa autonomicznie bez naszej korekty.
122
+
123
+**Konsekwencje nieprecyzyjnego promptu:**
124
+
125
+**Agent obsługi klienta bez jasnych granic:**
126
+```
127
+Prompt:
128
+„Odpowiadaj na pytania klientów"
129
+```
130
+
131
+>**Problem:** Agent może zacząć udzielać informacji, których nie powinien (np. o wynagrodzeniach pracowników, planach biznesowych firmy), lub obiecywać rzeczy, których firma nie może zrealizować.
132
+
133
+ **Agent z precyzyjnym promptem:**
134
+```
135
+Prompt: „Jesteś asystentem obsługi klienta. Odpowiadasz TYLKO na pytania dotyczące: statusu zamówienia, terminów dostawy, procedur zwrotu. Jeśli klient pyta o coś innego, uprzejmie przekieruj go do odpowiedniego działu. NIE podawaj informacji o cenach hurtowych, rabatach specjalnych ani wewnętrznych procesach firmy."
136
+```
137
+> Efekt: Agent działa w ściśle określonych ramach, chroniąc firmę przed błędami i wyciekami informacji.
138
+
139
+---
140
+## Halucynacje – największe zagrożenie w agentach AI
141
+
142
+![Halucynacje](../grafiki/blok1-p4-halucynacje-title.png)
143
+
144
+### Czym są halucynacje AI?
145
+
146
+**Halucynacje** to sytuacja, w której model językowy generuje informacje, które brzmią przekonująco, ale są całkowicie nieprawdziwe lub wymyślone.
147
+
148
+**Przykłady halucynacji:**
149
+- Agent podaje nieistniejące numery polis ubezpieczeniowych
150
+- Cytuje regulacje prawne, które nie istnieją
151
+- Twierdzi, że firma oferuje usługi, których nie ma w ofercie
152
+- Generuje fikcyjne dane klientów lub zamówień
153
+
154
+### Dlaczego halucynacje są szczególnie niebezpieczne w agentach AI?
155
+
156
+W zwykłej rozmowie z ChatGPT użytkownik **wie**, że rozmawia z AI i może zweryfikować informacje. **Agent AI działa w imieniu firmy** – klienci, kandydaci czy partnerzy biznesowi mogą przyjąć jego odpowiedzi za prawdę, co prowadzi do:
157
+
158
+- Utraty zaufania klientów
159
+- Problemów prawnych (np. złamanie umów, wprowadzenie w błąd)
160
+- Strat finansowych (np. obietnice rabatów, których firma nie może zrealizować)
161
+- Uszkodzenia reputacji marki
162
+
163
+---
164
+
165
+## Przykład halucynacji - skrzedełka wieprzowe
166
+
167
+![Przykład halucynacji - skrzydełka wieprzowe](../grafiki/blok1-p4-skrzedelka-wieprzowe-title.png)
168
+
169
+**Prompt użytkownika:**
170
+```
171
+Podaj przepis na wieprzowe skrzydełka
172
+```
173
+
174
+**Odpowiedź modelu językowego:**
175
+
176
+```SQL
177
+Oto prosty i smaczny przepis na wieprzowe skrzydełka, bez jajek i bez sosu sojowego:
178
+
179
+Wieprzowe skrzydełka pieczone w aromatycznej marynacie
180
+
181
+Składniki (na ok. 1 kg skrzydełek wieprzowych):
182
+
183
+- 1 kg skrzydełek wieprzowych
184
+- 3 ząbki czosnku, przeciśnięte
185
+- 1 łyżeczka soli
186
+- 1 łyżeczka słodkiej papryki
187
+- 1 łyżeczka wędzonej papryki (opcjonalnie, ale polecam)
188
+- 1/2 łyżeczki ostrej papryki
189
+- 1 łyżeczka majeranku
190
+- 1 łyżeczka miodu albo syropu klonowego
191
+- 2 łyżki oleju
192
+- 1 łyżka octu jabłkowego
193
+- pieprz do smaku
194
+
195
+Przygotowanie:
196
+
197
+1. Wymieszaj wszystkie składniki marynaty w misce.
198
+2. Dodaj skrzydełka, dokładnie obtocz i odstaw minimum na 2 godziny (najlepiej na noc).
199
+3. Rozgrzej piekarnik do 180°C.
200
+4. Ułóż skrzydełka na blasze lub w naczyniu żaroodpornym.
201
+5. Piecz 60-80 minut, co jakiś czas polewając je wytapiającym się sosem.
202
+6. Pod koniec możesz zwiększyć temperaturę do 200°C na 10 minut, żeby były bardziej przypieczone.
203
+
204
+Podanie:
205
+Najlepsze z pieczonymi ziemniakami, surówką z kiszonej kapusty albo świeżą bułką i ogórkiem kiszonym.
206
+
207
+Chcesz wersję pikantną, słodką, albo w stylu BBQ (bez soi)?
208
+```
209
+
210
+Model AI może wygenerować szczegółowy przepis na „wieprzowe skrzydełka", mimo że **świnie nie mają skrzydeł**. Odpowiedź będzie brzmiała przekonująco – z listą składników, czasem pieczenia, temperaturą – ale będzie całkowicie zmyślona, bo taki produkt nie istnieje.
211
+
212
+**Co to pokazuje?**
213
+
214
+Model nie rozumie rzeczywistości – generuje tekst na podstawie statystycznych wzorców. Jeśli prompt brzmi sensownie językowo, model wyprodukuje odpowiedź, nawet jeśli jest absurdalna. W agencie AI taka halucynacja może prowadzić do poważnych konsekwencji biznesowych.
215
+
216
+---
217
+
218
+## Przykład literalnej interpretacji promptu
219
+
220
+**Prompt użytkownika:**
221
+```
222
+Stwórz obraz ryby pływającej po wodzie
223
+```
224
+
225
+![Ryba pływająca po wodze](../grafiki/blok1-p4-ryba-po-wodze-halucynacja.png)
226
+
227
+**Co się stało?**
228
+
229
+Model zinterpretował prompt **dosłownie** – zamiast poprawić błąd ortograficzny („wodze" zamiast „wodzie"), wygenerował obraz ryby pływającej po **wodzy** (element uprzęży końskiej). To pokazuje, że model nie rozumie intencji – wykonuje polecenie literalnie, nawet jeśli jest absurdalne.
230
+
231
+**Konsekwencje w agentach AI:**
232
+
233
+Nawet małe odstępstwo od normy, użycie skrótu myślowego czy slangu może spowodować, że model językowy wykona nasze polecenie dosłownie, generując niepożądane lub błędne wyniki. Dlatego precyzja promptu jest kluczowa.
234
+
235
+---
236
+
237
+## Ton i styl w komunikacji agenta AI
238
+
239
+Precyzja promptu to nie tylko treść – to także **sposób komunikacji**. Agent może mieć dostęp do wszystkich danych i idealną logikę działania, ale jeśli komunikuje się w niewłaściwy sposób, może:
240
+
241
+- **Zniechęcić klientów** – zbyt formalny ton w sytuacji wymagającej empatii
242
+- **Stracić autorytet** – zbyt swobodny ton w kontekście profesjonalnym
243
+- **Wprowadzić zamieszanie** – niejasny lub zbyt techniczny język dla przeciętnego użytkownika
244
+- **Zaszkodzić wizerunkowi marki** – niespójny ton z wartościami firmy
245
+
246
+**Ton i styl to nie ozdoba – to narzędzie biznesowe**, które bezpośrednio wpływa na doświadczenie użytkownika i postrzeganie organizacji.
247
+
248
+---
249
+
250
+## Kluczowe wymiary tonu w promptach dla agentów AI
251
+
252
+### 1. **Formalność (Formalny ↔ Swobodny)**
253
+
254
+**Ton formalny:**
255
+- Używany w: komunikacji B2B, dokumentach prawnych, oficjalnej korespondencji
256
+- Cechy: pełne zdania, brak skrótów, oficjalne formuły grzecznościowe
257
+
258
+**Przykład promptu:**
259
+```
260
+Komunikuj się w sposób profesjonalny i formalny. Używaj pełnych zdań, unikaj skrótów i kolokwializmów. Zwracaj się do użytkowników per „Szanowny Panie/Pani" lub „Pan/Pani". Kończ odpowiedzi uprzejmym zwrotem: „Pozostaję do dyspozycji w razie pytań."
261
+```
262
+
263
+**Ton swobodny:**
264
+- Używany w: marketingu skierowanym do młodszej grupy, social media, startupy
265
+- Cechy: krótkie zdania, bezpośredni styl, emoji (z umiarem)
266
+
267
+**Przykład promptu:**
268
+```
269
+Komunikuj się w sposób przyjazny i bezpośredni. Używaj prostego języka, krótkich zdań. Możesz używać zwrotów typu „Hej!", „Super!" czy „Daj znać, jeśli masz pytania". Zachowaj entuzjazm, ale nie przesadzaj z emoji.
270
+```
271
+
272
+---
273
+
274
+### 2. **Empatyczność (Neutralny ↔ Empatyczny)**
275
+
276
+**Ton neutralny:**
277
+- Używany w: przekazywaniu faktów, raportach, systemach informacyjnych
278
+- Cechy: obiektywny, bezstronny, skupiony na danych
279
+
280
+**Przykład promptu:**
281
+```
282
+Odpowiadaj w sposób rzeczowy i obiektywny. Podawaj fakty i konkretne informacje bez dodawania emocjonalnych komentarzy. Unikaj fraz typu „rozumiem Twoje zmartwienie" – skup się na rozwiązaniu problemu.
283
+```
284
+
285
+**Ton empatyczny:**
286
+- Używany w: obsłudze klienta, sytuacjach konfliktowych, reklamacjach
287
+- Cechy: uznanie emocji użytkownika, zapewnienie wsparcia
288
+
289
+**Przykład promptu:**
290
+```
291
+Komunikuj się w sposób empatyczny i wspierający. Jeśli klient wyraża frustrację lub niezadowolenie, zacznij od uznania jego emocji: „Rozumiem Twoje zaniepokojenie" lub „Przykro mi, że tak się stało". Następnie przedstaw rozwiązanie i zapewnij o dalszym wsparciu.
292
+```
293
+
294
+---
295
+
296
+### 3. **Szczegółowość (Zwięzły ↔ Szczegółowy)**
297
+
298
+**Ton zwięzły:**
299
+- Używany w: czatbotach, szybkich odpowiedziach, FAQ
300
+- Cechy: krótkie, konkretne, na temat
301
+
302
+**Przykład promptu:**
303
+```
304
+Odpowiadaj krótko i na temat. Maksymalnie 2-3 zdania. Jeśli użytkownik potrzebuje więcej informacji, zapytaj: „Czy chcesz, żebym rozwinął ten temat?"
305
+```
306
+
307
+**Ton szczegółowy:**
308
+- Używany w: raportach, instrukcjach, edukacji
309
+- Cechy: rozwinięte wyjaśnienia, przykłady, kontekst
310
+
311
+**Przykład promptu:**
312
+```
313
+Odpowiadaj w sposób szczegółowy i wyczerpujący. Podawaj kontekst, wyjaśniaj krok po kroku, dodawaj przykłady. Upewnij się, że użytkownik otrzymał pełny obraz tematu.
314
+```
315
+
316
+---
317
+
318
+### 4. **Techniczność (Przystępny ↔ Ekspercki)**
319
+
320
+**Ton przystępny:**
321
+- Używany w: komunikacji z osobami nietechnicznymi, edukacji podstawowej
322
+- Cechy: unikanie żargonu, proste analogie
323
+
324
+**Przykład promptu:**
325
+```
326
+Wyjaśniaj pojęcia w prosty sposób, bez używania żargonu technicznego. Jeśli musisz użyć specjalistycznego terminu, wyjaśnij go od razu. Używaj analogii i przykładów z życia codziennego.
327
+```
328
+
329
+**Ton ekspercki:**
330
+- Używany w: komunikacji B2B technicznej, dokumentacji, dla specjalistów
331
+- Cechy: precyzyjne terminy branżowe, szczegóły techniczne
332
+
333
+**Przykład promptu:**
334
+```
335
+Komunikuj się na poziomie eksperckim. Używaj precyzyjnych terminów technicznych, zakładając, że odbiorca ma wiedzę specjalistyczną. Podawaj szczegóły implementacyjne i odniesienia do standardów branżowych.
336
+```
337
+
338
+---
339
+
340
+## Jak zdefiniować ton w prompcie dla agenta?
341
+
342
+### Szablon definiowania tonu:
343
+
344
+```
345
+Jesteś [rola agenta] w [kontekst organizacji].
346
+
347
+Ton komunikacji: [formalny/swobodny], [empatyczny/neutralny], [zwięzły/szczegółowy], [przystępny/ekspercki]
348
+
349
+Zasady stylu:
350
+1. [Określ, jak zaczynać odpowiedzi]
351
+2. [Określ, jakiego języka używać]
352
+3. [Określ, czego unikać]
353
+4. [Określ, jak kończyć odpowiedzi]
354
+
355
+Przykładowe odpowiedzi w odpowiednim tonie:
356
+- [Przykład 1]
357
+- [Przykład 2]
358
+```
359
+
360
+---
361
+
362
+### Przykład gotowego promptu dla agenta HR:
363
+
364
+```
365
+Jesteś asystentem HR w firmie technologicznej zajmującej się tworzeniem oprogramowania.
366
+
367
+Ton komunikacji: profesjonalny, ale przyjazny | empatyczny | umiarkowanie szczegółowy | przystępny
368
+
369
+Zasady stylu:
370
+1. Zaczynaj odpowiedzi od „Dziękuję za kontakt" lub „Dziękuję za pytanie"
371
+2. Używaj prostego języka, unikaj żargonu technicznego (chyba że kandydat o to pyta)
372
+3. Unikaj obietnic, których firma nie może spełnić (np. „Na pewno dostaniesz pracę")
373
+4. Kończ odpowiedzi: „Chętnie odpowiem na dodatkowe pytania!" lub „Powodzenia w procesie rekrutacji!"
374
+
375
+Przykładowe odpowiedzi:
376
+- Pytanie o wymagania: „Dziękuję za zainteresowanie stanowiskiem. Poszukujemy osoby z [lista wymagań]. Jeśli spełniasz te kryteria, zapraszamy do aplikowania!"
377
+- Pytanie o proces: „Nasz proces rekrutacji składa się z trzech etapów: [opis]. Każdy etap trwa około [czas]. Chętnie odpowiem na dodatkowe pytania!"
378
+```
379
+
380
+---
381
+
382
+## Podsumowanie – precyzja promptu i ton w agentach AI
383
+
384
+**Kluczowe zasady budowania skutecznych agentów AI:**
385
+
386
+1. **Precyzja treści promptu**
387
+ - Określ jasne granice działania agenta
388
+ - Zdefiniuj, co agent może i czego nie może robić
389
+ - Zapewnij dostęp do wiarygodnych danych, aby minimalizować halucynacje
390
+
391
+2. **Precyzja tonu i stylu**
392
+ - Zdefiniuj ton na czterech wymiarach: formalność, empatyczność, szczegółowość, techniczność
393
+ - Podaj konkretne przykłady odpowiedzi w odpowiednim tonie
394
+ - Testuj agenta w różnych scenariuszach, aby upewnić się, że ton jest spójny
395
+
396
+3. **Konsekwencje biznesowe**
397
+ - Nieprecyzyjny prompt lub niewłaściwy ton prowadzi do utraty zaufania klientów
398
+ - Może skutkować problemami prawnymi, stratami finansowymi i uszkodzeniem reputacji
399
+ - Dobrze zaprojektowany agent to inwestycja w wizerunek i efektywność firmy
400
+
401
+**Wniosek:** Precyzja promptu – zarówno w treści, jak i w tonie – to fundamentalna różnica między agentem, który wspiera firmę, a agentem, który może jej zaszkodzić.
402
+
403
+---
404
+
Modul 5 - Implementacja agenta AI/4. Po\305\202\304\205czenie API i tokeny.md
... ...
@@ -0,0 +1,283 @@
1
+
2
+![ChatGPT w przeglądarce vs ChatGPT API](../grafiki/blok1-p6-api-vs-przegladarka-title.png)
3
+
4
+<div align="center">
5
+
6
+### **ChatGPT w przeglądarce vs ChatGPT API – kluczowe różnice**
7
+
8
+</div>
9
+
10
+| **Aspekt** | **ChatGPT w przeglądarce** | **ChatGPT API** |
11
+| ------------------- | -------------------------------------------------------- | ----------------------------------------------- |
12
+| **Dostęp** | Przez chat.openai.com | Przez kod (n8n, Python, Node.js) |
13
+| **Model kontroli** | Ograniczony (temperatura, długość) | Pełna kontrola parametrów |
14
+| **Koszt** | Abonament: ~$20/miesiąc (Plus) lub darmowy | Pay-per-use: płacisz za tokeny |
15
+| **Limity tokenów** | Ukryte, zależne od wersji | Jawne, konfigurowane (4k, 8k, 128k) |
16
+| **Funkcje** | UI, historia konwersacji, DALL-E, przeglądanie internetu | Surowe API, brak UI |
17
+| **Integracja** | Brak | Pełna integracja z aplikacjami |
18
+| **Historia** | Automatycznie zapisywana | Musisz zarządzać samodzielnie |
19
+| **Dane treningowe** | Mogą być używane (można wyłączyć) | Nie są używane do treningu |
20
+| **Prywatność** | Standardowa | Większa (dane nie są przechowywane) |
21
+| **Rate limiting** | Niewidoczne dla użytkownika | Limity żądań/minutę (RPM) i tokeny/minutę (TPM) |
22
+
23
+---
24
+
25
+
26
+<div align="center">
27
+
28
+### **Limity tokenów w popularnych modelach**
29
+
30
+</div>
31
+
32
+**OpenAI GPT:**
33
+
34
+| Model | Limit tokenów | Przybliżony ekwiwalent |
35
+|-------|---------------|------------------------|
36
+| GPT-3.5-turbo | 4,096 | ~3,000 słów / 6 stron A4 |
37
+| GPT-3.5-turbo-16k | 16,384 | ~12,000 słów / 24 strony A4 |
38
+| GPT-4 | 8,192 | ~6,000 słów / 12 stron A4 |
39
+| GPT-4-32k | 32,768 | ~24,000 słów / 48 stron A4 |
40
+| GPT-4-turbo | 128,000 | ~96,000 słów / 192 strony A4 |
41
+| GPT-4o | 128,000 | ~96,000 słów / 192 strony A4 |
42
+| **GPT-5** | **128,000** | **~96,000 słów / 192 strony A4** |
43
+| **GPT-5 mini** | **128,000** | **~96,000 słów / 192 strony A4** |
44
+| **GPT-5 nano** | **128,000** | **~96,000 słów / 192 strony A4** |
45
+
46
+**Inne modele:**
47
+
48
+- **Claude 3 (Anthropic):** do 200,000 tokenów (~150,000 słów)
49
+- **Gemini 1.5 Pro (Google):** do 2,000,000 tokenów (~1,500,000 słów)
50
+- **Llama 3 (Meta):** 8,192 tokenów (~6,000 słów)
51
+
52
+**Uwaga:** Limit obejmuje **prompt + odpowiedź**!
53
+
54
+**Przykład:**
55
+- Prompt: 1000 tokenów
56
+- Odpowiedź: 500 tokenów
57
+- **Razem: 1500 tokenów zużytych z limitu 4096**
58
+
59
+---
60
+
61
+
62
+<div align="center">
63
+
64
+### **Jak działa rozliczanie w API?**
65
+
66
+</div>
67
+
68
+**Model cenowy: Pay-per-token**
69
+
70
+Płacisz za każdy token, który przetworzysz – zarówno w prompcie (input) jak i odpowiedzi (output).
71
+
72
+**Ceny OpenAI API (przykładowe, aktualne na listopad 2024):**
73
+
74
+| Model | Input (za 1M tokenów) | Output (za 1M tokenów) |
75
+|-------|----------------------|------------------------|
76
+| GPT-3.5-turbo | $0.50 | $1.50 |
77
+| GPT-4 | $30.00 | $60.00 |
78
+| GPT-4-turbo | $10.00 | $30.00 |
79
+| GPT-4o | $5.00 | $15.00 |
80
+
81
+**Przykład kalkulacji kosztu:**
82
+
83
+Zapytanie:
84
+- Prompt: 500 tokenów (input)
85
+- Odpowiedź: 300 tokenów (output)
86
+
87
+**GPT-3.5-turbo:**
88
+- Input: 500 × $0.50 / 1,000,000 = $0.00025
89
+- Output: 300 × $1.50 / 1,000,000 = $0.00045
90
+- **Razem: $0.0007 (około 0.07 centa)**
91
+
92
+**GPT-4:**
93
+- Input: 500 × $30 / 1,000,000 = $0.015
94
+- Output: 300 × $60 / 1,000,000 = $0.018
95
+- **Razem: $0.033 (około 3.3 centa)**
96
+
97
+**Dla 1000 zapytań:**
98
+- GPT-3.5: ~$0.70
99
+- GPT-4: ~$33
100
+
101
+**Wniosek:** GPT-4 jest **~47× droższy** niż GPT-3.5!
102
+
103
+---
104
+
105
+
106
+<div align="center">
107
+
108
+### **GPT-5 – najbardziej zaawansowany model OpenAI**
109
+
110
+</div>
111
+
112
+**GPT-5** to najinteligentniejszy model OpenAI, specjalnie wytrenowany do:
113
+
114
+✅ **Generowania kodu, debugowania i refaktoryzacji**
115
+✅ **Ścisłego podążania za instrukcjami**
116
+✅ **Długiego kontekstu i wywoływania narzędzi (tool calling)**
117
+✅ **Zadań agentowych (agentic tasks)**
118
+
119
+**Tokeny w GPT-5:**
120
+- **Limit kontekstu: 128,000 tokenów** (identycznie jak GPT-4o/GPT-4-turbo)
121
+- Dotyczy wszystkich wariantów: `gpt-5`, `gpt-5-mini`, `gpt-5-nano`
122
+- Model używa **reasoning tokens** – wewnętrzny "łańcuch myśli" przed odpowiedzią
123
+- Możliwość przekazywania Chain of Thought (CoT) między turami konwersacji
124
+
125
+**Warianty modeli GPT-5:**
126
+
127
+| Model | Najlepsze dla | Reasoning effort |
128
+|-------|---------------|------------------|
129
+| `gpt-5` | Złożone rozumowanie, szeroką wiedzę, kod, zadania agentowe | `minimal`, `low`, `medium`, `high` |
130
+| `gpt-5-mini` | Równowaga między kosztem, szybkością i możliwościami | `minimal`, `low`, `medium` |
131
+| `gpt-5-nano` | Zadania o wysokiej przepustowości, proste instrukcje, klasyfikacja | `minimal`, `low` |
132
+
133
+---
134
+
135
+
136
+<div align="center">
137
+
138
+### **Podsumowanie**
139
+
140
+</div>
141
+
142
+| **Aspekt** | **ChatGPT w przeglądarce** | **API** |
143
+|------------|----------------------------|---------|
144
+| **Najlepsze dla** | Użytkowników końcowych, eksploracji | Deweloperów, automatyzacji |
145
+| **Koszt** | $0 lub $20/miesiąc (flat rate) | Pay-per-token (zmienne) |
146
+| **Kontrola** | Ograniczona | Pełna |
147
+| **Zarządzanie tokenami** | Automatyczne | Manualne |
148
+| **Integracja** | Brak | Pełna |
149
+
150
+**Kluczowe wnioski:**
151
+
152
+1. **Tokeny = pieniądze** – każdy token w API kosztuje
153
+2. **Wybieraj model świadomie** – GPT-4 jest 47× droższy niż GPT-3.5
154
+3. **Optymalizuj prompty** – krótsze = tańsze
155
+4. **Monitoruj zużycie** – unikaj niespodzianek na fakturze
156
+5. **ChatGPT Plus opłacalny dla power users** – 9600+ wiadomości/m za $20
157
+6. **API lepsze dla aplikacji** – pełna kontrola i integracja
158
+
159
+**Decyzja:** Przeglądarka dla ludzi, API dla robotów!
160
+
161
+---
162
+
163
+## Optymalizacja promptu pod kątem kosztów API
164
+
165
+Każde wywołanie agenta AI generuje koszty – zwykle płacimy za liczbę **tokenów** (jednostek tekstu) przetwarzanych przez model. Im dłuższy prompt i odpowiedź, tym wyższy koszt.
166
+
167
+### Jak zmniejszyć koszty obsługi agenta?
168
+
169
+#### 1. **Zwięzłość promptu**
170
+
171
+**Źle:**
172
+```
173
+Jesteś asystentem obsługi klienta w firmie zajmującej się sprzedażą elektroniki. Odpowiadasz na pytania klientów dotyczące produktów, zamówień, dostaw, zwrotów, reklamacji i wszelkich innych zagadnień związanych z obsługą klienta. Twoja rola polega na udzielaniu szczegółowych, pomocnych i przystępnych odpowiedzi, które rozwiązują problemy klientów. Zawsze bądź uprzejmy, empatyczny i profesjonalny. Jeśli klient jest niezadowolony, przeproś i zaproponuj rozwiązanie. Jeśli nie znasz odpowiedzi, przekieruj klienta do odpowiedniego działu.
174
+```
175
+
176
+**Dobrze:**
177
+```
178
+Jesteś asystentem obsługi klienta w sklepie elektroniki. Odpowiadasz na pytania o produkty, zamówienia, dostawy i zwroty. Ton: uprzejmy i pomocny. Jeśli nie znasz odpowiedzi, przekieruj do właściwego działu.
179
+```
180
+
181
+**Oszczędność:** ~70 tokenów na każde wywołanie
182
+
183
+---
184
+
185
+#### 2. **Ograniczenie długości odpowiedzi**
186
+
187
+Dodaj w prompcie:
188
+```
189
+Odpowiadaj zwięźle – maksymalnie 3-4 zdania. Jeśli użytkownik potrzebuje więcej informacji, zapyta.
190
+```
191
+
192
+**Efekt:** Krótsze odpowiedzi = mniej tokenów = niższe koszty
193
+
194
+---
195
+
196
+#### 3. **Unikanie powtórzeń w prompcie**
197
+
198
+Zamiast:
199
+```
200
+Jeśli klient pyta o zwrot, odpowiedz X.
201
+Jeśli klient pyta o reklamację, odpowiedz Y.
202
+Jeśli klient pyta o wymianę, odpowiedz Z.
203
+```
204
+
205
+Użyj:
206
+```
207
+Polityka zwrotów: [krótki opis]. Stosuj ją do pytań o zwrot, reklamację i wymianę.
208
+```
209
+
210
+---
211
+
212
+#### 4. **Wykorzystanie cache'owania (w ChatGPT API)**
213
+
214
+W przypadku powtarzających się fragmentów promptu (np. zasad firmy, listy produktów), wykorzystaj mechanizm **Prompt Caching**, który zmniejsza koszty o 50-90% dla powtarzalnych elementów.
215
+
216
+**Więcej informacji:**
217
+- [ChatGPT API – dokumentacja oficjalna](https://platform.openai.com/docs/guides/chat)
218
+- [Pricing – koszty tokenów](https://openai.com/api/pricing/)
219
+
220
+---
221
+
222
+#### 5. **Wybór modelu**
223
+
224
+Nie zawsze potrzebujesz najdroższego modelu. Dla prostych zadań (FAQ, powitania) możesz użyć tańszych modeli:
225
+
226
+- **GPT-4** – droższy, ale najbardziej zaawansowany
227
+- **GPT-4o mini** – tańszy, wystarczający dla większości zadań
228
+- **GPT-3.5 Turbo** – najtańszy, dobry dla prostych odpowiedzi
229
+
230
+**Strategia:** Używaj droższego modelu tylko tam, gdzie jest naprawdę potrzebny (np. złożone analizy, decyzje biznesowe).
231
+
232
+---
233
+
234
+#### 6. **Monitorowanie zużycia tokenów**
235
+
236
+Regularnie sprawdzaj zużycie tokenów w panelu OpenAI:
237
+- Śledź liczbę tokenów na zapytanie
238
+- Identyfikuj prompty, które generują zbyt długie odpowiedzi
239
+- Optymalizuj te, które generują największe koszty
240
+
241
+**Narzędzie:** [OpenAI Usage Dashboard](https://platform.openai.com/usage)
242
+
243
+---
244
+
245
+### Przykładowe koszty (na podstawie cennika OpenAI)
246
+
247
+**GPT-4o:**
248
+- Input: $2.50 za 1M tokenów
249
+- Output: $10.00 za 1M tokenów
250
+
251
+**GPT-4o mini:**
252
+- Input: $0.15 za 1M tokenów
253
+- Output: $0.60 za 1M tokenów
254
+
255
+**Przykład:**
256
+Jeśli agent obsługuje 10,000 zapytań dziennie, a każde zapytanie to 100 tokenów promptu + 150 tokenów odpowiedzi:
257
+
258
+**GPT-4o:**
259
+- Input: 10,000 × 100 = 1M tokenów = $2.50
260
+- Output: 10,000 × 150 = 1.5M tokenów = $15.00
261
+- **Razem dziennie: $17.50 | miesięcznie: ~$525**
262
+
263
+**GPT-4o mini:**
264
+- Input: 10,000 × 100 = 1M tokenów = $0.15
265
+- Output: 10,000 × 150 = 1.5M tokenów = $0.90
266
+- **Razem dziennie: $1.05 | miesięcznie: ~$31.50**
267
+
268
+**Oszczędność:** ~$494/miesiąc przez wybór tańszego modelu dla prostych zadań!
269
+
270
+---
271
+
272
+## Podsumowanie – koszty i optymalizacja
273
+
274
+**Kluczowe wnioski:**
275
+
276
+1. **Tokeny = pieniądze** – każdy token w API kosztuje
277
+2. **Wybieraj model świadomie** – GPT-4 jest droższy niż GPT-4o mini
278
+3. **Optymalizuj prompty** – krótsze = tańsze
279
+4. **Monitoruj zużycie** – unikaj niespodzianek na fakturze
280
+5. **ChatGPT Plus opłacalny dla power users** – 9600+ wiadomości/m za $20
281
+6. **API lepsze dla aplikacji** – pełna kontrola i integracja
282
+7. **Zwięzłość promptu** – może zaoszczędzić setki dolarów miesięcznie
283
+8. **Cache'owanie** – wykorzystuj mechanizmy optymalizacyjne API
Modul 6 - Warsztaty praktyczne/1. ChatBot.md
... ...
@@ -0,0 +1,117 @@
1
+```json
2
+{
3
+ "name": "1. ChatBot",
4
+ "nodes": [
5
+ {
6
+ "parameters": {
7
+ "options": {}
8
+ },
9
+ "type": "@n8n/n8n-nodes-langchain.chatTrigger",
10
+ "typeVersion": 1.3,
11
+ "position": [
12
+ 0,
13
+ 0
14
+ ],
15
+ "id": "4557aaf5-8774-471f-a6c4-518af1041fa6",
16
+ "name": "When chat message received",
17
+ "webhookId": "f06b3f54-e625-4ab8-83ea-94caa009a6b9"
18
+ },
19
+ {
20
+ "parameters": {
21
+ "options": {}
22
+ },
23
+ "type": "@n8n/n8n-nodes-langchain.agent",
24
+ "typeVersion": 2.2,
25
+ "position": [
26
+ 208,
27
+ 0
28
+ ],
29
+ "id": "d9b75a73-b67b-44c1-84d2-97dcfb0fab1f",
30
+ "name": "AI Agent"
31
+ },
32
+ {
33
+ "parameters": {
34
+ "model": {
35
+ "__rl": true,
36
+ "value": "gpt-5-nano",
37
+ "mode": "list",
38
+ "cachedResultName": "gpt-5-nano"
39
+ },
40
+ "options": {}
41
+ },
42
+ "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
43
+ "typeVersion": 1.2,
44
+ "position": [
45
+ 80,
46
+ 208
47
+ ],
48
+ "id": "59bfb9de-80e0-4f29-9b28-3b1b88b62c19",
49
+ "name": "OpenAI Chat Model",
50
+ "credentials": {
51
+ "openAiApi": {
52
+ "id": "QIDUdl5nMKsoFRT8",
53
+ "name": "OpenAi account"
54
+ }
55
+ }
56
+ },
57
+ {
58
+ "parameters": {},
59
+ "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
60
+ "typeVersion": 1.3,
61
+ "position": [
62
+ 224,
63
+ 208
64
+ ],
65
+ "id": "6932c46c-36e4-4fd6-99e0-3713b9763623",
66
+ "name": "Simple Memory"
67
+ }
68
+ ],
69
+ "pinData": {},
70
+ "connections": {
71
+ "When chat message received": {
72
+ "main": [
73
+ [
74
+ {
75
+ "node": "AI Agent",
76
+ "type": "main",
77
+ "index": 0
78
+ }
79
+ ]
80
+ ]
81
+ },
82
+ "OpenAI Chat Model": {
83
+ "ai_languageModel": [
84
+ [
85
+ {
86
+ "node": "AI Agent",
87
+ "type": "ai_languageModel",
88
+ "index": 0
89
+ }
90
+ ]
91
+ ]
92
+ },
93
+ "Simple Memory": {
94
+ "ai_memory": [
95
+ [
96
+ {
97
+ "node": "AI Agent",
98
+ "type": "ai_memory",
99
+ "index": 0
100
+ }
101
+ ]
102
+ ]
103
+ }
104
+ },
105
+ "active": false,
106
+ "settings": {
107
+ "executionOrder": "v1"
108
+ },
109
+ "versionId": "972bb4ea-658e-460c-9d12-f9bc073f92dd",
110
+ "meta": {
111
+ "templateCredsSetupCompleted": true,
112
+ "instanceId": "45cdfe5d33c15ac09fe745eed18ba8431c804bbc71dfc7e4a62ca65ad47117cb"
113
+ },
114
+ "id": "YKwykGTRq6qllKeG",
115
+ "tags": []
116
+}
117
+```
Modul 6 - Warsztaty praktyczne/10. Gmail.md
... ...
@@ -0,0 +1,131 @@
1
+```json
2
+{
3
+ "name": "10. Gmail",
4
+ "nodes": [
5
+ {
6
+ "parameters": {
7
+ "options": {}
8
+ },
9
+ "type": "@n8n/n8n-nodes-langchain.chatTrigger",
10
+ "typeVersion": 1.4,
11
+ "position": [
12
+ -400,
13
+ 0
14
+ ],
15
+ "id": "5f59b3ee-44f1-40a4-b069-7de11c7e9bc2",
16
+ "name": "When chat message received",
17
+ "webhookId": "0c075e0e-e818-43a3-9a12-2851b9645b28"
18
+ },
19
+ {
20
+ "parameters": {
21
+ "promptType": "define",
22
+ "text": "=Jesteś agentem n8n odpowiedzialnym za pobieranie wiadomości Gmail.\nDzisiejsza data to: {{ $json.currentDate }}.\nMasz jedno narzędzie: Get many messages in Gmail.\nTo narzędzie przyjmuje dokładnie jeden parametr: query (string).\nZawsze wykonujesz te kroki:\nOdczytaj polecenie użytkownika po polsku.\nUstal jeden konkretny dzień, którego dotyczy pytanie użytkownika:\n– jeśli użyje słowa „dzisiaj”, to użyj {{ $json.currentDate }}\n– „wczoraj” → data o 1 dzień wcześniejsza\n– „przedwczoraj” → data o 2 dni wcześniejsza\nJeśli poda datę ręcznie (np. „29 listopada 2025”, „27.11.2024”), zinterpretuj ją jako jeden dzień.\nZamień dzień na format YYYY/MM/DD i wylicz dzień następny.\nZbuduj zapytanie Gmail w formacie:\nafter:YYYY/MM/DD before:YYYY/MM/DD_NASTĘPNY_DZIEŃ\nZawsze (dokładnie raz) wywołaj narzędzie „Get many messages in Gmail” z parametrem:\nquery: \"after:... before:...\"\n– nigdy nie wywołuj tego narzędzia bez parametru query\nPo otrzymaniu wyników odpowiedz użytkownikowi na czacie:\n– podaj liczbę wiadomości\n– wypisz listę „Nadawca – temat”\nJeśli lista jest pusta, napisz:\n„Brak wiadomości z tego dnia.”",
23
+ "options": {}
24
+ },
25
+ "type": "@n8n/n8n-nodes-langchain.agent",
26
+ "typeVersion": 3,
27
+ "position": [
28
+ -64,
29
+ 0
30
+ ],
31
+ "id": "99558854-9515-4b05-8c49-ba19d5a50839",
32
+ "name": "AI Agent"
33
+ },
34
+ {
35
+ "parameters": {
36
+ "model": {
37
+ "__rl": true,
38
+ "value": "gpt-5-nano",
39
+ "mode": "list",
40
+ "cachedResultName": "gpt-5-nano"
41
+ },
42
+ "builtInTools": {},
43
+ "options": {}
44
+ },
45
+ "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
46
+ "typeVersion": 1.3,
47
+ "position": [
48
+ -208,
49
+ 224
50
+ ],
51
+ "id": "033c09d4-4962-4633-9e75-64165756133b",
52
+ "name": "OpenAI Chat Model",
53
+ "credentials": {
54
+ "openAiApi": {
55
+ "id": "n4IfKjRdUa9SjsVf",
56
+ "name": "OpenAi account 2"
57
+ }
58
+ }
59
+ },
60
+ {
61
+ "parameters": {
62
+ "operation": "getAll",
63
+ "limit": 10,
64
+ "filters": {}
65
+ },
66
+ "type": "n8n-nodes-base.gmailTool",
67
+ "typeVersion": 2.1,
68
+ "position": [
69
+ 176,
70
+ 208
71
+ ],
72
+ "id": "a76d70e6-44b9-4a60-bece-488b35d6de20",
73
+ "name": "Get many messages in Gmail",
74
+ "webhookId": "45dcb7c3-de04-472a-acd5-245726246b3e",
75
+ "credentials": {
76
+ "gmailOAuth2": {
77
+ "id": "bd6wbOdqWHgE01U1",
78
+ "name": "Gmail account"
79
+ }
80
+ }
81
+ }
82
+ ],
83
+ "pinData": {},
84
+ "connections": {
85
+ "When chat message received": {
86
+ "main": [
87
+ [
88
+ {
89
+ "node": "AI Agent",
90
+ "type": "main",
91
+ "index": 0
92
+ }
93
+ ]
94
+ ]
95
+ },
96
+ "OpenAI Chat Model": {
97
+ "ai_languageModel": [
98
+ [
99
+ {
100
+ "node": "AI Agent",
101
+ "type": "ai_languageModel",
102
+ "index": 0
103
+ }
104
+ ]
105
+ ]
106
+ },
107
+ "Get many messages in Gmail": {
108
+ "ai_tool": [
109
+ [
110
+ {
111
+ "node": "AI Agent",
112
+ "type": "ai_tool",
113
+ "index": 0
114
+ }
115
+ ]
116
+ ]
117
+ }
118
+ },
119
+ "active": false,
120
+ "settings": {
121
+ "executionOrder": "v1"
122
+ },
123
+ "versionId": "fda0fe6b-4518-434c-8f96-ceaa74a92f69",
124
+ "meta": {
125
+ "templateCredsSetupCompleted": true,
126
+ "instanceId": "45cdfe5d33c15ac09fe745eed18ba8431c804bbc71dfc7e4a62ca65ad47117cb"
127
+ },
128
+ "id": "QIkZDsDRRGk7xL9O",
129
+ "tags": []
130
+}
131
+```
... ...
\ No newline at end of file
Modul 6 - Warsztaty praktyczne/2. Pogoda.md
... ...
@@ -0,0 +1,157 @@
1
+```json
2
+{
3
+ "name": "2. Pogoda",
4
+ "nodes": [
5
+ {
6
+ "parameters": {},
7
+ "type": "n8n-nodes-base.manualTrigger",
8
+ "typeVersion": 1,
9
+ "position": [
10
+ 0,
11
+ 0
12
+ ],
13
+ "id": "0838547e-359d-48ad-8951-4507c026b63d",
14
+ "name": "When clicking ‘Execute workflow’"
15
+ },
16
+ {
17
+ "parameters": {
18
+ "url": "https://api.open-meteo.com/v1/forecast?latitude=50.0614&longitude=19.9366&current_weather=true",
19
+ "options": {}
20
+ },
21
+ "type": "n8n-nodes-base.httpRequest",
22
+ "typeVersion": 4.2,
23
+ "position": [
24
+ 208,
25
+ 0
26
+ ],
27
+ "id": "a9e43bc1-0882-4a52-8c10-c30ac0e313a1",
28
+ "name": "HTTP Request"
29
+ },
30
+ {
31
+ "parameters": {
32
+ "promptType": "define",
33
+ "text": "=Poniżej masz gotowy, poprawiony prompt, idealnie dostosowany do Open-Meteo i do danych, które pokazałeś.\nDziała 1:1 w n8n, nie odwołuje się do JSON, nie pyta o dane, nie wspomina o brakach – wszystko zgodnie z Twoimi zasadami.\nFormat raportu pozostaje taki sam, ale pola są mapowane na dane Open-Meteo (które mają inne nazwy niż wttr.in).\nPOPRAWIONY PROMPT (WKLEJ DO n8n “Message a model”)\nPrzygotuj krótki, czytelny raport pogodowy na podstawie dostarczonych danych.\nNigdy nie proś o dane i nie wspominaj o formatach, strukturach ani o brakach.\nJeśli jakieś pole jest niedostępne, wpisz \"brak danych\".\nZwróć odpowiedź dokładnie w poniższym formacie, wstawiając prawdziwe wartości zamiast nawiasów klamrowych:\nMiejscowość: {areaName}, {country}\nTemperatura: {temp_C}°C (odczuwalna: {FeelsLikeC}°C)\nPogoda: {weatherDesc}\nWilgotność: {humidity}%\nWiatr: {windspeedKmph} km/h\nCiśnienie: {pressure} hPa\nWidoczność: {visibility} km\nKomentarz: {krótkie jedno zdanie opisujące warunki}\nDane wejściowe:\n{{ JSON.stringify($json, null, 2) }}\nMapa danych:\nareaName → \"Kraków\"\ncountry → \"Polska\"\ntemp_C → $json.current_weather.temperature\nFeelsLikeC → brak danych\nweatherDesc → kod pogodowy z weathercode (użyj krótkiego opisu)\nhumidity → brak danych\nwindspeedKmph → $json.current_weather.windspeed\npressure → brak danych\nvisibility → brak danych",
34
+ "options": {}
35
+ },
36
+ "type": "@n8n/n8n-nodes-langchain.agent",
37
+ "typeVersion": 2.2,
38
+ "position": [
39
+ 384,
40
+ 0
41
+ ],
42
+ "id": "c81354b3-c47d-4229-98b9-8ac711498da5",
43
+ "name": "AI Agent"
44
+ },
45
+ {
46
+ "parameters": {
47
+ "model": {
48
+ "__rl": true,
49
+ "value": "gpt-5-nano",
50
+ "mode": "list",
51
+ "cachedResultName": "gpt-5-nano"
52
+ },
53
+ "options": {}
54
+ },
55
+ "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
56
+ "typeVersion": 1.2,
57
+ "position": [
58
+ 256,
59
+ 208
60
+ ],
61
+ "id": "9e23c4bb-516d-43d6-8784-2f19d417e052",
62
+ "name": "OpenAI Chat Model",
63
+ "credentials": {
64
+ "openAiApi": {
65
+ "id": "QIDUdl5nMKsoFRT8",
66
+ "name": "OpenAi account"
67
+ }
68
+ }
69
+ },
70
+ {
71
+ "parameters": {
72
+ "select": "channel",
73
+ "channelId": {
74
+ "__rl": true,
75
+ "value": "#n8n-1",
76
+ "mode": "name"
77
+ },
78
+ "text": "={{ $json.output }}\n\nSebastian",
79
+ "otherOptions": {}
80
+ },
81
+ "type": "n8n-nodes-base.slack",
82
+ "typeVersion": 2.3,
83
+ "position": [
84
+ 736,
85
+ 64
86
+ ],
87
+ "id": "c070c7fb-3683-49f5-bd26-02ed0e38c961",
88
+ "name": "Send a message",
89
+ "webhookId": "1a6c89b0-22d9-49bb-9698-2c25f5d842c8",
90
+ "credentials": {
91
+ "slackApi": {
92
+ "id": "tPqpFoNVEcDSYAwB",
93
+ "name": "Slack account"
94
+ }
95
+ }
96
+ }
97
+ ],
98
+ "pinData": {},
99
+ "connections": {
100
+ "When clicking ‘Execute workflow’": {
101
+ "main": [
102
+ [
103
+ {
104
+ "node": "HTTP Request",
105
+ "type": "main",
106
+ "index": 0
107
+ }
108
+ ]
109
+ ]
110
+ },
111
+ "HTTP Request": {
112
+ "main": [
113
+ [
114
+ {
115
+ "node": "AI Agent",
116
+ "type": "main",
117
+ "index": 0
118
+ }
119
+ ]
120
+ ]
121
+ },
122
+ "AI Agent": {
123
+ "main": [
124
+ [
125
+ {
126
+ "node": "Send a message",
127
+ "type": "main",
128
+ "index": 0
129
+ }
130
+ ]
131
+ ]
132
+ },
133
+ "OpenAI Chat Model": {
134
+ "ai_languageModel": [
135
+ [
136
+ {
137
+ "node": "AI Agent",
138
+ "type": "ai_languageModel",
139
+ "index": 0
140
+ }
141
+ ]
142
+ ]
143
+ }
144
+ },
145
+ "active": false,
146
+ "settings": {
147
+ "executionOrder": "v1"
148
+ },
149
+ "versionId": "d0c19cf1-ee74-4a17-b5dc-ff7159980059",
150
+ "meta": {
151
+ "templateCredsSetupCompleted": true,
152
+ "instanceId": "45cdfe5d33c15ac09fe745eed18ba8431c804bbc71dfc7e4a62ca65ad47117cb"
153
+ },
154
+ "id": "vEbxDfUh2o3XM785",
155
+ "tags": []
156
+}
157
+```
... ...
\ No newline at end of file
Modul 6 - Warsztaty praktyczne/3. Google Sheet.md
... ...
@@ -0,0 +1,197 @@
1
+```json
2
+{
3
+ "name": "3. Sheet",
4
+ "nodes": [
5
+ {
6
+ "parameters": {},
7
+ "type": "n8n-nodes-base.manualTrigger",
8
+ "typeVersion": 1,
9
+ "position": [
10
+ 0,
11
+ 0
12
+ ],
13
+ "id": "42ccdd01-a071-4b77-93dc-b849f4d43a33",
14
+ "name": "When clicking ‘Execute workflow’"
15
+ },
16
+ {
17
+ "parameters": {
18
+ "documentId": {
19
+ "__rl": true,
20
+ "value": "1D7vzFzdgzuc_VPTu_Lzlaf19-b2P8bQvUimN9xcAnmo",
21
+ "mode": "list",
22
+ "cachedResultName": "n8n-szkolenie",
23
+ "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1D7vzFzdgzuc_VPTu_Lzlaf19-b2P8bQvUimN9xcAnmo/edit?usp=drivesdk"
24
+ },
25
+ "sheetName": {
26
+ "__rl": true,
27
+ "value": 2032561876,
28
+ "mode": "list",
29
+ "cachedResultName": "Klienci",
30
+ "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1D7vzFzdgzuc_VPTu_Lzlaf19-b2P8bQvUimN9xcAnmo/edit#gid=2032561876"
31
+ },
32
+ "options": {}
33
+ },
34
+ "type": "n8n-nodes-base.googleSheets",
35
+ "typeVersion": 4.7,
36
+ "position": [
37
+ 208,
38
+ 0
39
+ ],
40
+ "id": "9edecfb4-cf22-4d93-bd65-02ca65a59dc8",
41
+ "name": "Get row(s) in sheet",
42
+ "credentials": {
43
+ "googleSheetsOAuth2Api": {
44
+ "id": "Penjuu1nZdxL99hn",
45
+ "name": "Google Sheets account"
46
+ }
47
+ }
48
+ },
49
+ {
50
+ "parameters": {
51
+ "promptType": "define",
52
+ "text": "=Dane wejściowe znajdują się w polu \"data\". Jest to lista obiektów JSON.\n\nPrzeanalizuj je i zwróć wynik WYŁĄCZNIE jako poprawny JSON w dokładnie takim formacie:\n\n{\n\"liczba_klientow\": liczba,\n\"laczny_mrr\": liczba,\n\"sredni_mrr\": liczba,\n\"sredni_nps\": liczba,\n\"top5\": [\"tekst\", \"tekst\", \"tekst\", \"tekst\", \"tekst\"],\n\"wysokie_ryzyko\": [\"tekst\", \"tekst\"],\n\"rekomendacje\": \"tekst\"\n}\n\nZasady:\n\n* Zawsze zwracaj tylko JSON, bez żadnych wstępów, komentarzy ani opisu.\n* top5 to lista 5 pozycji uporządkowanych malejąco po MRR.\n* wysokie_ryzyko: tylko elementy, które faktycznie spełniają warunki ryzyka.\n* rekomendacje: krótki opis 2-4 zdań.\n\nDane:\n{{ JSON.stringify($json.data, null, 2) }}\n",
53
+ "options": {}
54
+ },
55
+ "type": "@n8n/n8n-nodes-langchain.agent",
56
+ "typeVersion": 2.2,
57
+ "position": [
58
+ 688,
59
+ 0
60
+ ],
61
+ "id": "a82bf4de-88e6-481b-a4f1-12c0e72a619e",
62
+ "name": "AI Agent"
63
+ },
64
+ {
65
+ "parameters": {
66
+ "model": {
67
+ "__rl": true,
68
+ "value": "gpt-4.1-nano",
69
+ "mode": "list",
70
+ "cachedResultName": "gpt-4.1-nano"
71
+ },
72
+ "options": {}
73
+ },
74
+ "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
75
+ "typeVersion": 1.2,
76
+ "position": [
77
+ 528,
78
+ 224
79
+ ],
80
+ "id": "f358af4a-df19-4765-a7b0-13773ea02673",
81
+ "name": "OpenAI Chat Model",
82
+ "credentials": {
83
+ "openAiApi": {
84
+ "id": "QIDUdl5nMKsoFRT8",
85
+ "name": "OpenAi account"
86
+ }
87
+ }
88
+ },
89
+ {
90
+ "parameters": {
91
+ "aggregate": "aggregateAllItemData",
92
+ "options": {}
93
+ },
94
+ "type": "n8n-nodes-base.aggregate",
95
+ "typeVersion": 1,
96
+ "position": [
97
+ 416,
98
+ 0
99
+ ],
100
+ "id": "18aa3516-8029-4692-9088-f31efdb56c6e",
101
+ "name": "Aggregate"
102
+ },
103
+ {
104
+ "parameters": {
105
+ "sendTo": "sebastian.koziatek@sadmin.pl",
106
+ "subject": "Raport google sheet",
107
+ "message": "=<div style=\"font-family: Arial, sans-serif; font-size: 14px; line-height: 1.6; color: #333;\">\n \n <h2 style=\"color:#2a4b8d;\">Raport z Google Sheets – Klienci</h2>\n\n <h3>1. Podsumowanie ogólne</h3>\n <p>\n <strong>Liczba klientów:</strong>\n {{ JSON.parse($json.output.replace('json\\n', '')).liczba_klientow }}<br>\n <strong>Łączny MRR:</strong>\n {{ JSON.parse($json.output.replace('json\\n', '')).laczny_mrr }} EUR<br>\n <strong>Średni MRR:</strong>\n {{ JSON.parse($json.output.replace('json\\n', '')).sredni_mrr }} EUR<br>\n <strong>Średni NPS:</strong>\n {{ JSON.parse($json.output.replace('json\\n', '')).sredni_nps }}\n </p>\n\n <h3>2. TOP 5 klientów (MRR)</h3>\n <ul>\n {{ JSON.parse($json.output.replace('json\\n', '')).top5\n .map(e => \"<li>\" + e + \"</li>\")\n .join(\"\") }}\n </ul>\n\n <h3>3. Klienci wysokiego ryzyka</h3>\n <div style=\"background:#fff7f7; padding:10px; border-left:4px solid #d9534f;\">\n {{\n (d => d.wysokie_ryzyko.length > 0\n ? d.wysokie_ryzyko.join(\"<br>\")\n : \"Brak klientów wysokiego ryzyka\"\n )(JSON.parse($json.output.replace('json\\n', '')))\n }}\n </div>\n\n <h3>4. Rekomendacje ogólne</h3>\n <div style=\"background:#f4f7ff; padding:10px; border-left:4px solid #337ab7;\">\n {{ JSON.parse($json.output.replace('json\\n', '')).rekomendacje }}\n </div>\n\n <br>\n <p style=\"font-size:12px; color:#777;\">Automatyczny raport wygenerowany przez n8n + OpenAI.</p>\n\n</div>\n",
108
+ "options": {}
109
+ },
110
+ "type": "n8n-nodes-base.gmail",
111
+ "typeVersion": 2.1,
112
+ "position": [
113
+ 1040,
114
+ 0
115
+ ],
116
+ "id": "44e83466-d2f6-47f1-8a94-a803dbd1f74e",
117
+ "name": "Send a message",
118
+ "webhookId": "686afb0b-b975-4629-abdb-0482155aa710",
119
+ "credentials": {
120
+ "gmailOAuth2": {
121
+ "id": "bd6wbOdqWHgE01U1",
122
+ "name": "Gmail account"
123
+ }
124
+ }
125
+ }
126
+ ],
127
+ "pinData": {},
128
+ "connections": {
129
+ "When clicking ‘Execute workflow’": {
130
+ "main": [
131
+ [
132
+ {
133
+ "node": "Get row(s) in sheet",
134
+ "type": "main",
135
+ "index": 0
136
+ }
137
+ ]
138
+ ]
139
+ },
140
+ "Get row(s) in sheet": {
141
+ "main": [
142
+ [
143
+ {
144
+ "node": "Aggregate",
145
+ "type": "main",
146
+ "index": 0
147
+ }
148
+ ]
149
+ ]
150
+ },
151
+ "OpenAI Chat Model": {
152
+ "ai_languageModel": [
153
+ [
154
+ {
155
+ "node": "AI Agent",
156
+ "type": "ai_languageModel",
157
+ "index": 0
158
+ }
159
+ ]
160
+ ]
161
+ },
162
+ "AI Agent": {
163
+ "main": [
164
+ [
165
+ {
166
+ "node": "Send a message",
167
+ "type": "main",
168
+ "index": 0
169
+ }
170
+ ]
171
+ ]
172
+ },
173
+ "Aggregate": {
174
+ "main": [
175
+ [
176
+ {
177
+ "node": "AI Agent",
178
+ "type": "main",
179
+ "index": 0
180
+ }
181
+ ]
182
+ ]
183
+ }
184
+ },
185
+ "active": false,
186
+ "settings": {
187
+ "executionOrder": "v1"
188
+ },
189
+ "versionId": "3a1a1be3-c6ec-4987-8ce6-51d3c14aaef2",
190
+ "meta": {
191
+ "templateCredsSetupCompleted": true,
192
+ "instanceId": "45cdfe5d33c15ac09fe745eed18ba8431c804bbc71dfc7e4a62ca65ad47117cb"
193
+ },
194
+ "id": "66Q1IWuhIAO53gIk",
195
+ "tags": []
196
+}
197
+```
... ...
\ No newline at end of file
Modul 6 - Warsztaty praktyczne/4. Telegram.md
... ...
@@ -0,0 +1,176 @@
1
+```json
2
+{
3
+ "name": "4. Telegram",
4
+ "nodes": [
5
+ {
6
+ "parameters": {
7
+ "updates": [
8
+ "message"
9
+ ],
10
+ "additionalFields": {}
11
+ },
12
+ "type": "n8n-nodes-base.telegramTrigger",
13
+ "typeVersion": 1.2,
14
+ "position": [
15
+ 0,
16
+ 0
17
+ ],
18
+ "id": "dc2588c2-6f4e-46de-8532-9c55ccb2c96b",
19
+ "name": "Telegram Trigger",
20
+ "webhookId": "5721f9e2-06c1-465c-b5e1-efc628aad1f1",
21
+ "credentials": {
22
+ "telegramApi": {
23
+ "id": "GGNMzpacCZnzAuab",
24
+ "name": "Telegram account"
25
+ }
26
+ }
27
+ },
28
+ {
29
+ "parameters": {
30
+ "promptType": "define",
31
+ "text": "=Jesteś agentem AI pracującym w n8n. Masz pełny dostęp do podłączonych narzędzi w tym workflow, w tym narzędzia Google Calendar „Create Event”. Nigdy nie twierdzisz, że nie masz dostępu do kalendarza, API czy Google — bo to narzędzie wykonuje wszystko za Ciebie.\n\nTreść wiadomości użytkownika z Telegrama otrzymujesz jako: {{ $json.message.text }}.\n\nTwoje zasady działania:\n\n1) Dodawanie wydarzeń:\n- Jeśli użytkownik napisze cokolwiek sugerującego dodanie, zapisanie, ustawienie lub umówienie wydarzenia, np.:\n „dodaj do kalendarza”, „zapisz spotkanie jutro o 14”, „umów wizytę na poniedziałek 9:00”, „zrób wpis: test szkolenie 20 listopada”\n → UŻYWASZ narzędzia Google Calendar Create Event.\n- Wyciągnij z wiadomości:\n • tytuł (summary),\n • datę,\n • godzinę startu,\n • godzinę końca lub czas trwania (jeśli nie ma – przyjmij 1 godzinę),\n • opcjonalnie opis i lokalizację.\n- Daty względne (dziś, jutro, w środę, za tydzień) zamieniasz na konkretne daty.\n- Jeśli absolutnie brakuje kluczowej informacji (np. brak jakiejkolwiek daty), zapytaj jednym krótkim pytaniem.\n\n2) Odpowiadanie:\n- Po utworzeniu wydarzenia wysyłasz krótkie potwierdzenie, np.:\n „Dodałem wydarzenie 'Spotkanie' jutro o 14:00.”\n- Nigdy nie piszesz o ICS, importach, API, instrukcjach ręcznych, braku dostępu, ani o tym, czego nie możesz zrobić.\n\n3) Inne wiadomości:\n- Jeśli wiadomość nie dotyczy kalendarza, odpowiadasz normalnie na jej treść.\n- Nie dodajesz dopisków typu: „This message was sent automatically with n8n”.\n\nTwoim zadaniem jest wykonywanie poleceń użytkownika poprzez narzędzia n8n.\n",
32
+ "options": {}
33
+ },
34
+ "type": "@n8n/n8n-nodes-langchain.agent",
35
+ "typeVersion": 2.2,
36
+ "position": [
37
+ 208,
38
+ 0
39
+ ],
40
+ "id": "58e8823d-8b49-4ea0-a8c6-18718847d0f5",
41
+ "name": "AI Agent"
42
+ },
43
+ {
44
+ "parameters": {
45
+ "model": {
46
+ "__rl": true,
47
+ "value": "gpt-5-nano",
48
+ "mode": "list",
49
+ "cachedResultName": "gpt-5-nano"
50
+ },
51
+ "options": {}
52
+ },
53
+ "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
54
+ "typeVersion": 1.2,
55
+ "position": [
56
+ 80,
57
+ 208
58
+ ],
59
+ "id": "a51b1c2c-61c5-411d-bfd8-c4deb3db1f38",
60
+ "name": "OpenAI Chat Model",
61
+ "credentials": {
62
+ "openAiApi": {
63
+ "id": "QIDUdl5nMKsoFRT8",
64
+ "name": "OpenAi account"
65
+ }
66
+ }
67
+ },
68
+ {
69
+ "parameters": {
70
+ "operation": "getAll",
71
+ "calendar": {
72
+ "__rl": true,
73
+ "value": "c_052ff8ec6c89fe77d412ab1186a2c569020c927826e4cca76a8c4b0e696e82cc@group.calendar.google.com",
74
+ "mode": "list",
75
+ "cachedResultName": "Seba Koziatek "
76
+ },
77
+ "options": {}
78
+ },
79
+ "type": "n8n-nodes-base.googleCalendarTool",
80
+ "typeVersion": 1.3,
81
+ "position": [
82
+ 464,
83
+ 224
84
+ ],
85
+ "id": "812a2d4c-0069-441b-ab2c-c4a1fe3d9e34",
86
+ "name": "Get many events in Google Calendar",
87
+ "credentials": {
88
+ "googleCalendarOAuth2Api": {
89
+ "id": "o8kYeKNsvdk1QzTt",
90
+ "name": "Google Calendar account"
91
+ }
92
+ }
93
+ },
94
+ {
95
+ "parameters": {
96
+ "chatId": "={{ $node[\"Telegram Trigger\"].json[\"message\"][\"chat\"][\"id\"] }}",
97
+ "text": "={{ $json.output }}",
98
+ "additionalFields": {}
99
+ },
100
+ "type": "n8n-nodes-base.telegram",
101
+ "typeVersion": 1.2,
102
+ "position": [
103
+ 560,
104
+ 0
105
+ ],
106
+ "id": "d238a0d7-6f2e-40c4-82be-e310e4c26723",
107
+ "name": "Send a text message",
108
+ "webhookId": "b2fffcef-b5a7-493d-98b7-a788f5f54ef2",
109
+ "credentials": {
110
+ "telegramApi": {
111
+ "id": "GGNMzpacCZnzAuab",
112
+ "name": "Telegram account"
113
+ }
114
+ }
115
+ }
116
+ ],
117
+ "pinData": {},
118
+ "connections": {
119
+ "Telegram Trigger": {
120
+ "main": [
121
+ [
122
+ {
123
+ "node": "AI Agent",
124
+ "type": "main",
125
+ "index": 0
126
+ }
127
+ ]
128
+ ]
129
+ },
130
+ "OpenAI Chat Model": {
131
+ "ai_languageModel": [
132
+ [
133
+ {
134
+ "node": "AI Agent",
135
+ "type": "ai_languageModel",
136
+ "index": 0
137
+ }
138
+ ]
139
+ ]
140
+ },
141
+ "Get many events in Google Calendar": {
142
+ "ai_tool": [
143
+ [
144
+ {
145
+ "node": "AI Agent",
146
+ "type": "ai_tool",
147
+ "index": 0
148
+ }
149
+ ]
150
+ ]
151
+ },
152
+ "AI Agent": {
153
+ "main": [
154
+ [
155
+ {
156
+ "node": "Send a text message",
157
+ "type": "main",
158
+ "index": 0
159
+ }
160
+ ]
161
+ ]
162
+ }
163
+ },
164
+ "active": false,
165
+ "settings": {
166
+ "executionOrder": "v1"
167
+ },
168
+ "versionId": "4459ddc7-98ae-4901-bfe9-e943845ed77a",
169
+ "meta": {
170
+ "templateCredsSetupCompleted": true,
171
+ "instanceId": "45cdfe5d33c15ac09fe745eed18ba8431c804bbc71dfc7e4a62ca65ad47117cb"
172
+ },
173
+ "id": "MEFtrU8dHIMfekRH",
174
+ "tags": []
175
+}
176
+```
... ...
\ No newline at end of file
Modul 6 - Warsztaty praktyczne/5. Gemini.md
... ...
@@ -0,0 +1,89 @@
1
+```json
2
+{
3
+ "name": "5. Gemini",
4
+ "nodes": [
5
+ {
6
+ "parameters": {
7
+ "options": {}
8
+ },
9
+ "type": "@n8n/n8n-nodes-langchain.chatTrigger",
10
+ "typeVersion": 1.3,
11
+ "position": [
12
+ 0,
13
+ 0
14
+ ],
15
+ "id": "3429ee19-9455-488f-bf31-717822ca2470",
16
+ "name": "When chat message received",
17
+ "webhookId": "ed5c46d6-080f-427c-9e83-04ffc209c626"
18
+ },
19
+ {
20
+ "parameters": {
21
+ "options": {}
22
+ },
23
+ "type": "@n8n/n8n-nodes-langchain.agent",
24
+ "typeVersion": 2.2,
25
+ "position": [
26
+ 208,
27
+ 0
28
+ ],
29
+ "id": "16a00015-52aa-44a5-a0dd-a5d867959e60",
30
+ "name": "AI Agent"
31
+ },
32
+ {
33
+ "parameters": {
34
+ "options": {}
35
+ },
36
+ "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
37
+ "typeVersion": 1,
38
+ "position": [
39
+ 80,
40
+ 208
41
+ ],
42
+ "id": "83641c5e-45a5-49b6-99dd-c00047a6b161",
43
+ "name": "Google Gemini Chat Model",
44
+ "credentials": {
45
+ "googlePalmApi": {
46
+ "id": "l2Zzh79TXBJdGwI7",
47
+ "name": "Google Gemini(PaLM) Api account"
48
+ }
49
+ }
50
+ }
51
+ ],
52
+ "pinData": {},
53
+ "connections": {
54
+ "When chat message received": {
55
+ "main": [
56
+ [
57
+ {
58
+ "node": "AI Agent",
59
+ "type": "main",
60
+ "index": 0
61
+ }
62
+ ]
63
+ ]
64
+ },
65
+ "Google Gemini Chat Model": {
66
+ "ai_languageModel": [
67
+ [
68
+ {
69
+ "node": "AI Agent",
70
+ "type": "ai_languageModel",
71
+ "index": 0
72
+ }
73
+ ]
74
+ ]
75
+ }
76
+ },
77
+ "active": false,
78
+ "settings": {
79
+ "executionOrder": "v1"
80
+ },
81
+ "versionId": "f282b6d2-8237-4f75-8c45-e89b94a4af6e",
82
+ "meta": {
83
+ "templateCredsSetupCompleted": true,
84
+ "instanceId": "45cdfe5d33c15ac09fe745eed18ba8431c804bbc71dfc7e4a62ca65ad47117cb"
85
+ },
86
+ "id": "q43v1Y7D4zIETBTW",
87
+ "tags": []
88
+}
89
+```
Modul 6 - Warsztaty praktyczne/6. SSH.md
... ...
@@ -0,0 +1,222 @@
1
+```json
2
+{
3
+ "name": "6. SSH",
4
+ "nodes": [
5
+ {
6
+ "parameters": {
7
+ "rule": {
8
+ "interval": [
9
+ {}
10
+ ]
11
+ }
12
+ },
13
+ "type": "n8n-nodes-base.scheduleTrigger",
14
+ "typeVersion": 1.2,
15
+ "position": [
16
+ 0,
17
+ 0
18
+ ],
19
+ "id": "5d35eb0f-9932-4d01-90d4-bdf50cb03ed6",
20
+ "name": "Schedule Trigger"
21
+ },
22
+ {
23
+ "parameters": {
24
+ "command": "systemctl is-active --quiet nginx && echo 1 || echo 0",
25
+ "cwd": "/home/szkolenie"
26
+ },
27
+ "type": "n8n-nodes-base.ssh",
28
+ "typeVersion": 1,
29
+ "position": [
30
+ 208,
31
+ 0
32
+ ],
33
+ "id": "d9a433b4-7e65-4d58-b8cc-ceaa0056f70b",
34
+ "name": "Execute a command",
35
+ "credentials": {
36
+ "sshPassword": {
37
+ "id": "CBIfFSSTTSSBHlm6",
38
+ "name": "SSH Password account"
39
+ }
40
+ }
41
+ },
42
+ {
43
+ "parameters": {
44
+ "conditions": {
45
+ "options": {
46
+ "caseSensitive": true,
47
+ "leftValue": "",
48
+ "typeValidation": "strict",
49
+ "version": 2
50
+ },
51
+ "conditions": [
52
+ {
53
+ "id": "3ef0a8c3-5fa4-4065-8599-6b7e41a3f649",
54
+ "leftValue": "={{ $json.stdout }}",
55
+ "rightValue": "1",
56
+ "operator": {
57
+ "type": "string",
58
+ "operation": "equals",
59
+ "name": "filter.operator.equals"
60
+ }
61
+ }
62
+ ],
63
+ "combinator": "and"
64
+ },
65
+ "options": {}
66
+ },
67
+ "type": "n8n-nodes-base.if",
68
+ "typeVersion": 2.2,
69
+ "position": [
70
+ 416,
71
+ 0
72
+ ],
73
+ "id": "85a086e8-55fd-405a-9c7d-eae8bf0d8534",
74
+ "name": "If"
75
+ },
76
+ {
77
+ "parameters": {
78
+ "promptType": "define",
79
+ "text": "=Serwis nginx nie działa na serwerze Alma linux. \n\nNapisz instrukcje jak go wystartować, na co zwrócić uwagę itd. ",
80
+ "options": {}
81
+ },
82
+ "type": "@n8n/n8n-nodes-langchain.agent",
83
+ "typeVersion": 2.2,
84
+ "position": [
85
+ 624,
86
+ 96
87
+ ],
88
+ "id": "66b4168e-bbf5-4486-9302-b472b21279a5",
89
+ "name": "AI Agent"
90
+ },
91
+ {
92
+ "parameters": {
93
+ "sendTo": "sebastian.koziatek@sadmin.pl",
94
+ "subject": "Awaria nginx",
95
+ "message": "={{ $json.output }}",
96
+ "options": {}
97
+ },
98
+ "type": "n8n-nodes-base.gmail",
99
+ "typeVersion": 2.1,
100
+ "position": [
101
+ 976,
102
+ 96
103
+ ],
104
+ "id": "229390fc-d863-42b2-b282-24a0afa5407b",
105
+ "name": "Send a message",
106
+ "webhookId": "7da45599-578e-438e-84cf-22e36540877f",
107
+ "credentials": {
108
+ "gmailOAuth2": {
109
+ "id": "bd6wbOdqWHgE01U1",
110
+ "name": "Gmail account"
111
+ }
112
+ }
113
+ },
114
+ {
115
+ "parameters": {},
116
+ "type": "n8n-nodes-base.noOp",
117
+ "typeVersion": 1,
118
+ "position": [
119
+ 688,
120
+ -96
121
+ ],
122
+ "id": "c1889d4b-8f06-4d8c-8787-80dae5431cc1",
123
+ "name": "No Operation, do nothing"
124
+ },
125
+ {
126
+ "parameters": {
127
+ "options": {}
128
+ },
129
+ "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
130
+ "typeVersion": 1,
131
+ "position": [
132
+ 496,
133
+ 304
134
+ ],
135
+ "id": "aa1a787e-04ca-4200-8b37-82909d00b426",
136
+ "name": "Google Gemini Chat Model",
137
+ "credentials": {
138
+ "googlePalmApi": {
139
+ "id": "l2Zzh79TXBJdGwI7",
140
+ "name": "Google Gemini(PaLM) Api account"
141
+ }
142
+ }
143
+ }
144
+ ],
145
+ "pinData": {},
146
+ "connections": {
147
+ "Schedule Trigger": {
148
+ "main": [
149
+ [
150
+ {
151
+ "node": "Execute a command",
152
+ "type": "main",
153
+ "index": 0
154
+ }
155
+ ]
156
+ ]
157
+ },
158
+ "Execute a command": {
159
+ "main": [
160
+ [
161
+ {
162
+ "node": "If",
163
+ "type": "main",
164
+ "index": 0
165
+ }
166
+ ]
167
+ ]
168
+ },
169
+ "If": {
170
+ "main": [
171
+ [
172
+ {
173
+ "node": "No Operation, do nothing",
174
+ "type": "main",
175
+ "index": 0
176
+ }
177
+ ],
178
+ [
179
+ {
180
+ "node": "AI Agent",
181
+ "type": "main",
182
+ "index": 0
183
+ }
184
+ ]
185
+ ]
186
+ },
187
+ "AI Agent": {
188
+ "main": [
189
+ [
190
+ {
191
+ "node": "Send a message",
192
+ "type": "main",
193
+ "index": 0
194
+ }
195
+ ]
196
+ ]
197
+ },
198
+ "Google Gemini Chat Model": {
199
+ "ai_languageModel": [
200
+ [
201
+ {
202
+ "node": "AI Agent",
203
+ "type": "ai_languageModel",
204
+ "index": 0
205
+ }
206
+ ]
207
+ ]
208
+ }
209
+ },
210
+ "active": false,
211
+ "settings": {
212
+ "executionOrder": "v1"
213
+ },
214
+ "versionId": "6f39aa06-3828-4fc1-ac93-07d3a36cbafc",
215
+ "meta": {
216
+ "templateCredsSetupCompleted": true,
217
+ "instanceId": "45cdfe5d33c15ac09fe745eed18ba8431c804bbc71dfc7e4a62ca65ad47117cb"
218
+ },
219
+ "id": "4PeK16BjIqgWu38C",
220
+ "tags": []
221
+}
222
+```
... ...
\ No newline at end of file
Modul 6 - Warsztaty praktyczne/7. Analiza obrazu.md
... ...
@@ -0,0 +1,161 @@
1
+```json
2
+{
3
+ "name": "7. Analiza obrazu",
4
+ "nodes": [
5
+ {
6
+ "parameters": {},
7
+ "type": "n8n-nodes-base.manualTrigger",
8
+ "typeVersion": 1,
9
+ "position": [
10
+ 0,
11
+ 0
12
+ ],
13
+ "id": "14e07030-be68-49ba-bf09-e6494a9f68ee",
14
+ "name": "When clicking ‘Execute workflow’"
15
+ },
16
+ {
17
+ "parameters": {
18
+ "resource": "image",
19
+ "operation": "analyze",
20
+ "modelId": {
21
+ "__rl": true,
22
+ "value": "models/gemini-2.5-flash",
23
+ "mode": "list",
24
+ "cachedResultName": "models/gemini-2.5-flash"
25
+ },
26
+ "imageUrls": "https://i.ibb.co/KcRj5h8f/image.png",
27
+ "options": {}
28
+ },
29
+ "type": "@n8n/n8n-nodes-langchain.googleGemini",
30
+ "typeVersion": 1,
31
+ "position": [
32
+ 208,
33
+ 0
34
+ ],
35
+ "id": "0fdd5cb3-c594-4a75-a62e-741ba7fc5be6",
36
+ "name": "Analyze image",
37
+ "credentials": {
38
+ "googlePalmApi": {
39
+ "id": "l2Zzh79TXBJdGwI7",
40
+ "name": "Google Gemini(PaLM) Api account"
41
+ }
42
+ }
43
+ },
44
+ {
45
+ "parameters": {
46
+ "promptType": "define",
47
+ "text": "=Na podstawie opisu spróbuj wywnioskować co się mogło stać. \n\n{{ $json.content.parts[0].text }}",
48
+ "options": {}
49
+ },
50
+ "type": "@n8n/n8n-nodes-langchain.agent",
51
+ "typeVersion": 2.2,
52
+ "position": [
53
+ 416,
54
+ 0
55
+ ],
56
+ "id": "ea1d0ca8-1008-48e5-8da5-7d83ad4b5fab",
57
+ "name": "AI Agent"
58
+ },
59
+ {
60
+ "parameters": {
61
+ "options": {}
62
+ },
63
+ "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
64
+ "typeVersion": 1,
65
+ "position": [
66
+ 288,
67
+ 208
68
+ ],
69
+ "id": "e96622f5-87b5-4381-9c26-7e091e0fe1cf",
70
+ "name": "Google Gemini Chat Model",
71
+ "credentials": {
72
+ "googlePalmApi": {
73
+ "id": "l2Zzh79TXBJdGwI7",
74
+ "name": "Google Gemini(PaLM) Api account"
75
+ }
76
+ }
77
+ },
78
+ {
79
+ "parameters": {
80
+ "sendTo": "sebastian.koziatek@sadmin.pl",
81
+ "subject": "Opis obrazu",
82
+ "message": "={{$json[\"output\"].split('\\\\n').join('\\n')}}\n",
83
+ "options": {}
84
+ },
85
+ "type": "n8n-nodes-base.gmail",
86
+ "typeVersion": 2.1,
87
+ "position": [
88
+ 768,
89
+ 0
90
+ ],
91
+ "id": "e4ca9090-7652-40e1-ac1c-b9ed49bbbbb1",
92
+ "name": "Send a message",
93
+ "webhookId": "c3bc31f0-90dc-4bd2-a006-4f7af052d3d8",
94
+ "credentials": {
95
+ "gmailOAuth2": {
96
+ "id": "bd6wbOdqWHgE01U1",
97
+ "name": "Gmail account"
98
+ }
99
+ }
100
+ }
101
+ ],
102
+ "pinData": {},
103
+ "connections": {
104
+ "When clicking ‘Execute workflow’": {
105
+ "main": [
106
+ [
107
+ {
108
+ "node": "Analyze image",
109
+ "type": "main",
110
+ "index": 0
111
+ }
112
+ ]
113
+ ]
114
+ },
115
+ "Analyze image": {
116
+ "main": [
117
+ [
118
+ {
119
+ "node": "AI Agent",
120
+ "type": "main",
121
+ "index": 0
122
+ }
123
+ ]
124
+ ]
125
+ },
126
+ "Google Gemini Chat Model": {
127
+ "ai_languageModel": [
128
+ [
129
+ {
130
+ "node": "AI Agent",
131
+ "type": "ai_languageModel",
132
+ "index": 0
133
+ }
134
+ ]
135
+ ]
136
+ },
137
+ "AI Agent": {
138
+ "main": [
139
+ [
140
+ {
141
+ "node": "Send a message",
142
+ "type": "main",
143
+ "index": 0
144
+ }
145
+ ]
146
+ ]
147
+ }
148
+ },
149
+ "active": false,
150
+ "settings": {
151
+ "executionOrder": "v1"
152
+ },
153
+ "versionId": "696ec0e3-1fd5-4afc-af4e-1993626c1a67",
154
+ "meta": {
155
+ "templateCredsSetupCompleted": true,
156
+ "instanceId": "45cdfe5d33c15ac09fe745eed18ba8431c804bbc71dfc7e4a62ca65ad47117cb"
157
+ },
158
+ "id": "s517pz2HuHxwoM6Y",
159
+ "tags": []
160
+}
161
+```
Modul 6 - Warsztaty praktyczne/8. Manager kalendarza.md
... ...
@@ -0,0 +1,239 @@
1
+```json
2
+{
3
+ "name": "8. Manager kalendarza",
4
+ "nodes": [
5
+ {
6
+ "parameters": {
7
+ "promptType": "define",
8
+ "text": "=Jesteś asystentem AI w n8n z bezpośrednim dostępem do Google Calendar.\n\n### KONTEKST CZASOWY (BARDZO WAŻNE):\nDziś jest: {{ $now.format('EEEE, d MMMM yyyy, HH:mm', {timeZone: 'Europe/Warsaw', locale: 'pl'}) }}\nStrefa czasowa: Europe/Warsaw.\n\nWszystkie daty względne (np. \"jutro\", \"za tydzień\", \"w środę\", \"27 listopada\") musisz obliczać w odniesieniu do powyższej daty \"Dziś\".\nZAWSZE używaj roku wynikającego z obecnej daty ({{ $now.format('yyyy') }}), chyba że użytkownik wyraźnie poda inny rok (np. 2026).\n\n### INSTRUKCJE:\n\n1) DODAWANIE WYDARZEŃ:\n- Jeśli intencją użytkownika jest dodanie wpisu (np. \"dodaj\", \"zapisz\", \"umów\", \"siłownia jutro\"), BEZWZGLĘDNIE użyj narzędzia \"Create an event\".\n- Parametry do narzędzia:\n - Start/Koniec: Muszą być w formacie ISO lub zrozumiałym dla narzędzia. Jeśli nie podano czasu trwania, przyjmij 1 godzinę.\n - Tytuł: Wyciągnij z kontekstu.\n- Jeśli użytkownik poda datę bez godziny (np. \"zapisz dentystę na jutro\"), dopytaj krótko o godzinę, zamiast zgadywać.\n\n2) STYL ODPOWIEDZI:\n- Po pomyślnym użyciu narzędzia napisz tylko krótkie potwierdzenie, np.: \"Dodałem wpis '[Tytuł]' na [Data] o godzinie [Godzina].\"\n- Nie tłumacz się z technikalii (nie pisz \"użyłem narzędzia\", \"skorzystałem z API\").\n- Odpowiadaj naturalnym językiem polskim.\n\n3) INNE TEMATY:\n- Jeśli użytkownik nie mówi o kalendarzu, prowadź normalną rozmowę.\n\nWykonuj polecenie pdane tutaj:\n{{ $json.chatInput }}\n\n → UŻYWASZ narzędzia Google Calendar Create Event.",
9
+ "options": {}
10
+ },
11
+ "type": "@n8n/n8n-nodes-langchain.agent",
12
+ "typeVersion": 2.2,
13
+ "position": [
14
+ 208,
15
+ 0
16
+ ],
17
+ "id": "55cc9079-530d-43df-ba0d-219d81573e1d",
18
+ "name": "AI Agent"
19
+ },
20
+ {
21
+ "parameters": {
22
+ "model": {
23
+ "__rl": true,
24
+ "value": "gpt-5-nano",
25
+ "mode": "list",
26
+ "cachedResultName": "gpt-5-nano"
27
+ },
28
+ "options": {}
29
+ },
30
+ "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
31
+ "typeVersion": 1.2,
32
+ "position": [
33
+ -96,
34
+ 224
35
+ ],
36
+ "id": "967ec645-a8b3-4d98-a28b-64fd8c30aa85",
37
+ "name": "OpenAI Chat Model",
38
+ "credentials": {
39
+ "openAiApi": {
40
+ "id": "n4IfKjRdUa9SjsVf",
41
+ "name": "OpenAi account 2"
42
+ }
43
+ }
44
+ },
45
+ {
46
+ "parameters": {
47
+ "operation": "getAll",
48
+ "calendar": {
49
+ "__rl": true,
50
+ "value": "83f79425be2ef2645de45538a11526ffe9665401c865ecacc014da7416dc7606@group.calendar.google.com",
51
+ "mode": "list",
52
+ "cachedResultName": "Szkolenie n8n"
53
+ },
54
+ "options": {}
55
+ },
56
+ "type": "n8n-nodes-base.googleCalendarTool",
57
+ "typeVersion": 1.3,
58
+ "position": [
59
+ 672,
60
+ 208
61
+ ],
62
+ "id": "56d2e3c7-d390-4f71-bcd5-c6f5233a9d18",
63
+ "name": "Get many events in Google Calendar",
64
+ "credentials": {
65
+ "googleCalendarOAuth2Api": {
66
+ "id": "o8kYeKNsvdk1QzTt",
67
+ "name": "Google Calendar account"
68
+ }
69
+ }
70
+ },
71
+ {
72
+ "parameters": {
73
+ "options": {}
74
+ },
75
+ "type": "@n8n/n8n-nodes-langchain.chatTrigger",
76
+ "typeVersion": 1.3,
77
+ "position": [
78
+ 0,
79
+ 0
80
+ ],
81
+ "id": "6057d1db-8dce-4566-bdde-307afb3a014d",
82
+ "name": "When chat message received",
83
+ "webhookId": "57edfaa5-8701-4922-b8e1-f3ba9264ea64"
84
+ },
85
+ {
86
+ "parameters": {},
87
+ "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
88
+ "typeVersion": 1.3,
89
+ "position": [
90
+ 80,
91
+ 224
92
+ ],
93
+ "id": "ad3bdf22-a07c-4d50-a30e-7f88340750b4",
94
+ "name": "Simple Memory"
95
+ },
96
+ {
97
+ "parameters": {
98
+ "calendar": {
99
+ "__rl": true,
100
+ "value": "83f79425be2ef2645de45538a11526ffe9665401c865ecacc014da7416dc7606@group.calendar.google.com",
101
+ "mode": "list",
102
+ "cachedResultName": "Szkolenie n8n"
103
+ },
104
+ "start": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Start', ``, 'string') }}",
105
+ "end": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('End', ``, 'string') }}",
106
+ "additionalFields": {
107
+ "summary": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Summary', ``, 'string') }}"
108
+ }
109
+ },
110
+ "type": "n8n-nodes-base.googleCalendarTool",
111
+ "typeVersion": 1.3,
112
+ "position": [
113
+ 528,
114
+ 208
115
+ ],
116
+ "id": "4a63d112-2c5d-4306-a734-8218c064ebb4",
117
+ "name": "Create an event in Google Calendar",
118
+ "credentials": {
119
+ "googleCalendarOAuth2Api": {
120
+ "id": "o8kYeKNsvdk1QzTt",
121
+ "name": "Google Calendar account"
122
+ }
123
+ }
124
+ },
125
+ {
126
+ "parameters": {
127
+ "operation": "delete",
128
+ "calendar": {
129
+ "__rl": true,
130
+ "value": "83f79425be2ef2645de45538a11526ffe9665401c865ecacc014da7416dc7606@group.calendar.google.com",
131
+ "mode": "list",
132
+ "cachedResultName": "Szkolenie n8n"
133
+ },
134
+ "eventId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Event_ID', ``, 'string') }}",
135
+ "options": {}
136
+ },
137
+ "type": "n8n-nodes-base.googleCalendarTool",
138
+ "typeVersion": 1.3,
139
+ "position": [
140
+ 368,
141
+ 208
142
+ ],
143
+ "id": "10df846e-1b3a-4d5a-bb9f-6696a87f7d57",
144
+ "name": "Delete an event in Google Calendar",
145
+ "credentials": {
146
+ "googleCalendarOAuth2Api": {
147
+ "id": "o8kYeKNsvdk1QzTt",
148
+ "name": "Google Calendar account"
149
+ }
150
+ }
151
+ }
152
+ ],
153
+ "pinData": {},
154
+ "connections": {
155
+ "OpenAI Chat Model": {
156
+ "ai_languageModel": [
157
+ [
158
+ {
159
+ "node": "AI Agent",
160
+ "type": "ai_languageModel",
161
+ "index": 0
162
+ }
163
+ ]
164
+ ]
165
+ },
166
+ "Get many events in Google Calendar": {
167
+ "ai_tool": [
168
+ [
169
+ {
170
+ "node": "AI Agent",
171
+ "type": "ai_tool",
172
+ "index": 0
173
+ }
174
+ ]
175
+ ]
176
+ },
177
+ "AI Agent": {
178
+ "main": [
179
+ []
180
+ ]
181
+ },
182
+ "When chat message received": {
183
+ "main": [
184
+ [
185
+ {
186
+ "node": "AI Agent",
187
+ "type": "main",
188
+ "index": 0
189
+ }
190
+ ]
191
+ ]
192
+ },
193
+ "Simple Memory": {
194
+ "ai_memory": [
195
+ [
196
+ {
197
+ "node": "AI Agent",
198
+ "type": "ai_memory",
199
+ "index": 0
200
+ }
201
+ ]
202
+ ]
203
+ },
204
+ "Create an event in Google Calendar": {
205
+ "ai_tool": [
206
+ [
207
+ {
208
+ "node": "AI Agent",
209
+ "type": "ai_tool",
210
+ "index": 0
211
+ }
212
+ ]
213
+ ]
214
+ },
215
+ "Delete an event in Google Calendar": {
216
+ "ai_tool": [
217
+ [
218
+ {
219
+ "node": "AI Agent",
220
+ "type": "ai_tool",
221
+ "index": 0
222
+ }
223
+ ]
224
+ ]
225
+ }
226
+ },
227
+ "active": false,
228
+ "settings": {
229
+ "executionOrder": "v1"
230
+ },
231
+ "versionId": "33b13986-3e88-49bc-9cc4-f33cf4f9fb3b",
232
+ "meta": {
233
+ "templateCredsSetupCompleted": true,
234
+ "instanceId": "45cdfe5d33c15ac09fe745eed18ba8431c804bbc71dfc7e4a62ca65ad47117cb"
235
+ },
236
+ "id": "tXxD56bTsb9RrU93",
237
+ "tags": []
238
+}
239
+```
... ...
\ No newline at end of file
Modul 6 - Warsztaty praktyczne/9. PDF converter.md
... ...
@@ -0,0 +1,152 @@
1
+```json
2
+{
3
+ "name": "9. PDF converter",
4
+ "nodes": [
5
+ {
6
+ "parameters": {},
7
+ "type": "n8n-nodes-base.manualTrigger",
8
+ "typeVersion": 1,
9
+ "position": [
10
+ 0,
11
+ 0
12
+ ],
13
+ "id": "fc3ec84e-ec69-4f4c-9262-983f6c1052a4",
14
+ "name": "When clicking ‘Execute workflow’"
15
+ },
16
+ {
17
+ "parameters": {
18
+ "operation": "download",
19
+ "fileId": {
20
+ "__rl": true,
21
+ "value": "1oN87c0AbjrzzaQPIQh4EUx4TJ1fuT_Mt",
22
+ "mode": "list",
23
+ "cachedResultName": "New Dokument tekstowy (4).txt",
24
+ "cachedResultUrl": "https://drive.google.com/file/d/1oN87c0AbjrzzaQPIQh4EUx4TJ1fuT_Mt/view?usp=drivesdk"
25
+ },
26
+ "options": {}
27
+ },
28
+ "type": "n8n-nodes-base.googleDrive",
29
+ "typeVersion": 3,
30
+ "position": [
31
+ 208,
32
+ 0
33
+ ],
34
+ "id": "c7a06230-76bb-4912-bc46-a5f00c818c33",
35
+ "name": "Download file",
36
+ "credentials": {
37
+ "googleDriveOAuth2Api": {
38
+ "id": "LVVZPMTrms8ndXUS",
39
+ "name": "Google Drive account"
40
+ }
41
+ }
42
+ },
43
+ {
44
+ "parameters": {
45
+ "operation": "text",
46
+ "options": {}
47
+ },
48
+ "type": "n8n-nodes-base.extractFromFile",
49
+ "typeVersion": 1,
50
+ "position": [
51
+ 416,
52
+ 0
53
+ ],
54
+ "id": "d499b858-39d8-410e-98af-16626f589e19",
55
+ "name": "Extract from File"
56
+ },
57
+ {
58
+ "parameters": {
59
+ "options": {}
60
+ },
61
+ "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
62
+ "typeVersion": 1,
63
+ "position": [
64
+ 528,
65
+ 272
66
+ ],
67
+ "id": "03cf1767-0861-4290-9da6-3ee8555d3cf0",
68
+ "name": "Google Gemini Chat Model",
69
+ "credentials": {
70
+ "googlePalmApi": {
71
+ "id": "8hPs0K48wbXONggV",
72
+ "name": "Google Gemini(PaLM) Api account 2"
73
+ }
74
+ }
75
+ },
76
+ {
77
+ "parameters": {
78
+ "promptType": "define",
79
+ "text": "=Przenalizuj czym sa te dane i napisz podsumowanie \n\n{{ $json.data }}",
80
+ "options": {}
81
+ },
82
+ "type": "@n8n/n8n-nodes-langchain.agent",
83
+ "typeVersion": 2.2,
84
+ "position": [
85
+ 624,
86
+ 0
87
+ ],
88
+ "id": "38a23765-482c-45c4-8869-b4f6a63606ab",
89
+ "name": "AI Agent"
90
+ }
91
+ ],
92
+ "pinData": {},
93
+ "connections": {
94
+ "When clicking ‘Execute workflow’": {
95
+ "main": [
96
+ [
97
+ {
98
+ "node": "Download file",
99
+ "type": "main",
100
+ "index": 0
101
+ }
102
+ ]
103
+ ]
104
+ },
105
+ "Download file": {
106
+ "main": [
107
+ [
108
+ {
109
+ "node": "Extract from File",
110
+ "type": "main",
111
+ "index": 0
112
+ }
113
+ ]
114
+ ]
115
+ },
116
+ "Extract from File": {
117
+ "main": [
118
+ [
119
+ {
120
+ "node": "AI Agent",
121
+ "type": "main",
122
+ "index": 0
123
+ }
124
+ ]
125
+ ]
126
+ },
127
+ "Google Gemini Chat Model": {
128
+ "ai_languageModel": [
129
+ [
130
+ {
131
+ "node": "AI Agent",
132
+ "type": "ai_languageModel",
133
+ "index": 0
134
+ }
135
+ ]
136
+ ]
137
+ }
138
+ },
139
+ "active": false,
140
+ "settings": {
141
+ "executionOrder": "v1"
142
+ },
143
+ "versionId": "8c14c4a9-8bfa-411a-a80f-0816ffbaa235",
144
+ "meta": {
145
+ "templateCredsSetupCompleted": true,
146
+ "instanceId": "45cdfe5d33c15ac09fe745eed18ba8431c804bbc71dfc7e4a62ca65ad47117cb"
147
+ },
148
+ "id": "nN6NIBAYkhzmHvqk",
149
+ "tags": []
150
+}
151
+
152
+```
... ...
\ No newline at end of file
grafiki/Gemini_Generated_Image_s1r8mus1r8mus1r8.png
... ...
Binary files /dev/null and a/grafiki/Gemini_Generated_Image_s1r8mus1r8mus1r8.png differ
grafiki/Gemini_Generated_Image_z5sp1ez5sp1ez5sp.png
... ...
Binary files /dev/null and a/grafiki/Gemini_Generated_Image_z5sp1ez5sp1ez5sp.png differ
grafiki/blok1-p2-ai-interpretuje-zapytania-title.png
... ...
Binary files /dev/null and a/grafiki/blok1-p2-ai-interpretuje-zapytania-title.png differ
grafiki/blok1-p2-attention-title.png
... ...
Binary files /dev/null and a/grafiki/blok1-p2-attention-title.png differ
grafiki/blok1-p2-efekt-djina.png
... ...
Binary files /dev/null and a/grafiki/blok1-p2-efekt-djina.png differ
grafiki/blok1-p2-temperature-title.png
... ...
Binary files /dev/null and a/grafiki/blok1-p2-temperature-title.png differ
grafiki/blok1-p4-halucynacje-title.png
... ...
Binary files /dev/null and a/grafiki/blok1-p4-halucynacje-title.png differ
grafiki/blok1-p4-ryba-po-wodze-halucynacja.png
... ...
Binary files /dev/null and a/grafiki/blok1-p4-ryba-po-wodze-halucynacja.png differ
grafiki/blok1-p4-skrzedelka-wieprzowe-title.png
... ...
Binary files /dev/null and a/grafiki/blok1-p4-skrzedelka-wieprzowe-title.png differ
grafiki/blok1-p6-api-vs-przegladarka-title.png
... ...
Binary files /dev/null and a/grafiki/blok1-p6-api-vs-przegladarka-title.png differ
grafiki/m1_p1_automatyzacja.png
... ...
Binary files /dev/null and a/grafiki/m1_p1_automatyzacja.png differ
grafiki/m1_p2_no-code-title.png
... ...
Binary files /dev/null and a/grafiki/m1_p2_no-code-title.png differ
grafiki/m1_p3-bez-programowania-title.png
... ...
Binary files /dev/null and a/grafiki/m1_p3-bez-programowania-title.png differ
grafiki/m1_p4-n8n-title.png
... ...
Binary files /dev/null and a/grafiki/m1_p4-n8n-title.png differ
grafiki/m2_p1-trigger-vs-akcja-title.png
... ...
Binary files /dev/null and a/grafiki/m2_p1-trigger-vs-akcja-title.png differ
grafiki/m2_p2-interfejs-title.png
... ...
Binary files /dev/null and a/grafiki/m2_p2-interfejs-title.png differ
grafiki/m2_p3-flow-title.png
... ...
Binary files /dev/null and a/grafiki/m2_p3-flow-title.png differ
grafiki/m2_p4-po-co-n8n-title.png
... ...
Binary files /dev/null and a/grafiki/m2_p4-po-co-n8n-title.png differ
grafiki/m2_p5-popularne-nody-title.png
... ...
Binary files /dev/null and a/grafiki/m2_p5-popularne-nody-title.png differ
grafiki/m3_p3-analiza-danych-title.png
... ...
Binary files /dev/null and a/grafiki/m3_p3-analiza-danych-title.png differ
grafiki/m3_p4-pobranie-danych-zewnetrznych.png
... ...
Binary files /dev/null and a/grafiki/m3_p4-pobranie-danych-zewnetrznych.png differ
grafiki/m3_p5-przeslanie-danych-komunikator.png
... ...
Binary files /dev/null and a/grafiki/m3_p5-przeslanie-danych-komunikator.png differ
grafiki/m3_p6-cron-harmonogram.png
... ...
Binary files /dev/null and a/grafiki/m3_p6-cron-harmonogram.png differ
grafiki/m4_p1-warsztat-gcp-title.png
... ...
Binary files /dev/null and a/grafiki/m4_p1-warsztat-gcp-title.png differ
grafiki/m4_p1-webhook-title.png
... ...
Binary files /dev/null and a/grafiki/m4_p1-webhook-title.png differ
grafiki/m4_p2-gcp-consent-screen.png
... ...
Binary files /dev/null and a/grafiki/m4_p2-gcp-consent-screen.png differ
grafiki/m4_p2-gcp-dane-kontaktowe.png
... ...
Binary files /dev/null and a/grafiki/m4_p2-gcp-dane-kontaktowe.png differ
grafiki/m4_p2-gcp-ekran-zgody.png
... ...
Binary files /dev/null and a/grafiki/m4_p2-gcp-ekran-zgody.png differ
grafiki/m4_p2-gcp-info-aplikacji.png
... ...
Binary files /dev/null and a/grafiki/m4_p2-gcp-info-aplikacji.png differ
grafiki/m4_p2-gcp-kolejny-krok.png
... ...
Binary files /dev/null and a/grafiki/m4_p2-gcp-kolejny-krok.png differ
grafiki/m4_p2-gcp-nowy-projekt.png
... ...
Binary files /dev/null and a/grafiki/m4_p2-gcp-nowy-projekt.png differ
grafiki/m4_p2-gcp-tworzenie-aplikacji.png
... ...
Binary files /dev/null and a/grafiki/m4_p2-gcp-tworzenie-aplikacji.png differ
grafiki/m4_p2-gcp-tworzenie-projektu-title.png
... ...
Binary files /dev/null and a/grafiki/m4_p2-gcp-tworzenie-projektu-title.png differ
grafiki/m4_p2-gcp-typ-odbiorcy.png
... ...
Binary files /dev/null and a/grafiki/m4_p2-gcp-typ-odbiorcy.png differ
grafiki/m4_p4-gcp-podsumowanie.png
... ...
Binary files /dev/null and a/grafiki/m4_p4-gcp-podsumowanie.png differ
grafiki/m4_p5-gcp-dane-logowania.png
... ...
Binary files /dev/null and a/grafiki/m4_p5-gcp-dane-logowania.png differ
grafiki/m4_p6-gcp-redirect-uri.png
... ...
Binary files /dev/null and a/grafiki/m4_p6-gcp-redirect-uri.png differ
grafiki/m4_p7-gcp-gmail-konfiguracja.png
... ...
Binary files /dev/null and a/grafiki/m4_p7-gcp-gmail-konfiguracja.png differ
grafiki/m4_p8-gcp-odbiorcy-oauth.png
... ...
Binary files /dev/null and a/grafiki/m4_p8-gcp-odbiorcy-oauth.png differ
grafiki/m4_p9-gcp-api-biblioteki.png
... ...
Binary files /dev/null and a/grafiki/m4_p9-gcp-api-biblioteki.png differ
grafiki/m5_p1-agent-ai-diagram.png
... ...
Binary files /dev/null and a/grafiki/m5_p1-agent-ai-diagram.png differ
grafiki/m5_p2-model-jezykowy.png
... ...
Binary files /dev/null and a/grafiki/m5_p2-model-jezykowy.png differ