This workflow corresponds to n8n.io template #16968 — we link there as the canonical source.
This workflow follows the Chainllm → 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": "Oq0zNXswnWRLJwYA",
"meta": {
"builderVariant": "mcp",
"aiBuilderAssisted": true
},
"name": "Monitor new n8n templates and send AI improvement tips to Telegram and Google Sheets",
"tags": [],
"nodes": [
{
"id": "857593cc-5e0a-4380-9f79-2f5fec1fc242",
"name": "Run daily at 9 AM",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
48,
352
],
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 9
}
]
}
},
"typeVersion": 1.3
},
{
"id": "5efa1180-429a-4d2e-980f-eecc423eba3c",
"name": "Configuration",
"type": "n8n-nodes-base.set",
"position": [
288,
352
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "a1",
"name": "template_category",
"type": "string",
"value": "AI"
},
{
"id": "a2",
"name": "templates_to_check",
"type": "number",
"value": 10
},
{
"id": "a3",
"name": "report_even_if_none",
"type": "boolean",
"value": false
},
{
"id": "a4",
"name": "telegram_chat_id",
"type": "string",
"value": "YOUR_TELEGRAM_CHAT_ID"
},
{
"id": "a5",
"name": "ai_model",
"type": "string",
"value": "gpt-4.1-mini"
},
{
"id": "a6",
"name": "output_language",
"type": "string",
"value": "English"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "84f0608f-921d-4357-8fac-49e32081b979",
"name": "Fetch template list from n8n",
"type": "n8n-nodes-base.httpRequest",
"position": [
560,
352
],
"parameters": {
"url": "=https://api.n8n.io/templates/search?category={{ $('Configuration').item.json.template_category }}&rows={{ $('Configuration').item.json.templates_to_check }}",
"options": {
"timeout": 30000
}
},
"typeVersion": 4.4
},
{
"id": "8f5c96cf-36a0-4e24-bda4-fad260ac32a6",
"name": "Extract template metadata",
"type": "n8n-nodes-base.code",
"position": [
784,
352
],
"parameters": {
"jsCode": "const cfg = $('Configuration').first().json;\nconst body = $input.first().json;\nconst list = Array.isArray(body.workflows) ? body.workflows : [];\nconst limit = Number(cfg.templates_to_check) || 10;\nreturn list.slice(0, limit).map(t => {\n const nodes = Array.isArray(t.nodes) ? t.nodes.map(n => n.displayName || n.name).filter(Boolean) : [];\n const desc = (t.description || '').trim();\n return { json: {\n id: String(t.id),\n name: t.name || 'Untitled',\n description: desc.slice(0, 1500),\n how_it_works: desc.replace(/\\s+/g, ' ').slice(0, 300),\n author: (t.user && t.user.username) ? t.user.username : 'Unknown',\n published_date: t.createdAt || '',\n url: 'https://n8n.io/workflows/' + t.id + '/',\n nodes_used: nodes.join(', '),\n category: cfg.template_category\n } };\n});"
},
"typeVersion": 2
},
{
"id": "e6e07d9c-0208-49ed-82e8-e449ed1e78ed",
"name": "Detect new templates",
"type": "n8n-nodes-base.code",
"position": [
1008,
352
],
"parameters": {
"jsCode": "const store = $getWorkflowStaticData('global');\nif (!store.seenTemplateIds) store.seenTemplateIds = [];\nconst incoming = $input.all().map(i => i.json);\nconst seen = new Set(store.seenTemplateIds);\nconst newTemplates = incoming.filter(t => !seen.has(t.id));\nfor (const t of incoming) seen.add(t.id);\nstore.seenTemplateIds = Array.from(seen).slice(-1000);\nreturn [{ json: { new_count: newTemplates.length, total_fetched: incoming.length, new_templates: newTemplates } }];"
},
"typeVersion": 2
},
{
"id": "ccc5877d-ac12-4fd4-9e30-05d93aaef172",
"name": "New templates found?",
"type": "n8n-nodes-base.if",
"position": [
1248,
416
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "c1",
"operator": {
"type": "number",
"operation": "gt"
},
"leftValue": "={{ $json.new_count }}",
"rightValue": 0
}
]
}
},
"typeVersion": 2.3
},
{
"id": "8b741fa0-9ed7-4826-a2f4-322c3eb3c0f0",
"name": "Split out new templates",
"type": "n8n-nodes-base.splitOut",
"position": [
1504,
272
],
"parameters": {
"options": {},
"fieldToSplitOut": "new_templates"
},
"typeVersion": 1
},
{
"id": "f6e18215-1a33-4612-b088-893736dc0f54",
"name": "Analyze template with AI",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
1680,
272
],
"parameters": {
"text": "=Template name: {{ $json.name }}\nAuthor: {{ $json.author }}\nNodes used: {{ $json.nodes_used }}\n\nDescription:\n{{ $json.description }}",
"batching": {},
"messages": {
"messageValues": [
{
"message": "=You are an experienced n8n automation consultant. Analyze the n8n workflow template provided by the user and list concrete improvements that would make it more optimized, reliable and valuable for businesses. Where relevant, cover: error handling and retries, scalability and rate limits, security and credential management, input and data validation, logging and monitoring, useful business integrations, and cost or performance. Write 4 to 6 short bullet points. Start every bullet with \"- \". Be specific to this template and avoid generic filler. Respond only in {{ $('Configuration').item.json.output_language }}."
}
]
},
"promptType": "define"
},
"typeVersion": 1.9
},
{
"id": "2920582c-e119-47b5-bc70-1e14db0e0b6a",
"name": "OpenAI chat model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
1728,
400
],
"parameters": {
"model": {
"__rl": true,
"mode": "id",
"value": "={{ $('Configuration').first().json.ai_model }}"
},
"options": {
"temperature": 0.4
},
"builtInTools": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.3
},
{
"id": "37a775c0-753d-4c5b-b144-daed7bb30c94",
"name": "Build sheet row",
"type": "n8n-nodes-base.set",
"position": [
1984,
272
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "r1",
"name": "detected_at",
"type": "string",
"value": "={{ $now.toFormat('yyyy-MM-dd HH:mm') }}"
},
{
"id": "r2",
"name": "template_id",
"type": "string",
"value": "={{ $('Split out new templates').item.json.id }}"
},
{
"id": "r3",
"name": "template_name",
"type": "string",
"value": "={{ $('Split out new templates').item.json.name }}"
},
{
"id": "r4",
"name": "category",
"type": "string",
"value": "={{ $('Split out new templates').item.json.category }}"
},
{
"id": "r5",
"name": "author",
"type": "string",
"value": "={{ $('Split out new templates').item.json.author }}"
},
{
"id": "r6",
"name": "published_date",
"type": "string",
"value": "={{ $('Split out new templates').item.json.published_date }}"
},
{
"id": "r7",
"name": "template_url",
"type": "string",
"value": "={{ $('Split out new templates').item.json.url }}"
},
{
"id": "r8",
"name": "description",
"type": "string",
"value": "={{ $('Split out new templates').item.json.description }}"
},
{
"id": "r9",
"name": "how_it_works",
"type": "string",
"value": "={{ $('Split out new templates').item.json.how_it_works }}"
},
{
"id": "r10",
"name": "ai_improvements",
"type": "string",
"value": "={{ $json.text }}"
},
{
"id": "r11",
"name": "nodes_used",
"type": "string",
"value": "={{ $('Split out new templates').item.json.nodes_used }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "71907f77-50c9-4a59-9dbf-656486bbb95c",
"name": "Append row to Google Sheets",
"type": "n8n-nodes-base.googleSheets",
"position": [
2272,
96
],
"parameters": {
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "",
"cachedResultName": "my_list"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": ""
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.7
},
{
"id": "731f6eba-7cd6-4e62-b7b4-2644bea3d53c",
"name": "Report all-clear?",
"type": "n8n-nodes-base.if",
"position": [
1520,
784
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "c2",
"operator": {
"type": "boolean",
"operation": "equals"
},
"leftValue": "={{ $('Configuration').item.json.report_even_if_none }}",
"rightValue": true
}
]
}
},
"typeVersion": 2.3
},
{
"id": "a7e430f1-5bfe-4e52-8d70-9d1ed506f046",
"name": "Send all-clear to Telegram",
"type": "n8n-nodes-base.telegram",
"position": [
1728,
768
],
"parameters": {
"text": "=No new \"{{ $('Configuration').item.json.template_category }}\" templates on n8n.io since the last check ({{ $('Detect new templates').item.json.total_fetched }} checked).",
"chatId": "={{ $('Configuration').item.json.telegram_chat_id }}",
"additionalFields": {
"appendAttribution": false,
"disable_web_page_preview": true
}
},
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "b94f5e9d-f110-477c-849a-49245a909c4e",
"name": "Build Telegram digest",
"type": "n8n-nodes-base.code",
"position": [
2192,
304
],
"parameters": {
"jsCode": "const rows = $input.all().map(i => i.json);\nconst cfg = $('Configuration').first().json;\nconst cat = cfg.template_category;\nconst plural = rows.length > 1 ? 's' : '';\nconst header = '\ud83c\udd95 ' + rows.length + ' new \"' + cat + '\" template' + plural + ' on n8n.io';\nconst blocks = rows.map(r => {\n let imp = (r.ai_improvements || '').trim();\n if (imp.length > 600) imp = imp.slice(0, 600) + '\u2026';\n return '\u2022 ' + r.template_name + '\\nby ' + r.author + ' | ' + r.template_url + '\\n\\nImprovements for businesses:\\n' + imp;\n});\nlet message = header + '\\n\\n' + blocks.join('\\n\\n-----\\n\\n');\nif (message.length > 3900) message = message.slice(0, 3900) + '\\n\\n\u2026 (truncated)';\nreturn [{ json: { message } }];"
},
"typeVersion": 2
},
{
"id": "45d494b4-ba40-48c3-bdb5-1a7b97b7ecb2",
"name": "Send digest to Telegram",
"type": "n8n-nodes-base.telegram",
"position": [
2400,
304
],
"parameters": {
"text": "={{ $json.message }}",
"chatId": "={{ $('Configuration').item.json.telegram_chat_id }}",
"additionalFields": {
"appendAttribution": false,
"disable_web_page_preview": true
}
},
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "38248f20-edac-41f9-af45-3b2e32087427",
"name": "Sticky Note 553b9826",
"type": "n8n-nodes-base.stickyNote",
"position": [
-688,
-640
],
"parameters": {
"width": 660,
"height": 1988,
"content": "# Monitor new n8n templates and send AI improvement tips to Telegram and Google Sheets\n\n# \ud83d\udce5 [Open full documentation on Notion](https://automatisation.notion.site/Monitor-new-n8n-templates-and-send-AI-improvement-tips-to-Telegram-and-Google-Sheets-3983d6550fd981dc8c7fd6c9de879375)\n\nEvery day at 9 AM this workflow checks the public n8n Templates API for the latest templates in a chosen category, remembers which template IDs it has already seen, and for every new one it asks an AI model for business improvement ideas. New templates and their AI tips are logged to Google Sheets and posted to Telegram.\n\n## How it works\n1. Runs on a schedule every day at 9 AM.\n2. The Configuration node holds every adjustable value (category, number of templates, language, chat ID).\n3. Calls the n8n Templates search API for the latest templates in the configured category.\n4. Extracts metadata (id, name, description, author, date, url, nodes).\n5. Compares IDs against previously seen IDs stored in workflow static data and updates the cache.\n6. For each new template, an AI model returns a bullet list of business focused improvements.\n7. Each new template plus its AI tips is appended to Google Sheets and posted to Telegram as a digest.\n8. If nothing is new and reporting is enabled, an optional all-clear message is sent to Telegram.\n\n## Setup\n1. Open Configuration and set template_category, templates_to_check, output_language and telegram_chat_id.\n2. On the Telegram nodes, select your Telegram credential and confirm the bot.\n3. On the OpenAI chat model node, select your OpenAI credential.\n4. On the Append row to Google Sheets node, pick your spreadsheet and sheet tab. Headers must match the row fields.\n5. Activate the workflow. The first run treats all fetched templates as new.\n\n## Requirements\n- n8n Schedule Trigger, HTTP Request, Code, Split Out, Set and IF nodes (all core).\n- A Telegram bot credential and your chat ID.\n- An OpenAI credential for the AI analysis.\n- A Google Sheets credential and a spreadsheet with the expected header row.\n\n## Customization\n- Change template_category to any n8n category name (AI, Marketing, Sales, DevOps, etc.).\n- Adjust templates_to_check to scan more or fewer templates per run.\n- Switch output_language (for example English or French) for the AI improvement tips.\n- Edit the schedule to run more or less often, or enable report_even_if_none for daily all-clear pings.\n\nNeed help customizing?\nContact me for consulting and support : [Linkedin](https://www.linkedin.com/in/doctor-firass/)\n\n# MY NEW YOUTUBE CHANNEL\n\ud83d\udc49 [Subscribe to my new YouTube channel](https://www.youtube.com/@DrFiras_AI). Here I'll share videos and Shorts with practical tutorials and FREE templates for n8n.\n\n[](https://www.youtube.com/@DrFiras_AI)"
},
"typeVersion": 1
},
{
"id": "3615ba87-cb10-482a-9ddf-b7d72cf88287",
"name": "Sticky Note f72dc1da",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
208
],
"parameters": {
"color": 7,
"width": 500,
"height": 552,
"content": "## 1. Schedule and configuration\n\nRuns daily at 9 AM, then loads every adjustable value from a single Configuration node so a beginner only edits one place."
},
"typeVersion": 1
},
{
"id": "058f0f0c-8f80-4ce4-83bc-41ad8cd18f0b",
"name": "Sticky Note 931b9a27",
"type": "n8n-nodes-base.stickyNote",
"position": [
512,
208
],
"parameters": {
"color": 7,
"width": 692,
"height": 552,
"content": "## 2. Fetch and detect new templates\n\nCalls the n8n Templates API, extracts metadata, and uses workflow static data as a cache to keep only templates never seen before."
},
"typeVersion": 1
},
{
"id": "8d213210-8989-4cf0-9897-5732d67da82c",
"name": "Sticky Note b1e2cf72",
"type": "n8n-nodes-base.stickyNote",
"position": [
1216,
208
],
"parameters": {
"color": 7,
"width": 232,
"height": 552,
"content": "## 3. New templates?\n\nSplits the run depending on whether any new template was found."
},
"typeVersion": 1
},
{
"id": "f5495478-1e79-4c0a-9c56-5472e05a69b1",
"name": "Sticky Note 478b2a3c",
"type": "n8n-nodes-base.stickyNote",
"position": [
1456,
48
],
"parameters": {
"color": 4,
"width": 696,
"height": 470,
"content": "## 4. Analyze each new template with AI\n\nSplits the list into single items and asks the OpenAI model for business focused improvement ideas for each template."
},
"typeVersion": 1
},
{
"id": "fd33978b-4c4f-40e0-8d74-36e0a664d77a",
"name": "Sticky Note 3342c817",
"type": "n8n-nodes-base.stickyNote",
"position": [
2160,
-48
],
"parameters": {
"color": 3,
"width": 480,
"height": 564,
"content": "## 5. Save and notify\n\nAppends one row per template to Google Sheets and posts a single digest of all new templates and AI tips to Telegram."
},
"typeVersion": 1
},
{
"id": "123d4712-1977-4d3e-84dd-6e828e4041a5",
"name": "Sticky Note 483b4b31",
"type": "n8n-nodes-base.stickyNote",
"position": [
1456,
528
],
"parameters": {
"color": 7,
"width": 476,
"height": 460,
"content": "## Optional all-clear\n\nWhen nothing is new and report_even_if_none is true, sends a short all-clear message to Telegram."
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"binaryMode": "separate",
"availableInMCP": true,
"executionOrder": "v1"
},
"versionId": "92ae2a5c-a246-40ff-9de3-854207a476f8",
"nodeGroups": [],
"connections": {
"Configuration": {
"main": [
[
{
"node": "Fetch template list from n8n",
"type": "main",
"index": 0
}
]
]
},
"Build sheet row": {
"main": [
[
{
"node": "Append row to Google Sheets",
"type": "main",
"index": 0
},
{
"node": "Build Telegram digest",
"type": "main",
"index": 0
}
]
]
},
"OpenAI chat model": {
"ai_languageModel": [
[
{
"node": "Analyze template with AI",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Report all-clear?": {
"main": [
[
{
"node": "Send all-clear to Telegram",
"type": "main",
"index": 0
}
]
]
},
"Run daily at 9 AM": {
"main": [
[
{
"node": "Configuration",
"type": "main",
"index": 0
}
]
]
},
"Detect new templates": {
"main": [
[
{
"node": "New templates found?",
"type": "main",
"index": 0
}
]
]
},
"New templates found?": {
"main": [
[
{
"node": "Split out new templates",
"type": "main",
"index": 0
}
],
[
{
"node": "Report all-clear?",
"type": "main",
"index": 0
}
]
]
},
"Build Telegram digest": {
"main": [
[
{
"node": "Send digest to Telegram",
"type": "main",
"index": 0
}
]
]
},
"Split out new templates": {
"main": [
[
{
"node": "Analyze template with AI",
"type": "main",
"index": 0
}
]
]
},
"Analyze template with AI": {
"main": [
[
{
"node": "Build sheet row",
"type": "main",
"index": 0
}
]
]
},
"Extract template metadata": {
"main": [
[
{
"node": "Detect new templates",
"type": "main",
"index": 0
}
]
]
},
"Fetch template list from n8n": {
"main": [
[
{
"node": "Extract template metadata",
"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.
googleSheetsOAuth2ApiopenAiApitelegramApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow runs daily to check the public n8n Templates API for newly published templates in a chosen category, generates improvement suggestions with OpenAI, logs each new template to Google Sheets, and sends a Telegram digest (with an optional all-clear message when nothing…
Source: https://n8n.io/workflows/16968/ — 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.
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
Cyber Zap Public. Uses httpRequest, chainLlm, outputParserStructured, telegram. Scheduled trigger; 69 nodes.
leads. Uses supabase, gmail, formTrigger, httpRequest. Webhook trigger; 62 nodes.
This workflow automates the creation, rendering, approval, and posting of TikTok-style POV (Point of View) videos to Instagram, with cross-posting to Facebook and YouTube. It eliminates manual video p
This workflow automates document processing using LlamaParse to extract and analyze text from various file formats. It intelligently processes documents, extracts structured data, and delivers actiona