{
  "id": "iTYMiElAxoA6mGFI",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "14 Analyze Competitor Content Performance",
  "tags": [],
  "nodes": [
    {
      "id": "ae08fbec-aa27-4209-9bd4-e91fd401ca70",
      "name": "\u26a1 Start: Execute Workflow",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        0,
        0
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "6be3a9b3-f168-41f2-98b1-9cc8235efa25",
      "name": "\ud83d\udcdd Input: Competitor Details",
      "type": "n8n-nodes-base.set",
      "position": [
        220,
        0
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "f57bb4aa-1040-4315-894d-51e373012522",
              "name": "url",
              "type": "string",
              "value": "https://medium.com/?tag=technology"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "b0a7dc50-e4d8-435d-88dd-875f69d2b9ce",
      "name": "\ud83e\udd16 AI Agent: Analyze Content",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        460,
        0
      ],
      "parameters": {
        "text": "=screpe the stats of the competitors website below and write an email to suggest improvement:\n{{ $json.url }}",
        "options": {},
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 2
    },
    {
      "id": "f4d838f9-ba74-405f-8035-c3d264cb1ba1",
      "name": "\ud83d\udcac OpenAI: Generate Insights",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        440,
        260
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "1d5786b4-e130-4ee6-bb6c-10892038eaa7",
      "name": "\ud83c\udf10 MCP Scraper: Get Blog Data",
      "type": "n8n-nodes-mcp.mcpClientTool",
      "position": [
        620,
        260
      ],
      "parameters": {
        "toolName": "scrape_as_markdown",
        "operation": "executeTool",
        "toolParameters": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Tool_Parameters', ``, 'json') }}"
      },
      "credentials": {
        "mcpClientApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "d9dceb89-0b2f-4579-a521-844f6122ddc8",
      "name": "\ud83d\udce7 Send Email: Client Suggestions",
      "type": "n8n-nodes-base.gmail",
      "position": [
        940,
        0
      ],
      "parameters": {
        "sendTo": "user@example.com",
        "message": "={{ $json.output.email.body }}",
        "options": {},
        "subject": "={{ $json.output.email.subject }}",
        "emailType": "text"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "b3a362b5-db83-463b-8339-048a1157e412",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -20,
        -1240
      ],
      "parameters": {
        "color": 5,
        "width": 380,
        "height": 1420,
        "content": "## \u2705 **\ud83d\udcc2 SECTION 1 \u2014 Trigger & Input**\n\n### \u26a1 Node 1: **Start: Execute Workflow**\n\n**Icon:** \u26a1\n**What it does:** This node waits for you to **click \u201cExecute Workflow.\u201d** It\u2019s like a start button.\n**Why it\u2019s useful:** It gives you control \u2014 you can run this only when you\u2019re ready to scrape & analyze.\n\n---\n\n### \ud83d\udcdd Node 2: **Input: Competitor Details**\n\n**Icon:** \ud83d\udcdd\n**What it does:** Here you **manually enter** the competitor blog URLs, tags, or keywords you want to analyze.\n\n* Example: `https://moz.com/blog`, `https://ahrefs.com/blog`\n* You can also add extra fields like \u201cTarget Language\u201d or \u201cTopics of Interest.\u201d\n\n**How this helps:**\n\n* You keep the workflow flexible.\n* You can reuse the same flow for any competitor.\n* Non-technical team members can easily update input.\n\n---\n\n**\ud83d\udd11 SECTION 1 Summary:**\nThis section **starts** your workflow and **feeds it the raw data**: **What do you want to scrape?** \u2014 It\u2019s **your starting point**.\n\n---\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "778d45bd-873b-48f1-85d2-31e3d7886899",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        420,
        -1720
      ],
      "parameters": {
        "color": 3,
        "width": 340,
        "height": 1900,
        "content": "## \ud83e\udd16 **\ud83d\udcc2 SECTION 2 \u2014 AI Analysis & Scraping**\n\n### \ud83e\udde9 Node 3: **AI Agent: Analyze Content**\n\n**Icon:** \ud83e\udd16\n**What it does:** This is the **brain**. It connects to:\n\n* OpenAI Chat Model \ud83e\udde0 (for text understanding & suggestions)\n* MCP Client \ud83c\udf10 (for real-time scraping)\n* Output Parser \ud83d\uddc2\ufe0f (for formatting results)\n\n**How it works:**\n\n* The AI Agent takes your input (competitor URLs).\n* It tells the MCP Client to scrape those sites for:\n\n  * Blog titles\n  * Publish dates\n  * Traffic stats\n* Then, OpenAI checks what your competitors cover that **you don\u2019t**.\n* The Output Parser converts the AI output into clean, usable JSON with **subject + body** for email.\n\n---\n\n### \ud83d\udcac Sub Node: **OpenAI: Generate Insights**\n\n**Icon:** \ud83d\udcac\n**What it does:** Creates text output:\n\n* Finds strengths\n* Spots gaps in your content\n* Writes suggestions for improvement\n\n---\n\n### \ud83c\udf10 Sub Node: **MCP Scraper: Get Blog Data**\n\n**Icon:** \ud83c\udf10\n**What it does:** Bright Data MCP pulls real traffic numbers, page details, etc., from competitor blogs.\n\n* Uses proxies & anti-bot tech to avoid blocks.\n* Delivers real data you couldn\u2019t get manually.\n\n---\n\n### \ud83d\uddc2\ufe0f Sub Node: **Parser: Format Email JSON**\n\n**Icon:** \ud83d\uddc2\ufe0f\n**What it does:** Takes the AI\u2019s text output and converts it to a clean JSON with **subject** and **body** keys \u2014 perfect for sending in an email.\n\n* Ensures no messy or broken text.\n* Makes the next step (sending) easy and automated.\n\n---\n\n**\ud83d\udd11 SECTION 2 Summary:**\nThis section **does the heavy lifting**:\n\n* Scrapes real competitor data\n* Uses AI to **analyze & recommend**\n* Prepares the output in a format ready for your client\n\nEven a beginner can see: **You get powerful insights with zero manual scraping or writing.**\n\n---\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "1ccefd74-26dc-43f5-94cf-ac2bad6d7b13",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        880,
        -480
      ],
      "parameters": {
        "color": 6,
        "width": 220,
        "height": 660,
        "content": "## \ud83d\udce7 **\ud83d\udcc2 SECTION 3 \u2014 Send Email**\n\n### \ud83d\udce7 Node 4: **Send Email: Client Suggestions**\n\n**Icon:** \ud83d\udce7\n**What it does:** Takes the **structured subject + body** from the previous step and automatically sends a beautiful email to your client via **Gmail**.\n\n* Can send to any recipient\n* Looks professional\n* No need to copy-paste anything\n\n---\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "41243b47-ad5e-4ed3-9fe9-dbea4f8a4304",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1220,
        -480
      ],
      "parameters": {
        "color": 7,
        "width": 380,
        "height": 240,
        "content": "## I\u2019ll receive a tiny commission if you join Bright Data through this link\u2014thanks for fueling more free content!\n\n### https://get.brightdata.com/1tndi4600b25"
      },
      "typeVersion": 1
    },
    {
      "id": "15069b6b-7520-4227-bcdf-b13afca311dc",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1700,
        -1220
      ],
      "parameters": {
        "color": 4,
        "width": 1300,
        "height": 320,
        "content": "=======================================\n            WORKFLOW ASSISTANCE\n=======================================\nFor any questions or support, please contact:\n    Yaron@nofluff.online\n\nExplore more tips and tutorials here:\n   - YouTube: https://www.youtube.com/@YaronBeen/videos\n   - LinkedIn: https://www.linkedin.com/in/yaronbeen/\n=======================================\n"
      },
      "typeVersion": 1
    },
    {
      "id": "74ba41a7-5ff0-4d39-bdad-0f3389ad7c4a",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1700,
        -880
      ],
      "parameters": {
        "color": 4,
        "width": 1289,
        "height": 3578,
        "content": "## \ud83d\ude80 **Workflow: Analyze Competitor Content & Send Email**\n\nThis automation **scrapes competitor blog stats**, **analyzes them with AI**, and **emails clear improvement suggestions** \u2014 all **no-code** using **n8n**, **Bright Data MCP**, and **OpenAI**.\n\n---\n\n## \u2705 **\ud83d\udcc2 SECTION 1 \u2014 Trigger & Input**\n\n### \u26a1 Node 1: **Start: Execute Workflow**\n\n**Icon:** \u26a1\n**What it does:** This node waits for you to **click \u201cExecute Workflow.\u201d** It\u2019s like a start button.\n**Why it\u2019s useful:** It gives you control \u2014 you can run this only when you\u2019re ready to scrape & analyze.\n\n---\n\n### \ud83d\udcdd Node 2: **Input: Competitor Details**\n\n**Icon:** \ud83d\udcdd\n**What it does:** Here you **manually enter** the competitor blog URLs, tags, or keywords you want to analyze.\n\n* Example: `https://moz.com/blog`, `https://ahrefs.com/blog`\n* You can also add extra fields like \u201cTarget Language\u201d or \u201cTopics of Interest.\u201d\n\n**How this helps:**\n\n* You keep the workflow flexible.\n* You can reuse the same flow for any competitor.\n* Non-technical team members can easily update input.\n\n---\n\n**\ud83d\udd11 SECTION 1 Summary:**\nThis section **starts** your workflow and **feeds it the raw data**: **What do you want to scrape?** \u2014 It\u2019s **your starting point**.\n\n---\n\n## \ud83e\udd16 **\ud83d\udcc2 SECTION 2 \u2014 AI Analysis & Scraping**\n\n### \ud83e\udde9 Node 3: **AI Agent: Analyze Content**\n\n**Icon:** \ud83e\udd16\n**What it does:** This is the **brain**. It connects to:\n\n* OpenAI Chat Model \ud83e\udde0 (for text understanding & suggestions)\n* MCP Client \ud83c\udf10 (for real-time scraping)\n* Output Parser \ud83d\uddc2\ufe0f (for formatting results)\n\n**How it works:**\n\n* The AI Agent takes your input (competitor URLs).\n* It tells the MCP Client to scrape those sites for:\n\n  * Blog titles\n  * Publish dates\n  * Traffic stats\n* Then, OpenAI checks what your competitors cover that **you don\u2019t**.\n* The Output Parser converts the AI output into clean, usable JSON with **subject + body** for email.\n\n---\n\n### \ud83d\udcac Sub Node: **OpenAI: Generate Insights**\n\n**Icon:** \ud83d\udcac\n**What it does:** Creates text output:\n\n* Finds strengths\n* Spots gaps in your content\n* Writes suggestions for improvement\n\n---\n\n### \ud83c\udf10 Sub Node: **MCP Scraper: Get Blog Data**\n\n**Icon:** \ud83c\udf10\n**What it does:** Bright Data MCP pulls real traffic numbers, page details, etc., from competitor blogs.\n\n* Uses proxies & anti-bot tech to avoid blocks.\n* Delivers real data you couldn\u2019t get manually.\n\n---\n\n### \ud83d\uddc2\ufe0f Sub Node: **Parser: Format Email JSON**\n\n**Icon:** \ud83d\uddc2\ufe0f\n**What it does:** Takes the AI\u2019s text output and converts it to a clean JSON with **subject** and **body** keys \u2014 perfect for sending in an email.\n\n* Ensures no messy or broken text.\n* Makes the next step (sending) easy and automated.\n\n---\n\n**\ud83d\udd11 SECTION 2 Summary:**\nThis section **does the heavy lifting**:\n\n* Scrapes real competitor data\n* Uses AI to **analyze & recommend**\n* Prepares the output in a format ready for your client\n\nEven a beginner can see: **You get powerful insights with zero manual scraping or writing.**\n\n---\n\n## \ud83d\udce7 **\ud83d\udcc2 SECTION 3 \u2014 Send Email**\n\n### \ud83d\udce7 Node 4: **Send Email: Client Suggestions**\n\n**Icon:** \ud83d\udce7\n**What it does:** Takes the **structured subject + body** from the previous step and automatically sends a beautiful email to your client via **Gmail**.\n\n* Can send to any recipient\n* Looks professional\n* No need to copy-paste anything\n\n---\n\n**\ud83d\udd11 SECTION 3 Summary:**\n**Your final result \u2014 the insights become a real email.**\n\n* Saves time writing reports\n* Ensures your client sees clear recommendations\n* Automates the boring parts\n\n---\n\n## \ud83c\udf1f **Benefits for Beginners**\n\n\u2705 **No coding needed:** You drag, drop, connect.\n\u2705 **Scalable:** Add more competitors anytime.\n\u2705 **Reusable:** Just change the input URLs.\n\u2705 **Professional output:** High-value insights in seconds.\n\u2705 **End-to-end:** From scraping to client inbox in one click.\n\n---\n\n## \ud83d\uddc2\ufe0f **\ud83d\udca1 Final Tip**\n\nAdd emojis \ud83d\udcdd \ud83e\udd16 \ud83d\udcac \ud83c\udf10 \ud83d\uddc2\ufe0f \ud83d\udce7 to your node names in **n8n** \u2014 it makes complex flows clear **at a glance**.\n\n---\n\n## \ud83d\udd17 **Ready to Run!**\n\nYour final workflow:\n\n```\n\u26a1 Start \u2192 \ud83d\udcdd Input \u2192 \ud83e\udd16 AI Agent\n         \u2198\ufe0f \ud83d\udcac OpenAI \u2192 \ud83c\udf10 MCP \u2192 \ud83d\uddc2\ufe0f Parser \u2192 \ud83d\udce7 Send Email\n```\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "f5a5745c-f194-4fc5-91b6-54f2bc248c14",
      "name": "Auto-fixing Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserAutofixing",
      "position": [
        760,
        260
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 1
    },
    {
      "id": "b2e2a2e0-1f96-4219-9f22-973d1cb9fe4f",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        720,
        480
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "c66c1bf2-cd09-4038-8d22-689b3052b66f",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        900,
        480
      ],
      "parameters": {
        "jsonSchemaExample": "{\n  \"email\": {\n    \"subject\": \"Suggestions for Improvement on Your Website\",\n    \"body\": \"Dear [Recipient's Name],\\n\\nI hope this message finds you well. I recently took the time to explore your website, specifically focusing on the Technology tag section on Medium, and I wanted to share some insights and suggestions that could enhance user experience and engagement.\\n\\n**Strengths:**\\n- Clean Layout: The overall design of Medium is uncluttered and visually appealing, making it easy for users to navigate and engage with content.\\n- Engaging Content: The use of compelling narratives alongside diverse topics helps to draw in readers and maintain their interest.\\n\\n**Areas for Improvement:**\\n1. User Interaction: Encouraging user interaction can be beneficial. Incorporating more visible call-to-action buttons for signing up or writing could potentially increase conversions from readers into writers or subscribers.\\n2. Search Functionality: Although the content is well-curated, enhancing the search functionality to enable users to find specific topics or articles more efficiently would improve user experience significantly.\\n3. Performance Optimization: Analyzing page load times and optimizing images and scripts may help retain users who might otherwise leave due to slow loading speeds.\\n4. Mobile Responsiveness: While Medium has a good mobile design, ensuring that all features are seamlessly available on mobile devices can cater to the increasing number of mobile users.\\n5. Personalization Features: Implementing personalized content recommendations based on user behavior could enhance user engagement by providing tailored reading experiences.\\n\\nI believe addressing these areas could significantly elevate the user experience on your platform and increase both reader and writer engagement.\\n\\nThank you for considering these suggestions. I look forward to your thoughts.\\n\\nBest regards,\\n\\n[Your Name]\\n[Your Position]\\n[Your Contact Information]\\n[Your Company Name]\"\n  }\n}\n"
      },
      "typeVersion": 1.2
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "9d213fd6-0607-4d70-89bf-a574a3e933e1",
  "connections": {
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Auto-fixing Output Parser",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Auto-fixing Output Parser",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Auto-fixing Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "\ud83e\udd16 AI Agent: Analyze Content",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "\u26a1 Start: Execute Workflow": {
      "main": [
        [
          {
            "node": "\ud83d\udcdd Input: Competitor Details",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\ud83d\udcac OpenAI: Generate Insights": {
      "ai_languageModel": [
        [
          {
            "node": "\ud83e\udd16 AI Agent: Analyze Content",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "\ud83d\udcdd Input: Competitor Details": {
      "main": [
        [
          {
            "node": "\ud83e\udd16 AI Agent: Analyze Content",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\ud83e\udd16 AI Agent: Analyze Content": {
      "main": [
        [
          {
            "node": "\ud83d\udce7 Send Email: Client Suggestions",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\ud83c\udf10 MCP Scraper: Get Blog Data": {
      "ai_tool": [
        [
          {
            "node": "\ud83e\udd16 AI Agent: Analyze Content",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    }
  }
}