AutomationFlowsSlack & Telegram › Track Software Vulnerability Patents with Scrapegraphai, Matrix, and Intercom

Track Software Vulnerability Patents with Scrapegraphai, Matrix, and Intercom

Byvinci-king-01 @vinci-king-01 on n8n.io

⚠️ COMMUNITY TEMPLATE DISCLAIMER: This is a community-contributed template that uses ScrapeGraphAI (a community node). Please ensure you have the ScrapeGraphAI community node installed in your n8n instance before using this template.

Cron / scheduled trigger★★★★☆ complexity12 nodesN8N Nodes ScrapegraphaiMatrixIntercom
Slack & Telegram Trigger: Cron / scheduled Nodes: 12 Complexity: ★★★★☆ Added:

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

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": "y0Yk7da21T4u9zlp",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "My workflow 23",
  "tags": [],
  "nodes": [
    {
      "id": "48f6bb57-f8c8-4d43-b518-b1d67bc28499",
      "name": "Workflow Overview",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1120,
        -192
      ],
      "parameters": {
        "width": 550,
        "height": 690,
        "content": "## How it works\n\nEvery Monday the Schedule Trigger fires and builds a dynamic search URL that targets the latest software-security patent publications on USPTO / Google Patents websites. ScrapeGraphAI visits that page and returns structured fields such as title, publication number, abstract, filing date and assignee. A Code node analyses each record for keywords that signal potential relevance to software vulnerabilities. The IF node routes the flow: highly relevant patents immediately generate a Matrix message to your engineering war-room, while the rest are silently archived in Intercom for later research. The whole chain runs unattended and can be tweaked by simply changing the keyword list or schedule.\n\n## Setup steps\n\n1. Add your ScrapeGraphAI API key in credentials  \n2. Create a Matrix bot account and room ID credential  \n3. Connect an Intercom workspace via credentials  \n4. Edit the keyword list inside \u201cAnalyze Relevance\u201d Code node  \n5. Adjust the search query in \u201cConstruct Patent Query\u201d if needed  \n6. Activate the workflow and run a manual test"
      },
      "typeVersion": 1
    },
    {
      "id": "0c27bd04-5881-4980-b3a9-2c4d6f5e1ece",
      "name": "Section \u2013 Collection",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -496,
        -32
      ],
      "parameters": {
        "color": 7,
        "width": 364,
        "height": 432,
        "content": "## Data Collection\n\nSchedule Trigger fires weekly (Mondays). Code node constructs Google Patents search URL with query \"software vulnerability\" filtered to last 7 days. ScrapeGraphAI extracts structured fields: title, publication_number, abstract, filing_date, assignee, and URL for each patent listing."
      },
      "typeVersion": 1
    },
    {
      "id": "61761a4c-aa64-4ff1-9dcd-e74d65329722",
      "name": "Section \u2013 Filter",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -96,
        -32
      ],
      "parameters": {
        "color": 7,
        "width": 396,
        "height": 432,
        "content": "## Relevance Filter\n\nCode node searches patent title and abstract text for keywords: 'vulnerability', 'exploit', 'buffer overflow', 'cve', 'cybersecurity'. Each patent receives a boolean 'relevant' flag. IF node routes relevant=true patents to Matrix alert path; relevant=false patents continue to archive path."
      },
      "typeVersion": 1
    },
    {
      "id": "2a1561b2-9717-410b-bff2-08bb78038c0b",
      "name": "Section \u2013 Output",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        336,
        -64
      ],
      "parameters": {
        "color": 7,
        "width": 540,
        "height": 544,
        "content": "## Alert & Archive\n\nRelevant patents (IF true path): Matrix node sends formatted alert message to configured room with patent title, publication number, filing date, assignee, and link. Non-relevant patents (IF false path): Set node maps all patent fields to Intercom contact format, then Intercom node creates a contact record with patent details stored as custom attributes for future research."
      },
      "typeVersion": 1
    },
    {
      "id": "98bed3dc-ecd6-430a-a497-6343d6baa497",
      "name": "Weekly Patent Check",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -480,
        224
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "weeks"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "366a8f0d-8440-4e47-af7e-e381a159aed3",
      "name": "Construct Patent Query",
      "type": "n8n-nodes-base.code",
      "position": [
        -288,
        224
      ],
      "parameters": {
        "jsCode": "// Build a search URL for the last 7 days of software vulnerability patents\nconst query = encodeURIComponent(\"software vulnerability\");\nconst url = `https://patents.google.com/?q=${query}&before=priority:today&after=priority:7d`;\nreturn [{ json: { url } }];"
      },
      "typeVersion": 2
    },
    {
      "id": "5aa5dd0f-d617-4c13-b1b8-981f49d7f131",
      "name": "Scrape Patent Data",
      "type": "n8n-nodes-scrapegraphai.scrapegraphAi",
      "position": [
        -80,
        224
      ],
      "parameters": {
        "userPrompt": "Extract the latest patent listings. Use this schema: {\"title\":\"string\",\"publication_number\":\"string\",\"abstract\":\"string\",\"filing_date\":\"string\",\"assignee\":\"string\",\"url\":\"string\"}",
        "websiteUrl": "={{ $json.url }}"
      },
      "typeVersion": 1
    },
    {
      "id": "5b736a1a-b9b9-4d14-85f3-4d6f82c0e1be",
      "name": "Analyze Relevance",
      "type": "n8n-nodes-base.code",
      "position": [
        128,
        224
      ],
      "parameters": {
        "jsCode": "// Analyse each patent for vulnerability-related keywords\nconst keywords = [\n  'vulnerability',\n  'exploit',\n  'buffer overflow',\n  'cve',\n  'cybersecurity'\n];\nreturn $input.all().map(item => {\n  const data = item.json;\n  const text = `${data.title || ''} ${data.abstract || ''}`.toLowerCase();\n  const relevant = keywords.some(k => text.includes(k.toLowerCase()));\n  return { json: { ...data, relevant } };\n});"
      },
      "typeVersion": 2
    },
    {
      "id": "27ca12a3-3db8-4f4f-ba01-14bf9fbfc93b",
      "name": "Relevant?",
      "type": "n8n-nodes-base.if",
      "position": [
        352,
        224
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "boolean": [
            {
              "value1": "={{ $json.relevant }}"
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "b5d2cfb9-0cdb-4422-851f-f74bfc3796e4",
      "name": "Matrix Alert",
      "type": "n8n-nodes-base.matrix",
      "position": [
        528,
        128
      ],
      "parameters": {
        "operation": "sendMessage"
      },
      "typeVersion": 1
    },
    {
      "id": "feba41f3-5e21-4f98-a276-0624bf680ce7",
      "name": "Map Fields for Storage",
      "type": "n8n-nodes-base.set",
      "position": [
        528,
        320
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "f956bfda-d4ec-4dd7-ab54-6cc636059e54",
      "name": "Save to Intercom",
      "type": "n8n-nodes-base.intercom",
      "position": [
        720,
        320
      ],
      "parameters": {
        "resource": "contact"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "106f4c99-e7b9-45b4-81f6-2c54f6e1c97f",
  "connections": {
    "Relevant?": {
      "main": [
        [
          {
            "node": "Matrix Alert",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Map Fields for Storage",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Analyze Relevance": {
      "main": [
        [
          {
            "node": "Relevant?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Scrape Patent Data": {
      "main": [
        [
          {
            "node": "Analyze Relevance",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Weekly Patent Check": {
      "main": [
        [
          {
            "node": "Construct Patent Query",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Construct Patent Query": {
      "main": [
        [
          {
            "node": "Scrape Patent Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Map Fields for Storage": {
      "main": [
        [
          {
            "node": "Save to Intercom",
            "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

⚠️ COMMUNITY TEMPLATE DISCLAIMER: This is a community-contributed template that uses ScrapeGraphAI (a community node). Please ensure you have the ScrapeGraphAI community node installed in your n8n instance before using this template.

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

More Slack & Telegram workflows → · Browse all categories →

Related workflows

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

Slack & Telegram

Customer support managers and team leads Customer success teams monitoring satisfaction Product managers analyzing user feedback Business analysts measuring support metrics Operations managers optimiz

N8N Nodes Scrapegraphai, Google Sheets, Slack
Slack & Telegram

Empower your property management with a high-efficiency automated support desk. This workflow manages the complete maintenance lifecycle—from initial issue classification and ticket creation to team a

Google Sheets, N8N Nodes Wati
Slack & Telegram

This template helps you create an interactive InfraNodus knowledge graph for your ZenDesk tickets using any search criteria (e.g. after a certain date, specific status, sender, keyword) that will auto

Zendesk, HTTP Request, Telegram +4
Slack & Telegram

This workflow automates the prioritization and escalation of customer support tickets. It acts as an intelligent triage system that identifies high-value customers and potential churn risks in HubSpot

HTTP Request, HubSpot, Jira +1
Slack & Telegram

Analyze_Crowdstrike_Detections__search_for_IOCs_in_VirusTotal__create_a_ticket_in_Jira_and_post_a_message_in_Slack. Uses scheduleTrigger, itemLists, httpRequest, splitInBatches. Scheduled trigger; 18

Item Lists, HTTP Request, Jira +1