AutomationFlowsAI & RAG › Auto-generate SEO Content From Trends with Gpt-4o, Fal AI & Multi-storage

Auto-generate SEO Content From Trends with Gpt-4o, Fal AI & Multi-storage

Byplemeo @plemeo on n8n.io

Content creators, SEO specialists, and marketing teams who want to automatically generate SEO-optimized content based on trending topics—complete with AI-generated images, optional videos, and ready-to-publish HTML. Webhook receives a request with use case and video preferences.…

Webhook trigger★★★★★ complexityAI-powered47 nodesSpreadsheet FileOpenAI ChatMicrosoft SharePointHTTP RequestAgentGmail
AI & RAG Trigger: Webhook Nodes: 47 Complexity: ★★★★★ AI nodes: yes Added:

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

This workflow follows the Agent → Gmail 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": "J5BZO9ezilMiswH7",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Generate SEO content from trends spreadsheet to storage (SharePoint/Drive/Dropbox)",
  "tags": [
    {
      "id": "wpMIpESnBZpdPCpj",
      "name": "Marketing",
      "createdAt": "2025-06-03T11:38:37.020Z",
      "updatedAt": "2025-06-03T11:38:37.020Z"
    }
  ],
  "nodes": [
    {
      "id": "5a9c11b3-a0d8-419f-a447-828ca7908f0a",
      "name": "Read Trends Data",
      "type": "n8n-nodes-base.spreadsheetFile",
      "position": [
        -4288,
        -2048
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "9988898b-23ab-4b37-8bc2-76a97f96c669",
      "name": "Select Topic from Trends",
      "type": "n8n-nodes-base.code",
      "position": [
        -4016,
        -2048
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "362b5cd0-5253-4ffe-84dc-d1c286977b7d",
      "name": "Build Newsletter",
      "type": "n8n-nodes-base.code",
      "position": [
        -2608,
        -2512
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "7e3d41de-6fdd-4b7d-8e56-2f967108dad2",
      "name": "Check Approval Status",
      "type": "n8n-nodes-base.if",
      "position": [
        624,
        -2144
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "85b0946e-4df0-43e5-9615-020b326b85c0",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -3424,
        -2320
      ],
      "parameters": {},
      "typeVersion": 1.2
    },
    {
      "id": "dca2ef6d-5179-46a4-b916-5f2bfcf79d1e",
      "name": "Get Trends XLSX",
      "type": "n8n-nodes-base.microsoftSharePoint",
      "position": [
        -4512,
        -2048
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "c8d706a3-3bad-4686-a712-350b49314935",
      "name": "Get Newsletter Template",
      "type": "n8n-nodes-base.microsoftSharePoint",
      "position": [
        -3024,
        -2512
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "d1466c51-eb0b-4994-ac1a-e234821de281",
      "name": "Switch",
      "type": "n8n-nodes-base.switch",
      "position": [
        -2688,
        -1760
      ],
      "parameters": {},
      "typeVersion": 3.2
    },
    {
      "id": "0b9a10a8-c84a-47ba-bd8f-0d01d86f013f",
      "name": "Get Video",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueRegularOutput",
      "position": [
        -1824,
        -1824
      ],
      "parameters": {},
      "typeVersion": 4.2
    },
    {
      "id": "db8e8f18-f2d8-476f-ac83-b365aa67451c",
      "name": "Create FAL Video",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -2320,
        -1760
      ],
      "parameters": {},
      "typeVersion": 4.2
    },
    {
      "id": "2a729954-8812-473e-a0be-0c9399a4c454",
      "name": "Create Audio",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -1376,
        -1760
      ],
      "parameters": {},
      "typeVersion": 4.2
    },
    {
      "id": "6984c8c5-0f4c-4881-85fd-782b848ca5f6",
      "name": "Wait for Audio",
      "type": "n8n-nodes-base.wait",
      "position": [
        -1152,
        -1760
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "a172b117-221e-4707-a213-f70397e70418",
      "name": "Get Audio",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueRegularOutput",
      "position": [
        -944,
        -1824
      ],
      "parameters": {},
      "typeVersion": 4.2
    },
    {
      "id": "f4b95592-3803-4dca-a41d-71bd20746cb4",
      "name": "Create Merge Request",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -496,
        -1760
      ],
      "parameters": {},
      "typeVersion": 4.2
    },
    {
      "id": "f419cf55-ca78-4beb-b62d-910e1db9e841",
      "name": "Wait for Merge",
      "type": "n8n-nodes-base.wait",
      "position": [
        -272,
        -1760
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "336374fa-8e2d-4402-b152-d68fc407a885",
      "name": "Get Merged Video",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueRegularOutput",
      "position": [
        -64,
        -1760
      ],
      "parameters": {},
      "typeVersion": 4.2
    },
    {
      "id": "d4449512-70d3-4856-b5fc-606b7b505ff0",
      "name": "Merge1",
      "type": "n8n-nodes-base.merge",
      "position": [
        128,
        -2192
      ],
      "parameters": {},
      "typeVersion": 3
    },
    {
      "id": "90347ce0-1238-448d-abf2-96ecb228b8e0",
      "name": "Configuration Settings",
      "type": "n8n-nodes-base.set",
      "position": [
        -4752,
        -2048
      ],
      "parameters": {},
      "typeVersion": 3.4
    },
    {
      "id": "5a58eb7e-1993-4a8e-9d66-53b33b3d11de",
      "name": "OpenAI Chat Model1",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -3408,
        -1856
      ],
      "parameters": {},
      "typeVersion": 1.2
    },
    {
      "id": "fdb7ef7c-f900-4374-b65e-eb14f5c9f4a6",
      "name": "Generate Video and Audio Prompt",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -3392,
        -2064
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "0639f081-0402-4534-b448-d23e45032037",
      "name": "Determine Intent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -5392,
        -2048
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "a6f8688e-95a7-4169-9224-682762a8372b",
      "name": "OpenAI Chat Model2",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -5312,
        -1824
      ],
      "parameters": {},
      "typeVersion": 1.2
    },
    {
      "id": "aa3ab2ba-e08b-49cf-ac57-3789107435c2",
      "name": "Parse Fields",
      "type": "n8n-nodes-base.code",
      "position": [
        -3024,
        -2064
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "38f5414a-7e8b-4350-8c15-474d44453602",
      "name": "Parse Intent Fields",
      "type": "n8n-nodes-base.code",
      "position": [
        -4992,
        -2048
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "50c07304-8521-43f7-9e0c-16fe48ed90e2",
      "name": "HTML to Binary",
      "type": "n8n-nodes-base.code",
      "position": [
        832,
        -2144
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "da4da730-32f9-47e8-92a8-2ad2651376eb",
      "name": "TXT to Binary",
      "type": "n8n-nodes-base.code",
      "position": [
        2048,
        -2144
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "ac207979-019c-47fe-a7a1-d53d70afbb35",
      "name": "JPG to Binary",
      "type": "n8n-nodes-base.code",
      "position": [
        1280,
        -2144
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "c8684458-4bb9-45ee-af72-adea5b174168",
      "name": "Save Video URL if exists",
      "type": "n8n-nodes-base.if",
      "position": [
        1760,
        -2128
      ],
      "parameters": {},
      "typeVersion": 2.2
    },
    {
      "id": "cdbc12f2-d5f3-4236-a136-b8259f3d12ee",
      "name": "Upload HTML",
      "type": "n8n-nodes-base.microsoftSharePoint",
      "position": [
        1056,
        -2144
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "270a6ba6-83cd-45fd-a733-7799f787b244",
      "name": "Upload JPG",
      "type": "n8n-nodes-base.microsoftSharePoint",
      "position": [
        1504,
        -2144
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "61ea58e5-8cf7-40fe-b67b-1f7faa81dcf3",
      "name": "Upload Video URL",
      "type": "n8n-nodes-base.microsoftSharePoint",
      "position": [
        2304,
        -2144
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "9ae9a529-370b-4d2d-acb8-ad3e3f1d3913",
      "name": "Send message and wait for response",
      "type": "n8n-nodes-base.gmail",
      "position": [
        400,
        -2144
      ],
      "parameters": {},
      "typeVersion": 2.1
    },
    {
      "id": "c3910d9b-81af-40c2-a0ef-e7953c265d9f",
      "name": "Set Base64 Field",
      "type": "n8n-nodes-base.set",
      "position": [
        -2512,
        -2064
      ],
      "parameters": {},
      "typeVersion": 3.4
    },
    {
      "id": "efeefb3f-4856-4136-a230-af280b346468",
      "name": "Convert Base64 to File",
      "type": "n8n-nodes-base.convertToFile",
      "position": [
        -2288,
        -2064
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "e493b67f-360c-464c-a8b7-dae374751da7",
      "name": "Receive Request",
      "type": "n8n-nodes-base.webhook",
      "position": [
        -5616,
        -2048
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "ef936c7c-c40d-450c-9dda-5cf55dac2027",
      "name": "Prepare Newsletter Data",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -3408,
        -2512
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "b20d69ab-97c5-4a2e-9926-77252b735ab3",
      "name": "Extract from Text File",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        -2816,
        -2512
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "3a93f461-3ad3-4cd3-923c-4e04e1b8fd92",
      "name": "Generate Image",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueErrorOutput",
      "maxTries": 5,
      "position": [
        -2800,
        -2064
      ],
      "parameters": {},
      "retryOnFail": true,
      "typeVersion": 4.2
    },
    {
      "id": "5cfef6a7-5f21-4493-89df-c699bf927116",
      "name": "Send Data to Download Service",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -2944,
        -1760
      ],
      "parameters": {},
      "typeVersion": 4.2
    },
    {
      "id": "83cc9e0a-71cc-43a2-97d2-ecb92aca6fa0",
      "name": "Wait For Video",
      "type": "n8n-nodes-base.wait",
      "position": [
        -2032,
        -1760
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "a4149035-a9f4-4d19-ac57-49b5bac89ed6",
      "name": "Video Still Processing",
      "type": "n8n-nodes-base.if",
      "position": [
        -1600,
        -1760
      ],
      "parameters": {},
      "typeVersion": 2.2
    },
    {
      "id": "23060783-5d2f-4a2e-89fc-3138f0c8d681",
      "name": "Audio Still Processing",
      "type": "n8n-nodes-base.if",
      "position": [
        -720,
        -1760
      ],
      "parameters": {},
      "typeVersion": 2.2
    },
    {
      "id": "8c4e8075-1c2f-4fa2-a1ab-f858ff9bc426",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -4912,
        -2432
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "ff1a4101-c39d-418d-a6e4-9f893dabed74",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3408,
        -3008
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "a0ac2239-2eae-4100-bb03-99b8365a038e",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3856,
        -1696
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "93b1ab5a-e522-48b0-9208-41bda43cfb7b",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2688,
        -1488
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "65ebb1ee-baa2-4dae-a780-f3a0b51836e0",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        832,
        -1952
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "18a250cb-ac2d-4101-a49a-400be7b37f7f",
  "connections": {
    "Merge1": {
      "main": [
        [
          {
            "node": "Send message and wait for response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Switch": {
      "main": [
        [
          {
            "node": "Create FAL Video",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Audio": {
      "main": [
        [
          {
            "node": "Audio Still Processing",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Video": {
      "main": [
        [
          {
            "node": "Video Still Processing",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload JPG": {
      "main": [
        [
          {
            "node": "Save Video URL if exists",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload HTML": {
      "main": [
        [
          {
            "node": "JPG to Binary",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Audio": {
      "main": [
        [
          {
            "node": "Wait for Audio",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse Fields": {
      "main": [
        [
          {
            "node": "Generate Image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "JPG to Binary": {
      "main": [
        [
          {
            "node": "Upload JPG",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "TXT to Binary": {
      "main": [
        [
          {
            "node": "Upload Video URL",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate Image": {
      "main": [
        [
          {
            "node": "Set Base64 Field",
            "type": "main",
            "index": 0
          }
        ],
        []
      ]
    },
    "HTML to Binary": {
      "main": [
        [
          {
            "node": "Upload HTML",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait For Video": {
      "main": [
        [
          {
            "node": "Get Video",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait for Audio": {
      "main": [
        [
          {
            "node": "Get Audio",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait for Merge": {
      "main": [
        [
          {
            "node": "Get Merged Video",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Trends XLSX": {
      "main": [
        [
          {
            "node": "Read Trends Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Receive Request": {
      "main": [
        [
          {
            "node": "Determine Intent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Build Newsletter": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 4
          }
        ]
      ]
    },
    "Create FAL Video": {
      "main": [
        [
          {
            "node": "Wait For Video",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Determine Intent": {
      "main": [
        [
          {
            "node": "Parse Intent Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Merged Video": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 3
          }
        ]
      ]
    },
    "Read Trends Data": {
      "main": [
        [
          {
            "node": "Select Topic from Trends",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Base64 Field": {
      "main": [
        [
          {
            "node": "Convert Base64 to File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload Video URL": {
      "main": [
        []
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Prepare Newsletter Data",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model1": {
      "ai_languageModel": [
        [
          {
            "node": "Generate Video and Audio Prompt",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model2": {
      "ai_languageModel": [
        [
          {
            "node": "Determine Intent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Parse Intent Fields": {
      "main": [
        [
          {
            "node": "Configuration Settings",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Merge Request": {
      "main": [
        [
          {
            "node": "Wait for Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check Approval Status": {
      "main": [
        [
          {
            "node": "HTML to Binary",
            "type": "main",
            "index": 0
          }
        ],
        []
      ]
    },
    "Audio Still Processing": {
      "main": [
        [
          {
            "node": "Wait for Audio",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Create Merge Request",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Configuration Settings": {
      "main": [
        [
          {
            "node": "Get Trends XLSX",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Convert Base64 to File": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 1
          },
          {
            "node": "Merge1",
            "type": "main",
            "index": 2
          },
          {
            "node": "Send Data to Download Service",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract from Text File": {
      "main": [
        [
          {
            "node": "Build Newsletter",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Video Still Processing": {
      "main": [
        [
          {
            "node": "Wait For Video",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Create Audio",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Newsletter Template": {
      "main": [
        [
          {
            "node": "Extract from Text File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Prepare Newsletter Data": {
      "main": [
        [
          {
            "node": "Get Newsletter Template",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Save Video URL if exists": {
      "main": [
        [
          {
            "node": "TXT to Binary",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Select Topic from Trends": {
      "main": [
        [
          {
            "node": "Prepare Newsletter Data",
            "type": "main",
            "index": 0
          },
          {
            "node": "Generate Video and Audio Prompt",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send Data to Download Service": {
      "main": [
        [
          {
            "node": "Switch",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate Video and Audio Prompt": {
      "main": [
        [
          {
            "node": "Parse Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send message and wait for response": {
      "main": [
        [
          {
            "node": "Check Approval Status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Pro

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

About this workflow

Content creators, SEO specialists, and marketing teams who want to automatically generate SEO-optimized content based on trending topics—complete with AI-generated images, optional videos, and ready-to-publish HTML. Webhook receives a request with use case and video preferences.…

Source: https://n8n.io/workflows/6278/ — 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

Marketing, growth, and automation teams that need to ship polished bilingual newsletters—complete with images, optional video, and multi-channel distribution—without writing a line of code. A Webhook

Agent, Microsoft SharePoint, HTTP Request +4
AI & RAG

This workflow is designed for professionals, companies, and agencies that want to automate competitive analysis based on public reviews and opinions found on the Internet. It is especially useful for:

Agent, OpenAI Chat, OpenAI +4
AI & RAG

JoinDAn8n. Uses httpRequest, dataTable, emailReadImap, lmChatOpenAi. Webhook trigger; 37 nodes.

HTTP Request, Data Table, Email Read Imap +6
AI & RAG

This workflow automates personalized customer journeys by analyzing CRM data, purchase history, chat interactions, and performance metrics to intelligently route customer actions through multiple chan

HTTP Request, Agent, OpenAI Chat +4
AI & RAG

Whatsapp Lead Agent. Uses httpRequest, hunter, @tavily/n8n-nodes-tavily, @mendable/n8n-nodes-firecrawl. Webhook trigger; 35 nodes.

HTTP Request, Hunter, @Tavily/N8N Nodes Tavily +11