AutomationFlowsAI & RAG › Daily Competitor Tweet Summarizer with X Api, Gpt-5-nano, and Gmail Delivery

Daily Competitor Tweet Summarizer with X Api, Gpt-5-nano, and Gmail Delivery

ByScoutNow @scoutnow on n8n.io

Stay on top of your competition with this powerful n8n workflow that automatically fetches and summarizes your competitors’ latest tweets every day. Using the official X (formerly Twitter) API and OpenAI's GPT-5-Nano model, this template extracts insights from public tweets and…

Cron / scheduled trigger★★★★☆ complexityAI-powered10 nodesTwitterOpenAIGmailHTTP Request
AI & RAG Trigger: Cron / scheduled Nodes: 10 Complexity: ★★★★☆ AI nodes: yes Added:

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

This workflow follows the Gmail → HTTP Request 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": "EdXR18SX0sWTrnnA",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Tweets Summarizer",
  "tags": [],
  "nodes": [
    {
      "id": "642f2b18-6530-49c8-a998-486cfd304bb2",
      "name": "Get User",
      "type": "n8n-nodes-base.twitter",
      "position": [
        -496,
        -80
      ],
      "parameters": {
        "user": {
          "__rl": true,
          "mode": "username",
          "value": "your_target_username"
        },
        "resource": "user"
      },
      "credentials": {
        "twitterOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "890190cc-6830-4f5d-9541-6c8d74d8ee0e",
      "name": "Message a model",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        272,
        -80
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-5-nano",
          "cachedResultName": "GPT-5-NANO"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "content": "=Analyze the recent competitor tweets on X, considering their recent updates and engagement rate.\n\n{{ $json.data.map(t => `Tweet: ${t.text}\\nLikes: ${t.public_metrics.like_count}, Impressions: ${t.public_metrics.impression_count}`).join('\\n\\n') }}\n"
            }
          ]
        }
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "0e3760b0-afae-4c7b-9a9f-4b20f43689e3",
      "name": "Send a message",
      "type": "n8n-nodes-base.gmail",
      "position": [
        784,
        -80
      ],
      "parameters": {
        "sendTo": "user@example.com",
        "message": "={{ $json.message.content }}",
        "options": {},
        "subject": "Latest Competitor Analysis",
        "emailType": "text"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "c9d970ec-d3d3-418e-821d-23c0b2228af8",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -944,
        -80
      ],
      "parameters": {
        "rule": {
          "interval": [
            {}
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "5bec126d-97c8-4bf0-b67a-2ce3d5ac02ae",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -592,
        -304
      ],
      "parameters": {
        "width": 288,
        "height": 400,
        "content": "## Step 2\n\nHardcode your competitor's X (formerly Twitter) username in this node. \nThis node will fetch basic profile data to extract the corresponding user ID.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "126d2909-cde2-4daa-bf93-e51f25d9fcfc",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -176,
        -304
      ],
      "parameters": {
        "width": 288,
        "height": 400,
        "content": "## Step 3\n\nThis node will fetch the 5 most recent posts from your competitor. \nYou can change this number by modifying the `max_results` parameter in this node.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "6786839b-ed1f-466b-b336-b49bbad1dd82",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        240,
        -304
      ],
      "parameters": {
        "width": 288,
        "height": 400,
        "content": "## Step 4\n\nThis OpenAI node uses the `gpt-5-nano` model to generate a competitor analysis summary based on recent posts. \nYou can tailor the summary to your needs by modifying the prompt.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "f995941a-b4dc-4db1-83b3-4daead61193b",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        688,
        -304
      ],
      "parameters": {
        "width": 288,
        "height": 400,
        "content": "## Final Step\n\nSend an email to yourself or your team by updating the email address in this node.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "0be06c61-a4c3-4763-b478-705f2930f10b",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1040,
        -304
      ],
      "parameters": {
        "width": 288,
        "height": 400,
        "content": "## Step 1\n\nSet your preferred schedule. The task is currently set to run every day at midnight.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "0d067076-c3a1-42d6-b196-842efa52d5fb",
      "name": "Fetch Recent Posts",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -80,
        -80
      ],
      "parameters": {
        "url": "=https://api.twitter.com/2/users/{{ $json.id }}/tweets ",
        "options": {},
        "sendQuery": true,
        "authentication": "predefinedCredentialType",
        "queryParameters": {
          "parameters": [
            {
              "name": "max_results",
              "value": "5"
            },
            {
              "name": "tweet.fields",
              "value": "public_metrics,created_at"
            }
          ]
        },
        "nodeCredentialType": "httpBearerAuth"
      },
      "credentials": {
        "httpBearerAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "07b834ba-0a7b-4c6f-b99a-2de3adca6056",
  "connections": {
    "Get User": {
      "main": [
        [
          {
            "node": "Fetch Recent Posts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Message a model": {
      "main": [
        [
          {
            "node": "Send a message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Get User",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch Recent Posts": {
      "main": [
        [
          {
            "node": "Message a model",
            "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

Stay on top of your competition with this powerful n8n workflow that automatically fetches and summarizes your competitors’ latest tweets every day. Using the official X (formerly Twitter) API and OpenAI's GPT-5-Nano model, this template extracts insights from public tweets and…

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

It’s very important to come prepared to Sales calls. This often means a lot of manual research about the person you’re calling with. This workflow delivers a summary of the latest social media activit

Google Calendar, HTTP Request, Clearbit +2
AI & RAG

This n8n template automates the process of curating and sharing the latest cryptocurrency news on X (formerly Twitter) and Telegram. By leveraging AI for content summarization, this workflow allows yo

OpenAI, HTTP Request, Twitter +1
AI & RAG

Turn your favorite podcast episodes into engaging social media content automatically. This workflow fetches new episodes from an RSS feed, transcribes the audio using OpenAI Whisper, generates a conci

OpenAI, Slack, Twitter +2
AI & RAG

This fully automated AI Twin Viral News system researches the latest trending news in any niche or industry, then generates talking-head AI clone videos WITHOUT having to film or edit yourself. This c

OpenAI, Perplexity, HTTP Request +1
AI & RAG

This workflow finds potential customers, gathers detailed info about them and their companies, and then uses AI to research them in detail and write personalized messages for LinkedIn and a series of

Google Sheets, HTTP Request, OpenAI +1