{
  "workflow": {
    "id": 6642,
    "name": "Copyright infringement detector with ScrapeGraphAI and automated legal response",
    "views": 335,
    "recentViews": 0,
    "totalViews": 335,
    "createdAt": "2025-07-29T14:01:18.699Z",
    "description": "# Copyright Infringement Detector with ScrapeGraphAI Analysis and Legal Action Automation\n\n## 🎯 Target Audience\n- Intellectual property lawyers and legal teams\n- Brand protection specialists\n- Content creators and publishers\n- Marketing and brand managers\n- Digital rights management teams\n- Copyright enforcement agencies\n- Media companies and publishers\n- E-commerce businesses with proprietary content\n- Software and technology companies\n- Creative agencies protecting client work\n\n## 🚀 Problem Statement\nManual monitoring for copyright infringement is time-consuming, often reactive rather than proactive, and can miss critical violations that damage brand reputation and revenue. This template solves the challenge of automatically detecting copyright violations, analyzing infringement patterns, and providing immediate legal action recommendations using AI-powered web scraping and automated legal workflows.\n\n## 🔧 How it Works\n\nThis workflow automatically scans the web for potential copyright violations using ScrapeGraphAI, analyzes content similarity, determines legal action requirements, and provides automated alerts for immediate response to protect intellectual property rights.\n\n### Key Components\n\n1. **Schedule Trigger** - Runs automatically every 24 hours to monitor for new infringements\n2. **ScrapeGraphAI Web Search** - Uses AI to search for potential copyright violations across the web\n3. **Content Comparer** - Analyzes potential infringements and calculates similarity scores\n4. **Infringement Detector** - Determines legal action required and creates case reports\n5. **Legal Action Trigger** - Routes cases based on severity and urgency\n6. **Brand Protection Alert** - Sends urgent alerts for high-priority violations\n7. **Monitoring Alert** - Tracks medium-risk cases for ongoing monitoring\n\n## 📊 Detection and Analysis Specifications\n\nThe template monitors and analyzes the following infringement types:\n\n| Infringement Type | Detection Method | Risk Level | Action Required |\n|-------------------|------------------|------------|-----------------|\n| **Exact Text Match** | High similarity score (&gt;80%) | High | Immediate cease & desist |\n| **Paraphrased Content** | Moderate similarity (50-80%) | Medium | Monitoring & evidence collection |\n| **Unauthorized Brand Usage** | Brand name detection in content | High | Legal consultation |\n| **Competitor Usage** | Known competitor domain detection | High | DMCA takedown |\n| **Image/Video Theft** | Visual content analysis | High | Immediate action |\n| **Domain Infringement** | Suspicious domain patterns | Medium | Investigation |\n\n## 🛠️ Setup Instructions\n\n**Estimated setup time: 30-35 minutes**\n\n### Prerequisites\n- n8n instance with community nodes enabled\n- ScrapeGraphAI API account and credentials\n- Telegram or other notification service credentials\n- Legal team contact information\n- Copyrighted content database\n\n### Step-by-Step Configuration\n\n#### 1. Install Community Nodes\n```bash\n# Install required community nodes\nnpm install n8n-nodes-scrapegraphai\n```\n\n#### 2. Configure ScrapeGraphAI Credentials\n- Navigate to Credentials in your n8n instance\n- Add new ScrapeGraphAI API credentials\n- Enter your API key from ScrapeGraphAI dashboard\n- Test the connection to ensure it's working\n\n#### 3. Set up Schedule Trigger\n- Configure the monitoring frequency (default: every 24 hours)\n- Adjust timing to match your business hours\n- Set appropriate timezone for your legal team\n\n#### 4. Configure Copyrighted Content Database\n- Update the Content Comparer node with your protected content\n- Add brand names, slogans, and unique phrases\n- Include competitor and suspicious domain lists\n- Set similarity thresholds for different content types\n\n#### 5. Customize Legal Action Rules\n- Update the Infringement Detector node with your legal thresholds\n- Configure action plans for different infringement types\n- Set up case priority levels and response timelines\n- Define evidence collection requirements\n\n#### 6. Set up Alert System\n- Configure Telegram bot or other notification service\n- Set up different alert types for different severity levels\n- Configure legal team contact information\n- Test alert delivery and formatting\n\n#### 7. Test and Validate\n- Run the workflow manually with test search terms\n- Verify all detection steps complete successfully\n- Test alert system with sample infringement data\n- Validate legal action recommendations\n\n## 🔄 Workflow Customization Options\n\n### Modify Detection Parameters\n- Adjust similarity thresholds for different content types\n- Add more sophisticated text analysis algorithms\n- Include image and video content detection\n- Customize brand name detection patterns\n\n### Extend Legal Action Framework\n- Add more detailed legal action plans\n- Implement automated cease and desist generation\n- Include DMCA takedown automation\n- Add court filing preparation workflows\n\n### Customize Alert System\n- Add integration with legal case management systems\n- Implement tiered alert systems (urgent, high, medium, low)\n- Add automated evidence collection and documentation\n- Include reporting and analytics dashboards\n\n### Output Customization\n- Add integration with legal databases\n- Implement automated case tracking\n- Create compliance reporting systems\n- Add trend analysis and pattern recognition\n\n## 📈 Use Cases\n\n- **Brand Protection**: Monitor unauthorized use of brand names and logos\n- **Content Protection**: Detect plagiarism and content theft\n- **Legal Enforcement**: Automate initial legal action processes\n- **Competitive Intelligence**: Monitor competitor content usage\n- **Compliance Monitoring**: Ensure proper attribution and licensing\n- **Evidence Collection**: Automatically document violations for legal proceedings\n\n## 🚨 Important Notes\n\n- Respect website terms of service and robots.txt files\n- Implement appropriate delays between requests to avoid rate limiting\n- Regularly review and update copyrighted content database\n- Monitor API usage to manage costs effectively\n- Keep your credentials secure and rotate them regularly\n- Ensure compliance with local copyright laws and regulations\n- Consult with legal professionals before taking automated legal action\n- Maintain proper documentation for all detected violations\n\n## 🔧 Troubleshooting\n\n**Common Issues:**\n- ScrapeGraphAI connection errors: Verify API key and account status\n- False positive detections: Adjust similarity thresholds and detection parameters\n- Alert delivery failures: Check notification service credentials\n- Legal action errors: Verify legal team contact information\n- Schedule trigger failures: Check timezone and interval settings\n- Content analysis errors: Review the Code node's JavaScript logic\n\n**Support Resources:**\n- ScrapeGraphAI documentation and API reference\n- n8n community forums for workflow assistance\n- Copyright law resources and best practices\n- Legal automation and compliance guidelines\n- Brand protection and intellectual property resources\n",
    "workflow": {
      "id": "VhEwspDqzu7ssFVE",
      "meta": {
        "instanceId": "f4b0efaa33080e7774e0d9285c40c7abcd2c6f7cf1a8b901fa7106170dd4cda3",
        "templateCredsSetupCompleted": true
      },
      "name": "My workflow 2",
      "tags": [
        {
          "id": "DxXGubfBzRKh6L8T",
          "name": "Revenue Optimization",
          "createdAt": "2025-07-25T16:24:30.370Z",
          "updatedAt": "2025-07-25T16:24:30.370Z"
        },
        {
          "id": "IxkcJ2IpYIxivoHV",
          "name": "Content Strategy",
          "createdAt": "2025-07-25T12:57:37.677Z",
          "updatedAt": "2025-07-25T12:57:37.677Z"
        },
        {
          "id": "PAKIJ2Mm9EvRcR3u",
          "name": "Trend Monitoring",
          "createdAt": "2025-07-25T12:57:37.670Z",
          "updatedAt": "2025-07-25T12:57:37.670Z"
        },
        {
          "id": "YtfXmaZk44MYedPO",
          "name": "Dynamic Pricing",
          "createdAt": "2025-07-25T16:24:30.369Z",
          "updatedAt": "2025-07-25T16:24:30.369Z"
        },
        {
          "id": "wJ30mjhtrposO8Qt",
          "name": "Simple RAG",
          "createdAt": "2025-07-28T12:55:14.424Z",
          "updatedAt": "2025-07-28T12:55:14.424Z"
        }
      ],
      "nodes": [
        {
          "id": "d14c0190-4c72-43aa-aad1-fa97bf8c79d4",
          "name": "Schedule Trigger",
          "type": "n8n-nodes-base.scheduleTrigger",
          "position": [
            -464,
            64
          ],
          "parameters": {
            "rule": {
              "interval": [
                {
                  "field": "hours",
                  "hoursInterval": 24
                }
              ]
            }
          },
          "typeVersion": 1.2
        },
        {
          "id": "7027c64b-a3d8-4e72-9cb4-c02a5a563aaf",
          "name": "ScrapeGraphAI Web Search",
          "type": "n8n-nodes-scrapegraphai.scrapegraphAi",
          "position": [
            -64,
            400
          ],
          "parameters": {
            "userPrompt": "Search for potential copyright infringement by extracting any content that matches our copyrighted material. Look for: exact text matches, paraphrased content, unauthorized use of brand names, stolen images or videos, and plagiarized articles. Return results in this schema: { \"url\": \"https://example.com/page\", \"title\": \"Page Title\", \"content_snippet\": \"Matching content found\", \"match_type\": \"exact_match|paraphrase|brand_usage|image_theft\", \"confidence_score\": \"high|medium|low\", \"domain\": \"example.com\", \"date_found\": \"2024-01-01\" }",
            "websiteUrl": "https://www.google.com/search?q=\"your+copyrighted+content+here\"+OR+\"brand+name\"+OR+\"unique+phrase\""
          },
          "typeVersion": 1
        },
        {
          "id": "e526d918-fa3d-40f2-882f-5e2f7d3e40a0",
          "name": "Content Comparer",
          "type": "n8n-nodes-base.code",
          "notes": "Analyzes potential\ninfringements and\ncalculates similarity",
          "position": [
            480,
            336
          ],
          "parameters": {
            "jsCode": "// Get the input data from ScrapeGraphAI\nconst inputData = $input.all()[0].json;\n\n// Extract potential infringements from result\nconst potentialInfringements = inputData.result.copyright_matches || inputData.result.matches || inputData.result.infringements || [];\n\n// Define your copyrighted content for comparison\nconst copyrightedContent = {\n  texts: [\n    \"Your unique copyrighted text here\",\n    \"Another protected phrase or paragraph\",\n    \"Brand slogan or tagline\"\n  ],\n  brandNames: [\"YourBrand\", \"CompanyName\", \"ProductName\"],\n  domains: [\"yourwebsite.com\", \"yourcompany.com\"]\n};\n\n// Function to calculate similarity score\nfunction calculateSimilarity(text1, text2) {\n  const words1 = text1.toLowerCase().split(/\\W+/);\n  const words2 = text2.toLowerCase().split(/\\W+/);\n  const intersection = words1.filter(word => words2.includes(word));\n  return intersection.length / Math.max(words1.length, words2.length);\n}\n\n// Function to analyze potential infringement\nfunction analyzeInfringement(item) {\n  const analysis = {\n    url: item.url,\n    title: item.title,\n    content_snippet: item.content_snippet,\n    domain: item.domain,\n    date_found: new Date().toISOString().split('T')[0],\n    infringement_type: [],\n    similarity_scores: [],\n    risk_level: 'low',\n    requires_action: false\n  };\n\n  // Check for exact text matches\n  copyrightedContent.texts.forEach((protectedText, index) => {\n    const similarity = calculateSimilarity(protectedText, item.content_snippet || '');\n    analysis.similarity_scores.push({\n      text_index: index,\n      score: similarity\n    });\n    \n    if (similarity > 0.8) {\n      analysis.infringement_type.push('high_similarity_text');\n      analysis.risk_level = 'high';\n      analysis.requires_action = true;\n    } else if (similarity > 0.5) {\n      analysis.infringement_type.push('moderate_similarity_text');\n      analysis.risk_level = analysis.risk_level === 'low' ? 'medium' : analysis.risk_level;\n    }\n  });\n\n  // Check for brand name usage\n  const contentLower = (item.content_snippet || '').toLowerCase();\n  const titleLower = (item.title || '').toLowerCase();\n  \n  copyrightedContent.brandNames.forEach(brand => {\n    if (contentLower.includes(brand.toLowerCase()) || titleLower.includes(brand.toLowerCase())) {\n      analysis.infringement_type.push('unauthorized_brand_usage');\n      analysis.risk_level = analysis.risk_level === 'low' ? 'medium' : 'high';\n      if (analysis.risk_level === 'high') {\n        analysis.requires_action = true;\n      }\n    }\n  });\n\n  // Check if it's from competitor or suspicious domain\n  const suspiciousDomains = ['competitor.com', 'copycatsite.com'];\n  if (suspiciousDomains.some(domain => item.url?.includes(domain))) {\n    analysis.infringement_type.push('competitor_usage');\n    analysis.risk_level = 'high';\n    analysis.requires_action = true;\n  }\n\n  // Filter out our own domains\n  if (copyrightedContent.domains.some(domain => item.url?.includes(domain))) {\n    return null; // Skip our own content\n  }\n\n  return analysis;\n}\n\n// Process all potential infringements\nconst analyzedResults = potentialInfringements\n  .map(analyzeInfringement)\n  .filter(result => result !== null)\n  .filter(result => result.requires_action || result.risk_level !== 'low');\n\nconsole.log(`Analyzed ${potentialInfringements.length} potential matches, found ${analyzedResults.length} concerning cases`);\n\n// Return each concerning case as separate execution\nreturn analyzedResults.map(analysis => ({\n  json: {\n    ...analysis,\n    alert_message: `🚨 COPYRIGHT INFRINGEMENT DETECTED\\n\\n📍 URL: ${analysis.url}\\n📄 Title: ${analysis.title}\\n⚠️ Risk Level: ${analysis.risk_level.toUpperCase()}\\n🔍 Issues: ${analysis.infringement_type.join(', ')}\\n📝 Content: ${analysis.content_snippet?.substring(0, 200)}...\\n📅 Detected: ${analysis.date_found}`\n  }\n}));"
          },
          "notesInFlow": true,
          "typeVersion": 2
        },
        {
          "id": "321a94a8-6846-4bb9-93ae-f1eb1aa19bb7",
          "name": "Infringement Detector",
          "type": "n8n-nodes-base.code",
          "notes": "Determines legal\naction required and\ncreates case reports",
          "position": [
            736,
            64
          ],
          "parameters": {
            "jsCode": "// Get analyzed infringement data\nconst infringementData = $input.all()[0].json;\n\n// Define thresholds and rules for legal action\nconst legalActionRules = {\n  immediate_action: {\n    conditions: [\n      'high_similarity_text',\n      'unauthorized_brand_usage',\n      'competitor_usage'\n    ],\n    risk_level: 'high'\n  },\n  monitoring_required: {\n    conditions: [\n      'moderate_similarity_text'\n    ],\n    risk_level: 'medium'\n  }\n};\n\n// Function to determine legal action required\nfunction determineLegalAction(data) {\n  const actionPlan = {\n    immediate_cease_desist: false,\n    dmca_takedown: false,\n    legal_consultation: false,\n    monitoring_only: false,\n    evidence_collection: true, // Always collect evidence\n    priority: 'low'\n  };\n\n  // Check for immediate action conditions\n  const hasImmediateConditions = data.infringement_type.some(type => \n    legalActionRules.immediate_action.conditions.includes(type)\n  );\n\n  if (hasImmediateConditions && data.risk_level === 'high') {\n    actionPlan.immediate_cease_desist = true;\n    actionPlan.dmca_takedown = true;\n    actionPlan.legal_consultation = true;\n    actionPlan.priority = 'high';\n  } else if (data.risk_level === 'medium') {\n    actionPlan.monitoring_only = true;\n    actionPlan.priority = 'medium';\n  }\n\n  return actionPlan;\n}\n\n// Generate legal action plan\nconst legalAction = determineLegalAction(infringementData);\n\n// Create comprehensive report\nconst legalReport = {\n  case_id: `COPY-${Date.now()}`,\n  detected_date: infringementData.date_found,\n  infringement_details: {\n    url: infringementData.url,\n    domain: infringementData.domain,\n    title: infringementData.title,\n    content_snippet: infringementData.content_snippet,\n    infringement_types: infringementData.infringement_type,\n    similarity_scores: infringementData.similarity_scores,\n    risk_assessment: infringementData.risk_level\n  },\n  recommended_actions: legalAction,\n  next_steps: [],\n  estimated_timeline: ''\n};\n\n// Define next steps based on action plan\nif (legalAction.immediate_cease_desist) {\n  legalReport.next_steps.push(\n    '1. Send cease and desist letter within 24 hours',\n    '2. File DMCA takedown notice with hosting provider',\n    '3. Schedule legal consultation within 48 hours',\n    '4. Document all evidence and screenshots',\n    '5. Monitor for compliance'\n  );\n  legalReport.estimated_timeline = '24-72 hours for initial action';\n} else if (legalAction.monitoring_only) {\n  legalReport.next_steps.push(\n    '1. Add to monitoring watchlist',\n    '2. Collect additional evidence over 7 days',\n    '3. Assess if infringement escalates',\n    '4. Prepare preliminary legal documentation'\n  );\n  legalReport.estimated_timeline = '7-14 days monitoring period';\n}\n\nconsole.log(`Legal action determination complete for case ${legalReport.case_id}`);\n\nreturn {\n  json: {\n    ...legalReport,\n    alert_priority: legalAction.priority,\n    requires_immediate_attention: legalAction.immediate_cease_desist\n  }\n};"
          },
          "notesInFlow": true,
          "typeVersion": 2
        },
        {
          "id": "2b5a649b-2f09-4fb1-969e-e142f691ecc9",
          "name": "Legal Action Trigger",
          "type": "n8n-nodes-base.if",
          "position": [
            1152,
            368
          ],
          "parameters": {
            "options": {},
            "conditions": {
              "options": {
                "version": 1,
                "leftValue": "",
                "caseSensitive": true,
                "typeValidation": "strict"
              },
              "combinator": "and",
              "conditions": [
                {
                  "id": "legal-action-condition",
                  "operator": {
                    "type": "boolean",
                    "operation": "equals"
                  },
                  "leftValue": "={{ $json.requires_immediate_attention }}",
                  "rightValue": true
                }
              ]
            }
          },
          "typeVersion": 2
        },
        {
          "id": "7a7cbecd-0a04-4ef5-bf56-3f3dfe17bf94",
          "name": "Brand Protection Alert",
          "type": "n8n-nodes-base.telegram",
          "position": [
            1664,
            48
          ],
          "webhookId": "4c70943a-e94f-47dd-a335-31441ff85d51",
          "parameters": {
            "text": "🚨 **URGENT COPYRIGHT INFRINGEMENT DETECTED** 🚨\n\n📋 **Case ID:** {{ $json.case_id }}\n📅 **Date:** {{ $json.detected_date }}\n⚡ **Priority:** {{ $json.alert_priority.toUpperCase() }}\n\n🌐 **Infringing Site:**\n• URL: {{ $json.infringement_details.url }}\n• Domain: {{ $json.infringement_details.domain }}\n• Title: {{ $json.infringement_details.title }}\n\n⚠️ **Violation Type:**\n{{ $json.infringement_details.infringement_types.join(', ') }}\n\n📊 **Risk Level:** {{ $json.infringement_details.risk_assessment.toUpperCase() }}\n\n📋 **Next Steps:**\n{{ $json.next_steps.join('\\n') }}\n\n⏰ **Timeline:** {{ $json.estimated_timeline }}\n\n🔗 **Evidence:** [View Full Report](#)\n\n━━━━━━━━━━━━━━━━━━━━━━\n⚖️ **Legal Team Action Required**",
            "chatId": "@copyright_alerts",
            "additionalFields": {
              "parse_mode": "Markdown"
            }
          },
          "typeVersion": 1.2
        },
        {
          "id": "20846c4f-d0b9-4f08-8181-d2fbf9a986d0",
          "name": "Monitoring Alert",
          "type": "n8n-nodes-base.telegram",
          "position": [
            1680,
            736
          ],
          "webhookId": "be33b1da-270a-4e6f-ad9f-328679cee420",
          "parameters": {
            "text": "📊 **Copyright Monitoring Report**\n\n📋 **Case ID:** {{ $json.case_id }}\n📅 **Date:** {{ $json.detected_date }}\n📈 **Priority:** {{ $json.alert_priority }}\n\n🌐 **Monitored Site:**\n• URL: {{ $json.infringement_details.url }}\n• Domain: {{ $json.infringement_details.domain }}\n\n📝 **Assessment:** {{ $json.infringement_details.risk_assessment }}\n📋 **Actions:** {{ $json.next_steps.join(', ') }}\n\n━━━━━━━━━━━━━━━━━━━━━━\n👁️ **Monitoring Dashboard**",
            "chatId": "@copyright_monitoring",
            "additionalFields": {
              "parse_mode": "Markdown"
            }
          },
          "typeVersion": 1.2
        },
        {
          "id": "534f51b7-0e8c-4775-9030-fe244e9e4a19",
          "name": "Sticky Note - Trigger",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            1472,
            -384
          ],
          "parameters": {
            "color": 5,
            "width": 575,
            "height": 658,
            "content": "# Step 5: Legal Action Trigger 🎯\n\nRoutes cases based on urgency and required legal response.\n\n## Routing Logic\n- **High Priority**: Immediate legal team alert\n- **Medium Priority**: Monitoring dashboard\n- **Evidence Collection**: Always triggered\n\n## Integration\n- Can trigger email alerts to legal team\n- Creates tickets in legal management system\n- Generates evidence collection tasks"
          },
          "typeVersion": 1
        },
        {
          "id": "9ec87a46-c585-4075-ba15-3b097c3aa9af",
          "name": "Sticky Note - Search",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -256,
            -208
          ],
          "parameters": {
            "color": 5,
            "width": 575,
            "height": 898,
            "content": "# Step 2: ScrapeGraphAI Web Search 🔍\n\nSearches the web for potential copyright infringement using AI.\n\n## What it does\n- Searches for exact matches of copyrighted content\n- Identifies unauthorized brand usage\n- Finds paraphrased or modified content\n- Detects image and video theft\n\n## Configuration\n- Add your copyrighted phrases to search query\n- Include brand names and slogans\n- Use specific search operators for better results"
          },
          "typeVersion": 1
        },
        {
          "id": "00380ed5-caeb-4c9f-9900-a6202f680b38",
          "name": "Sticky Note - Comparer",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            320,
            -208
          ],
          "parameters": {
            "color": 5,
            "width": 575,
            "height": 898,
            "content": "# Step 3: Content Comparer 🔍\n\nAnalyzes found content for similarity and infringement risk.\n\n## Features\n- Calculates text similarity scores\n- Identifies brand name violations\n- Filters out false positives\n- Assigns risk levels (high/medium/low)\n\n## Customization\n- Add your protected content to comparison database\n- Adjust similarity thresholds\n- Define competitor domains to monitor"
          },
          "typeVersion": 1
        },
        {
          "id": "b0f30500-0353-47d7-979b-83bf4e589863",
          "name": "Sticky Note - Detector",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            896,
            -208
          ],
          "parameters": {
            "color": 5,
            "width": 575,
            "height": 898,
            "content": "# Step 4: Infringement Detector ⚖️\n\nDetermines legal action required based on infringement analysis.\n\n## Legal Actions\n- **High Risk**: Immediate cease & desist + DMCA\n- **Medium Risk**: Monitoring and evidence collection\n- **Low Risk**: Watchlist addition\n\n## Output\n- Case ID generation\n- Legal action recommendations\n- Timeline for response\n- Evidence collection plan"
          },
          "typeVersion": 1
        },
        {
          "id": "e5dcf0d2-f199-4c11-9f1b-6d528e25c5c4",
          "name": "Sticky Note - Alerts",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            1472,
            272
          ],
          "parameters": {
            "color": 5,
            "width": 575,
            "height": 690,
            "content": "# Step 6: Brand Protection Alerts 🚨\n\nSends urgent alerts for high-priority copyright violations.\n\n## Alert Types\n- **Urgent**: Immediate legal action required\n- **Monitoring**: Medium risk cases for tracking\n- **Evidence**: Documentation and proof collection\n\n## Channels\n- Telegram for instant notifications\n- Can integrate with Slack, email, SMS\n- Legal team dashboard updates\n- Case management system integration"
          },
          "typeVersion": 1
        }
      ],
      "active": false,
      "pinData": {},
      "settings": {
        "executionOrder": "v1"
      },
      "versionId": "90f4a869-5a6c-4081-ba47-96ea07ff7965",
      "connections": {
        "Content Comparer": {
          "main": [
            [
              {
                "node": "Infringement Detector",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Schedule Trigger": {
          "main": [
            [
              {
                "node": "ScrapeGraphAI Web Search",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Legal Action Trigger": {
          "main": [
            [
              {
                "node": "Brand Protection Alert",
                "type": "main",
                "index": 0
              }
            ],
            [
              {
                "node": "Monitoring Alert",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Infringement Detector": {
          "main": [
            [
              {
                "node": "Legal Action Trigger",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "ScrapeGraphAI Web Search": {
          "main": [
            [
              {
                "node": "Content Comparer",
                "type": "main",
                "index": 0
              }
            ]
          ]
        }
      }
    },
    "lastUpdatedBy": 29,
    "workflowInfo": {
      "nodeCount": 12,
      "nodeTypes": {
        "n8n-nodes-base.if": {
          "count": 1
        },
        "n8n-nodes-base.code": {
          "count": 2
        },
        "n8n-nodes-base.telegram": {
          "count": 2
        },
        "n8n-nodes-base.stickyNote": {
          "count": 5
        },
        "n8n-nodes-base.scheduleTrigger": {
          "count": 1
        },
        "n8n-nodes-scrapegraphai.scrapegraphAi": {
          "count": 1
        }
      }
    },
    "status": "published",
    "user": {
      "name": "vinci-king-01",
      "username": "vinci-king-01",
      "bio": "",
      "verified": true,
      "links": [
        "https://www.linkedin.com/in/marco-vinciguerra-7ba365242/"
      ],
      "avatar": "https://gravatar.com/avatar/d939eeef03a5fcb5df08bee8196f12ccb248c38209487414e419032004f0c014?r=pg&d=retro&size=200"
    },
    "nodes": [
      {
        "id": 20,
        "icon": "fa:map-signs",
        "name": "n8n-nodes-base.if",
        "codex": {
          "data": {
            "alias": [
              "Router",
              "Filter",
              "Condition",
              "Logic",
              "Boolean",
              "Branch"
            ],
            "details": "The IF node can be used to implement binary conditional logic in your workflow. You can set up one-to-many conditions to evaluate each item of data being inputted into the node. That data will either evaluate to TRUE or FALSE and route out of the node accordingly.\n\nThis node has multiple types of conditions: Bool, String, Number, and Date & Time.",
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/",
                  "icon": "🏭",
                  "label": "Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"
                },
                {
                  "url": "https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/",
                  "icon": "☀️",
                  "label": "2021: The Year to Automate the New You with n8n"
                },
                {
                  "url": "https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/",
                  "icon": "🧬",
                  "label": "Why business process automation with n8n can change your daily life"
                },
                {
                  "url": "https://n8n.io/blog/create-a-toxic-language-detector-for-telegram/",
                  "icon": "🤬",
                  "label": "Create a toxic language detector for Telegram in 4 step"
                },
                {
                  "url": "https://n8n.io/blog/no-code-ecommerce-workflow-automations/",
                  "icon": "store",
                  "label": "6 e-commerce workflows to power up your Shopify s"
                },
                {
                  "url": "https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/",
                  "icon": "🔗",
                  "label": "How to build a low-code, self-hosted URL shortener in 3 steps"
                },
                {
                  "url": "https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/",
                  "icon": "⚙️",
                  "label": "Automate your data processing pipeline in 9 steps"
                },
                {
                  "url": "https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/",
                  "icon": "👥",
                  "label": "How to get started with CRM automation (with 3 no-code workflow ideas"
                },
                {
                  "url": "https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/",
                  "icon": "⚡️",
                  "label": "5 tasks you can automate with the new Notion API "
                },
                {
                  "url": "https://n8n.io/blog/automate-google-apps-for-productivity/",
                  "icon": "💡",
                  "label": "15 Google apps you can combine and automate to increase productivity"
                },
                {
                  "url": "https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/",
                  "icon": "🏷️",
                  "label": "How to automatically manage contributions to open-source projects"
                },
                {
                  "url": "https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/",
                  "icon": " 🕸️",
                  "label": "How uProc scraped a multi-page website with a low-code workflow"
                },
                {
                  "url": "https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/",
                  "icon": "🤖",
                  "label": "5 workflow automations for Mattermost that we love at n8n"
                },
                {
                  "url": "https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/",
                  "icon": "🧠",
                  "label": "Why this Product Manager loves workflow automation with n8n"
                },
                {
                  "url": "https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/",
                  "icon": "🙌",
                  "label": "Sending Automated Congratulations with Google Sheets, Twilio, and n8n "
                },
                {
                  "url": "https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/",
                  "icon": "🎡",
                  "label": "How to set up a no-code CI/CD pipeline with GitHub and TravisCI"
                },
                {
                  "url": "https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/",
                  "icon": "🎖",
                  "label": "Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"
                },
                {
                  "url": "https://n8n.io/blog/aws-workflow-automation/",
                  "label": "7 no-code workflow automations for Amazon Web Services"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if/"
                }
              ]
            },
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Flow"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "If",
          "color": "#408000"
        },
        "iconData": {
          "icon": "map-signs",
          "type": "icon"
        },
        "displayName": "If",
        "typeVersion": 2,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 49,
        "icon": "file:telegram.svg",
        "name": "n8n-nodes-base.telegram",
        "codex": {
          "data": {
            "alias": [
              "human",
              "form",
              "wait",
              "hitl",
              "approval"
            ],
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/",
                  "icon": "🧬",
                  "label": "Why business process automation with n8n can change your daily life"
                },
                {
                  "url": "https://n8n.io/blog/create-a-toxic-language-detector-for-telegram/",
                  "icon": "🤬",
                  "label": "Create a toxic language detector for Telegram in 4 step"
                },
                {
                  "url": "https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/",
                  "icon": "🧾",
                  "label": "Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"
                },
                {
                  "url": "https://n8n.io/blog/no-code-ecommerce-workflow-automations/",
                  "icon": "store",
                  "label": "6 e-commerce workflows to power up your Shopify s"
                },
                {
                  "url": "https://n8n.io/blog/world-poetry-day-workflow/",
                  "icon": "📜",
                  "label": "Celebrating World Poetry Day with a daily poem in Telegram"
                },
                {
                  "url": "https://n8n.io/blog/using-automation-to-boost-productivity-in-the-workplace/",
                  "icon": "💪",
                  "label": "Using Automation to Boost Productivity in the Workplace"
                },
                {
                  "url": "https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/",
                  "icon": "🎡",
                  "label": "How to set up a no-code CI/CD pipeline with GitHub and TravisCI"
                },
                {
                  "url": "https://n8n.io/blog/creating-scheduled-text-affirmations-with-n8n/",
                  "icon": "🤟",
                  "label": "Creating scheduled text affirmations with n8n"
                },
                {
                  "url": "https://n8n.io/blog/creating-telegram-bots-with-n8n-a-no-code-platform/",
                  "icon": "💬",
                  "label": "Creating Telegram Bots with n8n, a No-Code Platform"
                },
                {
                  "url": "https://n8n.io/blog/aws-workflow-automation/",
                  "label": "7 no-code workflow automations for Amazon Web Services"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.telegram/"
                }
              ],
              "credentialDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/credentials/telegram/"
                }
              ]
            },
            "categories": [
              "Communication",
              "HITL"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "HITL": [
                "Human in the Loop"
              ]
            }
          }
        },
        "group": "[\"output\"]",
        "defaults": {
          "name": "Telegram"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgNjYgNjYiPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9ImEiIG92ZXJmbG93PSJ2aXNpYmxlIj48ZyBmaWxsLXJ1bGU9Im5vbnplcm8iIHN0cm9rZT0ibm9uZSI+PHBhdGggZmlsbD0iIzM3YWVlMiIgZD0iTTAgMzJjMCAxNy42NzMgMTQuMzI3IDMyIDMyIDMyczMyLTE0LjMyNyAzMi0zMlM0OS42NzMgMCAzMiAwIDAgMTQuMzI3IDAgMzIiLz48cGF0aCBmaWxsPSIjYzhkYWVhIiBkPSJtMjEuNjYxIDM0LjMzOCAzLjc5NyAxMC41MDhzLjQ3NS45ODMuOTgzLjk4MyA4LjA2OC03Ljg2NCA4LjA2OC03Ljg2NGw4LjQwNy0xNi4yMzctMjEuMTE5IDkuODk4eiIvPjxwYXRoIGZpbGw9IiNhOWM2ZDgiIGQ9Im0yNi42OTUgMzcuMDM0LS43MjkgNy43NDZzLS4zMDUgMi4zNzMgMi4wNjggMGw0LjY0NC00LjIwMyIvPjxwYXRoIGQ9Im0yMS43MyAzNC43MTItNy44MDktMi41NDVzLS45MzItLjM3OC0uNjMzLTEuMjM3Yy4wNjItLjE3Ny4xODYtLjMyOC41NTktLjU4OCAxLjczMS0xLjIwNiAzMi4wMjgtMTIuMDk2IDMyLjAyOC0xMi4wOTZzLjg1Ni0uMjg4IDEuMzYxLS4wOTdjLjIzMS4wODguMzc4LjE4Ny41MDMuNTQ4LjA0NS4xMzIuMDcxLjQxMS4wNjguNjg5LS4wMDMuMjAxLS4wMjcuMzg2LS4wNDUuNjc4LS4xODQgMi45NzgtNS43MDYgMjUuMTk4LTUuNzA2IDI1LjE5OHMtLjMzIDEuMy0xLjUxNCAxLjM0NWMtLjQzMi4wMTYtLjk1Ni0uMDcxLTEuNTgyLS42MS0yLjMyMy0xLjk5OC0xMC4zNTItNy4zOTQtMTIuMTI2LTguNThhLjM0LjM0IDAgMCAxLS4xNDYtLjIzOWMtLjAyNS0uMTI1LjEwOC0uMjguMTA4LS4yOHMxMy45OC0xMi40MjcgMTQuMzUyLTEzLjczMWMuMDI5LS4xMDEtLjA3OS0uMTUxLS4yMjYtLjEwNy0uOTI5LjM0Mi0xNy4wMjUgMTAuNTA2LTE4LjgwMSAxMS42MjktLjEwNC4wNjYtLjM5NS4wMjMtLjM5NS4wMjMiLz48L2c+PC9zeW1ib2w+PC9zdmc+"
        },
        "displayName": "Telegram",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 6,
            "name": "Communication"
          },
          {
            "id": 28,
            "name": "HITL"
          }
        ]
      },
      {
        "id": 565,
        "icon": "fa:sticky-note",
        "name": "n8n-nodes-base.stickyNote",
        "codex": {
          "data": {
            "alias": [
              "Comments",
              "Notes",
              "Sticky"
            ],
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Helpers"
              ]
            }
          }
        },
        "group": "[\"input\"]",
        "defaults": {
          "name": "Sticky Note",
          "color": "#FFD233"
        },
        "iconData": {
          "icon": "sticky-note",
          "type": "icon"
        },
        "displayName": "Sticky Note",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 834,
        "icon": "file:code.svg",
        "name": "n8n-nodes-base.code",
        "codex": {
          "data": {
            "alias": [
              "cpde",
              "Javascript",
              "JS",
              "Python",
              "Script",
              "Custom Code",
              "Function"
            ],
            "details": "The Code node allows you to execute JavaScript in your workflow.",
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/"
                }
              ]
            },
            "categories": [
              "Development",
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Helpers",
                "Data Transformation"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "Code"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTcxXzQ0MSkiPgo8cGF0aCBkPSJNMTcwLjI4MyA0OEgxOTYuNUMyMDMuMTI3IDQ4IDIwOC41IDQyLjYyNzQgMjA4LjUgMzZWMTJDMjA4LjUgNS4zNzI1OCAyMDMuMTI3IDAgMTk2LjUgMEgxNzAuMjgzQzEyNi4xIDAgOTAuMjgzIDM1LjgxNzIgOTAuMjgzIDgwVjE3NkM5MC4yODMgMjA2LjkyOCA2NS4yMTA5IDIzMiAzNC4yODMgMjMySDIzQzE2LjM3MjYgMjMyIDExIDIzNy4zNzIgMTEgMjQ0VjI2OEMxMSAyNzQuNjI3IDE2LjM3MjQgMjgwIDIyLjk5OTYgMjgwTDM0LjI4MyAyODBDNjUuMjEwOSAyODAgOTAuMjgzIDMwNS4wNzIgOTAuMjgzIDMzNlY0NDBDOTAuMjgzIDQ3OS43NjQgMTIyLjUxOCA1MTIgMTYyLjI4MyA1MTJIMTk2LjVDMjAzLjEyNyA1MTIgMjA4LjUgNTA2LjYyNyAyMDguNSA1MDBWNDc2QzIwOC41IDQ2OS4zNzMgMjAzLjEyNyA0NjQgMTk2LjUgNDY0SDE2Mi4yODNDMTQ5LjAyOCA0NjQgMTM4LjI4MyA0NTMuMjU1IDEzOC4yODMgNDQwVjMzNkMxMzguMjgzIDMwOS4wMjIgMTI4LjAxMSAyODQuNDQzIDExMS4xNjQgMjY1Ljk2MUMxMDYuMTA5IDI2MC40MTYgMTA2LjEwOSAyNTEuNTg0IDExMS4xNjQgMjQ2LjAzOUMxMjguMDExIDIyNy41NTcgMTM4LjI4MyAyMDIuOTc4IDEzOC4yODMgMTc2VjgwQzEzOC4yODMgNjIuMzI2OSAxNTIuNjEgNDggMTcwLjI4MyA0OFoiIGZpbGw9IiNGRjk5MjIiLz4KPHBhdGggZD0iTTMwNSAzNkMzMDUgNDIuNjI3NCAzMTAuMzczIDQ4IDMxNyA0OEgzNDIuOTc5QzM2MC42NTIgNDggMzc0Ljk3OCA2Mi4zMjY5IDM3NC45NzggODBWMTc2QzM3NC45NzggMjAyLjk3OCAzODUuMjUxIDIyNy41NTcgNDAyLjA5OCAyNDYuMDM5QzQwNy4xNTMgMjUxLjU4NCA0MDcuMTUzIDI2MC40MTYgNDAyLjA5OCAyNjUuOTYxQzM4NS4yNTEgMjg0LjQ0MyAzNzQuOTc4IDMwOS4wMjIgMzc0Ljk3OCAzMzZWNDMyQzM3NC45NzggNDQ5LjY3MyAzNjAuNjUyIDQ2NCAzNDIuOTc5IDQ2NEgzMTdDMzEwLjM3MyA0NjQgMzA1IDQ2OS4zNzMgMzA1IDQ3NlY1MDBDMzA1IDUwNi42MjcgMzEwLjM3MyA1MTIgMzE3IDUxMkgzNDIuOTc5QzM4Ny4xNjEgNTEyIDQyMi45NzggNDc2LjE4MyA0MjIuOTc4IDQzMlYzMzZDNDIyLjk3OCAzMDUuMDcyIDQ0OC4wNTEgMjgwIDQ3OC45NzkgMjgwSDQ5MEM0OTYuNjI3IDI4MCA1MDIgMjc0LjYyOCA1MDIgMjY4VjI0NEM1MDIgMjM3LjM3MyA0OTYuNjI4IDIzMiA0OTAgMjMyTDQ3OC45NzkgMjMyQzQ0OC4wNTEgMjMyIDQyMi45NzggMjA2LjkyOCA0MjIuOTc4IDE3NlY4MEM0MjIuOTc4IDM1LjgxNzIgMzg3LjE2MSAwIDM0Mi45NzkgMEgzMTdDMzEwLjM3MyAwIDMwNSA1LjM3MjU4IDMwNSAxMlYzNloiIGZpbGw9IiNGRjk5MjIiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTcxXzQ0MSI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="
        },
        "displayName": "Code",
        "typeVersion": 2,
        "nodeCategories": [
          {
            "id": 5,
            "name": "Development"
          },
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 839,
        "icon": "fa:clock",
        "name": "n8n-nodes-base.scheduleTrigger",
        "codex": {
          "data": {
            "alias": [
              "Time",
              "Scheduler",
              "Polling",
              "Cron",
              "Interval"
            ],
            "resources": {
              "generic": [],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.scheduletrigger/"
                }
              ]
            },
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0"
          }
        },
        "group": "[\"trigger\",\"schedule\"]",
        "defaults": {
          "name": "Schedule Trigger",
          "color": "#31C49F"
        },
        "iconData": {
          "icon": "clock",
          "type": "icon"
        },
        "displayName": "Schedule Trigger",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      }
    ],
    "categories": [
      {
        "id": 45,
        "name": "Miscellaneous"
      },
      {
        "id": 49,
        "name": "AI Summarization"
      }
    ],
    "image": []
  }
}