This workflow follows the Chainllm → Form Trigger 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 →
{
"name": "Jira[AI]",
"nodes": [
{
"parameters": {
"project": {
"__rl": true,
"value": "10454",
"mode": "list",
"cachedResultName": "Proyecto Prueba 2.0"
},
"issueType": {
"__rl": true,
"value": "10441",
"mode": "list",
"cachedResultName": "Historia"
},
"summary": "={{ $json.resultado }}",
"additionalFields": {
"description": "={{ $json.text }}"
}
},
"type": "n8n-nodes-base.jira",
"typeVersion": 1,
"position": [
780,
-240
],
"id": "2cdd783d-e804-4aba-8987-8075ad81ec06",
"name": "Jira Software",
"credentials": {
"jiraSoftwareCloudApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"jsCode": "const proyectokey = $input.first().json.fields.project.id;\nconst keytarea = $('Datos_Estaticos_Proyecto_tipo_tareas1').first().json.resultado;\nconst parent_issue_key = $input.first().json.key\n\nreturn [\n {\n json: {\n keytarea: keytarea,\n codigo_tipo_tarea: \"TANA_01\",\n nombre_tipo_tarea: \"Tarea de An\u00e1lisis\",\n issue_type: \"10462\",//An\u00e1lisis\n proyecto: proyectokey,\n parent_issue_key: parent_issue_key\n }\n },\n {\n json: {\n keytarea: keytarea,\n codigo_tipo_tarea: \"VANA_01\",\n nombre_tipo_tarea: \"Verificaci\u00f3n par de An\u00e1lisis\",\n issue_type: \"10417\",//Ver. An\u00e1lisis\n proyecto: proyectokey,\n parent_issue_key: parent_issue_key\n }\n },\n {\n json: {\n keytarea: keytarea,\n codigo_tipo_tarea: \"TDES_01\",\n nombre_tipo_tarea: \"Tarea de Dise\u00f1o\",\n issue_type: \"10463\",//Dise\u00f1o\n proyecto: proyectokey,\n parent_issue_key: parent_issue_key\n }\n },\n {\n json: {\n keytarea: keytarea,\n codigo_tipo_tarea: \"VDES_01\",\n nombre_tipo_tarea: \"Verificaci\u00f3n par de Dise\u00f1o\",\n issue_type: \"10418\",//Ver. Dise\u00f1o\n proyecto: proyectokey,\n parent_issue_key: parent_issue_key\n }\n },\n {\n json: {\n keytarea: keytarea,\n codigo_tipo_tarea: \"TDEV_01\",\n nombre_tipo_tarea: \"Administraci\u00f3n de Cargos\",\n issue_type: \"10465\",//Desarrollo\n proyecto: proyectokey,\n parent_issue_key: parent_issue_key\n }\n },\n {\n json: {\n keytarea: keytarea,\n codigo_tipo_tarea: \"CTES_01\",\n nombre_tipo_tarea: \"Caso de prueba. Administraci\u00f3n de Cargos\",\n issue_type: \"10438\",//Caso de Prueba\n proyecto: proyectokey,\n parent_issue_key: parent_issue_key\n }\n },\n {\n json: {\n keytarea: keytarea,\n codigo_tipo_tarea: \"VTES_01\",\n nombre_tipo_tarea: \"Verificaci\u00f3n Casos de prueba\",\n issue_type: \"10419\",//Ver. Casos de Prueba\n proyecto: proyectokey,\n parent_issue_key: parent_issue_key\n }\n }\n];\n"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1100,
-240
],
"id": "c9c8df5c-5960-4b98-bacc-087583cecd39",
"name": "Datos_Estaticos_Proyecto_tipo_tareas"
},
{
"parameters": {
"mode": "runOnceForEachItem",
"jsCode": "const Codigo = $json['Codigo del proyeto'];\nconst Numero_Historia = $json.Numero;\nconst str = Codigo + '_' + Numero_Historia;\n\nreturn {\n json: {\n resultado: str\n }\n};\n"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
80,
-360
],
"id": "c9938e2b-bf0b-40ac-a727-4b03e082f897",
"name": "Datos_Estaticos_Proyecto_tipo_tareas1"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "45c83ac6-2752-45ac-b37c-2d40ae668ab9",
"name": "resultado",
"value": "={{ $json.resultado }} - {{ $('Edit Fields3').item.json['Nombre del la historia'] }}",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
220,
-360
],
"id": "408e0e0a-7031-4fa2-9dad-2a8433fa714e",
"name": "Edit Fields1"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "7e61ba4c-f5ce-4a36-9cc7-f6949c4140c6",
"name": "codigo_nombre",
"value": "={{ $json.keytarea }}_{{ $json.codigo_tipo_tarea }} {{ $json.nombre_tipo_tarea }}",
"type": "string"
},
{
"id": "ea2c9f69-13f6-4c72-b909-d88619cf7da0",
"name": "proyecto",
"value": "={{ $json.proyecto }}",
"type": "string"
},
{
"id": "80f84e76-87d2-4ba6-a3b1-7b871b55e6b6",
"name": "issue_type",
"value": "={{ $json.issue_type }}",
"type": "string"
},
{
"id": "2d7bb868-0347-452d-98cb-b39a01c24a5e",
"name": "parent_issue_key",
"value": "={{ $json.parent_issue_key }}",
"type": "string"
},
{
"id": "22978179-2ab3-4f03-bde8-d99c04aca47e",
"name": "Cuerpo",
"value": "={{ $json.text }}",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
1440,
-80
],
"id": "b22d1870-9b99-413d-b198-bc10bf0cd924",
"name": "Edit Fields2"
},
{
"parameters": {
"operation": "get",
"issueKey": "={{ $json.key }}",
"additionalFields": {}
},
"type": "n8n-nodes-base.jira",
"typeVersion": 1,
"position": [
940,
-240
],
"id": "2bc4f066-2b04-4b7b-8151-78fdecede8b0",
"name": "Jira Software1",
"credentials": {
"jiraSoftwareCloudApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"project": {
"__rl": true,
"value": "={{ $json.proyecto }}",
"mode": "id"
},
"issueType": {
"__rl": true,
"value": "={{ $json.issue_type }}",
"mode": "id"
},
"summary": "={{ $json.codigo_nombre }}",
"additionalFields": {
"description": "={{ \n ($json.issue_type == 10465 || $json.issue_type == \"10465\") \n ? `\nh2. *Datos de la KB*\n\n* *Nombre:* ${$json.codigo_nombre}\n* *Genexus:* GX 17 U13\n* *Info:* [Datos KB](https://link.com)\n\n\n***\n\n`+\n$json.Cuerpo\n+`\n\nSe adjunta estimador:` \n : \"\" \n}}\n",
"parentIssueKey": "={{ $json.parent_issue_key }}"
}
},
"type": "n8n-nodes-base.jira",
"typeVersion": 1,
"position": [
1580,
-80
],
"id": "2ae0fd0c-eaa3-40c0-9d32-46d61778604c",
"name": "Jira Software2",
"credentials": {
"jiraSoftwareCloudApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"formTitle": "Tareas Automatizadas",
"formFields": {
"values": [
{
"fieldLabel": "Historia",
"fieldType": "textarea",
"placeholder": "Information Relevante de la Historia"
},
{
"fieldLabel": "Nombre del la historia",
"placeholder": "Nombre que va a recibir la historia"
},
{
"fieldLabel": "Numero",
"fieldType": "number",
"placeholder": "Numero de la historia"
},
{
"fieldLabel": "Nombre De Proyecto",
"fieldType": "dropdown",
"fieldOptions": {
"values": [
{
"option": "Tablero Proyecto Prueba 2.0"
}
]
}
}
]
},
"options": {}
},
"type": "n8n-nodes-base.formTrigger",
"typeVersion": 2.2,
"position": [
-360,
-60
],
"id": "badc82a3-2880-46e1-8d63-a26e15df5046",
"name": "On form submission"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "367fbe15-8904-439f-98f0-340f4aa71ba5",
"name": "Historia",
"value": "={{ $json.Historia }}",
"type": "string"
},
{
"id": "fde62966-67ae-49ae-ad6b-08cbdacbf631",
"name": "Nombre del la historia",
"value": "={{ $json['Nombre del la historia'] }}",
"type": "string"
},
{
"id": "e9f45090-f232-414d-8329-9527455868d7",
"name": "Numero",
"value": "={{ $json.Numero }}",
"type": "number"
},
{
"id": "b28c9993-f7e5-48cf-80c7-cbb913c8df16",
"name": "Nombre De Proyecto",
"value": "={{ $json['Nombre De Proyecto'] }}",
"type": "string"
},
{
"id": "3c457b15-401f-493d-8d8e-915b6350aee7",
"name": "Codigo del proyeto",
"value": "={{ $json[\"Nombre De Proyecto\"] === \"Tablero Proyecto Prueba 2.0\" ? \"PP20\" : \"\" }}",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
-60,
-360
],
"id": "c78b95da-8b77-4032-b546-331957e740d9",
"name": "Edit Fields3"
},
{
"parameters": {
"operation": "completion",
"completionTitle": "Finalizaci\u00f3n del proceso",
"completionMessage": "=Se ha finalizado el proceso sin ning\u00fan inconveniente.\n\nhttps://scitech.atlassian.net/browse/{{ $('Jira Software1').item.json.key }}",
"options": {}
},
"type": "n8n-nodes-base.form",
"typeVersion": 1,
"position": [
1720,
-80
],
"id": "8b72d6b5-ca61-404c-9782-afdb02814be9",
"name": "Form"
},
{
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini"
},
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"typeVersion": 1.2,
"position": [
40,
240
],
"id": "9037fde7-e1d1-4950-8b6e-bf30a7277113",
"name": "OpenAI Chat Model",
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"promptType": "define",
"text": "=en el proyecto {{ $json['Nombre De Proyecto'] }} en la historia [ {{ $json['Nombre del la historia'] }} ] numero {{ $json.Numero }} se requiere que:\n\nAct\u00faa como un analista t\u00e9cnico con experiencia en desarrollo GeneXus.\n\nA continuaci\u00f3n recibir\u00e1s un texto con informaci\u00f3n recopilada de una reuni\u00f3n con el cliente y/o apuntes del analista, posiblemente desordenados. A partir de este contenido, genera una historia t\u00e9cnica estructurada para desarrollo siguiendo este formato:\n\n**Desarrollo**\n\n1. **Objetivo**: Explica claramente qu\u00e9 se requiere lograr con este desarrollo. S\u00e9 directo y t\u00e9cnico, evitando ambig\u00fcedades.\n\n2. **Desarrollo a realizar**: Describe paso a paso lo que se debe desarrollar. Incluye:\n - Cambios a estructuras, tablas o transacciones.\n - Creaci\u00f3n de nuevos procedimientos o componentes.\n - Par\u00e1metros que recibir\u00e1 el desarrollo.\n - Flujos de validaci\u00f3n y navegaci\u00f3n de tablas.\n - Nombres de campos, estructuras, ejemplos de nombres de archivos, etc.\n\nUsa nombres concretos si se mencionan en el contenido.\n\n---\n\n**Consideraciones** \nIncluye validaciones importantes, supuestos t\u00e9cnicos, restricciones, sobrescrituras, o cualquier punto que el desarrollador debe tener en cuenta para que el desarrollo funcione correctamente.\n\n---\n\nContenido base a estructurar:\n\n\u00b4\u00b4\u00b4\u00b4\n{{ $json.Historia }}\n\u00b4\u00b4\u00b4\u00b4\n\nTransforma este contenido en una historia t\u00e9cnica clara, completa y bien redactada para su uso inmediato por el equipo de desarrollo.\n",
"batching": {}
},
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"typeVersion": 1.7,
"position": [
460,
-60
],
"id": "c9e266ae-62ac-438d-b6a6-f59cf1a26bf0",
"name": "Tarea de dasarrollo description"
},
{
"parameters": {
"promptType": "define",
"text": "=Act\u00faa como un analista t\u00e9cnico especializado en desarrollo con GeneXus y gesti\u00f3n de historias en JIRA.\n\nVas a recibir un texto desordenado proveniente de una reuni\u00f3n con el cliente o de apuntes t\u00e9cnicos. Tu tarea es estructurarlo como una *historia principal (epic)* en formato enriquecido para JIRA, con la m\u00e1s alta claridad, especificidad t\u00e9cnica y calidad descriptiva.\n\nEl formato debe ser el siguiente (usando sintaxis enriquecida de JIRA):\n\nh2. *Datos de la KB*\n\n* *Nombre:* ${$json.codigo_nombre}\n* *Genexus:* GX 17 U13\n* *Info:* [Datos KB](https://link.com)\n\n***\n\nh2. *Desarrollo*\n\n* *1. Objetivo:* \nEscribe el objetivo funcional de la historia desde la perspectiva del usuario y lo que se busca lograr. Usa el formato \"Como... Quiero... Para...\" si aplica.\n\n* *2. Desarrollo a realizar:* \nEstructura los puntos principales como pasos detallados y numerados. Incluye:\n\n- Procesos que se deben implementar o actualizar.\n- Pantallas que se deben modificar (con nombre t\u00e9cnico y ruta si se menciona).\n- Validaciones a realizar.\n- Nombres de procedimientos, estructuras o campos t\u00e9cnicos.\n- C\u00f3mo deben construirse las rutas y nombres de archivos.\n- Comportamientos esperados en condiciones espec\u00edficas (ej: cu\u00e1ndo sobrescribir, cu\u00e1ndo no ejecutar).\n\nUtiliza bullets (`-`) y subt\u00edtulos (`*A)`, `*B)`, etc.) si es necesario para mayor claridad.\n\n* *3. Consideraciones:* \nEspecifica todas las validaciones, reglas t\u00e9cnicas, restricciones, criterios de aceptaci\u00f3n y condiciones especiales que el desarrollo debe cumplir.\n\nIncluye:\n\n- Validaci\u00f3n de existencia de carpetas y comportamiento.\n- Criterios de versi\u00f3n de documentos.\n- Validaciones por tipo de documento.\n- Comportamiento esperado de las pantallas seg\u00fan el estado.\n- Procedimientos auxiliares que deben usarse o modificarse.\n\n***\n\nContenido a estructurar:\n{{ $json.Historia }}\n\nGenera la historia como si fuera a servir de base para dividirse en varias subtareas de desarrollo.\n",
"batching": {}
},
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"typeVersion": 1.7,
"position": [
60,
40
],
"id": "65224072-0b08-45b8-9c22-e510f0c4a9f5",
"name": "Historia principal description"
},
{
"parameters": {
"content": "## v1",
"height": 360
},
"type": "n8n-nodes-base.stickyNote",
"position": [
1020,
60
],
"typeVersion": 1,
"id": "7f6a5683-8dd6-4cd5-b887-49dce6a473e1",
"name": "Sticky Note"
},
{
"parameters": {
"project": {
"__rl": true,
"value": "={{ $json.proyecto }}",
"mode": "id"
},
"issueType": {
"__rl": true,
"value": "={{ $json.issue_type }}",
"mode": "id"
},
"summary": "={{ $json.codigo_nombre }}",
"additionalFields": {
"description": "={{ \n ($json.issue_type == 10465 || $json.issue_type == \"10465\") \n ? `\nh2. *Datos de la KB*\n\n* *Nombre:* ${$json.codigo_nombre}\n* *Genexus:* GX 17 U13\n* *Info:* [Datos KB](https://link.com)\n\n\n***\n\n\nh2. *Desarrollo*\n\n* *1. Objetivo:* \n\n* *2. Desarrollo a realizar:* Para cumplir el objetivo propuesto...\n\n* *3. Consideraciones:* Es necesario tener en cuenta...\n\n\n***\n\n\nSe adjunta estimador:` \n : \"\" \n}}\n",
"parentIssueKey": "={{ $json.parent_issue_key }}"
}
},
"type": "n8n-nodes-base.jira",
"typeVersion": 1,
"position": [
1060,
260
],
"id": "f05d2b6f-0156-41de-a208-cf8e4f3281e9",
"name": "Jira Software3",
"credentials": {
"jiraSoftwareCloudApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"mode": "combine",
"fieldsToMatchString": "issue_type",
"joinMode": "enrichInput1",
"options": {}
},
"type": "n8n-nodes-base.merge",
"typeVersion": 3.2,
"position": [
1300,
-80
],
"id": "e13d09ec-6879-456d-bb64-3a3b80941f0a",
"name": "Merge"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "bce3abb8-c5c3-4150-804e-382def409e67",
"name": "text",
"value": "={{ $json.text }}",
"type": "string"
},
{
"id": "d5d22057-99f8-49ac-861d-ce07ce725168",
"name": "issue_type",
"value": "10465",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
780,
-60
],
"id": "71d2e11c-6b3b-4c63-bdde-b09f9ad532b2",
"name": "Edit Fields"
},
{
"parameters": {
"project": {
"__rl": true,
"value": "10454",
"mode": "list",
"cachedResultName": "Proyecto Prueba 2.0"
},
"issueType": {
"__rl": true,
"value": "10441",
"mode": "list",
"cachedResultName": "Historia"
},
"summary": "={{ $json.resultado }}",
"additionalFields": {
"description": "={{ \n`h2. Objetivo de la Historia\n\n* *Como:* [Rol del usuario] \n* *Quiero:* [Qu\u00e9 se desea lograr] \n* *Para:* [Para qu\u00e9 se quiere lograr]\n\n***\n\nh2. An\u00e1lisis de la Historia\n\nEl alcance de la presente historia es el siguiente:\n\n- Introducci\u00f3n al requerimiento \n- Detalle del requerimiento\n\n***\n\nh3. 1. Introducci\u00f3n al requerimiento\n\n[Descripci\u00f3n general del requerimiento, prop\u00f3sito y contexto]\n\n***\n\nh3. 2. Detalle del requerimiento\n\nPara cumplir con el alcance de esta historia es necesario realizar lo siguiente:\n\n- [Paso 1 o actividad] \n- [Paso 2 o criterio adicional] \n- [M\u00e1s detalles seg\u00fan sea necesario]\n\n***\n\n*Fin del an\u00e1lisis*` \n}}\n"
}
},
"type": "n8n-nodes-base.jira",
"typeVersion": 1,
"position": [
1060,
120
],
"id": "e9cb0bb1-004b-41c5-ba5e-9e6f28d241a0",
"name": "Jira Software4",
"credentials": {
"jiraSoftwareCloudApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"mode": "combine",
"combineBy": "combineByPosition",
"options": {
"includeUnpaired": false
}
},
"type": "n8n-nodes-base.merge",
"typeVersion": 3.2,
"position": [
480,
-240
],
"id": "dd2a5922-43d5-4dd5-90d4-b2ff2dce4b91",
"name": "Merge1"
},
{
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini"
},
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"typeVersion": 1.2,
"position": [
440,
160
],
"id": "6a238e69-6994-4b5c-8233-945180703750",
"name": "OpenAI Chat Model1",
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
}
}
],
"connections": {
"Datos_Estaticos_Proyecto_tipo_tareas": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 0
}
]
]
},
"Datos_Estaticos_Proyecto_tipo_tareas1": {
"main": [
[
{
"node": "Edit Fields1",
"type": "main",
"index": 0
}
]
]
},
"Edit Fields2": {
"main": [
[
{
"node": "Jira Software2",
"type": "main",
"index": 0
}
]
]
},
"Edit Fields1": {
"main": [
[
{
"node": "Merge1",
"type": "main",
"index": 0
}
]
]
},
"Jira Software": {
"main": [
[
{
"node": "Jira Software1",
"type": "main",
"index": 0
}
]
]
},
"Jira Software1": {
"main": [
[
{
"node": "Datos_Estaticos_Proyecto_tipo_tareas",
"type": "main",
"index": 0
}
]
]
},
"Jira Software2": {
"main": [
[
{
"node": "Form",
"type": "main",
"index": 0
}
]
]
},
"On form submission": {
"main": [
[
{
"node": "Edit Fields3",
"type": "main",
"index": 0
},
{
"node": "Tarea de dasarrollo description",
"type": "main",
"index": 0
},
{
"node": "Historia principal description",
"type": "main",
"index": 0
}
]
]
},
"Edit Fields3": {
"main": [
[
{
"node": "Datos_Estaticos_Proyecto_tipo_tareas1",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "Historia principal description",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Tarea de dasarrollo description": {
"main": [
[
{
"node": "Edit Fields",
"type": "main",
"index": 0
}
]
]
},
"Merge": {
"main": [
[
{
"node": "Edit Fields2",
"type": "main",
"index": 0
}
]
]
},
"Edit Fields": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 1
}
]
]
},
"Historia principal description": {
"main": [
[
{
"node": "Merge1",
"type": "main",
"index": 1
}
]
]
},
"Merge1": {
"main": [
[
{
"node": "Jira Software",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model1": {
"ai_languageModel": [
[
{
"node": "Tarea de dasarrollo description",
"type": "ai_languageModel",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "1fe42788-32fe-4553-99e7-050ef5c20ffc",
"meta": {
"templateCredsSetupCompleted": true
},
"id": "SkHDtQQBdvSPfuMu",
"tags": []
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
jiraSoftwareCloudApiopenAiApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Jira[AI]. Uses jira, formTrigger, form, lmChatOpenAi. Event-driven trigger; 20 nodes.
Source: https://gist.github.com/brayanmezac/fd0546d1b810c79422806c5d0e63a043 — 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.
Episode 11: AI shorts factory app. Uses httpRequest, googleSheets, lmChatOpenAi, lmChatOllama. Event-driven trigger; 96 nodes.
Host Your Own AI Deep Research Agent with n8n, Apify and OpenAI. Uses outputParserStructured, lmChatOpenAi, formTrigger, chainLlm. Event-driven trigger; 87 nodes.
This template attempts to replicate OpenAI's DeepResearch feature which, at time of writing, is only available to their pro subscribers.
My workflow 53. Uses formTrigger, httpRequest, lmChatOpenAi, form. Event-driven trigger; 74 nodes.
This workflow serves as a comprehensive "Workflow Nodes SEO & Documentation Generator". It uses AI to analyze, rename, and document n8n workflows, offering a streamlined way to optimize workflow reada