AutomationFlowsWeb Scraping › Monitor Competitors & Generate Content Ideas with Gpt4 & Gemini to Google Sheets

Monitor Competitors & Generate Content Ideas with Gpt4 & Gemini to Google Sheets

ByShelly-Ann Davy @SheCodesFlow on n8n.io

Women creators, homemakers-turned-entrepreneurs, and feminine lifestyle brands who want a graceful, low-lift way to keep an eye on competitor content and spark weekly ideas.

Cron / scheduled trigger★★★★☆ complexity22 nodesHTTP RequestGoogle SheetsEmail SendTelegram
Web Scraping Trigger: Cron / scheduled Nodes: 22 Complexity: ★★★★☆ Added:

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

This workflow follows the Emailsend → 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": "jVqJ6ApXZLf0Tz1S",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Weekly creator competitor ideas to Google Sheets (Firecrawl + AI)",
  "tags": [
    {
      "id": "ijqoFjZVfmHduw14",
      "name": "Content Creation",
      "createdAt": "2025-08-15T19:32:39.780Z",
      "updatedAt": "2025-08-15T19:32:39.780Z"
    }
  ],
  "nodes": [
    {
      "id": "a149649c-c695-4500-8f51-81e64bdbf06c",
      "name": "README \u2013 Template Description",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -80,
        -32
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "95f893f2-809d-40e9-bf46-be5e32bd36fa",
      "name": "Submission Checklist",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -96,
        576
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "0abdda3e-3949-4a35-88bd-eba9f3a2f3de",
      "name": "Cron: Weekly (Sun 5 PM)",
      "type": "n8n-nodes-base.cron",
      "position": [
        608,
        392
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "8011bf83-bb44-42ad-b80d-585c623bb567",
      "name": "Set: Configuration (edit me)",
      "type": "n8n-nodes-base.set",
      "position": [
        832,
        392
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "cb3bc91a-bb09-4f3e-a80b-6162ed03141d",
      "name": "Code: Build URL Items",
      "type": "n8n-nodes-base.code",
      "position": [
        1056,
        392
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "56dc4d0e-c874-4b07-95b0-d0ba157d1dce",
      "name": "HTTP: Firecrawl Scrape",
      "type": "n8n-nodes-base.httpRequest",
      "notes": "Attach Header Auth credential: Authorization: Bearer <FIRECRAWL_KEY>",
      "position": [
        1280,
        392
      ],
      "parameters": {},
      "notesInFlow": true,
      "typeVersion": 4
    },
    {
      "id": "fba41f3e-094b-4235-abef-f24c2a79b40d",
      "name": "Code: Normalize Content",
      "type": "n8n-nodes-base.code",
      "position": [
        1504,
        344
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "a30fba28-172c-46bb-b3a0-4ceecfb9021c",
      "name": "HTTP: OpenAI Summarize",
      "type": "n8n-nodes-base.httpRequest",
      "notes": "Attach Header Auth credential: Authorization: Bearer <OPENAI_API_KEY>",
      "position": [
        1728,
        320
      ],
      "parameters": {},
      "notesInFlow": true,
      "typeVersion": 4
    },
    {
      "id": "29df9e22-8917-47a9-bbed-0085af371803",
      "name": "HTTP: Gemini Ideas",
      "type": "n8n-nodes-base.httpRequest",
      "notes": "Attach API key via credentials (no keys in JSON).",
      "position": [
        1728,
        608
      ],
      "parameters": {},
      "notesInFlow": true,
      "typeVersion": 4
    },
    {
      "id": "3c20d79e-3141-4d0f-b0ca-391d22661bed",
      "name": "Code: Extract OpenAI",
      "type": "n8n-nodes-base.code",
      "position": [
        1952,
        272
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "9c54023c-af65-404a-89c7-e6584f708024",
      "name": "Code: Extract Gemini",
      "type": "n8n-nodes-base.code",
      "position": [
        1952,
        680
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "2bceb17d-fbe5-497a-856f-5f2bd5aef2d9",
      "name": "Merge: Summaries + Ideas",
      "type": "n8n-nodes-base.merge",
      "position": [
        2176,
        344
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "edaaea99-84ce-49db-9f16-238862bd1ac8",
      "name": "Code: Compile Row",
      "type": "n8n-nodes-base.code",
      "position": [
        2400,
        344
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "b4fbe243-8ab9-4661-aa87-3287f5b864a4",
      "name": "Google Sheets: Append",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2624,
        344
      ],
      "parameters": {},
      "typeVersion": 4
    },
    {
      "id": "45f7ac9c-b80a-496c-93cb-95b540c8e477",
      "name": "Code: Build Digest",
      "type": "n8n-nodes-base.code",
      "position": [
        2848,
        344
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "697aeab2-2e06-48e5-9769-497f04417294",
      "name": "Email: Send Digest",
      "type": "n8n-nodes-base.emailSend",
      "position": [
        3072,
        344
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "f1dccdcb-48df-4cdb-8776-dc92c5ac33ce",
      "name": "IF: Telegram Enabled?",
      "type": "n8n-nodes-base.if",
      "position": [
        608,
        904
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "be937308-4e20-4542-89d1-ffe2dd23dc14",
      "name": "Telegram: Notify",
      "type": "n8n-nodes-base.telegram",
      "position": [
        832,
        904
      ],
      "parameters": {},
      "typeVersion": 1.2
    },
    {
      "id": "28295ca0-d671-44b2-887d-7952f6062671",
      "name": "Catch: Error Handling",
      "type": "n8n-nodes-base.set",
      "notes": "Receives error outputs from HTTP nodes; forwards to error email.",
      "position": [
        1952,
        488
      ],
      "parameters": {},
      "notesInFlow": true,
      "typeVersion": 2
    },
    {
      "id": "323f386b-7a0a-4fea-b8a4-8a99c0adb429",
      "name": "Format: Error Payload",
      "type": "n8n-nodes-base.code",
      "position": [
        2176,
        584
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "fac110f8-23cc-4fd0-b9fa-4ea2bc98a7ec",
      "name": "Email: Error Notification",
      "type": "n8n-nodes-base.emailSend",
      "position": [
        2400,
        584
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "e32e2262-6311-454d-932d-03f1c4a2a3df",
      "name": "Credentials \u2013 Attach After Import",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        560,
        -32
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "7efa9cec-48e3-414c-b068-5ecb211dd8c1",
  "connections": {
    "Code: Compile Row": {
      "main": [
        [
          {
            "node": "Google Sheets: Append",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code: Build Digest": {
      "main": [
        [
          {
            "node": "Email: Send Digest",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP: Gemini Ideas": {
      "main": [
        [
          {
            "node": "Code: Extract Gemini",
            "type": "main",
            "index": 0
          },
          {
            "node": "Catch: Error Handling",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code: Extract Gemini": {
      "main": [
        [
          {
            "node": "Merge: Summaries + Ideas",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Code: Extract OpenAI": {
      "main": [
        [
          {
            "node": "Merge: Summaries + Ideas",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Catch: Error Handling": {
      "main": [
        [
          {
            "node": "Format: Error Payload",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code: Build URL Items": {
      "main": [
        [
          {
            "node": "HTTP: Firecrawl Scrape",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Format: Error Payload": {
      "main": [
        [
          {
            "node": "Email: Error Notification",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Sheets: Append": {
      "main": [
        [
          {
            "node": "Code: Build Digest",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "IF: Telegram Enabled?": {
      "main": [
        [
          {
            "node": "Telegram: Notify",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP: Firecrawl Scrape": {
      "main": [
        [
          {
            "node": "Code: Normalize Content",
            "type": "main",
            "index": 0
          },
          {
            "node": "Catch: Error Handling",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP: OpenAI Summarize": {
      "main": [
        [
          {
            "node": "Code: Extract OpenAI",
            "type": "main",
            "index": 0
          },
          {
            "node": "Catch: Error Handling",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code: Normalize Content": {
      "main": [
        [
          {
            "node": "HTTP: OpenAI Summarize",
            "type": "main",
            "index": 0
          },
          {
            "node": "HTTP: Gemini Ideas",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Cron: Weekly (Sun 5 PM)": {
      "main": [
        [
          {
            "node": "Set: Configuration (edit me)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge: Summaries + Ideas": {
      "main": [
        [
          {
            "node": "Code: Compile Row",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set: Configuration (edit me)": {
      "main": [
        [
          {
            "node": "Code: Build URL Items",
            "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

Women creators, homemakers-turned-entrepreneurs, and feminine lifestyle brands who want a graceful, low-lift way to keep an eye on competitor content and spark weekly ideas.

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

More Web Scraping workflows → · Browse all categories →

Related workflows

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

Web Scraping

Turn any Amazon India product URL into a fully-edited 10-second lifestyle video and auto-publish it to Instagram, Facebook, X (Twitter), LinkedIn, YouTube, and Threads — with platform-optimized captio

HTTP Request, @Apify/N8N Nodes Apify, OpenRouter Chat +3
Web Scraping

Schedule Trigger runs every 6 hours (customizable) Apify Scraper fetches Upwork jobs matching your criteria Deduplication filters out jobs you've already seen AI Scoring (GPT-4) evaluates fit, client

HTTP Request, Google Sheets, OpenAI +2
Web Scraping

Automate price monitoring for e-commerce competitors—ideal for retailers, analysts, and pricing teams. Scrapes competitor sites, extracts pricing/stock data via AI, detects changes, and sends instant

@Mendable/N8N Nodes Firecrawl, Perplexity, HTTP Request +3
Web Scraping

&gt; Watch the full Youtube Video Tutorial [](https://youtu.be/Y-wUr2-UYZk)

Data Table, HTTP Request, Google Sheets +1
Web Scraping

This workflow automatically scrapes business leads from Google Maps on a daily schedule and ensures only high-quality, unique leads are processed. New businesses are cleaned, validated, and deduplicat

Google Sheets, Gmail, HTTP Request