This workflow corresponds to n8n.io template #8138 — we link there as the canonical source.
This workflow follows the Execute Workflow Trigger → HTTP Request recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"id": "t2udGMy6bOMxXL5U",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "URL Officer - Respect robots.txt and Avoid Undesirable Sources",
"tags": [
{
"id": "7Ebg06QToXQ2UrOO",
"name": "WHITE LABEL",
"createdAt": "2025-07-17T18:04:33.197Z",
"updatedAt": "2025-07-17T18:04:33.197Z"
},
{
"id": "JK3I68rY6cIlUP5Z",
"name": "V1.0",
"createdAt": "2025-06-20T18:01:10.400Z",
"updatedAt": "2025-06-20T18:01:10.400Z"
},
{
"id": "KZ42bKkSj4CtvjFI",
"name": "URL Officer",
"createdAt": "2025-08-29T20:37:29.507Z",
"updatedAt": "2025-09-01T15:56:46.990Z"
}
],
"nodes": [
{
"id": "daeab820-0a77-494f-a896-d0747cf21ddf",
"name": "Schedule Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"disabled": true,
"position": [
-3856,
2224
],
"parameters": {},
"typeVersion": 1.2
},
{
"id": "efdbe387-11a0-4668-8aa3-e7366ddaf16e",
"name": "Get Base URL",
"type": "n8n-nodes-base.code",
"position": [
-3392,
2512
],
"parameters": {},
"typeVersion": 2
},
{
"id": "6a35aa4f-3742-4df3-925d-115f2fe7a337",
"name": "Prepare Robots.txt Check",
"type": "n8n-nodes-base.set",
"position": [
-1376,
2544
],
"parameters": {},
"typeVersion": 3.4
},
{
"id": "9d8bbd76-e54d-46f6-a12e-99fe34a2f446",
"name": "Assume Disallow",
"type": "n8n-nodes-base.set",
"position": [
704,
2560
],
"parameters": {},
"typeVersion": 3.4
},
{
"id": "b4885c74-307c-4657-821a-16c3bd554779",
"name": "Information Extractor",
"type": "@n8n/n8n-nodes-langchain.informationExtractor",
"onError": "continueErrorOutput",
"position": [
-64,
1504
],
"parameters": {},
"typeVersion": 1.2
},
{
"id": "0a01931e-70ea-4c9b-8b00-0e0c856f8520",
"name": "Model Selector",
"type": "@n8n/n8n-nodes-langchain.modelSelector",
"position": [
-48,
1712
],
"parameters": {},
"typeVersion": 1
},
{
"id": "fb07971a-0f59-4da3-a701-61d820dd9c3a",
"name": "Mistral Cloud Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatMistralCloud",
"position": [
-176,
1904
],
"parameters": {},
"typeVersion": 1
},
{
"id": "c9a01ad2-e49e-425d-947b-6023207938da",
"name": "Groq Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatGroq",
"position": [
16,
1920
],
"parameters": {},
"typeVersion": 1
},
{
"id": "bd67e5db-aa76-4faa-ba64-36676f68d43b",
"name": "Google Gemini Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
224,
1920
],
"parameters": {},
"typeVersion": 1
},
{
"id": "c3ad9920-4175-441d-a4c7-e5c602dc3623",
"name": "Get Robots.txt",
"type": "n8n-nodes-base.httpRequest",
"onError": "continueErrorOutput",
"position": [
-1152,
2544
],
"parameters": {},
"typeVersion": 4.2
},
{
"id": "1039bda1-7cb2-49fd-9252-c6d3b53e4fa2",
"name": "Check Robots.txt",
"type": "n8n-nodes-base.code",
"position": [
-720,
2096
],
"parameters": {},
"typeVersion": 2
},
{
"id": "d77b0884-a2c4-4b28-b279-16e67afb0510",
"name": "Prepare Robots.txt Check 2",
"type": "n8n-nodes-base.set",
"position": [
-912,
2096
],
"parameters": {},
"typeVersion": 3.4
},
{
"id": "516d7465-76d6-4134-bc17-cbaf7c112ff0",
"name": "If Link Allowed",
"type": "n8n-nodes-base.if",
"position": [
-528,
2096
],
"parameters": {},
"typeVersion": 2.2
},
{
"id": "bb0e20fd-3f1d-419d-a328-05f4ad5eb339",
"name": "Prepare Output for Link Disallowed",
"type": "n8n-nodes-base.set",
"position": [
704,
2112
],
"parameters": {},
"typeVersion": 3.4
},
{
"id": "0d4a5f55-92e6-4a66-97bb-f1ec049b728b",
"name": "If Link Allowed 2",
"type": "n8n-nodes-base.if",
"position": [
352,
1296
],
"parameters": {},
"typeVersion": 2.2
},
{
"id": "69654ff0-7546-4692-a575-a88a05293ca0",
"name": "Create robots.txt Table",
"type": "n8n-nodes-base.postgres",
"position": [
-2064,
2528
],
"parameters": {},
"typeVersion": 2.6
},
{
"id": "81b09054-43a3-48ba-b119-f5cbb49374d6",
"name": "Check robots.txt Table",
"type": "n8n-nodes-base.postgres",
"position": [
-1856,
2528
],
"parameters": {},
"typeVersion": 2.6
},
{
"id": "07a403eb-65cb-4da3-845c-7b1b5de6c3a8",
"name": "If robots.txt Found and Updated",
"type": "n8n-nodes-base.if",
"position": [
-1632,
2112
],
"parameters": {},
"typeVersion": 2.2
},
{
"id": "f53dc919-cd77-4802-ba3a-fef47ca38b74",
"name": "Output",
"type": "n8n-nodes-base.set",
"position": [
1536,
2112
],
"parameters": {},
"typeVersion": 3.4
},
{
"id": "9c3cabef-1da9-4102-95b4-9cbfc8bb8160",
"name": "Prepare Output",
"type": "n8n-nodes-base.set",
"position": [
1088,
2112
],
"parameters": {},
"typeVersion": 3.4
},
{
"id": "588b1506-9f2c-40bf-abfa-df0c69411e9d",
"name": "Prepare Output for Link Allowed",
"type": "n8n-nodes-base.set",
"position": [
736,
1280
],
"parameters": {},
"typeVersion": 3.4
},
{
"id": "252ca896-b873-4758-ba5e-deb1a56f2b22",
"name": "Upsert robots.txt Table",
"type": "n8n-nodes-base.postgres",
"position": [
1312,
2112
],
"parameters": {},
"typeVersion": 2.6
},
{
"id": "c80bc608-19fc-40e0-a198-8211dc6ff0fc",
"name": "Delete robots.txt Table",
"type": "n8n-nodes-base.postgres",
"disabled": true,
"position": [
-1824,
3696
],
"parameters": {},
"typeVersion": 2.6
},
{
"id": "f8ce0f78-2abf-4a5b-89f1-f65ace69816f",
"name": "Start",
"type": "n8n-nodes-base.executeWorkflowTrigger",
"position": [
-3648,
2512
],
"parameters": {},
"typeVersion": 1.1
},
{
"id": "c299b34c-fa35-4eb8-9c71-9f06ec7eae98",
"name": "Check all robots.txt Table",
"type": "n8n-nodes-base.postgres",
"disabled": true,
"position": [
-1744,
3280
],
"parameters": {},
"typeVersion": 2.6
},
{
"id": "9f0168e4-f2d3-41c5-be7e-74e341e17c4b",
"name": "Assume False Output",
"type": "n8n-nodes-base.set",
"position": [
336,
1520
],
"parameters": {},
"typeVersion": 3.4
},
{
"id": "86938ca3-c65f-4d84-82e9-ce93d796c7eb",
"name": "Create forbidden urls table",
"type": "n8n-nodes-base.postgres",
"position": [
-3120,
2512
],
"parameters": {},
"typeVersion": 2.6
},
{
"id": "e44e9e41-b671-4293-9c67-8c291d6e6dc3",
"name": "Check forbidden urls table",
"type": "n8n-nodes-base.postgres",
"position": [
-2880,
2512
],
"parameters": {},
"typeVersion": 2.6
},
{
"id": "bc407192-b22d-4971-98f7-ce13ed09fc98",
"name": "If forbidden url Detected",
"type": "n8n-nodes-base.if",
"position": [
-2656,
2512
],
"parameters": {},
"typeVersion": 2.2
},
{
"id": "2d710898-c723-4d42-92ec-c491a0c07f37",
"name": "Return Disallow",
"type": "n8n-nodes-base.set",
"position": [
-2432,
2304
],
"parameters": {},
"typeVersion": 3.4
},
{
"id": "9914c26d-fd5b-4546-b00b-255b10250792",
"name": "Check all forbidden urls Table",
"type": "n8n-nodes-base.postgres",
"disabled": true,
"position": [
-2576,
3296
],
"parameters": {},
"typeVersion": 2.6
},
{
"id": "9b5ccc40-00ff-4076-91c9-7e96be6bfb7d",
"name": "Delete forbidden urls Table",
"type": "n8n-nodes-base.postgres",
"disabled": true,
"position": [
-2752,
3696
],
"parameters": {},
"typeVersion": 2.6
},
{
"id": "03f80a39-6047-45a8-8d52-e346f387afc1",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-3024,
3504
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "f400b614-2206-46ad-b498-51b07a504874",
"name": "Manual Upsert robots.txt Table",
"type": "n8n-nodes-base.postgres",
"disabled": true,
"position": [
-1744,
3072
],
"parameters": {},
"typeVersion": 2.6
},
{
"id": "425ee181-432f-41c9-867e-5271c52c34f3",
"name": "Manual Upsert forbidden urls Table",
"type": "n8n-nodes-base.postgres",
"disabled": true,
"position": [
-2576,
3056
],
"parameters": {},
"typeVersion": 2.6
},
{
"id": "fde71fdd-2914-49ca-b5b2-b614a32bee6a",
"name": "Start (Tests)",
"type": "n8n-nodes-base.set",
"disabled": true,
"position": [
-3648,
2224
],
"parameters": {},
"typeVersion": 3.4
},
{
"id": "93bd916d-7788-46c9-93ee-834b59c9b8d1",
"name": "Manual Create forbidden urls table",
"type": "n8n-nodes-base.postgres",
"disabled": true,
"position": [
-2896,
3184
],
"parameters": {},
"typeVersion": 2.6
},
{
"id": "1cfe5dce-3499-4e55-9151-9dc8be7d9f6c",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-3024,
2944
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "85c3de20-fdf1-4cbe-92e9-2fe1c6ab3624",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-3904,
2112
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "09434f92-9a9d-48af-8987-755dfc7766da",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-3936,
1920
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "5b2d5cc7-7065-4deb-b145-03f5f7b3e9ce",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2128,
1184
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "5674db3e-5bcc-443b-9b88-1c369f2f0e23",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
1024,
1520
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "52f6e748-31a5-44b0-b23b-b51f4d09b7ad",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2512,
2224
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "b5d5574d-66e4-4726-8615-ab8c6f9cf194",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
288,
1456
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "a5fa3997-5a9f-4970-b464-21e9b55cdf2f",
"name": "Sticky Note15",
"type": "n8n-nodes-base.stickyNote",
"position": [
-3328,
1008
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "d4794547-77c1-40fc-8a52-e0191a9bd404",
"name": "Sticky Note31",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2496,
1088
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "22e102af-193b-4b38-80c3-b2c333709dc4",
"name": "Sticky Note34",
"type": "n8n-nodes-base.stickyNote",
"position": [
-3792,
1200
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "75e8933b-543e-42ea-8ff7-0a521b0ad32e",
"name": "Sticky Note8",
"type": "n8n-nodes-base.stickyNote",
"position": [
-4208,
2944
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "9107b51b-e2a1-4270-945d-38a9df86b5f3",
"name": "Sticky Note9",
"type": "n8n-nodes-base.stickyNote",
"position": [
-3200,
2416
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "705a2acb-3a24-4a00-8d84-1d3ce621b4c4",
"name": "Sticky Note10",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1424,
2448
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "f1912a96-427e-4db1-b394-be408b4cbb9a",
"name": "Sticky Note11",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2112,
2448
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "15b38c36-35a7-41fd-9fa0-e01c8298fab5",
"name": "Sticky Note12",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1008,
1920
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "d414091e-811f-463e-838d-58a8491d564b",
"name": "Sticky Note13",
"type": "n8n-nodes-base.stickyNote",
"position": [
-336,
1232
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "f95a62e2-4d31-4492-8624-d936424b0490",
"name": "Sticky Note28",
"type": "n8n-nodes-base.stickyNote",
"position": [
-3264,
2048
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "fea72690-55dc-4625-af83-ef77ede6357d",
"name": "Manually Create robots.txt Table",
"type": "n8n-nodes-base.postgres",
"disabled": true,
"position": [
-1984,
3200
],
"parameters": {},
"typeVersion": 2.6
},
{
"id": "9dd3216b-879f-40a6-81c4-3d63b86c5292",
"name": "Sticky Note29",
"type": "n8n-nodes-base.stickyNote",
"position": [
1072,
2320
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "f361c438-ef17-41f0-a5a9-d33f7984fcef",
"name": "Sticky Note30",
"type": "n8n-nodes-base.stickyNote",
"position": [
-992,
1472
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "583d53e0-f5d5-4607-8fa6-58724fda1ac6",
"name": "Sticky Note32",
"type": "n8n-nodes-base.stickyNote",
"position": [
-768,
2624
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "ab679ee0-bb40-4c81-85ea-ef4071b95c4b",
"name": "Sticky Note33",
"type": "n8n-nodes-base.stickyNote",
"position": [
-320,
1296
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "ad3b7618-63c5-480a-a41a-e6da3ab943a6",
"name": "Sticky Note35",
"type": "n8n-nodes-base.stickyNote",
"position": [
1216,
1712
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "5d992230-3914-4579-8713-69d9e3fbd04d",
"name": "Sticky Note36",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1792,
1616
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "b232978b-dc4e-43aa-b574-ced3df444a64",
"name": "Sticky Note37",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1360,
2960
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "77f6075d-165e-4670-a240-c71126398f05",
"name": "Sticky Note38",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1200,
3056
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "d930904c-89ba-4898-9476-dae2b2b155b2",
"name": "Sticky Note39",
"type": "n8n-nodes-base.stickyNote",
"position": [
-144,
3056
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "8ae3aeaa-63e0-42b4-a1ce-97f1c0670314",
"name": "Sticky Note40",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1200,
3360
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "5b172243-840f-4e72-9d7c-7cc828d60dd6",
"name": "Sticky Note41",
"type": "n8n-nodes-base.stickyNote",
"position": [
-144,
3360
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "80fb378d-92bf-4850-a108-e85ec8c991b4",
"name": "Sticky Note42",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1200,
3648
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "ffb39f67-e930-47c5-b1a2-5f2a2492b1cb",
"name": "Sticky Note43",
"type": "n8n-nodes-base.stickyNote",
"position": [
-144,
3648
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "8a774b6c-e37b-4ec2-a12f-0085806655f4",
"name": "Sticky Note44",
"type": "n8n-nodes-base.stickyNote",
"position": [
368,
1744
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "9bff1640-c69e-49c0-a0a5-2426823965f6",
"name": "Sticky Note14",
"type": "n8n-nodes-base.stickyNote",
"position": [
-288,
2208
],
"parameters": {
"content": ""
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"callerPolicy": "workflowsFromSameOwner",
"executionOrder": "v1",
"executionTimeout": 900
},
"versionId": "d95d2e5a-836f-4b5c-adad-0ee7f9a4b68c",
"connections": {
"Start": {
"main": [
[
{
"node": "Get Base URL",
"type": "main",
"index": 0
}
]
]
},
"Get Base URL": {
"main": [
[
{
"node": "Create forbidden urls table",
"type": "main",
"index": 0
}
]
]
},
"Start (Tests)": {
"main": [
[]
]
},
"Get Robots.txt": {
"main": [
[
{
"node": "Prepare Robots.txt Check 2",
"type": "main",
"index": 0
}
],
[
{
"node": "Assume Disallow",
"type": "main",
"index": 0
}
]
]
},
"Model Selector": {
"ai_languageModel": [
[
{
"node": "Information Extractor",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Prepare Output": {
"main": [
[
{
"node": "Upsert robots.txt Table",
"type": "main",
"index": 0
}
]
]
},
"Assume Disallow": {
"main": [
[
{
"node": "Prepare Output",
"type": "main",
"index": 0
}
]
]
},
"Groq Chat Model": {
"ai_languageModel": [
[
{
"node": "Model Selector",
"type": "ai_languageModel",
"index": 1
}
]
]
},
"If Link Allowed": {
"main": [
[
{
"node": "Information Extractor",
"type": "main",
"index": 0
}
],
[
{
"node": "Prepare Output for Link Disallowed",
"type": "main",
"index": 0
}
]
]
},
"Check Robots.txt": {
"main": [
[
{
"node": "If Link Allowed",
"type": "main",
"index": 0
}
]
]
},
"Schedule Trigger": {
"main": [
[
{
"node": "Start (Tests)",
"type": "main",
"index": 0
}
]
]
},
"If Link Allowed 2": {
"main": [
[
{
"node": "Prepare Output for Link Allowed",
"type": "main",
"index": 0
}
],
[
{
"node": "Prepare Output for Link Disallowed",
"type": "main",
"index": 0
}
]
]
},
"Information Extractor": {
"main": [
[
{
"node": "If Link Allowed 2",
"type": "main",
"index": 0
}
],
[
{
"node": "Assume False Output",
"type": "main",
"index": 0
}
]
]
},
"Check robots.txt Table": {
"main": [
[
{
"node": "If robots.txt Found and Updated",
"type": "main",
"index": 0
}
]
]
},
"Create robots.txt Table": {
"main": [
[
{
"node": "Check robots.txt Table",
"type": "main",
"index": 0
}
]
]
},
"Upsert robots.txt Table": {
"main": [
[
{
"node": "Output",
"type": "main",
"index": 0
}
]
]
},
"Google Gemini Chat Model": {
"ai_languageModel": [
[
{
"node": "Model Selector",
"type": "ai_languageModel",
"index": 2
}
]
]
},
"Mistral Cloud Chat Model": {
"ai_languageModel": [
[
{
"node": "Model Selector",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Prepare Robots.txt Check": {
"main": [
[
{
"node": "Get Robots.txt",
"type": "main",
"index": 0
}
]
]
},
"If forbidden url Detected": {
"main": [
[
{
"node": "Return Disallow",
"type": "main",
"index": 0
}
],
[
{
"node": "Create robots.txt Table",
"type": "main",
"index": 0
}
]
]
},
"Check forbidden urls table": {
"main": [
[
{
"node": "If forbidden url Detected",
"type": "main",
"index": 0
}
]
]
},
"Prepare Robots.txt Check 2": {
"main": [
[
{
"node": "Check Robots.txt",
"type": "main",
"index": 0
}
]
]
},
"Create forbidden urls table": {
"main": [
[
{
"node": "Check forbidden urls table",
"type": "main",
"index": 0
}
]
]
},
"If robots.txt Found and Updated": {
"main": [
[
{
"node": "Prepare Robots.txt Check 2",
"type": "main",
"index": 0
}
],
[
{
"node": "Prepare Robots.txt Check",
"type": "main",
"index": 0
}
]
]
},
"Prepare Output for Link Allowed": {
"main": [
[
{
"node": "Prepare Output",
"type": "main",
"index": 0
}
]
]
},
"Prepare Output for Link Disallowed": {
"main": [
[
{
"node": "Prepare Output",
"type": "main",
"index": 0
}
]
]
}
}
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Version : 1.0
Source: https://n8n.io/workflows/8138/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
This workflow is for beauty salons who want consistent, high‑quality social media content without writing every post manually. It also suits agencies and automation builders who manage multiple beauty
This workflow is designed for marketers, content creators, agencies, and solo founders who want to publish long‑form posts with visuals on autopilot using n8n and AI agents.
Fully automated blog creation system using n8n + AI Agents + Image Generation
My workflow 53. Uses formTrigger, httpRequest, lmChatOpenAi, form. Event-driven trigger; 74 nodes.
Episode 23: UGC with nanobanana. Uses lmChatOpenAi, lmChatOllama, lmChatDeepSeek, lmChatOpenRouter. Event-driven trigger; 74 nodes.