AutomationFlowsMarketing & Ads › Generate and Compare Marketing Content with Gpt, Claude, Gemini, and Google…

Generate and Compare Marketing Content with Gpt, Claude, Gemini, and Google…

Original n8n title: Generate and Compare Marketing Content with Gpt, Claude, Gemini, and Google Sheets

ByZain Khan @zain on n8n.io

This workflow collects a topic and content type from an n8n Form, generates three variations of the content in parallel using CometAPI-backed GPT, Claude, and Gemini models, then logs the outputs with a timestamp to Google Sheets. Triggers when a user submits the n8n Form with a…

Event trigger★★★★☆ complexity12 nodesGoogle SheetsForm Trigger@Cometapi Dev/N8N Nodes Cometapi
Marketing & Ads Trigger: Event Nodes: 12 Complexity: ★★★★☆ Added:

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

This workflow follows the Form Trigger → Google Sheets 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": "VspMQt23MsBf5vyv",
  "name": "MutliModel content generator using CometAPI",
  "tags": [],
  "nodes": [
    {
      "id": "1187e86c-9a24-4c5e-b7d9-d632b4432c3d",
      "name": "Save Results",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        816,
        208
      ],
      "parameters": {
        "columns": {
          "value": {
            "Topic": "={{ $('On form submission').item.json.Topic }}",
            "Timestamp": "={{ $now }}",
            "ContentType": "={{ $('On form submission').item.json[\"Content Type\"] }}",
            "Model A Result": "={{ $json[\"Model A Result (GPT)\"] }}",
            "Model B Result": "={{ $json[\"Model B Result (Claude)\"] }}",
            "Model C Result": "={{ $json[\"Model C Result (Gemini)\"] }}"
          },
          "schema": [
            {
              "id": "Timestamp",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Timestamp",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Topic",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Topic",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ContentType",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "ContentType",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Model A Result",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Model A Result",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Model B Result",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Model B Result",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Model C Result",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Model C Result",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "row_number"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 43431939,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1TMbpcvZk1jMlkWhYk1xrFbvjePSasKQx9v5Vwb-_hs0/edit#gid=43431939",
          "cachedResultName": "Sheet2"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1TMbpcvZk1jMlkWhYk1xrFbvjePSasKQx9v5Vwb-_hs0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1TMbpcvZk1jMlkWhYk1xrFbvjePSasKQx9v5Vwb-_hs0/edit?usp=drivesdk",
          "cachedResultName": "Multi-Model Content Generator"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "ed3b11df-a6ef-4162-abea-79ad372e7f20",
      "name": "On form submission",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        -592,
        192
      ],
      "parameters": {
        "options": {},
        "formTitle": "Multi-Model Content Generator",
        "formFields": {
          "values": [
            {
              "fieldLabel": "Topic"
            },
            {
              "fieldType": "dropdown",
              "fieldLabel": "Content Type",
              "fieldOptions": {
                "values": [
                  {
                    "option": "blog post"
                  },
                  {
                    "option": "social caption"
                  },
                  {
                    "option": "product description"
                  }
                ]
              }
            }
          ]
        }
      },
      "typeVersion": 2.6
    },
    {
      "id": "539e8d64-22d8-4547-8c45-0e854d63dc24",
      "name": "Parse input fields",
      "type": "n8n-nodes-base.set",
      "position": [
        -400,
        192
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "535bd61b-4576-441e-9bab-fbfa0cbea3e4",
              "name": "topic",
              "type": "string",
              "value": "={{ $json.Topic }}"
            },
            {
              "id": "0a5f52fd-454b-4cf3-bffd-667ba4955628",
              "name": "contentType",
              "type": "string",
              "value": "={{ $json[\"Content Type\"] }}"
            },
            {
              "id": "af8d4222-52f0-4a7d-a82d-faa966911b65",
              "name": "",
              "type": "string",
              "value": "= "
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "1357445a-8532-4ca8-907c-8ac7c3f10adc",
      "name": "Write content using GPT",
      "type": "@cometapi-dev/n8n-nodes-cometapi.cometApi",
      "position": [
        -16,
        -16
      ],
      "parameters": {
        "options": {},
        "messages": {
          "values": [
            {
              "content": "=Write a {{ $json.contentType }} about {{ $json.topic }}. Keep the tone friendly and clear."
            }
          ]
        }
      },
      "credentials": {},
      "typeVersion": 1
    },
    {
      "id": "872568c0-b28a-49b0-9fd2-0f59136844ce",
      "name": "Write content using Claude",
      "type": "@cometapi-dev/n8n-nodes-cometapi.cometApi",
      "position": [
        -48,
        192
      ],
      "parameters": {
        "model": "claude-haiku-4-5-20251001",
        "options": {},
        "messages": {
          "values": [
            {
              "content": "=Write a {{ $json.contentType }} about {{ $json.topic }}. Keep the tone friendly and clear."
            }
          ]
        }
      },
      "credentials": {},
      "typeVersion": 1
    },
    {
      "id": "ca462cff-949a-45fc-a5f7-83afa912f69a",
      "name": "Write content using Gemini",
      "type": "@cometapi-dev/n8n-nodes-cometapi.cometApi",
      "position": [
        -64,
        464
      ],
      "parameters": {
        "model": "gemini-3.5-flash",
        "options": {},
        "messages": {
          "values": [
            {
              "content": "=Write a {{ $json.contentType }} about {{ $json.topic }}. Keep the tone friendly and clear."
            }
          ]
        }
      },
      "credentials": {},
      "typeVersion": 1
    },
    {
      "id": "8c26c429-fe49-408c-bd64-f643cedd691f",
      "name": "Merge all outputs",
      "type": "n8n-nodes-base.merge",
      "position": [
        304,
        192
      ],
      "parameters": {
        "numberInputs": 3
      },
      "typeVersion": 3.2
    },
    {
      "id": "8c6a0f4b-ef05-4fa2-8f02-a3bc44d1d3a6",
      "name": "Parse output fields",
      "type": "n8n-nodes-base.set",
      "position": [
        560,
        208
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "a0dc4f9c-3ac5-4d9d-93f7-70281e00db12",
              "name": "Model A Result (GPT)",
              "type": "string",
              "value": "={{ $input.all()[0].json.choices[0].message.content }}"
            },
            {
              "id": "b580df75-8828-4740-80fb-b77af7305b96",
              "name": "Model B Result (Claude)",
              "type": "string",
              "value": "={{ $input.all()[1].json.choices[0].message.content }}"
            },
            {
              "id": "e47545e4-77b4-4472-9add-073f83d93ed0",
              "name": "Model C Result (Gemini)",
              "type": "string",
              "value": "={{ $input.all()[2].json.choices[0].message.content }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "8c5863b0-748d-4a04-8ee2-fe5b6454aece",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1472,
        -208
      ],
      "parameters": {
        "width": 688,
        "height": 784,
        "content": "## Multi-Model Content Generator\n\n### How it works\nThis workflow serves as an automated multi-model comparison engine for localized content generation. When a user submits content constraints via an n8n Form, the system extracts the properties and splits the payload into three parallel paths. It concurrently prompts OpenAI (GPT), Anthropic (Claude), and Google (Gemini) using identical parameters to generate tailored variations. The responses are gathered, structured into a single uniform item, and saved with a live runtime timestamp inside a centralized tracking spreadsheet for review.\n\n### Setup steps\n* Publish the workflow to initialize the live n8n Form landing page.\n* Map your credentials for the CometAPI node to handle the model inference requests.\n* Link your target **Google Sheets** instance to log the generated content batches.\n* Fill out the form fields locally or share the public form URL to trigger a run.\n\n### Customization\nYou can replace the CometAPI nodes with official individual ecosystem LLM nodes if you require advanced parameter options (e.g., temperature tweaking, system instructions). You can also add an automated email or Slack step after the spreadsheet node to instantly ping marketing stakeholders with the generation links."
      },
      "typeVersion": 1
    },
    {
      "id": "d5bbd65f-4883-44dd-8c7f-cda91a2063a7",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -672,
        96
      ],
      "parameters": {
        "color": 7,
        "width": 480,
        "height": 320,
        "content": "## Form Ingestion & Context Parsing"
      },
      "typeVersion": 1
    },
    {
      "id": "e6a3750c-1dc4-4bed-8531-33f3ff08a320",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -160,
        -128
      ],
      "parameters": {
        "color": 7,
        "width": 608,
        "height": 800,
        "content": "## Parallel Generation (GPT, Claude, Gemini)"
      },
      "typeVersion": 1
    },
    {
      "id": "a65e213a-2974-493e-825b-6e514f3afe17",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        480,
        96
      ],
      "parameters": {
        "color": 7,
        "width": 576,
        "height": 320,
        "content": "## Compilation, Mapping & Database Log"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "binaryMode": "separate",
    "availableInMCP": false,
    "executionOrder": "v1"
  },
  "versionId": "0cec9a65-8ae2-46be-9a30-73abccaed890",
  "nodeGroups": [],
  "connections": {
    "Merge all outputs": {
      "main": [
        [
          {
            "node": "Parse output fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "On form submission": {
      "main": [
        [
          {
            "node": "Parse input fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse input fields": {
      "main": [
        [
          {
            "node": "Write content using GPT",
            "type": "main",
            "index": 0
          },
          {
            "node": "Write content using Gemini",
            "type": "main",
            "index": 0
          },
          {
            "node": "Write content using Claude",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse output fields": {
      "main": [
        [
          {
            "node": "Save Results",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Write content using GPT": {
      "main": [
        [
          {
            "node": "Merge all outputs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Write content using Claude": {
      "main": [
        [
          {
            "node": "Merge all outputs",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Write content using Gemini": {
      "main": [
        [
          {
            "node": "Merge all outputs",
            "type": "main",
            "index": 2
          }
        ]
      ]
    }
  }
}
Pro

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

About this workflow

This workflow collects a topic and content type from an n8n Form, generates three variations of the content in parallel using CometAPI-backed GPT, Claude, and Gemini models, then logs the outputs with a timestamp to Google Sheets. Triggers when a user submits the n8n Form with a…

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

More Marketing & Ads workflows → · Browse all categories →

Related workflows

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

Marketing & Ads

Google Maps Lead Generation with Email Discovery. Uses @hasdata/n8n-nodes-hasdata, googleSheets, formTrigger. Event-driven trigger; 25 nodes.

@Hasdata/N8N Nodes Hasdata, Google Sheets, Form Trigger
Marketing & Ads

ch1. Uses formTrigger, googleSheets, gmail. Event-driven trigger; 8 nodes.

Form Trigger, Google Sheets, Gmail
Marketing & Ads

The Recap AI - Insurance Lawyer Lead Gen. Uses executeWorkflowTrigger, formTrigger, @mendable/n8n-nodes-firecrawl, googleSheets. Event-driven trigger; 33 nodes.

Execute Workflow Trigger, Form Trigger, @Mendable/N8N Nodes Firecrawl +4
Marketing & Ads

This n8n workflow monitors Reddit for posts relevant to a specific business or industry, identifies potential leads, and delivers them directly to your inbox.

OpenRouter Chat, HTTP Request Tool, Output Parser Structured +5
Marketing & Ads

Trending YouTube Videos copy. Uses googleSheets, openAi, httpRequest, stickyNote. Event-driven trigger; 12 nodes.

Google Sheets, OpenAI, HTTP Request +1