This workflow corresponds to n8n.io template #9441 — we link there as the canonical source.
This workflow follows the Agent → Google Sheets 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 →
{
"id": "8ss0FUORDb4l8mOg",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Automate Web Content to Telegram with AI & Watermarking",
"tags": [
{
"id": "lQFVXsZEDnn3k8MC",
"name": "second",
"createdAt": "2025-10-09T17:26:35.146Z",
"updatedAt": "2025-10-09T17:26:35.146Z"
}
],
"nodes": [
{
"id": "311ce37b-55cb-4f17-beb3-ad13eb6335a8",
"name": "No Operation, do nothing",
"type": "n8n-nodes-base.noOp",
"position": [
-1616,
0
],
"parameters": {},
"typeVersion": 1
},
{
"id": "f9c7876a-a7c9-438c-88c0-0318055920ad",
"name": "Schedule Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-2976,
144
],
"parameters": {
"rule": {
"interval": [
{
"field": "hours"
}
]
}
},
"typeVersion": 1.2
},
{
"id": "3825d423-488c-4b2a-b12d-7c38aedca32c",
"name": "Fetch News Page",
"type": "n8n-nodes-base.httpRequest",
"position": [
-2720,
144
],
"parameters": {
"url": "https://www.film.ru/topic/news",
"options": {},
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "User-Agent",
"value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.1 Safari/537.36"
},
{
"name": "Accept-Language",
"value": "ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7"
},
{
"name": "Referer",
"value": "https://www.kinonews.ru/"
},
{
"name": "Accept",
"value": "text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "7bacc6a1-2e97-4b55-b108-f659229bec69",
"name": "Extract Links from HTML",
"type": "n8n-nodes-base.html",
"position": [
-2480,
144
],
"parameters": {
"options": {},
"operation": "extractHtmlContent",
"extractionValues": {
"values": [
{
"key": "link",
"cssSelector": ".redesign_topic_main strong"
},
{
"key": "image",
"cssSelector": ".wrapper_block_stack var"
}
]
}
},
"typeVersion": 1.2
},
{
"id": "28f476b6-0e09-4be8-b7a1-4e7cc23ced16",
"name": "Clean and Trim Links",
"type": "n8n-nodes-base.code",
"position": [
-2240,
144
],
"parameters": {
"jsCode": "const baseUrl = \"https://www.film.ru\";\nconst latest = items[0].json;\n\n// Clearing the link string\nconst cleanLink = latest.link.match(/\\[([^\\]]+)\\]/)[1];\n// Clearing the image line\nconst cleanImage = latest.image.match(/\\[([^\\]]+)\\]/)[1];\n\nreturn [{\n json: {\n image: baseUrl + cleanImage,\n fullUrl: baseUrl + cleanLink\n }\n}];\n"
},
"typeVersion": 2
},
{
"id": "9f0fc8c5-a1b1-4dfa-80c0-187f1fb6995e",
"name": "Check: Should We Parse?",
"type": "n8n-nodes-base.if",
"position": [
-1824,
16
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "8abe7fb7-1c01-4203-aff7-2fa559481e0c",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.url }}",
"rightValue": "={{ $('Clean and Trim Links').item.json.fullUrl }}"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "9f5b393f-499a-4813-bf4b-e857eaac7421",
"name": "Open Article by Link",
"type": "n8n-nodes-base.httpRequest",
"position": [
-1952,
272
],
"parameters": {
"url": "={{ $('Clean and Trim Links').item.json.fullUrl }}",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "6377883a-4426-44ea-a6f8-296cfc032aa9",
"name": "Extract Article Description",
"type": "n8n-nodes-base.html",
"position": [
-1760,
272
],
"parameters": {
"options": {},
"operation": "extractHtmlContent",
"extractionValues": {
"values": [
{
"key": "Title",
"cssSelector": ".wrapper_articles_left h1"
},
{
"key": "Text",
"cssSelector": ".wrapper_articles_text"
}
]
}
},
"typeVersion": 1.2
},
{
"id": "65a7d643-77bb-438c-94a2-88eeec00970b",
"name": "Clean and Trim Text",
"type": "n8n-nodes-base.code",
"position": [
-1584,
272
],
"parameters": {
"jsCode": "// Getting all the input elements\nconst items = $input.all();\n\n// Processing each element\nreturn items.map(item => {\n const text = item.json.Text;\n // Deleting all occurrences of [ ... ]\n const cleanText = text.replace(/\\[[^\\]]*\\]/g, '');\n\n // Returning the object with the cleared text\n return {\n json: {\n cleanText: cleanText,\n },\n };\n});\n"
},
"typeVersion": 2
},
{
"id": "242e9813-ac72-4105-a0cf-5d60ad2f5487",
"name": "Check Links in Google Sheet",
"type": "n8n-nodes-base.googleSheets",
"position": [
-2000,
16
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "list",
"value": 1839495031,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1MhbaPSqLRXsJfeR-2JlvrIyFxvprgkmzIE5bib7-7MQ/edit#gid=1839495031",
"cachedResultName": "film.ru test"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1MhbaPSqLRXsJfeR-2JlvrIyFxvprgkmzIE5bib7-7MQ",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1MhbaPSqLRXsJfeR-2JlvrIyFxvprgkmzIE5bib7-7MQ/edit?usp=drivesdk",
"cachedResultName": "table with links"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.7
},
{
"id": "97add47a-2887-4613-9115-00c3bb5fac0b",
"name": "Update Google Sheet with Clean Links",
"type": "n8n-nodes-base.googleSheets",
"position": [
-1296,
224
],
"parameters": {
"columns": {
"value": {
"url": "={{ $('Clean and Trim Links').item.json.fullUrl }}",
"row_number": 2
},
"schema": [
{
"id": "url",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "url",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "row_number",
"type": "number",
"display": true,
"removed": false,
"readOnly": true,
"required": false,
"displayName": "row_number",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"row_number"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "list",
"value": 1839495031,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1MhbaPSqLRXsJfeR-2JlvrIyFxvprgkmzIE5bib7-7MQ/edit#gid=1839495031",
"cachedResultName": "film.ru test"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1MhbaPSqLRXsJfeR-2JlvrIyFxvprgkmzIE5bib7-7MQ",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1MhbaPSqLRXsJfeR-2JlvrIyFxvprgkmzIE5bib7-7MQ/edit?usp=drivesdk",
"cachedResultName": "table with links"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.7
},
{
"id": "f3113cd1-cd8a-4f10-b57e-edbcb7f90a72",
"name": "Text processing",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-928,
128
],
"parameters": {
"text": "=",
"options": {
"systemMessage": "=You are a news editor for a Telegram channel. Your responsibilities include only adding beautiful formatting to the news text\u2014without changing the actual text. If the original text exceeds 700 characters, condense it in a way that preserves the meaning and ensures the text never exceeds 700 characters.\n\nUse Telegram's built-in formatting options, such as **Bold** and *Italic*, as well as appropriate emojis.\n\nCreate a beautifully formatted version of the news titled:\n\"{{ $('Extract Article Description').item.json.Title }}\"\n\n---\n{{ $('Clean and Trim Text').item.json.cleanText }}\n\n---\nThe response should be a ready-to-publish text."
},
"promptType": "define"
},
"typeVersion": 2.2
},
{
"id": "7243c568-5b34-4aa5-b07e-564266e41672",
"name": "Get Article Image",
"type": "n8n-nodes-base.httpRequest",
"position": [
-576,
128
],
"parameters": {
"url": "={{ $('Clean and Trim Links').item.json.image }}",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "d2636bcf-f0cd-4cc6-9511-44cd62a42980",
"name": "Send Post to Telegram",
"type": "n8n-nodes-base.telegram",
"position": [
-96,
128
],
"parameters": {
"operation": "sendPhoto",
"binaryData": true,
"additionalFields": {
"caption": "={{ $json.output }}",
"parse_mode": "Markdown"
}
},
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "45c51ccf-45ba-4066-ac56-366bd065816e",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
-3392,
0
],
"parameters": {
"width": 364,
"height": 368,
"content": "AI Telegram Web Parser\n\nAutomatically parses a website on schedule, rewrites the article text with AI, adds a watermark to the image, and publishes it to Telegram.\n\nFlow:\nFetch \u2192 Parse \u2192 Rewrite \u2192 Add watermark \u2192 Publish\n\nUse Case:\nKeep your Telegram channel updated with AI-enhanced posts from any website.\n\nRequirements:\nSchedule trigger \u00b7 Google Sheet \u00b7 AI Agent \u00b7 Telegram bot"
},
"typeVersion": 1
},
{
"id": "ff6757f2-b2e9-4f60-9d1f-934d240b26d1",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-3008,
64
],
"parameters": {
"color": 7,
"width": 904,
"height": 252,
"content": "**1\ufe0f. Fetch & Parse Website**\nRuns on schedule, fetches a webpage via HTTP, extracts and cleans article links using HTML and JavaScript."
},
"typeVersion": 1
},
{
"id": "48ba4d61-100c-4483-861c-1282f917e297",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2048,
-80
],
"parameters": {
"color": 7,
"width": 888,
"height": 524,
"content": "**2\ufe0f. Check & Update Links**\nReads the Google Sheet to skip old links.\nIf new \u2192 extracts article text and updates the sheet."
},
"typeVersion": 1
},
{
"id": "f06873f2-07ca-4634-9899-a0e765b0d5b4",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1072,
48
],
"parameters": {
"color": 7,
"width": 440,
"height": 476,
"content": "**3\ufe0f. Process Content with AI**\nUses an AI Agent to rewrite or summarize the article text for clarity and tone."
},
"typeVersion": 1
},
{
"id": "f26c6855-fc5e-4de9-a1c8-8e111481f6a5",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-608,
-112
],
"parameters": {
"color": 7,
"width": 664,
"height": 396,
"content": "**4\ufe0f. Prepare & Publish**\nFetches the article image, adds a watermark, and sends the final post to your Telegram channel."
},
"typeVersion": 1
},
{
"id": "84e25a88-8a49-4a40-8f00-5cab9b687306",
"name": "Add Watermark Text to Image",
"type": "n8n-nodes-base.editImage",
"position": [
-336,
-32
],
"parameters": {
"text": "KINO \u041b\u0415\u0413\u0415\u041d\u0414\u042b NET",
"options": {
"font": "/usr/share/fonts/truetype/msttcorefonts/Verdana_Bold_Italic.ttf"
},
"fontSize": 48,
"fontColor": "#F3ECEC",
"operation": "text",
"positionY": 150,
"dataPropertyName": "=data"
},
"typeVersion": 1
},
{
"id": "bf4e14c6-08cd-4af3-9c11-ba238227074a",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-1024,
416
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini"
},
"options": {}
},
"typeVersion": 1.2
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "b1db8d38-3fa2-4bc9-8aaf-df8f7ce37e89",
"connections": {
"Fetch News Page": {
"main": [
[
{
"node": "Extract Links from HTML",
"type": "main",
"index": 0
}
]
]
},
"Text processing": {
"main": [
[
{
"node": "Get Article Image",
"type": "main",
"index": 0
}
]
]
},
"Schedule Trigger": {
"main": [
[
{
"node": "Fetch News Page",
"type": "main",
"index": 0
}
]
]
},
"Get Article Image": {
"main": [
[
{
"node": "Add Watermark Text to Image",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "Text processing",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Clean and Trim Text": {
"main": [
[
{
"node": "Update Google Sheet with Clean Links",
"type": "main",
"index": 0
}
]
]
},
"Clean and Trim Links": {
"main": [
[
{
"node": "Check Links in Google Sheet",
"type": "main",
"index": 0
}
]
]
},
"Open Article by Link": {
"main": [
[
{
"node": "Extract Article Description",
"type": "main",
"index": 0
}
]
]
},
"Check: Should We Parse?": {
"main": [
[
{
"node": "No Operation, do nothing",
"type": "main",
"index": 0
}
],
[
{
"node": "Open Article by Link",
"type": "main",
"index": 0
}
]
]
},
"Extract Links from HTML": {
"main": [
[
{
"node": "Clean and Trim Links",
"type": "main",
"index": 0
}
]
]
},
"Add Watermark Text to Image": {
"main": [
[
{
"node": "Send Post to Telegram",
"type": "main",
"index": 0
}
]
]
},
"Check Links in Google Sheet": {
"main": [
[
{
"node": "Check: Should We Parse?",
"type": "main",
"index": 0
}
]
]
},
"Extract Article Description": {
"main": [
[
{
"node": "Clean and Trim Text",
"type": "main",
"index": 0
}
]
]
},
"Update Google Sheet with Clean Links": {
"main": [
[
{
"node": "Text processing",
"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.
googleSheetsOAuth2ApitelegramApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Unlike the RSS-based setup, this workflow directly fetches and processes content from any specified webpage.
Source: https://n8n.io/workflows/9441/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
This n8n workflow is designed for content creators, digital marketers, and social media managers who want to automate their entire content creation and publishing process across multiple platforms. It
This workflow is designed for: Content creators and marketers E-commerce and product-based businesses Agencies producing social media visuals and videos Automation builders looking for AI-powered crea
Generate product images with NanoBanana Pro to Veo videos and Blotato - vide 2 ok. Uses httpRequest, editImage, googleDrive, googleSheets. Scheduled trigger; 76 nodes.
YOUTUBE GUIDE 📣 This template generates up to 2,000 AI-based stock images per day for under $4. It includes prompt generation, image creation, metadata enrichment, upload to Google Drive, and error lo
This workflow automates the process of generating, reviewing, and publishing blog posts across multiple platforms, now enhanced with support for RSS Feeds as a content source. It streamlines the manag