Skip to main content

Check suspicious links via Telegram with GPT-4 analysis of VirusTotal & urlscan.io results

Workflow preview

Workflow preview
100%
Check suspicious links via Telegram with GPT-4 analysis of VirusTotal & urlscan.io results preview
Open on n8n.io

Important notice

This workflow is provided as-is. Please review and test before using in production.

1. Workflow Overview

Workflow Purpose The workflow is designed to scan submitted URLs using urlscan.io and VirusTotal, combine the results into a single structured summary, and send the report via Telegram. I built thi...

Best for

  • SecOps automation workflows
  • Multimodal AI automation workflows
  • intermediate n8n builders looking for reusable templates

Tools used

n8n-nodes-base.stickynote, n8n-nodes-base.httprequest, n8n-nodes-base.telegram, n8n-nodes-base.telegramtrigger, n8n-nodes-base.googlesheets, @n8n/n8n-nodes-langchain.agent, @n8n/n8n-nodes-langchain.lmchatopenai, @n8n/n8n-nodes-langchain.memorybufferwindow

Source and attribution

This workflow is cataloged by N8N Workflows and links back to its original n8n.io source page by Michael Gullo.

Original n8n.io source

1.1 Workflow description

Title
Check suspicious links via Telegram with GPT-4 analysis of VirusTotal & urlscan.io results
Workflow name
Check suspicious links via Telegram with GPT-4 analysis of VirusTotal & urlscan.io results

Workflow Purpose

The workflow is designed to scan submitted URLs using urlscan.io and VirusTotal, combine the results into a single structured summary, and send the report via Telegram.

I built this workflow for people who primarily work from their phones and receive a constant stream of emails throughout the day. If a user gets an email asking them to sign a document, review a report, or take any action where the link looks suspicious, they can simply open the Telegram bot and quickly check whether the URL is safe before clicking it.

Key Components

1. Input / Trigger

  • Accepts URLs that need to be checked.
  • Initiates requests to VirusTotal and urlscan.io.

2. VirusTotal Scan

  • Always returns results if the URL is reachable.
  • Provides reputation, malicious/clean flags, and scan metadata.

3. urlscan.io Scan

  • Returns details on how the URL behaves when loaded (domains, requests, resources, etc.).
  • Sometimes fails due to blocks or restrictions.

4. Error Handling with Code Node

  • Checks whether urlscan.io responded successfully.
  • Ensures the workflow always produces a summary, even if urlscan.io fails.

5. Summary Generation

  • If both scans succeed → summarize combined findings from VirusTotal + urlscan.io.
  • If urlscan.io fails → state clearly in the summary “urlscan.io scan was blocked/failed. Relying on VirusTotal results.”
  • Ensures user still gets a complete security report.

6. Telegram Output

  • Final formatted summary is delivered to a Telegram chat via the bot.
  • Chat ID issue was fixed after the Code Node restructuring.

Outcome

  • The workflow now guarantees a consistent, user-friendly summary regardless of urlscan.io failures.
  • It leverages VirusTotal as the fallback source of truth.
  • The Telegram bot provides real-time alerts with clear indications of scan success/failure.
Prequisites

Telegram

  • In Telegram, start a chat with @BotFather.
  • Send /newbot, pick a name and a unique username.
  • Copy the HTTP API token BotFather returns (store securely)
  • Start a DM with your bot and send any message.
  • Call getUpdates and read the chat.id

urlscan.io

  • Create/log into your urlscan.io account.
  • Go to Settings & API → New API key and generate a key.
  • (Recommended) In Settings & API, set Default Scan Visibility to Unlisted to avoid exposing PII in public scans.
  • Save the key securely (env var or n8n Credentials).
  • Rate limits note: urlscan.io enforces per-minute/hour/day quotas; exceeding them returns HTTP 429. You can view your personal quotas on their dashboard/quotas endpoint

Virustotal

  • Sign up / sign in to VirusTotal Community.
  • Open My API key (Profile menu) and copy your Public API key.
  • Store it securely (env var or n8n Credentials).
  • For a more reliable connection with VirusTotal and improved scanning results, enable the Header section in the node settings. Add a header parameter with a clear name (e.g., x-apikey), and then paste your API key into the Value field.
  • Rate limits (Public API): 4 requests/minute, 500/day; not for commercial workflows. Consider Premium if you’ll exceed this.
How to Customize the Workflow

This workflow is designed to be highly customizable, allowing users to adapt it to their specific needs and use cases. For example, additional malicious website scanners can be integrated through HTTP Request nodes. To make this work, the user simply needs to update the Merge node so that all information flows correctly through the workflow.

In addition, users can connect either Gmail or Outlook nodes to automatically test URLs, binary attachments, and other types of information received via email—helping them evaluate data before opening it.

Users can also customize how they receive reports. For instance, results can be sent through Telegram (as in the default setup), Slack, Microsoft Teams, or even saved to Google Drive or a Google Sheet for recordkeeping and audit purposes.

For consulting and support, or if you have questions, please feel free to connect with me on Linkedin or via email.

1.2 Logical Blocks

This catalog entry is organized from the workflow JSON. The node-level section below shows the executable blocks available for review before importing the template.

2. Block-by-Block Analysis

Block 1 - Sticky Note

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 2 - VirusTotal HTTP Request

Type / Role
n8n-nodes-base.httpRequest - httpRequest
Config choices
Version 4.2

Block 3 - Send a text message

Type / Role
n8n-nodes-base.telegram - telegram
Config choices
Version 1.2

Block 4 - Telegram Trigger

Type / Role
n8n-nodes-base.telegramTrigger - telegramTrigger
Config choices
Version 1.2

Block 5 - Sticky Note1

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 6 - URL Logging

Type / Role
n8n-nodes-base.googleSheets - googleSheets
Config choices
Version 4.7

Block 7 - Malicious URL Summary Agent

Type / Role
@n8n/n8n-nodes-langchain.agent - agent
Config choices
Version 2.2

Block 8 - OpenAI Model

Type / Role
@n8n/n8n-nodes-langchain.lmChatOpenAi - lmChatOpenAi
Config choices
Version 1.2

Block 9 - Malicious URL Memory

Type / Role
@n8n/n8n-nodes-langchain.memoryBufferWindow - memoryBufferWindow
Config choices
Version 1.3

Block 10 - Limit 1 Summary

Type / Role
n8n-nodes-base.limit - limit
Config choices
Version 1

Block 11 - urlscan Perform Scan

Type / Role
n8n-nodes-base.urlScanIo - urlScanIo
Config choices
Version 1

Block 12 - Prepare Summary Data

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 13 - Merge Scans

Type / Role
n8n-nodes-base.merge - merge
Config choices
Version 3.2

3. Summary Table

Workflow Check suspicious links via Telegram with GPT-4 analysis of VirusTotal & urlscan.io results
Complexity intermediate
Nodes 13
Categories SecOps, Multimodal AI
Author Michael Gullo
Published 26 Aug 2025

4. Reproducing the Workflow from Scratch

  1. 1. Download the workflow JSON

    Use the JSON export at /data/workflows/7926/7926.json as the source template for this automation.

  2. 2. Import the template into n8n

    Open n8n, import the downloaded JSON, and review each node before activating the workflow.

  3. 3. Configure credentials and variables

    Replace placeholder credentials, API keys, webhook URLs, account IDs, and environment-specific values with your own settings.

  4. 4. Test with sample data

    Run the workflow manually or in a staging workspace, inspect node output, and confirm downstream systems receive the expected data.

  5. 5. Activate and monitor

    Enable the workflow only after testing, then monitor executions, errors, and rate limits during the first production runs.

5. General Notes & Resources

Review imported nodes carefully before activation. This catalog entry is intended to help you inspect the workflow structure, understand required services, and find related templates faster.

Node names, credentials, schedules, webhook paths, and external service limits may need adjustment for your workspace.

Frequently asked questions

What does Check suspicious links via Telegram with GPT-4 analysis of VirusTotal & urlscan.io results do?

Workflow Purpose The workflow is designed to scan submitted URLs using urlscan.io and VirusTotal, combine the results into a single structured summary, and send the report via Telegram. I built thi...

What do I need before importing this workflow?

Review the workflow JSON, configure any required credentials in n8n, and test the automation in a safe workspace before using it in production.

Can I customize this workflow?

Yes. Use the block-by-block analysis and the downloadable JSON to inspect each node, then adjust credentials, prompts, schedules, filters, or destinations for your SecOps, Multimodal AI use case.