LouisAlexis commited on
Commit
b75f55f
·
verified ·
1 Parent(s): 7c97b8b

Upload Agent Swarm.json

Browse files
Files changed (1) hide show
  1. Agent Swarm.json +1729 -0
Agent Swarm.json ADDED
@@ -0,0 +1,1729 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "Agent Swarm",
3
+ "nodes": [
4
+ {
5
+ "parameters": {
6
+ "updates": [
7
+ "message"
8
+ ],
9
+ "additionalFields": {}
10
+ },
11
+ "id": "d159b470-a761-4212-81f7-e5620a4b70ad",
12
+ "name": "Telegram Trigger",
13
+ "type": "n8n-nodes-base.telegramTrigger",
14
+ "typeVersion": 1.1,
15
+ "position": [
16
+ -784,
17
+ 32
18
+ ],
19
+ "webhookId": "99eab1a0-569d-4f0f-a49e-578a02abfe63",
20
+ "credentials": {
21
+ "telegramApi": {
22
+ "id": "9jQWan3cOz3tE62s",
23
+ "name": "Telegram account 2"
24
+ }
25
+ }
26
+ },
27
+ {
28
+ "parameters": {
29
+ "assignments": {
30
+ "assignments": [
31
+ {
32
+ "id": "fe7ecc99-e1e8-4a5e-bdd6-6fce9757b234",
33
+ "name": "text",
34
+ "value": "={{ $json.message.text }}",
35
+ "type": "string"
36
+ }
37
+ ]
38
+ },
39
+ "options": {}
40
+ },
41
+ "id": "4df0d4ce-4702-438f-a55d-e5d0f7a597b9",
42
+ "name": "Set 'Text'",
43
+ "type": "n8n-nodes-base.set",
44
+ "typeVersion": 3.4,
45
+ "position": [
46
+ -400,
47
+ 48
48
+ ]
49
+ },
50
+ {
51
+ "parameters": {
52
+ "resource": "file",
53
+ "fileId": "={{ $json.message.voice.file_id }}"
54
+ },
55
+ "id": "8cb45750-a44f-4d85-a3bc-e7c68183a21a",
56
+ "name": "Download Voice File",
57
+ "type": "n8n-nodes-base.telegram",
58
+ "typeVersion": 1.2,
59
+ "position": [
60
+ -464,
61
+ -128
62
+ ],
63
+ "webhookId": "c0b376b1-7b63-41b6-8063-0b3096b8333d",
64
+ "credentials": {
65
+ "telegramApi": {
66
+ "id": "9jQWan3cOz3tE62s",
67
+ "name": "Telegram account 2"
68
+ }
69
+ }
70
+ },
71
+ {
72
+ "parameters": {
73
+ "resource": "audio",
74
+ "operation": "transcribe",
75
+ "options": {}
76
+ },
77
+ "id": "2a5e779c-0df0-420a-9809-fe699e89a581",
78
+ "name": "Transcribe Audio",
79
+ "type": "@n8n/n8n-nodes-langchain.openAi",
80
+ "typeVersion": 1.6,
81
+ "position": [
82
+ -304,
83
+ -128
84
+ ],
85
+ "credentials": {
86
+ "openAiApi": {
87
+ "id": "WnxUhaEPMn5hIsEp",
88
+ "name": "Demo 4/2"
89
+ }
90
+ }
91
+ },
92
+ {
93
+ "parameters": {
94
+ "rules": {
95
+ "values": [
96
+ {
97
+ "conditions": {
98
+ "options": {
99
+ "caseSensitive": true,
100
+ "leftValue": "",
101
+ "typeValidation": "strict",
102
+ "version": 2
103
+ },
104
+ "conditions": [
105
+ {
106
+ "leftValue": "={{ $json.message.voice.file_id }}",
107
+ "rightValue": "",
108
+ "operator": {
109
+ "type": "string",
110
+ "operation": "exists",
111
+ "singleValue": true
112
+ }
113
+ }
114
+ ],
115
+ "combinator": "and"
116
+ },
117
+ "renameOutput": true,
118
+ "outputKey": "Voice"
119
+ },
120
+ {
121
+ "conditions": {
122
+ "options": {
123
+ "caseSensitive": true,
124
+ "leftValue": "",
125
+ "typeValidation": "strict",
126
+ "version": 2
127
+ },
128
+ "conditions": [
129
+ {
130
+ "id": "8c844924-b2ed-48b0-935c-c66a8fd0c778",
131
+ "leftValue": "={{ $json.message.text }}",
132
+ "rightValue": "",
133
+ "operator": {
134
+ "type": "string",
135
+ "operation": "exists",
136
+ "singleValue": true
137
+ }
138
+ }
139
+ ],
140
+ "combinator": "and"
141
+ },
142
+ "renameOutput": true,
143
+ "outputKey": "Text"
144
+ }
145
+ ]
146
+ },
147
+ "options": {}
148
+ },
149
+ "id": "c6870141-ff59-4023-9edd-bea8dc2f4db1",
150
+ "name": "Switch",
151
+ "type": "n8n-nodes-base.switch",
152
+ "typeVersion": 3.2,
153
+ "position": [
154
+ -640,
155
+ 32
156
+ ]
157
+ },
158
+ {
159
+ "parameters": {
160
+ "promptType": "define",
161
+ "text": "={{ $json.input }}",
162
+ "options": {
163
+ "systemMessage": "=# Overview\nYou are the ultimate personal assistant. Your job is to send the user's query to the correct tool. You should never be writing emails or creating summaries — your sole responsibility is to call the correct tool.\n\n## Tools\n- **Think**: Use this to think deeply or if you get stuck\n- **emailAgent**: Use this tool to take action in email\n- **calendarAgent**: Use this tool to take action in calendar\n- **contactAgent**: Use this tool to get, update, or add contacts\n- **contentCreator**: Use this tool to create blog posts\n- **webAgent**: Use this tool to perform deeper web research or get current weather info\n- **youtubeAgent**: Use this tool to find high-performing videos or manage video ideas\n\n## Rules\n- Some actions require you to look up contact information first. For the following actions, you must get contact information and send that to the agent who needs it:\n - sending emails\n - drafting emails\n - creating calendar event with attendee\n\n## Instructions\n1) Call the necessary tools based on the user's request\n2) Use the **Think** tool to verify you took the right steps. This tool should be called every time.\n\n## Examples\n1) \n- Input: send an email to nate herkelman asking him what time he wants to leave \n - Action: Use **contactAgent** to get Nate Herkelman's email \n - Action: Use **emailAgent** to send the email. You will pass the tool a query like: \n \"send Nate Herkelman an email to ask what time he wants to leave. here is his email: [email address]\"\n- Output: The email has been sent to Nate Herkelman. Anything else I can help you with?\n\n## Final Reminders\nHere is the current date/time: {{ $now }}\n",
164
+ "returnIntermediateSteps": true
165
+ }
166
+ },
167
+ "type": "@n8n/n8n-nodes-langchain.agent",
168
+ "typeVersion": 2.1,
169
+ "position": [
170
+ 32,
171
+ 32
172
+ ],
173
+ "id": "c0b2f900-a968-4771-a44a-f60e2c86de8b",
174
+ "name": "AI Agent",
175
+ "onError": "continueErrorOutput"
176
+ },
177
+ {
178
+ "parameters": {
179
+ "sendTo": "={{ $fromAI(\"emailAddress\") }}",
180
+ "subject": "={{ $fromAI(\"subject\") }}",
181
+ "message": "={{ $fromAI(\"emailBody\") }}",
182
+ "options": {
183
+ "appendAttribution": false
184
+ }
185
+ },
186
+ "type": "n8n-nodes-base.gmailTool",
187
+ "typeVersion": 2.1,
188
+ "position": [
189
+ -128,
190
+ 592
191
+ ],
192
+ "id": "8f4459e1-fe08-44c0-9e3f-184492975ed5",
193
+ "name": "Send Email",
194
+ "webhookId": "86c8c4b1-13bb-4ebe-acb9-30e1d7082d55",
195
+ "credentials": {
196
+ "gmailOAuth2": {
197
+ "id": "KY7391f1ZHRL52Nu",
198
+ "name": "Demo 4/2"
199
+ }
200
+ }
201
+ },
202
+ {
203
+ "parameters": {
204
+ "operation": "getAll",
205
+ "limit": "={{ $fromAI(\"limit\",\"how many emails the user wants\") }}",
206
+ "simple": false,
207
+ "filters": {
208
+ "sender": "={{ $fromAI(\"sender\",\"who the emails are from\") }}"
209
+ },
210
+ "options": {}
211
+ },
212
+ "type": "n8n-nodes-base.gmailTool",
213
+ "typeVersion": 2.1,
214
+ "position": [
215
+ -512,
216
+ 592
217
+ ],
218
+ "id": "6e3b3131-b9bc-4aac-82ed-cd25a2be96d1",
219
+ "name": "Get Emails",
220
+ "webhookId": "af4b3298-9037-44b0-aa12-2acbfbb5e66f",
221
+ "credentials": {
222
+ "gmailOAuth2": {
223
+ "id": "KY7391f1ZHRL52Nu",
224
+ "name": "Demo 4/2"
225
+ }
226
+ }
227
+ },
228
+ {
229
+ "parameters": {
230
+ "resource": "draft",
231
+ "subject": "={{ $fromAI(\"subject\") }}",
232
+ "emailType": "html",
233
+ "message": "={{ $fromAI(\"emailBody\") }}",
234
+ "options": {
235
+ "threadId": "={{ $fromAI(\"threadID\") }}",
236
+ "sendTo": "={{ $fromAI(\"emailAddress\") }}"
237
+ }
238
+ },
239
+ "type": "n8n-nodes-base.gmailTool",
240
+ "typeVersion": 2.1,
241
+ "position": [
242
+ -128,
243
+ 448
244
+ ],
245
+ "id": "28aba68c-a827-4016-bcba-6131e5e8605c",
246
+ "name": "Create Draft",
247
+ "webhookId": "17016bce-d7d7-428a-a56c-f6ea122db8be",
248
+ "credentials": {
249
+ "gmailOAuth2": {
250
+ "id": "KY7391f1ZHRL52Nu",
251
+ "name": "Demo 4/2"
252
+ }
253
+ }
254
+ },
255
+ {
256
+ "parameters": {
257
+ "operation": "reply",
258
+ "messageId": "={{ $fromAI(\"ID\",\"the message ID\") }}",
259
+ "message": "={{ $fromAI(\"emailBody\") }}",
260
+ "options": {
261
+ "appendAttribution": false
262
+ }
263
+ },
264
+ "type": "n8n-nodes-base.gmailTool",
265
+ "typeVersion": 2.1,
266
+ "position": [
267
+ -384,
268
+ 448
269
+ ],
270
+ "id": "a45b702d-84cd-4c3e-a2ea-d7a3391b4213",
271
+ "name": "Email Reply",
272
+ "webhookId": "114785e6-a859-432b-81b4-c490c1c35b1c",
273
+ "credentials": {
274
+ "gmailOAuth2": {
275
+ "id": "KY7391f1ZHRL52Nu",
276
+ "name": "Demo 4/2"
277
+ }
278
+ }
279
+ },
280
+ {
281
+ "parameters": {
282
+ "resource": "label",
283
+ "returnAll": true
284
+ },
285
+ "type": "n8n-nodes-base.gmailTool",
286
+ "typeVersion": 2.1,
287
+ "position": [
288
+ -384,
289
+ 592
290
+ ],
291
+ "id": "e014918c-0790-48e7-9e00-4e1e74187093",
292
+ "name": "Get Labels",
293
+ "webhookId": "9e08b59e-792d-4566-83f1-9263c9ad86ae",
294
+ "credentials": {
295
+ "gmailOAuth2": {
296
+ "id": "KY7391f1ZHRL52Nu",
297
+ "name": "Demo 4/2"
298
+ }
299
+ }
300
+ },
301
+ {
302
+ "parameters": {
303
+ "operation": "addLabels",
304
+ "messageId": "={{ $fromAI(\"ID\",\"the ID of the message\") }}",
305
+ "labelIds": "={{ $fromAI(\"labelID\") }}"
306
+ },
307
+ "type": "n8n-nodes-base.gmailTool",
308
+ "typeVersion": 2.1,
309
+ "position": [
310
+ -256,
311
+ 448
312
+ ],
313
+ "id": "f4cec2b0-d0b3-4caa-8004-438c27437ad7",
314
+ "name": "Label Emails",
315
+ "webhookId": "0e951529-2e6d-40bf-ac40-fc0947e242e2",
316
+ "credentials": {
317
+ "gmailOAuth2": {
318
+ "id": "KY7391f1ZHRL52Nu",
319
+ "name": "Demo 4/2"
320
+ }
321
+ }
322
+ },
323
+ {
324
+ "parameters": {
325
+ "operation": "markAsUnread",
326
+ "messageId": "={{ $fromAI(\"messageID\") }}"
327
+ },
328
+ "type": "n8n-nodes-base.gmailTool",
329
+ "typeVersion": 2.1,
330
+ "position": [
331
+ -256,
332
+ 592
333
+ ],
334
+ "id": "2cd2e2d3-53f8-47f4-ac7e-455f9f668897",
335
+ "name": "Mark Unread",
336
+ "webhookId": "a35af9d8-f67d-4ff9-803f-59ec6356e795",
337
+ "credentials": {
338
+ "gmailOAuth2": {
339
+ "id": "KY7391f1ZHRL52Nu",
340
+ "name": "Demo 4/2"
341
+ }
342
+ }
343
+ },
344
+ {
345
+ "parameters": {
346
+ "toolDescription": "An email agent for all email actions",
347
+ "text": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Prompt__User_Message_', ``, 'string') }}",
348
+ "options": {
349
+ "systemMessage": "=# Overview\nYou are an email management assistant. All emails must be formatted professionally in HTML and signed off as \"Nate.\" \n\n**Email Management Tools** \n - Use \"Send Email\" to send emails. \n - Use \"Create Draft\" if the user asks for a draft. \n - Use \"Get Emails\" to retrieve emails when requested.\n - Use \"Get Labels\" to retrieve labels.\n - Use \"Mark Unread\" to mark an email as unread. You must use \"Get Emails\" first so you have the message ID of the email to flag.\n - Use \"Label Email\" to flag an email. You must use \"Get Emails\" first so you have the message ID of the email to flag. Then you must use \"Get Labels\" so you have the label ID.\n - Use \"Email Reply\" to reply to an email. You must use \"Get Emails\" first so you have the message ID of the email to reply to.\n\n## Final Notes\n- Here is the current date/time: {{ $now }}"
350
+ }
351
+ },
352
+ "type": "@n8n/n8n-nodes-langchain.agentTool",
353
+ "typeVersion": 2.2,
354
+ "position": [
355
+ -320,
356
+ 272
357
+ ],
358
+ "id": "e2c22d68-04bc-4873-8144-5c54fe542f0f",
359
+ "name": "Email Agent"
360
+ },
361
+ {
362
+ "parameters": {
363
+ "calendar": {
364
+ "__rl": true,
365
+ "value": "nateherk88@gmail.com",
366
+ "mode": "list",
367
+ "cachedResultName": "nateherk88@gmail.com"
368
+ },
369
+ "start": "={{ $fromAI(\"eventStart\") }}",
370
+ "end": "={{ $fromAI(\"eventEnd\") }}",
371
+ "additionalFields": {
372
+ "attendees": [
373
+ "={{ $fromAI(\"eventAttendeeEmail\") }}"
374
+ ],
375
+ "summary": "={{ $fromAI(\"eventTitle\") }}"
376
+ }
377
+ },
378
+ "type": "n8n-nodes-base.googleCalendarTool",
379
+ "typeVersion": 1.3,
380
+ "position": [
381
+ 272,
382
+ 592
383
+ ],
384
+ "id": "0db404c6-ad6d-4c87-9c87-4ad6e9812620",
385
+ "name": "Create Event with Attendee",
386
+ "credentials": {
387
+ "googleCalendarOAuth2Api": {
388
+ "id": "HYMNtkm0oglf42QP",
389
+ "name": "Google Calendar account"
390
+ }
391
+ }
392
+ },
393
+ {
394
+ "parameters": {
395
+ "calendar": {
396
+ "__rl": true,
397
+ "value": "nateherk88@gmail.com",
398
+ "mode": "list",
399
+ "cachedResultName": "nateherk88@gmail.com"
400
+ },
401
+ "start": "={{ $fromAI(\"eventStart\") }}",
402
+ "end": "={{ $fromAI(\"eventEnd\") }}",
403
+ "additionalFields": {
404
+ "attendees": [],
405
+ "summary": "={{ $fromAI(\"eventTitle\") }}"
406
+ }
407
+ },
408
+ "type": "n8n-nodes-base.googleCalendarTool",
409
+ "typeVersion": 1.3,
410
+ "position": [
411
+ 16,
412
+ 592
413
+ ],
414
+ "id": "8ccf4ec0-b4a3-4bb4-b5cc-4316c1b4264e",
415
+ "name": "Create Event",
416
+ "credentials": {
417
+ "googleCalendarOAuth2Api": {
418
+ "id": "HYMNtkm0oglf42QP",
419
+ "name": "Google Calendar account"
420
+ }
421
+ }
422
+ },
423
+ {
424
+ "parameters": {
425
+ "operation": "getAll",
426
+ "calendar": {
427
+ "__rl": true,
428
+ "value": "nateherk88@gmail.com",
429
+ "mode": "list",
430
+ "cachedResultName": "nateherk88@gmail.com"
431
+ },
432
+ "timeMin": "={{ $fromAI(\"dayBefore\",\"the day before the date the user requested\") }}",
433
+ "timeMax": "={{ $fromAI(\"dayAfter\",\"the day after the date the user requested\") }}",
434
+ "options": {}
435
+ },
436
+ "type": "n8n-nodes-base.googleCalendarTool",
437
+ "typeVersion": 1.3,
438
+ "position": [
439
+ 272,
440
+ 448
441
+ ],
442
+ "id": "329ad6fe-5391-46a6-bc34-657f7a331c01",
443
+ "name": "Get Events",
444
+ "credentials": {
445
+ "googleCalendarOAuth2Api": {
446
+ "id": "HYMNtkm0oglf42QP",
447
+ "name": "Google Calendar account"
448
+ }
449
+ }
450
+ },
451
+ {
452
+ "parameters": {
453
+ "operation": "delete",
454
+ "calendar": {
455
+ "__rl": true,
456
+ "value": "nateherk88@gmail.com",
457
+ "mode": "list",
458
+ "cachedResultName": "nateherk88@gmail.com"
459
+ },
460
+ "eventId": "={{ $fromAI(\"eventID\") }}",
461
+ "options": {}
462
+ },
463
+ "type": "n8n-nodes-base.googleCalendarTool",
464
+ "typeVersion": 1.3,
465
+ "position": [
466
+ 144,
467
+ 448
468
+ ],
469
+ "id": "9344ea9a-682e-491b-a0ff-aa98d918260d",
470
+ "name": "Delete Event",
471
+ "credentials": {
472
+ "googleCalendarOAuth2Api": {
473
+ "id": "HYMNtkm0oglf42QP",
474
+ "name": "Google Calendar account"
475
+ }
476
+ }
477
+ },
478
+ {
479
+ "parameters": {
480
+ "operation": "update",
481
+ "calendar": {
482
+ "__rl": true,
483
+ "value": "nateherk88@gmail.com",
484
+ "mode": "list",
485
+ "cachedResultName": "nateherk88@gmail.com"
486
+ },
487
+ "eventId": "={{ $fromAI(\"eventID\") }}",
488
+ "updateFields": {
489
+ "end": "={{ $fromAI(\"endTime\") }}",
490
+ "start": "={{ $fromAI(\"startTime\") }}"
491
+ }
492
+ },
493
+ "type": "n8n-nodes-base.googleCalendarTool",
494
+ "typeVersion": 1.3,
495
+ "position": [
496
+ 144,
497
+ 592
498
+ ],
499
+ "id": "c85de60d-c0fd-4bbe-a600-a7bd8e5258ed",
500
+ "name": "Update Event",
501
+ "credentials": {
502
+ "googleCalendarOAuth2Api": {
503
+ "id": "HYMNtkm0oglf42QP",
504
+ "name": "Google Calendar account"
505
+ }
506
+ }
507
+ },
508
+ {
509
+ "parameters": {
510
+ "toolDescription": "A calendar agent for all calendar actions",
511
+ "text": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Prompt__User_Message_', ``, 'string') }}",
512
+ "options": {
513
+ "systemMessage": "=# Overview\nYou are a calendar assistant. Your responsibilities include creating, getting, and deleting events in the user's calendar.\n\n**Calendar Management Tools** \n - Use \"Create Event with Attendee\" when an event includes a participant. \n - Use \"Create Event\" for solo events. \n - Use \"Get Events\" to fetch calendar schedules when requested.\n - Use \"Delete Event\" to delete an event. You must use \"Get Events\" first to get the ID of the event to delete.\n - Use \"Update Event\" to update an event. You must use \"Get Events\" first to get the ID of the event to update.\n\n## Final Notes\nHere is the current date/time: {{ $now }}\nIf a duration for an event isn't specified, assume it will be one hour."
514
+ }
515
+ },
516
+ "type": "@n8n/n8n-nodes-langchain.agentTool",
517
+ "typeVersion": 2.2,
518
+ "position": [
519
+ 32,
520
+ 272
521
+ ],
522
+ "id": "f003a78c-4241-44ce-a2e2-d16dbcf96d0f",
523
+ "name": "Calendar Agent"
524
+ },
525
+ {
526
+ "parameters": {
527
+ "operation": "search",
528
+ "base": {
529
+ "__rl": true,
530
+ "value": "appK0rbtvf9e7vt6w",
531
+ "mode": "list",
532
+ "cachedResultName": "Contacts",
533
+ "cachedResultUrl": "https://airtable.com/appK0rbtvf9e7vt6w"
534
+ },
535
+ "table": {
536
+ "__rl": true,
537
+ "value": "tbl08JGCfUK1RhXsG",
538
+ "mode": "list",
539
+ "cachedResultName": "Contacts",
540
+ "cachedResultUrl": "https://airtable.com/appK0rbtvf9e7vt6w/tbl08JGCfUK1RhXsG"
541
+ },
542
+ "options": {}
543
+ },
544
+ "type": "n8n-nodes-base.airtableTool",
545
+ "typeVersion": 2.1,
546
+ "position": [
547
+ 512,
548
+ 432
549
+ ],
550
+ "id": "20868164-0e88-412e-9808-03d702aff18b",
551
+ "name": "Get Contacts",
552
+ "credentials": {
553
+ "airtableTokenApi": {
554
+ "id": "UlAGE0msyITVkoCN",
555
+ "name": "Nate Airtable"
556
+ }
557
+ }
558
+ },
559
+ {
560
+ "parameters": {
561
+ "operation": "upsert",
562
+ "base": {
563
+ "__rl": true,
564
+ "value": "appK0rbtvf9e7vt6w",
565
+ "mode": "list",
566
+ "cachedResultName": "Contacts",
567
+ "cachedResultUrl": "https://airtable.com/appK0rbtvf9e7vt6w"
568
+ },
569
+ "table": {
570
+ "__rl": true,
571
+ "value": "tbl08JGCfUK1RhXsG",
572
+ "mode": "list",
573
+ "cachedResultName": "Contacts",
574
+ "cachedResultUrl": "https://airtable.com/appK0rbtvf9e7vt6w/tbl08JGCfUK1RhXsG"
575
+ },
576
+ "columns": {
577
+ "mappingMode": "defineBelow",
578
+ "value": {
579
+ "name": "={{ $fromAI(\"name\") }}",
580
+ "email": "={{ $fromAI(\"emailAddress\") }}",
581
+ "phoneNumber": "={{ $fromAI(\"phoneNumber\") }}"
582
+ },
583
+ "matchingColumns": [
584
+ "name"
585
+ ],
586
+ "schema": [
587
+ {
588
+ "id": "name",
589
+ "displayName": "name",
590
+ "required": false,
591
+ "defaultMatch": false,
592
+ "canBeUsedToMatch": true,
593
+ "display": true,
594
+ "type": "string",
595
+ "readOnly": false,
596
+ "removed": false
597
+ },
598
+ {
599
+ "id": "email",
600
+ "displayName": "email",
601
+ "required": false,
602
+ "defaultMatch": false,
603
+ "canBeUsedToMatch": true,
604
+ "display": true,
605
+ "type": "string",
606
+ "readOnly": false,
607
+ "removed": false
608
+ },
609
+ {
610
+ "id": "phoneNumber",
611
+ "displayName": "phoneNumber",
612
+ "required": false,
613
+ "defaultMatch": false,
614
+ "canBeUsedToMatch": true,
615
+ "display": true,
616
+ "type": "string",
617
+ "readOnly": false,
618
+ "removed": false
619
+ }
620
+ ],
621
+ "attemptToConvertTypes": false,
622
+ "convertFieldsToString": false
623
+ },
624
+ "options": {}
625
+ },
626
+ "type": "n8n-nodes-base.airtableTool",
627
+ "typeVersion": 2.1,
628
+ "position": [
629
+ 624,
630
+ 432
631
+ ],
632
+ "id": "5efe9b78-8125-4735-8228-2cac814199ba",
633
+ "name": "Add or Update Contact",
634
+ "credentials": {
635
+ "airtableTokenApi": {
636
+ "id": "UlAGE0msyITVkoCN",
637
+ "name": "Nate Airtable"
638
+ }
639
+ }
640
+ },
641
+ {
642
+ "parameters": {
643
+ "toolDescription": "Contact agent for all contact actions, like getting contacts",
644
+ "text": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Prompt__User_Message_', ``, 'string') }}",
645
+ "options": {
646
+ "systemMessage": "=# Overview\nYou are a contact management assistant. Your responsibilities include looking up contacts, adding new contacts, or updating a contact's information.\n\n**Contact Management** \n - Use \"Get Contacts\" to retrieve contact information. \n - Use \"Add or Update Contact\" to store new contact information or modify existing entries. "
647
+ }
648
+ },
649
+ "type": "@n8n/n8n-nodes-langchain.agentTool",
650
+ "typeVersion": 2.2,
651
+ "position": [
652
+ 384,
653
+ 272
654
+ ],
655
+ "id": "41d0303b-4e45-4fdf-bc59-25f5529ae72c",
656
+ "name": "Contact Agent"
657
+ },
658
+ {
659
+ "parameters": {
660
+ "query": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Query', ``, 'string') }}",
661
+ "options": {}
662
+ },
663
+ "type": "@tavily/n8n-nodes-tavily.tavilyTool",
664
+ "typeVersion": 1,
665
+ "position": [
666
+ 624,
667
+ 752
668
+ ],
669
+ "id": "9d6f4470-5802-4c68-b07e-cedb991b7901",
670
+ "name": "Tavily",
671
+ "credentials": {
672
+ "tavilyApi": {
673
+ "id": "LEjQvwuyOKYvoBIn",
674
+ "name": "Tavily account"
675
+ }
676
+ }
677
+ },
678
+ {
679
+ "parameters": {
680
+ "model": "sonar",
681
+ "messages": {
682
+ "message": [
683
+ {
684
+ "content": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('message0_Text', ``, 'string') }}"
685
+ }
686
+ ]
687
+ },
688
+ "options": {},
689
+ "requestOptions": {}
690
+ },
691
+ "type": "n8n-nodes-base.perplexityTool",
692
+ "typeVersion": 1,
693
+ "position": [
694
+ 736,
695
+ 752
696
+ ],
697
+ "id": "979b0bfc-30b8-47e7-9d6c-0003a23f7de1",
698
+ "name": "Perplexity",
699
+ "credentials": {
700
+ "perplexityApi": {
701
+ "id": "5djL3YQiuN26EJiA",
702
+ "name": "Perplexity account"
703
+ }
704
+ }
705
+ },
706
+ {
707
+ "parameters": {
708
+ "format": "imperial",
709
+ "cityName": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('City', ``, 'string') }}",
710
+ "language": "en"
711
+ },
712
+ "type": "n8n-nodes-base.openWeatherMapTool",
713
+ "typeVersion": 1,
714
+ "position": [
715
+ 848,
716
+ 752
717
+ ],
718
+ "id": "9e678c45-81ca-46c2-9cb3-d945b0510864",
719
+ "name": "OpenWeatherMap",
720
+ "credentials": {
721
+ "openWeatherMapApi": {
722
+ "id": "AoobPcMhq7n8fgfA",
723
+ "name": "OpenWeatherMap account 2"
724
+ }
725
+ }
726
+ },
727
+ {
728
+ "parameters": {
729
+ "toolDescription": "A research agent for all research actions",
730
+ "text": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Prompt__User_Message_', ``, 'string') }}",
731
+ "options": {
732
+ "systemMessage": "=# Overview\nYou are a web research assistant. Your responsibilities include conducting quick web searches, performing deeper research, and retrieving current weather information. \n\n**Web Search & Research** \n - Use **Tavily** for quick factual lookups, recent news, or verifying specific pieces of information. \n - Use **Perplexity** when a question requires deeper research, multiple perspectives, or synthesized answers from various sources. \n\n**Weather Information** \n - Use **Open Weather Map** to retrieve current weather data, including temperature, conditions, and forecasts for a given location.\n\nAlways explain your reasoning briefly when choosing between Tavily and Perplexity. Prioritize clarity, credibility, and helpfulness in your responses.\n"
733
+ }
734
+ },
735
+ "type": "@n8n/n8n-nodes-langchain.agentTool",
736
+ "typeVersion": 2.2,
737
+ "position": [
738
+ 496,
739
+ 592
740
+ ],
741
+ "id": "7861e79b-ce62-4671-81ca-dfd1e487afff",
742
+ "name": "Web Agent"
743
+ },
744
+ {
745
+ "parameters": {
746
+ "text": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Prompt__User_Message_', ``, 'string') }}",
747
+ "options": {
748
+ "systemMessage": "=# Overview\nYou are a YouTube content assistant. Your responsibilities include researching high-performing YouTube videos, retrieving existing video ideas, and adding new content ideas to the video database. Your goal is to support content strategy and ideation with relevant, high-quality inputs.\n\n**Video Idea Management** \n - Use **Get Ideas** to retrieve existing YouTube video ideas from the internal database. \n - Use **Add Idea** to contribute new video ideas to the database for future content planning.\n\n**Content Research** \n - Use **YouTube Videos** to search for high-performing videos on a given topic. Analyze trends, titles, formats, and engagement to inspire new content strategies.\n\nWhen suggesting or adding an idea, be specific, creative, and align your suggestions with proven YouTube best practices.\n"
749
+ }
750
+ },
751
+ "type": "@n8n/n8n-nodes-langchain.agentTool",
752
+ "typeVersion": 2.2,
753
+ "position": [
754
+ 752,
755
+ 272
756
+ ],
757
+ "id": "ed69b961-64b8-4173-b37d-ca981aca70b3",
758
+ "name": "YouTube Agent"
759
+ },
760
+ {
761
+ "parameters": {
762
+ "options": {}
763
+ },
764
+ "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
765
+ "typeVersion": 1,
766
+ "position": [
767
+ -720,
768
+ 272
769
+ ],
770
+ "id": "1cde38b9-d9f7-4157-ac3c-08afba6410f2",
771
+ "name": "GPT 4.1-mini",
772
+ "credentials": {
773
+ "openRouterApi": {
774
+ "id": "fpo6OUh9TcHg29jk",
775
+ "name": "OpenRouter account"
776
+ }
777
+ }
778
+ },
779
+ {
780
+ "parameters": {
781
+ "options": {}
782
+ },
783
+ "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
784
+ "typeVersion": 1,
785
+ "position": [
786
+ -512,
787
+ 448
788
+ ],
789
+ "id": "2e1de035-ab0a-4979-8acb-423aab43286c",
790
+ "name": "GPT 4.1-mini1",
791
+ "credentials": {
792
+ "openRouterApi": {
793
+ "id": "fpo6OUh9TcHg29jk",
794
+ "name": "OpenRouter account"
795
+ }
796
+ }
797
+ },
798
+ {
799
+ "parameters": {
800
+ "options": {}
801
+ },
802
+ "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
803
+ "typeVersion": 1,
804
+ "position": [
805
+ 16,
806
+ 448
807
+ ],
808
+ "id": "418d1d71-9e88-48d5-965f-595a4a3476c4",
809
+ "name": "GPT 4.1-mini2",
810
+ "credentials": {
811
+ "openRouterApi": {
812
+ "id": "fpo6OUh9TcHg29jk",
813
+ "name": "OpenRouter account"
814
+ }
815
+ }
816
+ },
817
+ {
818
+ "parameters": {
819
+ "options": {}
820
+ },
821
+ "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
822
+ "typeVersion": 1,
823
+ "position": [
824
+ 384,
825
+ 432
826
+ ],
827
+ "id": "4fe79fd7-c3b2-4ddf-bcdd-041884a0161b",
828
+ "name": "GPT 4.1-mini3",
829
+ "credentials": {
830
+ "openRouterApi": {
831
+ "id": "fpo6OUh9TcHg29jk",
832
+ "name": "OpenRouter account"
833
+ }
834
+ }
835
+ },
836
+ {
837
+ "parameters": {
838
+ "options": {}
839
+ },
840
+ "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
841
+ "typeVersion": 1,
842
+ "position": [
843
+ 512,
844
+ 752
845
+ ],
846
+ "id": "d9da1ca7-aee5-43f0-8a7c-6ea5ef96f129",
847
+ "name": "GPT 4.1-mini4",
848
+ "credentials": {
849
+ "openRouterApi": {
850
+ "id": "fpo6OUh9TcHg29jk",
851
+ "name": "OpenRouter account"
852
+ }
853
+ }
854
+ },
855
+ {
856
+ "parameters": {
857
+ "options": {}
858
+ },
859
+ "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
860
+ "typeVersion": 1,
861
+ "position": [
862
+ 752,
863
+ 432
864
+ ],
865
+ "id": "9bb9fef9-062b-4444-9db3-9c73e113688a",
866
+ "name": "GPT 4.1-mini5",
867
+ "credentials": {
868
+ "openRouterApi": {
869
+ "id": "fpo6OUh9TcHg29jk",
870
+ "name": "OpenRouter account"
871
+ }
872
+ }
873
+ },
874
+ {
875
+ "parameters": {
876
+ "jsCode": "// Initialize the output arrays\nconst steps = [];\nconst tokens = [];\nlet totalTokens = 0; // Changed to track total tokens instead of cost\n\n// Process each item in the input\nfor (const item of $input.all()) {\n let data = item.json;\n \n // Check if the data is an array itself (like your example JSON)\n if (Array.isArray(data)) {\n // Process each object in the array\n for (const obj of data) {\n // Extract steps information\n if (obj.intermediateSteps && Array.isArray(obj.intermediateSteps)) {\n for (const step of obj.intermediateSteps) {\n if (step.action) {\n steps.push({\n tool: step.action.tool,\n toolInput: step.action.toolInput,\n observation: step.observation\n });\n }\n }\n }\n \n // Extract token information\n if (obj.intermediateSteps && Array.isArray(obj.intermediateSteps)) {\n for (const step of obj.intermediateSteps) {\n if (step.action && step.action.messageLog && Array.isArray(step.action.messageLog)) {\n for (const message of step.action.messageLog) {\n if (message.kwargs && message.kwargs.response_metadata && message.kwargs.response_metadata.usage) {\n const usage = message.kwargs.response_metadata.usage;\n tokens.push({\n prompt_tokens: usage.prompt_tokens,\n completion_tokens: usage.completion_tokens,\n total_tokens: usage.total_tokens,\n model_name: message.kwargs.response_metadata.model_name\n });\n \n // Add the tokens to our running total\n if (typeof usage.total_tokens === 'number') {\n totalTokens += usage.total_tokens;\n }\n }\n }\n }\n }\n }\n }\n } else {\n // If data is not an array, process it as a single object\n // Extract steps information\n if (data.intermediateSteps && Array.isArray(data.intermediateSteps)) {\n for (const step of data.intermediateSteps) {\n if (step.action) {\n steps.push({\n tool: step.action.tool,\n toolInput: step.action.toolInput,\n observation: step.observation\n });\n }\n }\n }\n \n // Extract token information\n if (data.intermediateSteps && Array.isArray(data.intermediateSteps)) {\n for (const step of data.intermediateSteps) {\n if (step.action && step.action.messageLog && Array.isArray(step.action.messageLog)) {\n for (const message of step.action.messageLog) {\n if (message.kwargs && message.kwargs.response_metadata && message.kwargs.response_metadata.usage) {\n const usage = message.kwargs.response_metadata.usage;\n tokens.push({\n prompt_tokens: usage.prompt_tokens,\n completion_tokens: usage.completion_tokens,\n total_tokens: usage.total_tokens,\n model_name: message.kwargs.response_metadata.model_name\n });\n \n // Add the tokens to our running total\n if (typeof usage.total_tokens === 'number') {\n totalTokens += usage.total_tokens;\n }\n }\n }\n }\n }\n }\n }\n}\n\n// Return the processed data with total_tokens included\nreturn [{\n json: {\n steps: steps,\n tokens: tokens,\n total_tokens: totalTokens\n }\n}];"
877
+ },
878
+ "type": "n8n-nodes-base.code",
879
+ "typeVersion": 2,
880
+ "position": [
881
+ 400,
882
+ -128
883
+ ],
884
+ "id": "63853af6-7842-4e4e-abe4-2ca3324dd2d8",
885
+ "name": "Clean Up"
886
+ },
887
+ {
888
+ "parameters": {
889
+ "operation": "append",
890
+ "documentId": {
891
+ "__rl": true,
892
+ "value": "144h5vN3d_SsZMNkZncQAKMrwJ3wkceUEq47dO7FwLyA",
893
+ "mode": "list",
894
+ "cachedResultName": "Agent Logs",
895
+ "cachedResultUrl": "https://docs.google.com/spreadsheets/d/144h5vN3d_SsZMNkZncQAKMrwJ3wkceUEq47dO7FwLyA/edit?usp=drivesdk"
896
+ },
897
+ "sheetName": {
898
+ "__rl": true,
899
+ "value": "gid=0",
900
+ "mode": "list",
901
+ "cachedResultName": "Sheet1",
902
+ "cachedResultUrl": "https://docs.google.com/spreadsheets/d/144h5vN3d_SsZMNkZncQAKMrwJ3wkceUEq47dO7FwLyA/edit#gid=0"
903
+ },
904
+ "columns": {
905
+ "mappingMode": "defineBelow",
906
+ "value": {
907
+ "Timestamp": "={{ $now.format('yyyy-MM-dd hh:m a') }}",
908
+ "Workflow": "={{ $workflow.name }}",
909
+ "Input": "={{ $('Input').item.json.input }}",
910
+ "Output": "={{ $('AI Agent').item.json.output }}",
911
+ "Actions": "={{ JSON.stringify($json.steps, null, 2) }}",
912
+ "Tokens": "={{ JSON.stringify($json.tokens, null, 2) }}",
913
+ "Total Tokens": "={{ $json.total_tokens }}"
914
+ },
915
+ "matchingColumns": [],
916
+ "schema": [
917
+ {
918
+ "id": "Timestamp",
919
+ "displayName": "Timestamp",
920
+ "required": false,
921
+ "defaultMatch": false,
922
+ "display": true,
923
+ "type": "string",
924
+ "canBeUsedToMatch": true
925
+ },
926
+ {
927
+ "id": "Workflow",
928
+ "displayName": "Workflow",
929
+ "required": false,
930
+ "defaultMatch": false,
931
+ "display": true,
932
+ "type": "string",
933
+ "canBeUsedToMatch": true
934
+ },
935
+ {
936
+ "id": "Input",
937
+ "displayName": "Input",
938
+ "required": false,
939
+ "defaultMatch": false,
940
+ "display": true,
941
+ "type": "string",
942
+ "canBeUsedToMatch": true
943
+ },
944
+ {
945
+ "id": "Output",
946
+ "displayName": "Output",
947
+ "required": false,
948
+ "defaultMatch": false,
949
+ "display": true,
950
+ "type": "string",
951
+ "canBeUsedToMatch": true
952
+ },
953
+ {
954
+ "id": "Actions",
955
+ "displayName": "Actions",
956
+ "required": false,
957
+ "defaultMatch": false,
958
+ "display": true,
959
+ "type": "string",
960
+ "canBeUsedToMatch": true
961
+ },
962
+ {
963
+ "id": "Tokens",
964
+ "displayName": "Tokens",
965
+ "required": false,
966
+ "defaultMatch": false,
967
+ "display": true,
968
+ "type": "string",
969
+ "canBeUsedToMatch": true
970
+ },
971
+ {
972
+ "id": "Total Tokens",
973
+ "displayName": "Total Tokens",
974
+ "required": false,
975
+ "defaultMatch": false,
976
+ "display": true,
977
+ "type": "string",
978
+ "canBeUsedToMatch": true,
979
+ "removed": false
980
+ }
981
+ ],
982
+ "attemptToConvertTypes": false,
983
+ "convertFieldsToString": false
984
+ },
985
+ "options": {}
986
+ },
987
+ "type": "n8n-nodes-base.googleSheets",
988
+ "typeVersion": 4.6,
989
+ "position": [
990
+ 544,
991
+ -128
992
+ ],
993
+ "id": "a04febdb-3ab6-4d0d-839e-41302e6a45a1",
994
+ "name": "Append row in sheet",
995
+ "credentials": {
996
+ "googleSheetsOAuth2Api": {
997
+ "id": "s7PIUa59FFmDLn1e",
998
+ "name": "Demo 4/2"
999
+ }
1000
+ }
1001
+ },
1002
+ {
1003
+ "parameters": {
1004
+ "documentId": {
1005
+ "__rl": true,
1006
+ "value": "15CpqbdciFb023LElHxiDQ-CSfbXg-Gk6g5A7Dl_b8Ls",
1007
+ "mode": "list",
1008
+ "cachedResultName": "Video Ideas",
1009
+ "cachedResultUrl": "https://docs.google.com/spreadsheets/d/15CpqbdciFb023LElHxiDQ-CSfbXg-Gk6g5A7Dl_b8Ls/edit?usp=drivesdk"
1010
+ },
1011
+ "sheetName": {
1012
+ "__rl": true,
1013
+ "value": "gid=0",
1014
+ "mode": "list",
1015
+ "cachedResultName": "Ideas",
1016
+ "cachedResultUrl": "https://docs.google.com/spreadsheets/d/15CpqbdciFb023LElHxiDQ-CSfbXg-Gk6g5A7Dl_b8Ls/edit#gid=0"
1017
+ },
1018
+ "options": {}
1019
+ },
1020
+ "type": "n8n-nodes-base.googleSheetsTool",
1021
+ "typeVersion": 4.6,
1022
+ "position": [
1023
+ 976,
1024
+ 432
1025
+ ],
1026
+ "id": "c74716af-0859-4611-ac9f-e3408787bad9",
1027
+ "name": "Get Ideas",
1028
+ "credentials": {
1029
+ "googleSheetsOAuth2Api": {
1030
+ "id": "s7PIUa59FFmDLn1e",
1031
+ "name": "Demo 4/2"
1032
+ }
1033
+ }
1034
+ },
1035
+ {
1036
+ "parameters": {
1037
+ "operation": "append",
1038
+ "documentId": {
1039
+ "__rl": true,
1040
+ "value": "15CpqbdciFb023LElHxiDQ-CSfbXg-Gk6g5A7Dl_b8Ls",
1041
+ "mode": "list",
1042
+ "cachedResultName": "Video Ideas",
1043
+ "cachedResultUrl": "https://docs.google.com/spreadsheets/d/15CpqbdciFb023LElHxiDQ-CSfbXg-Gk6g5A7Dl_b8Ls/edit?usp=drivesdk"
1044
+ },
1045
+ "sheetName": {
1046
+ "__rl": true,
1047
+ "value": "gid=0",
1048
+ "mode": "list",
1049
+ "cachedResultName": "Ideas",
1050
+ "cachedResultUrl": "https://docs.google.com/spreadsheets/d/15CpqbdciFb023LElHxiDQ-CSfbXg-Gk6g5A7Dl_b8Ls/edit#gid=0"
1051
+ },
1052
+ "columns": {
1053
+ "mappingMode": "defineBelow",
1054
+ "value": {
1055
+ "Idea": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Idea', `Idea title`, 'string') }}",
1056
+ "Description": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Description', `Idea description`, 'string') }}"
1057
+ },
1058
+ "matchingColumns": [],
1059
+ "schema": [
1060
+ {
1061
+ "id": "Idea",
1062
+ "displayName": "Idea",
1063
+ "required": false,
1064
+ "defaultMatch": false,
1065
+ "display": true,
1066
+ "type": "string",
1067
+ "canBeUsedToMatch": true
1068
+ },
1069
+ {
1070
+ "id": "Description",
1071
+ "displayName": "Description",
1072
+ "required": false,
1073
+ "defaultMatch": false,
1074
+ "display": true,
1075
+ "type": "string",
1076
+ "canBeUsedToMatch": true
1077
+ }
1078
+ ],
1079
+ "attemptToConvertTypes": false,
1080
+ "convertFieldsToString": false
1081
+ },
1082
+ "options": {}
1083
+ },
1084
+ "type": "n8n-nodes-base.googleSheetsTool",
1085
+ "typeVersion": 4.6,
1086
+ "position": [
1087
+ 1088,
1088
+ 432
1089
+ ],
1090
+ "id": "512d1138-ac85-437f-aea4-775e037d70bf",
1091
+ "name": "Add Idea",
1092
+ "credentials": {
1093
+ "googleSheetsOAuth2Api": {
1094
+ "id": "s7PIUa59FFmDLn1e",
1095
+ "name": "Demo 4/2"
1096
+ }
1097
+ }
1098
+ },
1099
+ {
1100
+ "parameters": {
1101
+ "toolDescription": "Use this tool to find high-performing YouTube videos",
1102
+ "method": "POST",
1103
+ "url": "https://api.apify.com/v2/acts/streamers~youtube-scraper/run-sync-get-dataset-items",
1104
+ "sendQuery": true,
1105
+ "queryParameters": {
1106
+ "parameters": [
1107
+ {
1108
+ "name": "token",
1109
+ "value": "YOUR APIFY API KEY"
1110
+ }
1111
+ ]
1112
+ },
1113
+ "sendBody": true,
1114
+ "specifyBody": "json",
1115
+ "jsonBody": "={\n \"dateFilter\": \"month\",\n \"downloadSubtitles\": false,\n \"hasCC\": false,\n \"hasLocation\": false,\n \"hasSubtitles\": false,\n \"is360\": false,\n \"is3D\": false,\n \"is4K\": false,\n \"isBought\": false,\n \"isHD\": false,\n \"isHDR\": false,\n \"isLive\": false,\n \"isVR180\": false,\n \"maxResultStreams\": 0,\n \"maxResults\": {{$fromAI(\"maxResults\",\"how many videos the user wants, if not specified, default to 3\",\"number\",3)}},\n \"maxResultsShorts\": 0,\n \"oldestPostDate\": \"6 months\",\n \"preferAutoGeneratedSubtitles\": false,\n \"saveSubsToKVS\": false,\n \"searchQueries\": [\n \"{{$fromAI(\"searchTerm\",\"The topic of the video to search for\")}}\"\n ],\n \"sortVideosBy\": \"POPULAR\",\n \"sortingOrder\": \"views\"\n}",
1116
+ "options": {}
1117
+ },
1118
+ "type": "n8n-nodes-base.httpRequestTool",
1119
+ "typeVersion": 4.2,
1120
+ "position": [
1121
+ 864,
1122
+ 432
1123
+ ],
1124
+ "id": "711ff26b-12f5-4bce-8b2c-38404e240c73",
1125
+ "name": "YouTube Videos"
1126
+ },
1127
+ {
1128
+ "parameters": {},
1129
+ "type": "@n8n/n8n-nodes-langchain.toolThink",
1130
+ "typeVersion": 1,
1131
+ "position": [
1132
+ -608,
1133
+ 272
1134
+ ],
1135
+ "id": "82df1709-f6c5-494a-82d3-1736c8fa2866",
1136
+ "name": "Think"
1137
+ },
1138
+ {
1139
+ "parameters": {
1140
+ "sessionIdType": "customKey",
1141
+ "sessionKey": "={{ $('Telegram Trigger').item.json.message.chat.id }}"
1142
+ },
1143
+ "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
1144
+ "typeVersion": 1.3,
1145
+ "position": [
1146
+ -480,
1147
+ 272
1148
+ ],
1149
+ "id": "6aac22a1-fc25-4a1c-bf36-97bed47aa766",
1150
+ "name": "Simple Memory"
1151
+ },
1152
+ {
1153
+ "parameters": {
1154
+ "chatId": "={{ $('Telegram Trigger').item.json.message.chat.id }}",
1155
+ "text": "={{ $json.error }}",
1156
+ "additionalFields": {
1157
+ "appendAttribution": false
1158
+ }
1159
+ },
1160
+ "type": "n8n-nodes-base.telegram",
1161
+ "typeVersion": 1.2,
1162
+ "position": [
1163
+ 400,
1164
+ 32
1165
+ ],
1166
+ "id": "73e21514-aead-4097-ba1f-edca396b6599",
1167
+ "name": "Error Message",
1168
+ "webhookId": "7065a160-b927-43b6-b327-feec46cc0088",
1169
+ "credentials": {
1170
+ "telegramApi": {
1171
+ "id": "9jQWan3cOz3tE62s",
1172
+ "name": "Telegram account 2"
1173
+ }
1174
+ }
1175
+ },
1176
+ {
1177
+ "parameters": {
1178
+ "chatId": "={{ $('Telegram Trigger').item.json.message.chat.id }}",
1179
+ "text": "={{ $('AI Agent').item.json.output }}",
1180
+ "additionalFields": {
1181
+ "appendAttribution": false
1182
+ }
1183
+ },
1184
+ "type": "n8n-nodes-base.telegram",
1185
+ "typeVersion": 1.2,
1186
+ "position": [
1187
+ 688,
1188
+ -128
1189
+ ],
1190
+ "id": "3619a814-7347-42c9-b9f0-1fe99230681f",
1191
+ "name": "Response",
1192
+ "webhookId": "4d174459-d5cc-4297-a449-369d3f10ef23",
1193
+ "credentials": {
1194
+ "telegramApi": {
1195
+ "id": "9jQWan3cOz3tE62s",
1196
+ "name": "Telegram account 2"
1197
+ }
1198
+ }
1199
+ },
1200
+ {
1201
+ "parameters": {
1202
+ "assignments": {
1203
+ "assignments": [
1204
+ {
1205
+ "id": "976cf2c9-01b6-46cf-97b4-675a67ca57bc",
1206
+ "name": "input",
1207
+ "value": "={{ $json.text }}",
1208
+ "type": "string"
1209
+ }
1210
+ ]
1211
+ },
1212
+ "options": {}
1213
+ },
1214
+ "type": "n8n-nodes-base.set",
1215
+ "typeVersion": 3.4,
1216
+ "position": [
1217
+ -128,
1218
+ 32
1219
+ ],
1220
+ "id": "ca521c58-31b2-4ebb-91b0-32cb3be30303",
1221
+ "name": "Input"
1222
+ },
1223
+ {
1224
+ "parameters": {
1225
+ "content": "# ⚙️ Setup Guide \n**Author:** [Nate Herk](https://www.youtube.com/@nateherk)\n\nFollow these steps to get your n8n AI agent workflow fully configured and connected:\n\n### ✅ Step 1: Connect Your Telegram Account \nUse the **Telegram Trigger** node to link your Telegram account. This allows you to interact with your agent via Telegram. Make sure it's fully connected—it’s used in both the **Telegram Response** nodes and the **Simple Memory** node.\n\n### ✅ Step 2: Add Your [OpenRouter](https://openrouter.ai/) API Key \nThis is the \"brain\" of your AI agent. Plug in your API key using the **HTTP Request** or **Credential** node to power intelligent responses.\n\n### ✅ Step 3: Connect Your App Integrations \nSet up the following API connections so your agent can take meaningful actions:\n- **Gmail**\n- **Google Calendar**\n- **Airtable**\n- **Google Sheets**\n- **Apify** – Used in the YouTube video node. \n 💡 *Use code* **`30NATEHERK`** *for 30% off your first 3 months at [Apify](https://www.apify.com/?fpr=nate)*\n\n### ✅ Step 4: Connect Research & Utility APIs \nAdd these keys for more powerful features:\n- [**Tavily API Key**](https://www.tavily.com/)\n- [**Perplexity API Key**](https://www.perplexity.ai/)\n- [**Open Weather Map API Key**](https://openweathermap.org/api)\n\n### ✅ Step 5: Link Your Google Sheets Templates \n- 📄 [Agent Action Log Sheet](https://docs.google.com/spreadsheets/d/1PlRVi9Iv2n11SPYdshjhPGWccRCpKLHn3PjUkJEjgAQ/edit?usp=sharing) – Logs the agent’s actions.\n- 🎬 [YouTube Ideas Sheet](https://docs.google.com/spreadsheets/d/1Jazczp5HtPwcJvu6bmJQrjkqt31S7adVqIFVCqXZwGk/edit?usp=sharing) – Used for the YouTube agent’s video ideas.\n\n### 🚀 Final Step: Start Prompting \nWith everything connected, start chatting with your agent on Telegram and watch it take intelligent action across your tool stack!\n",
1226
+ "height": 912,
1227
+ "width": 784
1228
+ },
1229
+ "type": "n8n-nodes-base.stickyNote",
1230
+ "typeVersion": 1,
1231
+ "position": [
1232
+ -1696,
1233
+ -160
1234
+ ],
1235
+ "id": "95e569c1-9095-4bf9-b5c9-9e9cdd0b6202",
1236
+ "name": "Sticky Note"
1237
+ }
1238
+ ],
1239
+ "pinData": {},
1240
+ "connections": {
1241
+ "Telegram Trigger": {
1242
+ "main": [
1243
+ [
1244
+ {
1245
+ "node": "Switch",
1246
+ "type": "main",
1247
+ "index": 0
1248
+ }
1249
+ ]
1250
+ ]
1251
+ },
1252
+ "Download Voice File": {
1253
+ "main": [
1254
+ [
1255
+ {
1256
+ "node": "Transcribe Audio",
1257
+ "type": "main",
1258
+ "index": 0
1259
+ }
1260
+ ]
1261
+ ]
1262
+ },
1263
+ "Switch": {
1264
+ "main": [
1265
+ [
1266
+ {
1267
+ "node": "Download Voice File",
1268
+ "type": "main",
1269
+ "index": 0
1270
+ }
1271
+ ],
1272
+ [
1273
+ {
1274
+ "node": "Set 'Text'",
1275
+ "type": "main",
1276
+ "index": 0
1277
+ }
1278
+ ]
1279
+ ]
1280
+ },
1281
+ "Set 'Text'": {
1282
+ "main": [
1283
+ [
1284
+ {
1285
+ "node": "Input",
1286
+ "type": "main",
1287
+ "index": 0
1288
+ }
1289
+ ]
1290
+ ]
1291
+ },
1292
+ "Transcribe Audio": {
1293
+ "main": [
1294
+ [
1295
+ {
1296
+ "node": "Input",
1297
+ "type": "main",
1298
+ "index": 0
1299
+ }
1300
+ ]
1301
+ ]
1302
+ },
1303
+ "Send Email": {
1304
+ "ai_tool": [
1305
+ [
1306
+ {
1307
+ "node": "Email Agent",
1308
+ "type": "ai_tool",
1309
+ "index": 0
1310
+ }
1311
+ ]
1312
+ ]
1313
+ },
1314
+ "Get Emails": {
1315
+ "ai_tool": [
1316
+ [
1317
+ {
1318
+ "node": "Email Agent",
1319
+ "type": "ai_tool",
1320
+ "index": 0
1321
+ }
1322
+ ]
1323
+ ]
1324
+ },
1325
+ "Create Draft": {
1326
+ "ai_tool": [
1327
+ [
1328
+ {
1329
+ "node": "Email Agent",
1330
+ "type": "ai_tool",
1331
+ "index": 0
1332
+ }
1333
+ ]
1334
+ ]
1335
+ },
1336
+ "Email Reply": {
1337
+ "ai_tool": [
1338
+ [
1339
+ {
1340
+ "node": "Email Agent",
1341
+ "type": "ai_tool",
1342
+ "index": 0
1343
+ }
1344
+ ]
1345
+ ]
1346
+ },
1347
+ "Get Labels": {
1348
+ "ai_tool": [
1349
+ [
1350
+ {
1351
+ "node": "Email Agent",
1352
+ "type": "ai_tool",
1353
+ "index": 0
1354
+ }
1355
+ ]
1356
+ ]
1357
+ },
1358
+ "Label Emails": {
1359
+ "ai_tool": [
1360
+ [
1361
+ {
1362
+ "node": "Email Agent",
1363
+ "type": "ai_tool",
1364
+ "index": 0
1365
+ }
1366
+ ]
1367
+ ]
1368
+ },
1369
+ "Mark Unread": {
1370
+ "ai_tool": [
1371
+ [
1372
+ {
1373
+ "node": "Email Agent",
1374
+ "type": "ai_tool",
1375
+ "index": 0
1376
+ }
1377
+ ]
1378
+ ]
1379
+ },
1380
+ "Email Agent": {
1381
+ "ai_tool": [
1382
+ [
1383
+ {
1384
+ "node": "AI Agent",
1385
+ "type": "ai_tool",
1386
+ "index": 0
1387
+ }
1388
+ ]
1389
+ ]
1390
+ },
1391
+ "Create Event with Attendee": {
1392
+ "ai_tool": [
1393
+ [
1394
+ {
1395
+ "node": "Calendar Agent",
1396
+ "type": "ai_tool",
1397
+ "index": 0
1398
+ }
1399
+ ]
1400
+ ]
1401
+ },
1402
+ "Create Event": {
1403
+ "ai_tool": [
1404
+ [
1405
+ {
1406
+ "node": "Calendar Agent",
1407
+ "type": "ai_tool",
1408
+ "index": 0
1409
+ }
1410
+ ]
1411
+ ]
1412
+ },
1413
+ "Get Events": {
1414
+ "ai_tool": [
1415
+ [
1416
+ {
1417
+ "node": "Calendar Agent",
1418
+ "type": "ai_tool",
1419
+ "index": 0
1420
+ }
1421
+ ]
1422
+ ]
1423
+ },
1424
+ "Delete Event": {
1425
+ "ai_tool": [
1426
+ [
1427
+ {
1428
+ "node": "Calendar Agent",
1429
+ "type": "ai_tool",
1430
+ "index": 0
1431
+ }
1432
+ ]
1433
+ ]
1434
+ },
1435
+ "Update Event": {
1436
+ "ai_tool": [
1437
+ [
1438
+ {
1439
+ "node": "Calendar Agent",
1440
+ "type": "ai_tool",
1441
+ "index": 0
1442
+ }
1443
+ ]
1444
+ ]
1445
+ },
1446
+ "Calendar Agent": {
1447
+ "ai_tool": [
1448
+ [
1449
+ {
1450
+ "node": "AI Agent",
1451
+ "type": "ai_tool",
1452
+ "index": 0
1453
+ }
1454
+ ]
1455
+ ]
1456
+ },
1457
+ "Get Contacts": {
1458
+ "ai_tool": [
1459
+ [
1460
+ {
1461
+ "node": "Contact Agent",
1462
+ "type": "ai_tool",
1463
+ "index": 0
1464
+ }
1465
+ ]
1466
+ ]
1467
+ },
1468
+ "Add or Update Contact": {
1469
+ "ai_tool": [
1470
+ [
1471
+ {
1472
+ "node": "Contact Agent",
1473
+ "type": "ai_tool",
1474
+ "index": 0
1475
+ }
1476
+ ]
1477
+ ]
1478
+ },
1479
+ "Contact Agent": {
1480
+ "ai_tool": [
1481
+ [
1482
+ {
1483
+ "node": "AI Agent",
1484
+ "type": "ai_tool",
1485
+ "index": 0
1486
+ }
1487
+ ]
1488
+ ]
1489
+ },
1490
+ "Tavily": {
1491
+ "ai_tool": [
1492
+ [
1493
+ {
1494
+ "node": "Web Agent",
1495
+ "type": "ai_tool",
1496
+ "index": 0
1497
+ }
1498
+ ]
1499
+ ]
1500
+ },
1501
+ "Perplexity": {
1502
+ "ai_tool": [
1503
+ [
1504
+ {
1505
+ "node": "Web Agent",
1506
+ "type": "ai_tool",
1507
+ "index": 0
1508
+ }
1509
+ ]
1510
+ ]
1511
+ },
1512
+ "OpenWeatherMap": {
1513
+ "ai_tool": [
1514
+ [
1515
+ {
1516
+ "node": "Web Agent",
1517
+ "type": "ai_tool",
1518
+ "index": 0
1519
+ }
1520
+ ]
1521
+ ]
1522
+ },
1523
+ "Web Agent": {
1524
+ "ai_tool": [
1525
+ [
1526
+ {
1527
+ "node": "AI Agent",
1528
+ "type": "ai_tool",
1529
+ "index": 0
1530
+ }
1531
+ ]
1532
+ ]
1533
+ },
1534
+ "YouTube Agent": {
1535
+ "ai_tool": [
1536
+ [
1537
+ {
1538
+ "node": "AI Agent",
1539
+ "type": "ai_tool",
1540
+ "index": 0
1541
+ }
1542
+ ]
1543
+ ]
1544
+ },
1545
+ "GPT 4.1-mini": {
1546
+ "ai_languageModel": [
1547
+ [
1548
+ {
1549
+ "node": "AI Agent",
1550
+ "type": "ai_languageModel",
1551
+ "index": 0
1552
+ }
1553
+ ]
1554
+ ]
1555
+ },
1556
+ "GPT 4.1-mini1": {
1557
+ "ai_languageModel": [
1558
+ [
1559
+ {
1560
+ "node": "Email Agent",
1561
+ "type": "ai_languageModel",
1562
+ "index": 0
1563
+ }
1564
+ ]
1565
+ ]
1566
+ },
1567
+ "GPT 4.1-mini2": {
1568
+ "ai_languageModel": [
1569
+ [
1570
+ {
1571
+ "node": "Calendar Agent",
1572
+ "type": "ai_languageModel",
1573
+ "index": 0
1574
+ }
1575
+ ]
1576
+ ]
1577
+ },
1578
+ "GPT 4.1-mini3": {
1579
+ "ai_languageModel": [
1580
+ [
1581
+ {
1582
+ "node": "Contact Agent",
1583
+ "type": "ai_languageModel",
1584
+ "index": 0
1585
+ }
1586
+ ]
1587
+ ]
1588
+ },
1589
+ "GPT 4.1-mini4": {
1590
+ "ai_languageModel": [
1591
+ [
1592
+ {
1593
+ "node": "Web Agent",
1594
+ "type": "ai_languageModel",
1595
+ "index": 0
1596
+ }
1597
+ ]
1598
+ ]
1599
+ },
1600
+ "GPT 4.1-mini5": {
1601
+ "ai_languageModel": [
1602
+ [
1603
+ {
1604
+ "node": "YouTube Agent",
1605
+ "type": "ai_languageModel",
1606
+ "index": 0
1607
+ }
1608
+ ]
1609
+ ]
1610
+ },
1611
+ "AI Agent": {
1612
+ "main": [
1613
+ [
1614
+ {
1615
+ "node": "Clean Up",
1616
+ "type": "main",
1617
+ "index": 0
1618
+ }
1619
+ ],
1620
+ [
1621
+ {
1622
+ "node": "Error Message",
1623
+ "type": "main",
1624
+ "index": 0
1625
+ }
1626
+ ]
1627
+ ]
1628
+ },
1629
+ "Clean Up": {
1630
+ "main": [
1631
+ [
1632
+ {
1633
+ "node": "Append row in sheet",
1634
+ "type": "main",
1635
+ "index": 0
1636
+ }
1637
+ ]
1638
+ ]
1639
+ },
1640
+ "Append row in sheet": {
1641
+ "main": [
1642
+ [
1643
+ {
1644
+ "node": "Response",
1645
+ "type": "main",
1646
+ "index": 0
1647
+ }
1648
+ ]
1649
+ ]
1650
+ },
1651
+ "Get Ideas": {
1652
+ "ai_tool": [
1653
+ [
1654
+ {
1655
+ "node": "YouTube Agent",
1656
+ "type": "ai_tool",
1657
+ "index": 0
1658
+ }
1659
+ ]
1660
+ ]
1661
+ },
1662
+ "Add Idea": {
1663
+ "ai_tool": [
1664
+ [
1665
+ {
1666
+ "node": "YouTube Agent",
1667
+ "type": "ai_tool",
1668
+ "index": 0
1669
+ }
1670
+ ]
1671
+ ]
1672
+ },
1673
+ "YouTube Videos": {
1674
+ "ai_tool": [
1675
+ [
1676
+ {
1677
+ "node": "YouTube Agent",
1678
+ "type": "ai_tool",
1679
+ "index": 0
1680
+ }
1681
+ ]
1682
+ ]
1683
+ },
1684
+ "Think": {
1685
+ "ai_tool": [
1686
+ [
1687
+ {
1688
+ "node": "AI Agent",
1689
+ "type": "ai_tool",
1690
+ "index": 0
1691
+ }
1692
+ ]
1693
+ ]
1694
+ },
1695
+ "Simple Memory": {
1696
+ "ai_memory": [
1697
+ [
1698
+ {
1699
+ "node": "AI Agent",
1700
+ "type": "ai_memory",
1701
+ "index": 0
1702
+ }
1703
+ ]
1704
+ ]
1705
+ },
1706
+ "Input": {
1707
+ "main": [
1708
+ [
1709
+ {
1710
+ "node": "AI Agent",
1711
+ "type": "main",
1712
+ "index": 0
1713
+ }
1714
+ ]
1715
+ ]
1716
+ }
1717
+ },
1718
+ "active": false,
1719
+ "settings": {
1720
+ "executionOrder": "v1"
1721
+ },
1722
+ "versionId": "4b3d4355-2bbf-4539-bde0-de77cdfb18c6",
1723
+ "meta": {
1724
+ "templateCredsSetupCompleted": true,
1725
+ "instanceId": "95e5a8c2e51c83e33b232ea792bbe3f063c094c33d9806a5565cb31759e1ad39"
1726
+ },
1727
+ "id": "Mfd52rCSFqRe9E2o",
1728
+ "tags": []
1729
+ }