AutomationFlowsAI & RAG › Ai-powered Content Analysis with Decodo Scraping & Gpt-4o Insights

Ai-powered Content Analysis with Decodo Scraping & Gpt-4o Insights

ByYaron Been @yaron-nofluff on n8n.io

This workflow contains community nodes that are only compatible with the self-hosted version of n8n.

Event trigger★★★★☆ complexityAI-powered27 nodesGoogle SheetsForm TriggerOutput Parser Structured@Decodo/N8N Nodes DecodoOpenAI ChatAgentSlackGmail
AI & RAG Trigger: Event Nodes: 27 Complexity: ★★★★☆ AI nodes: yes Added:
Ai-powered Content Analysis with Decodo Scraping & Gpt-4o Insights — n8n workflow card showing Google Sheets, Form Trigger, Output Parser Structured integration

This workflow corresponds to n8n.io template #10413 — we link there as the canonical source.

This workflow follows the Agent → 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 →

Download .json
{
  "id": "Jh85ZV9epzhYNsan",
  "name": "Content Analysis using decodo",
  "tags": [
    {
      "id": "uMBvoK3U8QYbRWJ5",
      "name": "done",
      "createdAt": "2025-11-18T13:27:52.572Z",
      "updatedAt": "2025-11-18T13:27:52.572Z"
    }
  ],
  "nodes": [
    {
      "id": "a67b4fd0-c636-40c3-bab3-1ac781f1d746",
      "name": "Check Previous Analysis",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -176,
        448
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Im9g4jTmLV4xT4EzixLgeu0HxrFQwcRs7aSzwSGUvsA/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1Im9g4jTmLV4xT4EzixLgeu0HxrFQwcRs7aSzwSGUvsA",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Im9g4jTmLV4xT4EzixLgeu0HxrFQwcRs7aSzwSGUvsA/edit?usp=drivesdk",
          "cachedResultName": "analysis_reports"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.5,
      "continueOnFail": true
    },
    {
      "id": "f3600163-11aa-46d6-bb0b-7dedfc56ec09",
      "name": "Prepare Analysis Context",
      "type": "n8n-nodes-base.function",
      "position": [
        -368,
        448
      ],
      "parameters": {
        "functionCode": "// Prepare analysis context and generate a unique ID\nconst analysisData = {\n  // Use bracket notation for keys with spaces\n  target_url: $json[\"Target URL\"],\n  analysis_focus: $json[\"Analysis Focus\"],\n  industry: $json[\"Industry\"],\n  \n  timestamp: new Date().toISOString(),\n  analysis_id: 'CA_' + Date.now(),\n  \n  // Fix the replace function by referencing the correct key\n  lookup_key: $json[\"Target URL\"].replace(/https?:\\/\\//, '').replace(/\\/$/, '')\n};\n\nreturn analysisData;"
      },
      "typeVersion": 1
    },
    {
      "id": "c98cfbdc-3edb-4bc5-a008-0d823ac750ca",
      "name": "Content Analysis Request Form",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        -592,
        448
      ],
      "parameters": {
        "options": {},
        "formTitle": "Content Analysis Request",
        "formFields": {
          "values": [
            {
              "fieldType": "url",
              "fieldLabel": "Target URL",
              "requiredField": true
            },
            {
              "fieldType": "select",
              "fieldLabel": "Analysis Focus",
              "requiredField": true
            },
            {
              "fieldType": "select",
              "fieldLabel": "Industry",
              "requiredField": true
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "a1b7db0c-3276-45fa-8c55-57167fc0d475",
      "name": "Report Already Exists?",
      "type": "n8n-nodes-base.if",
      "position": [
        32,
        448
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "867f5ccf-d35b-4255-a713-99ac7cf53f84",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.Target_URL }}",
              "rightValue": "={{ $('Prepare Analysis Context').item.json.target_url }}"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "8bd427c0-5e26-4657-93c3-8d2c3a9efa75",
      "name": "Analysis Results Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        944,
        960
      ],
      "parameters": {
        "jsonSchemaExample": "{\n  \"Target_URL\": \"https://example.com/blog/post\",\n  \"Industry\": \"technology\",\n  \"Overall_Score\": 85,\n  \"SEO_Score\": 82,\n  \"Readability_Score\": 78,\n  \"Priority_Level\": \"NORMAL\",\n  \"Content_Gaps_Count\": 3\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "31298cac-7cc3-4f57-9a43-aa2326e2af9d",
      "name": "Decodo Scraping Tool",
      "type": "@decodo/n8n-nodes-decodo.decodoTool",
      "position": [
        800,
        960
      ],
      "parameters": {
        "url": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('URL', ``, 'string') }}"
      },
      "credentials": {
        "decodoApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "75941208-94c9-4429-9c7a-251d0efdf617",
      "name": "GPT-4o Analysis Engine",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        608,
        960
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "360c1d51-f21f-4c92-8c32-81e0fdc07894",
      "name": "Content Intelligence AI Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        704,
        688
      ],
      "parameters": {
        "text": "=Use the Decodo scraping tool to analyze the content at this URL: {{ $('Prepare Analysis Context').item.json.target_url }}\n\nAfter scraping, provide a comprehensive analysis including:\n\n1. CONTENT QUALITY ASSESSMENT (0-100 score)\n2. SEO EFFECTIVENESS ANALYSIS\n3. READABILITY AND ENGAGEMENT METRICS\n4. CONTENT GAPS AND OPPORTUNITIES\n5. ACTIONABLE RECOMMENDATIONS\n6. COMPETITIVE POSITIONING\n\nIndustry Context: {{ $('Prepare Analysis Context').item.json.industry }}\nAnalysis Focus: {{ $('Prepare Analysis Context').item.json.analysis_focus }}\n\nProvide specific, data-driven insights that can help improve content performance.",
        "options": {
          "systemMessage": "You are an expert content strategist and SEO analyst. Use the Decodo scraping tool to gather content data, then provide comprehensive, actionable insights for content optimization. Focus on practical recommendations that drive business results."
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 2.2
    },
    {
      "id": "b1488daa-c30f-4d31-a454-202ae1cce194",
      "name": "Check Content Quality Threshold",
      "type": "n8n-nodes-base.if",
      "position": [
        1360,
        688
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "quality-check",
              "operator": {
                "type": "number",
                "operation": "lt"
              },
              "leftValue": "={{ $('Content Intelligence AI Agent').item.json.output.Overall_Score }}",
              "rightValue": 80
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "a9dd3d98-214f-4f8a-aaec-819f0b38eda5",
      "name": "Save Analysis to Database",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1104,
        688
      ],
      "parameters": {
        "columns": {
          "value": {
            "Industry": "={{ $json.output.Industry }}",
            "SEO_Score": "={{ $json.output.SEO_Score }}",
            "Timestamp": "={{ $('Prepare Analysis Context').item.json.timestamp }}",
            "Target_URL": "={{ $json.output.Target_URL }}",
            "Analysis_ID": "={{ $('Prepare Analysis Context').item.json.analysis_id }}",
            "Overall_Score": "={{ $json.output.Overall_Score }}",
            "Priority_Level": "={{ $json.output.Priority_Level }}",
            "Readability_Score": "={{ $json.output.Readability_Score }}",
            "Content_Gaps_Count": "={{ $json.output.Content_Gaps_Count }}"
          },
          "schema": [
            {
              "id": "Analysis_ID",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Analysis_ID",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Timestamp",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Timestamp",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Target_URL",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Target_URL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Industry",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Industry",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Overall_Score",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Overall_Score",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "SEO_Score",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "SEO_Score",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Readability_Score",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Readability_Score",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Priority_Level",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Priority_Level",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Content_Gaps_Count",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Content_Gaps_Count",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Im9g4jTmLV4xT4EzixLgeu0HxrFQwcRs7aSzwSGUvsA/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1Im9g4jTmLV4xT4EzixLgeu0HxrFQwcRs7aSzwSGUvsA",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Im9g4jTmLV4xT4EzixLgeu0HxrFQwcRs7aSzwSGUvsA/edit?usp=drivesdk",
          "cachedResultName": "analysis_reports"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "d192cb33-5a48-4d79-a27b-aa9d6bf567de",
      "name": "Notify Team (Normal)",
      "type": "n8n-nodes-base.slack",
      "position": [
        2576,
        992
      ],
      "parameters": {
        "text": "=\u2705 *New Content Analysis Completed*\n\n\ud83d\udd17 *URL:* {{ $('Content Intelligence AI Agent').item.json.output.Target_URL }}\n\ud83c\udfc6 *Score:* {{ $('Content Intelligence AI Agent').item.json.output.Overall_Score }}/100",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "otherOptions": {}
      },
      "credentials": {
        "slackApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "ac3378b3-65d6-4023-95d9-62bf32679ba8",
      "name": "Send Analysis Report",
      "type": "n8n-nodes-base.gmail",
      "position": [
        2352,
        992
      ],
      "parameters": {
        "sendTo": "user@example.com",
        "message": "={{ $json.html_body }}",
        "options": {
          "appendAttribution": false
        },
        "subject": "={{ $json.subject }}"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "58e9d89d-5821-48cb-9ac9-23bb433e2c41",
      "name": "Format Email HTML",
      "type": "n8n-nodes-base.code",
      "position": [
        2128,
        992
      ],
      "parameters": {
        "jsCode": "// Access the document ID directly from the current item's input data\nconst docId = $json.documentId;\n\n// Construct the full Google Doc link using the ID\nconst docLink = `https://docs.google.com/document/d/${docId}/edit`;\n\n// Removed all references to the 'analysis' object (score, recommendations, etc.)\nconst htmlContent = `\n<!DOCTYPE html>\n<html>\n<body style=\"font-family: Arial, sans-serif;\">\n    <div style=\"background: #1263ff; color: white; padding: 20px; border-radius: 8px;\">\n        <h1>\ud83d\udcc4 New Strategic Brief Created</h1>\n        <p>The content analysis workflow has completed the report generation.</p>\n        <p><strong>Document ID:</strong> ${docId}</p>\n    </div>\n    <p>The full strategic content brief is ready for review.</p>\n    <p><a href=\"${docLink}\">\ud83d\udc49 Open Strategic Brief in Google Docs</a></p>\n</body>\n</html>\n`;\n\nreturn {\n    html_body: htmlContent,\n    // Set a generic subject since the analysis data (target_url) is no longer available\n    subject: `\u2705 New Strategic Brief Ready for Review`\n};"
      },
      "typeVersion": 2
    },
    {
      "id": "1a9e0e59-7af8-4dab-bdcc-7724bd5b67ad",
      "name": "Remediation Plan Generator",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1728,
        464
      ],
      "parameters": {
        "text": "=I have a low-quality content alert for this URL: {{ $json.Target_URL }}\n\nPlease generate a detailed technical Remediation Plan suitable for a Jira ticket or Trello card. Break down the fixes into:\n1. Technical SEO Fixes\n2. Content Re-writes\n3. Structural Changes\n\nKeep it concise and actionable.",
        "options": {
          "systemMessage": "You are a Technical Project Manager. Convert strategic advice into tactical tasks."
        },
        "promptType": "define"
      },
      "typeVersion": 1.6
    },
    {
      "id": "1bfdf273-9376-4ab7-903c-b6fead530978",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1696,
        672
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "08937049-a57b-4177-a3f0-778f0a09e94b",
      "name": "No Operation, do nothing",
      "type": "n8n-nodes-base.noOp",
      "position": [
        448,
        288
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "ba4b4319-ad88-48b5-932c-ea4cb6ce220e",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1248,
        176
      ],
      "parameters": {
        "width": 368,
        "height": 592,
        "content": "## How it works\nThis workflow analyzes website content to check quality, SEO, and readability. You fill out a form with the website URL and what to analyze. It reads the website content, gives it scores, and creates reports. If content quality is low, it makes a plan to fix it.\n\n## Setup steps\n\nConnect your Google Sheets, Google Docs, Gmail, and Slack accounts\n\nSet up the Decodo scraper and OpenAI with your API keys\n\nMake sure your Google Sheets has the right columns for analysis data\n\n\n## Use Coupon Code \"YARON\" and get free decodo credits\n\n### https://decodo.com/"
      },
      "typeVersion": 1
    },
    {
      "id": "77479ebe-94cd-4e0e-a6e3-df73801e6649",
      "name": "Aggregate Analysis Data",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        448,
        688
      ],
      "parameters": {
        "options": {},
        "aggregate": "aggregateAllItemData"
      },
      "typeVersion": 1
    },
    {
      "id": "fb8c375a-03d5-40d6-b006-aa3965463897",
      "name": "Create Google Doc Report",
      "type": "n8n-nodes-base.googleDocs",
      "position": [
        1728,
        992
      ],
      "parameters": {
        "title": "=Content Optimization Brief ID: {{ $json.Analysis_ID }}",
        "folderId": "1JjWQ7Vmslz2Zm9KdNAm2Wfvfkz5TUuY1"
      },
      "credentials": {
        "googleDocsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "399cc43b-094e-466a-b5aa-f688769ccce5",
      "name": "Update Google Doc Content",
      "type": "n8n-nodes-base.googleDocs",
      "position": [
        1936,
        992
      ],
      "parameters": {
        "actionsUi": {
          "actionFields": [
            {
              "text": "=Content Optimization Brief  \n\nURL: {{ $('Check Content Quality Threshold').item.json.Target_URL }}\n\nIndustry: {{ $('Check Content Quality Threshold').item.json.Industry }}\n\nOverall_score: {{ $('Check Content Quality Threshold').item.json.Overall_Score }}\n\nSeo_Score: {{ $('Check Content Quality Threshold').item.json.SEO_Score }}\n\nReadibility_Score: {{ $('Check Content Quality Threshold').item.json.Readability_Score }}\n\nPriority_Level: {{ $('Check Content Quality Threshold').item.json.Priority_Level }}\n\nContent_Gaps_Count: {{ $('Check Content Quality Threshold').item.json.Content_Gaps_Count }}",
              "action": "insert"
            }
          ]
        },
        "operation": "update",
        "documentURL": "={{ $json.id }}"
      },
      "credentials": {
        "googleDocsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "e9f0aa40-005a-42f6-bc95-1f009d60affc",
      "name": "Create Trello Task",
      "type": "n8n-nodes-base.trello",
      "position": [
        2080,
        464
      ],
      "parameters": {
        "name": "=URGENT FIX: {{ $('Check Content Quality Threshold').item.json.Target_URL }}",
        "listId": "ENTER_YOUR_TRELLO_LIST_ID_HERE",
        "description": "={{ $json.output }}",
        "additionalFields": {}
      },
      "typeVersion": 1
    },
    {
      "id": "15bc4610-ab81-4950-89d6-25514e92846c",
      "name": "Skip Duplicate Analysis",
      "type": "n8n-nodes-base.slack",
      "position": [
        2320,
        464
      ],
      "parameters": {
        "text": "=\ud83d\udea8 *URGENT: Low Content Quality Detected*\n\n\ud83d\udd17 *URL:* {{ $('Check Content Quality Threshold').item.json.Target_URL }}\n\u274c *Score:* {{ $('Content Intelligence AI Agent').item.json.output.Overall_Score }}/100\n\n\ud83d\udccb *Remediation Plan Generated*\n\u2699\ufe0f *Ticket Created:* Trello/Jira\n\n<@content-team> Please review immediately.",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "otherOptions": {}
      },
      "credentials": {
        "slackApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "e49b6db5-1007-4bc7-985c-cc38d04e6c26",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -624,
        304
      ],
      "parameters": {
        "color": 7,
        "width": 800,
        "height": 304,
        "content": "## Start Analysis\nThis is where you enter the website URL and what to analyze. It checks if this website was analyzed before to avoid doing the same work twice."
      },
      "typeVersion": 1
    },
    {
      "id": "2ebcebd7-8747-4259-9ac0-3400c83029e7",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        400,
        512
      ],
      "parameters": {
        "color": 7,
        "width": 560,
        "height": 368,
        "content": "## Read & Score Website\nThis visits the website and reads all the content. The AI checks the quality, SEO, and readability, then gives scores and finds what needs improvement."
      },
      "typeVersion": 1
    },
    {
      "id": "39f86e93-2503-424f-bf6c-2a54f3ec1f61",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1072,
        512
      ],
      "parameters": {
        "color": 7,
        "width": 416,
        "height": 368,
        "content": "## Save & Check Quality\nThis saves all the analysis results to Google Sheets. It checks if the content quality score is below 80, which means it needs fixing."
      },
      "typeVersion": 1
    },
    {
      "id": "e5685f32-fb53-4e39-906d-09913441f1e8",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1696,
        848
      ],
      "parameters": {
        "color": 7,
        "width": 1024,
        "height": 304,
        "content": "## Make Reports\nThis creates a Google Doc with the analysis results, sends an email report, and tells your team in Slack that the analysis is done."
      },
      "typeVersion": 1
    },
    {
      "id": "22ad5b23-3712-4ef8-a07a-83242d60f831",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1696,
        240
      ],
      "parameters": {
        "color": 7,
        "width": 784,
        "height": 368,
        "content": "## Fix Low Quality\nFor websites with low scores, this creates a step-by-step plan to fix the content, makes a Trello task to track the work, and sends an urgent Slack alert.\n\n"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "cf37de17-fb3a-447f-bac5-baf17c37c60a",
  "connections": {
    "Format Email HTML": {
      "main": [
        [
          {
            "node": "Send Analysis Report",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Remediation Plan Generator",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Create Trello Task": {
      "main": [
        [
          {
            "node": "Skip Duplicate Analysis",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Decodo Scraping Tool": {
      "ai_tool": [
        [
          {
            "node": "Content Intelligence AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Send Analysis Report": {
      "main": [
        [
          {
            "node": "Notify Team (Normal)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "GPT-4o Analysis Engine": {
      "ai_languageModel": [
        [
          {
            "node": "Content Intelligence AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Report Already Exists?": {
      "main": [
        [
          {
            "node": "No Operation, do nothing",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Aggregate Analysis Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Aggregate Analysis Data": {
      "main": [
        [
          {
            "node": "Content Intelligence AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Analysis Results Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Content Intelligence AI Agent",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Check Previous Analysis": {
      "main": [
        [
          {
            "node": "Report Already Exists?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Google Doc Report": {
      "main": [
        [
          {
            "node": "Update Google Doc Content",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Prepare Analysis Context": {
      "main": [
        [
          {
            "node": "Check Previous Analysis",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Save Analysis to Database": {
      "main": [
        [
          {
            "node": "Check Content Quality Threshold",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Google Doc Content": {
      "main": [
        [
          {
            "node": "Format Email HTML",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Remediation Plan Generator": {
      "main": [
        [
          {
            "node": "Create Trello Task",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Content Analysis Request Form": {
      "main": [
        [
          {
            "node": "Prepare Analysis Context",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Content Intelligence AI Agent": {
      "main": [
        [
          {
            "node": "Save Analysis to Database",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check Content Quality Threshold": {
      "main": [
        [
          {
            "node": "Remediation Plan Generator",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Create Google Doc Report",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

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.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

This workflow contains community nodes that are only compatible with the self-hosted version of n8n.

Source: https://n8n.io/workflows/10413/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

This n8n workflow template automates your lead generation and follow-up process using AI. It captures leads through a form, enriches them with company data, classifies them into different categories,

Gmail, Output Parser Structured, Form Trigger +5
AI & RAG

The workflow runs every hour with a randomized delay of 5–20 minutes to help distribute load. It records the exact date and time a lead is emailed so you can track outreach. Follow-ups are automatical

Google Sheets, Agent, OpenAI Chat +5
AI & RAG

Transform your manual hiring process into an intelligent evaluation system that saves 15-20 minutes per candidate! This workflow automates the entire candidate assessment pipeline - from CSV/XLSX uplo

Form Trigger, Google Sheets, Google Drive +8
AI & RAG

This workflow automates legal policy governance for legal teams, policy managers, and compliance officers, eliminating manual document review, approval classification, and multi-channel stakeholder di

Form Trigger, OpenAI Chat, Agent Tool +7
AI & RAG

This n8n workflow is designed for e-commerce businesses, digital marketers, and content creators who want to automatically generate professional 3D product videos from product images. It's perfect for

Form Trigger, Google Drive, HTTP Request +9