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

This workflow runs daily to search flight prices via the Apify Google Flights actor, logs each check to Google Sheets, and sends a Telegram alert when the lowest price drops below your threshold and i

Google Sheets, Telegram, HTTP Request
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

This workflow runs on a weekly schedule, queries Cloudflare GraphQL Analytics for requests matching known AI crawler user-agents, aggregates request counts per bot, generates a short summary with Anth

HTTP Request, Anthropic, Email Send +1