Extracción automática de temas y sentimientos de respuestas de Jotform con Google Gemini

Intermedio

Este es unautomatización que contiene 14 nodos.Utiliza principalmente nodos como Code, Merge, Aggregate, GoogleSheets, JotFormTrigger. Extracción automática de tema y sentimiento de respuestas de Jotform con Google Gemini

Requisitos previos
  • Credenciales de API de Google Sheets
  • Clave de API de Google Gemini

Categoría

-
Vista previa del flujo de trabajo
Visualización de las conexiones entre nodos, con soporte para zoom y panorámica
Exportar flujo de trabajo
Copie la siguiente configuración JSON en n8n para importar y usar este flujo de trabajo
{
  "id": "s9tAZpHcsRFJjK3A",
  "meta": {
    "instanceId": "885b4fb4a6a9c2cb5621429a7b972df0d05bb724c20ac7dac7171b62f1c7ef40",
    "templateCredsSetupCompleted": true
  },
  "name": "Automatic Topic & Sentiment Extraction from Jotform Responses with Google Gemini",
  "tags": [
    {
      "id": "ddPkw7Hg5dZhQu2w",
      "name": "AI",
      "createdAt": "2025-04-13T05:38:08.053Z",
      "updatedAt": "2025-04-13T05:38:08.053Z"
    },
    {
      "id": "ZOwtAMLepQaGW76t",
      "name": "Building Blocks",
      "createdAt": "2025-04-13T15:23:40.462Z",
      "updatedAt": "2025-04-13T15:23:40.462Z"
    },
    {
      "id": "Kujft2FOjmOVQAmJ",
      "name": "Engineering",
      "createdAt": "2025-04-09T01:31:00.558Z",
      "updatedAt": "2025-04-09T01:31:00.558Z"
    }
  ],
  "nodes": [
    {
      "id": "36ae4c6f-049d-475c-af85-9cca6affc769",
      "name": "Google Gemini Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        -32,
        320
      ],
      "parameters": {
        "options": {},
        "modelName": "models/gemini-2.0-flash-exp"
      },
      "credentials": {
        "googlePalmApi": {
          "id": "YeO7dHZnuGBVQKVZ",
          "name": "Google Gemini(PaLM) Api account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "8c3ecf36-96e7-4dfc-9ec2-0cf2d0425139",
      "name": "Analizador de Sentimientos",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        0,
        104
      ],
      "parameters": {
        "text": "=Perform sentiment analysis of the following {{ $json.body }} \n",
        "batching": {},
        "messages": {
          "messageValues": [
            {
              "message": "You are an expert sentiment analyzer"
            }
          ]
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.7
    },
    {
      "id": "8fdec511-d900-41a4-bf79-295a620f0b4e",
      "name": "Analizador de Salida Estructurada",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        208,
        320
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "\n{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"title\": \"Feedback Sentiment Output Schema\",\n  \"description\": \"Schema for parsing AI sentiment analysis results from customer feedback submissions.\",\n  \"type\": \"object\",\n  \"properties\": {\n    \"customer_name\": {\n      \"type\": \"string\",\n      \"description\": \"Name of the customer submitting feedback.\"\n    },\n    \"customer_email\": {\n      \"type\": \"string\",\n      \"description\": \"Email of the customer submitting feedback.\"\n    },\n    \"feedback_text\": {\n      \"type\": \"string\",\n      \"description\": \"Raw feedback text provided by the customer.\"\n    },\n    \"sentiment\": {\n      \"type\": \"string\",\n      \"enum\": [\"positive\", \"neutral\", \"negative\"],\n      \"description\": \"Predicted sentiment label of the feedback.\"\n    },\n    \"confidence_score\": {\n      \"type\": \"number\",\n      \"minimum\": 0,\n      \"maximum\": 1,\n      \"description\": \"Model confidence score for the sentiment classification (0-1).\"\n    },\n    \"key_phrases\": {\n      \"type\": \"array\",\n      \"items\": { \"type\": \"string\" },\n      \"description\": \"Important keywords or topics extracted from the feedback.\"\n    },\n    \"summary\": {\n      \"type\": \"string\",\n      \"description\": \"A short AI-generated summary of the feedback.\"\n    },\n    \"alert_priority\": {\n      \"type\": \"string\",\n      \"enum\": [\"high\", \"medium\", \"low\"],\n      \"description\": \"Priority level for team alerting based on sentiment and urgency.\"\n    },\n    \"timestamp\": {\n      \"type\": \"string\",\n      \"format\": \"date-time\",\n      \"description\": \"Time when the feedback was received.\"\n    }\n  },\n  \"additionalProperties\": false\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "ec24ab03-ffdd-412b-a66f-4b3d6bb04edd",
      "name": "Añadir o actualizar fila en hoja",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        880,
        -112
      ],
      "parameters": {
        "columns": {
          "value": {
            "topics_keywords": "={{ $json.output[0].toJsonString() }}",
            "feedback_analysis": "={{ $json.output.toJsonString() }}"
          },
          "schema": [
            {
              "id": "feedback_analysis",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "feedback_analysis",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "topics_keywords",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "topics_keywords",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "feedback_analysis"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/13iJ2sOSaCEekzRNrhkUirZX2llBnpwGi3gdhI4PWIFM/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "13iJ2sOSaCEekzRNrhkUirZX2llBnpwGi3gdhI4PWIFM",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/13iJ2sOSaCEekzRNrhkUirZX2llBnpwGi3gdhI4PWIFM/edit?usp=drivesdk",
          "cachedResultName": "Jotform Feedback"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "Zjoxh2BUZ6VXGQhA",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "b3dbc129-bd64-420b-969b-9bec6a11f4d1",
      "name": "Nota Adhesiva",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -608,
        -416
      ],
      "parameters": {
        "color": 7,
        "width": 352,
        "height": 272,
        "content": "![Logo](https://www.jotform.com/resources/assets/logo-nb/min/jotform-logo-white-400x200.png)\n\nUses Google Gemini AI for the sentiment analysis and topics + keyword extraction of Jotform content"
      },
      "typeVersion": 1
    },
    {
      "id": "83b6913b-ff18-46c0-ba3e-b2c0d5fddedf",
      "name": "Formatear los Datos del Formulario",
      "type": "n8n-nodes-base.code",
      "position": [
        -352,
        -96
      ],
      "parameters": {
        "jsCode": "const outputString = JSON.stringify($input.first().json, null, 2);\nreturn [\n    {\n      json: {\n        body: outputString\n      }\n    }\n  ];"
      },
      "typeVersion": 2
    },
    {
      "id": "78ffe47a-7836-45ed-a3b1-73f9ccff41d6",
      "name": "Temas y Palabras Clave",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        0,
        -400
      ],
      "parameters": {
        "text": "=Perform sentiment analysis of the following {{ $json.body }} \n",
        "batching": {},
        "messages": {
          "messageValues": [
            {
              "message": "You are an expert sentiment analyzer"
            }
          ]
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.7
    },
    {
      "id": "41b0cfcb-fa81-4c52-96a7-e6581bb057be",
      "name": "Google Gemini Chat Model for Topics and Keywords",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        -16,
        -176
      ],
      "parameters": {
        "options": {},
        "modelName": "models/gemini-2.0-flash-exp"
      },
      "credentials": {
        "googlePalmApi": {
          "id": "YeO7dHZnuGBVQKVZ",
          "name": "Google Gemini(PaLM) Api account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "5f5c238d-9705-4017-bdb8-0f6b1adbba15",
      "name": "Analizador de Salida Estructurada para Temas y Palabras Clave",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        176,
        -176
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"title\": \"SurveyTopicKeywordExtraction\",\n  \"description\": \"Schema for extracting topics, keywords, and sentiment insights from Jotform survey responses.\",\n  \"type\": \"object\",\n  \"properties\": {\n    \"topics\": {\n      \"type\": \"array\",\n      \"description\": \"High-level themes or categories extracted from the survey answers.\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"topic\": {\n            \"type\": \"string\",\n            \"description\": \"Descriptive name of the topic, e.g., 'Customer Support Experience'.\"\n          },\n          \"summary\": {\n            \"type\": \"string\",\n            \"description\": \"Short summary describing this topic based on the responses.\"\n          },\n          \"keywords\": {\n            \"type\": \"array\",\n            \"description\": \"List of key terms or phrases related to this topic.\",\n            \"items\": {\n              \"type\": \"string\"\n            }\n          },\n          \"sentiment\": {\n            \"type\": \"string\",\n            \"enum\": [\"positive\", \"negative\", \"neutral\", \"mixed\"],\n            \"description\": \"Overall sentiment associated with this topic.\"\n          },\n          \"importance_score\": {\n            \"type\": \"number\",\n            \"minimum\": 0,\n            \"maximum\": 1,\n            \"description\": \"Relative importance or weight of this topic (0-1 scale).\"\n          }\n        },\n        \"required\": [\"topic\", \"keywords\"]\n      }\n    },\n    \"global_keywords\": {\n      \"type\": \"array\",\n      \"description\": \"Top-level keywords or phrases representing the overall survey themes.\",\n      \"items\": {\n        \"type\": \"string\"\n      }\n    },\n    \"insights\": {\n      \"type\": \"array\",\n      \"description\": \"Key takeaways or AI-generated insights derived from the data mining.\",\n      \"items\": {\n        \"type\": \"string\"\n      }\n    },\n    \"generated_at\": {\n      \"type\": \"string\",\n      \"format\": \"date-time\",\n      \"description\": \"Timestamp of when this analysis was generated.\"\n    }\n  }\n}\n"
      },
      "typeVersion": 1.3
    },
    {
      "id": "041a9363-5f09-46ed-9cd4-4cc17dbe60c8",
      "name": "Disparador de JotForm",
      "type": "n8n-nodes-base.jotFormTrigger",
      "position": [
        -576,
        -96
      ],
      "webhookId": "bddebb80-2e71-43e6-941e-4d599f70d0e6",
      "parameters": {
        "form": "252797914459475"
      },
      "credentials": {
        "jotFormApi": {
          "id": "IcptK658rWIj1G45",
          "name": "JotForm account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "4981c2c9-a760-43d4-ad81-dc60f545bffb",
      "name": "Combinar",
      "type": "n8n-nodes-base.merge",
      "position": [
        464,
        -112
      ],
      "parameters": {},
      "typeVersion": 3.2
    },
    {
      "id": "e6ec2964-d484-4d8f-9c92-515ad9904cd0",
      "name": "Agregar",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        672,
        -112
      ],
      "parameters": {
        "options": {},
        "fieldsToAggregate": {
          "fieldToAggregate": [
            {
              "fieldToAggregate": "output"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "95125c3d-1fc8-4339-a91c-f4f7527fb2de",
      "name": "Nota Adhesiva1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -144,
        -464
      ],
      "parameters": {
        "color": 4,
        "width": 528,
        "height": 432,
        "content": "## Topics and Keyword Extraction using Google Gemini"
      },
      "typeVersion": 1
    },
    {
      "id": "95fc87ef-b095-41d0-9ce1-9a7ef11facc6",
      "name": "Nota Adhesiva2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -144,
        0
      ],
      "parameters": {
        "color": 4,
        "width": 528,
        "height": 464,
        "content": "## Sentiment Analysis using Google Gemini"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "6f6e2249-0884-47a8-af5e-bcc4bac7a61c",
  "connections": {
    "4981c2c9-a760-43d4-ad81-dc60f545bffb": {
      "main": [
        [
          {
            "node": "e6ec2964-d484-4d8f-9c92-515ad9904cd0",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e6ec2964-d484-4d8f-9c92-515ad9904cd0": {
      "main": [
        [
          {
            "node": "ec24ab03-ffdd-412b-a66f-4b3d6bb04edd",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "041a9363-5f09-46ed-9cd4-4cc17dbe60c8": {
      "main": [
        [
          {
            "node": "83b6913b-ff18-46c0-ba3e-b2c0d5fddedf",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "78ffe47a-7836-45ed-a3b1-73f9ccff41d6": {
      "main": [
        [
          {
            "node": "4981c2c9-a760-43d4-ad81-dc60f545bffb",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "8c3ecf36-96e7-4dfc-9ec2-0cf2d0425139": {
      "main": [
        [
          {
            "node": "4981c2c9-a760-43d4-ad81-dc60f545bffb",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "83b6913b-ff18-46c0-ba3e-b2c0d5fddedf": {
      "main": [
        [
          {
            "node": "8c3ecf36-96e7-4dfc-9ec2-0cf2d0425139",
            "type": "main",
            "index": 0
          },
          {
            "node": "78ffe47a-7836-45ed-a3b1-73f9ccff41d6",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "36ae4c6f-049d-475c-af85-9cca6affc769": {
      "ai_languageModel": [
        [
          {
            "node": "8c3ecf36-96e7-4dfc-9ec2-0cf2d0425139",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "8fdec511-d900-41a4-bf79-295a620f0b4e": {
      "ai_outputParser": [
        [
          {
            "node": "8c3ecf36-96e7-4dfc-9ec2-0cf2d0425139",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "ec24ab03-ffdd-412b-a66f-4b3d6bb04edd": {
      "main": [
        []
      ]
    },
    "5f5c238d-9705-4017-bdb8-0f6b1adbba15": {
      "ai_outputParser": [
        [
          {
            "node": "78ffe47a-7836-45ed-a3b1-73f9ccff41d6",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "41b0cfcb-fa81-4c52-96a7-e6581bb057be": {
      "ai_languageModel": [
        [
          {
            "node": "78ffe47a-7836-45ed-a3b1-73f9ccff41d6",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    }
  }
}
Preguntas frecuentes

¿Cómo usar este flujo de trabajo?

Copie el código de configuración JSON de arriba, cree un nuevo flujo de trabajo en su instancia de n8n y seleccione "Importar desde JSON", pegue la configuración y luego modifique la configuración de credenciales según sea necesario.

¿En qué escenarios es adecuado este flujo de trabajo?

Intermedio

¿Es de pago?

Este flujo de trabajo es completamente gratuito, puede importarlo y usarlo directamente. Sin embargo, tenga en cuenta que los servicios de terceros utilizados en el flujo de trabajo (como la API de OpenAI) pueden requerir un pago por su cuenta.

Información del flujo de trabajo
Nivel de dificultad
Intermedio
Número de nodos14
Categoría-
Tipos de nodos9
Descripción de la dificultad

Adecuado para usuarios con experiencia intermedia, flujos de trabajo de complejidad media con 6-15 nodos

Autor
Ranjan Dailata

Ranjan Dailata

@ranjancse

A Professional based out of India specialized in handling AI-powered automations. Contact me at ranjancse@gmail.com

Enlaces externos
Ver en n8n.io

Compartir este flujo de trabajo

Categorías

Categorías: 34