This workflow follows the Execute Workflow Trigger → 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 →
{
"name": "C \u2014 \u041a\u043d\u043e\u043f\u043a\u0438 \u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f (\u0427\u0435\u043b\u043b\u0435\u043d\u0434\u0436 200 \u0434\u043d\u0435\u0439)",
"nodes": [
{
"parameters": {
"inputSource": "passthrough"
},
"id": "c-trigger",
"name": "\u0417\u0430\u043f\u0443\u0441\u043a \u0438\u0437 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430",
"type": "n8n-nodes-base.executeWorkflowTrigger",
"typeVersion": 1.1,
"position": [
-1400,
0
]
},
{
"parameters": {
"jsCode": "const cq = $json.callback_query || {};\nconst data = cq.data || '';\nconst [action, day] = data.split(':');\nreturn [{ json: {\n action,\n day: Number(day),\n chat_id: cq.message && cq.message.chat ? cq.message.chat.id : $env.TELEGRAM_CHAT_ID,\n query_id: cq.id\n} }];"
},
"id": "c-parse",
"name": "\u0420\u0430\u0437\u0431\u043e\u0440 callback",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
-1180,
0
]
},
{
"parameters": {
"resource": "callback",
"queryId": "={{ $json.query_id }}",
"additionalFields": {
"appendAttribution": false
}
},
"id": "c-answer",
"name": "\u041e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u043d\u0430 callback",
"type": "n8n-nodes-base.telegram",
"typeVersion": 1.2,
"position": [
-960,
0
],
"retryOnFail": true,
"maxTries": 3,
"waitBetweenTries": 5000
},
{
"parameters": {
"rules": {
"values": [
{
"conditions": {
"options": {
"caseSensitive": true,
"typeValidation": "loose",
"version": 2
},
"conditions": [
{
"leftValue": "={{ $('\u0420\u0430\u0437\u0431\u043e\u0440 callback').first().json.action }}",
"rightValue": "publish",
"operator": {
"type": "string",
"operation": "equals"
}
}
],
"combinator": "and"
},
"renameOutput": true,
"outputKey": "publish"
},
{
"conditions": {
"options": {
"caseSensitive": true,
"typeValidation": "loose",
"version": 2
},
"conditions": [
{
"leftValue": "={{ $('\u0420\u0430\u0437\u0431\u043e\u0440 callback').first().json.action }}",
"rightValue": "queue",
"operator": {
"type": "string",
"operation": "equals"
}
}
],
"combinator": "and"
},
"renameOutput": true,
"outputKey": "queue"
},
{
"conditions": {
"options": {
"caseSensitive": true,
"typeValidation": "loose",
"version": 2
},
"conditions": [
{
"leftValue": "={{ $('\u0420\u0430\u0437\u0431\u043e\u0440 callback').first().json.action }}",
"rightValue": "regen",
"operator": {
"type": "string",
"operation": "equals"
}
}
],
"combinator": "and"
},
"renameOutput": true,
"outputKey": "regen"
},
{
"conditions": {
"options": {
"caseSensitive": true,
"typeValidation": "loose",
"version": 2
},
"conditions": [
{
"leftValue": "={{ $('\u0420\u0430\u0437\u0431\u043e\u0440 callback').first().json.action }}",
"rightValue": "reject",
"operator": {
"type": "string",
"operation": "equals"
}
}
],
"combinator": "and"
},
"renameOutput": true,
"outputKey": "reject"
}
]
},
"options": {}
},
"id": "c-switch",
"name": "\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435",
"type": "n8n-nodes-base.switch",
"typeVersion": 3,
"position": [
-740,
0
]
},
{
"parameters": {
"jsCode": "const p = $('\u0420\u0430\u0437\u0431\u043e\u0440 callback').first().json;\nreturn [{ json: { day: p.day, chat_id: p.chat_id } }];"
},
"id": "c-pub-input",
"name": "\u0414\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
-520,
-300
]
},
{
"parameters": {
"workflowId": {
"__rl": true,
"mode": "list",
"value": "",
"cachedResultName": "P \u2014 \u041f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f: \u0434\u0432\u0438\u0436\u043e\u043a (\u0427\u0435\u043b\u043b\u0435\u043d\u0434\u0436 200 \u0434\u043d\u0435\u0439)"
},
"workflowInputs": {
"mappingMode": "autoMapInputData",
"value": {},
"matchingColumns": [],
"schema": []
},
"options": {
"waitForSubWorkflow": false
}
},
"id": "c-exec-p",
"name": "\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044e (P)",
"type": "n8n-nodes-base.executeWorkflow",
"typeVersion": 1.2,
"position": [
-300,
-300
]
},
{
"parameters": {
"documentId": {
"__rl": true,
"mode": "id",
"value": "={{ $env.GOOGLE_SHEETS_ID }}"
},
"sheetName": {
"__rl": true,
"mode": "name",
"value": "pipeline"
},
"options": {}
},
"id": "c-queue-read",
"name": "\u0412\u0441\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 (queue)",
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.5,
"position": [
-520,
-100
],
"alwaysOutputData": true
},
{
"parameters": {
"jsCode": "const day = $('\u0420\u0430\u0437\u0431\u043e\u0440 callback').first().json.day;\nconst rows = $input.all().map(i => i.json).filter(r => r.day_number !== undefined && r.day_number !== '');\nconst row = rows.find(r => Number(r.day_number) === day);\n\nif (!row) return [{ json: { ok: false, reason: '\u0441\u0442\u0440\u043e\u043a\u0430 \u0434\u043d\u044f \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435' } }];\nif (row.status !== 'awaiting_approval') {\n return [{ json: { ok: false, reason: `\u0441\u0442\u0430\u0442\u0443\u0441 \u00ab${row.status}\u00bb, \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043c\u043e\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437 awaiting_approval` } }];\n}\n\nconst today = DateTime.now().setZone('Europe/Berlin').startOf('day');\nlet maxSched = null;\nfor (const r of rows) {\n if (r.status === 'scheduled' && r.scheduled_date) {\n const d = DateTime.fromISO(String(r.scheduled_date), { zone: 'Europe/Berlin' });\n if (d.isValid && (!maxSched || d > maxSched)) maxSched = d;\n }\n}\n\nlet next = today;\nif (maxSched && maxSched.plus({ days: 1 }) > next) next = maxSched.plus({ days: 1 });\n\nconst pos = rows.filter(r => r.status === 'scheduled').length + 1;\nreturn [{ json: { ok: true, day, scheduled_date: next.toFormat('yyyy-MM-dd'), pos } }];"
},
"id": "c-queue-calc",
"name": "\u0412\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u0434\u0430\u0442\u0443 \u043e\u0447\u0435\u0440\u0435\u0434\u0438",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
-300,
-100
]
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"typeValidation": "loose",
"version": 2
},
"conditions": [
{
"leftValue": "={{ $json.ok }}",
"rightValue": true,
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
}
}
],
"combinator": "and"
},
"options": {}
},
"id": "c-queue-ok",
"name": "\u041e\u0447\u0435\u0440\u0435\u0434\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430?",
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
-80,
-100
]
},
{
"parameters": {
"operation": "appendOrUpdate",
"documentId": {
"__rl": true,
"mode": "id",
"value": "={{ $env.GOOGLE_SHEETS_ID }}"
},
"sheetName": {
"__rl": true,
"mode": "name",
"value": "pipeline"
},
"columns": {
"mappingMode": "defineBelow",
"value": {
"day_number": "={{ $json.day }}",
"status": "scheduled",
"scheduled_date": "={{ $json.scheduled_date }}"
},
"matchingColumns": [
"day_number"
],
"schema": []
},
"options": {}
},
"id": "c-queue-save",
"name": "\u0417\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c",
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.5,
"position": [
140,
-180
]
},
{
"parameters": {
"chatId": "={{ $('\u0420\u0430\u0437\u0431\u043e\u0440 callback').first().json.chat_id }}",
"text": "=\ud83d\uddd3 \u0414\u0435\u043d\u044c {{ $('\u0412\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u0434\u0430\u0442\u0443 \u043e\u0447\u0435\u0440\u0435\u0434\u0438').first().json.day }} \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043d\u0430 {{ $('\u0412\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u0434\u0430\u0442\u0443 \u043e\u0447\u0435\u0440\u0435\u0434\u0438').first().json.scheduled_date }} (\u043f\u043e\u0437\u0438\u0446\u0438\u044f {{ $('\u0412\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u0434\u0430\u0442\u0443 \u043e\u0447\u0435\u0440\u0435\u0434\u0438').first().json.pos }}). \u041f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u2014 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432 18:00.",
"additionalFields": {
"appendAttribution": false
}
},
"id": "c-queue-confirm",
"name": "\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c \u043e\u0447\u0435\u0440\u0435\u0434\u044c",
"type": "n8n-nodes-base.telegram",
"typeVersion": 1.2,
"position": [
360,
-180
],
"retryOnFail": true,
"maxTries": 3,
"waitBetweenTries": 5000
},
{
"parameters": {
"chatId": "={{ $('\u0420\u0430\u0437\u0431\u043e\u0440 callback').first().json.chat_id }}",
"text": "=\u26a0\ufe0f \u0414\u0435\u043d\u044c {{ $('\u0420\u0430\u0437\u0431\u043e\u0440 callback').first().json.day }}: \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u2014 {{ $json.reason }}.",
"additionalFields": {
"appendAttribution": false
}
},
"id": "c-queue-fail",
"name": "\u041e\u0447\u0435\u0440\u0435\u0434\u044c: \u043e\u0442\u043a\u0430\u0437",
"type": "n8n-nodes-base.telegram",
"typeVersion": 1.2,
"position": [
140,
-20
],
"retryOnFail": true,
"maxTries": 3,
"waitBetweenTries": 5000
},
{
"parameters": {
"documentId": {
"__rl": true,
"mode": "id",
"value": "={{ $env.GOOGLE_SHEETS_ID }}"
},
"sheetName": {
"__rl": true,
"mode": "name",
"value": "pipeline"
},
"filtersUI": {
"values": [
{
"lookupColumn": "day_number",
"lookupValue": "={{ $('\u0420\u0430\u0437\u0431\u043e\u0440 callback').first().json.day }}"
}
]
},
"options": {}
},
"id": "c-row-regen",
"name": "\u0421\u0442\u0440\u043e\u043a\u0430 (regen)",
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.5,
"position": [
-520,
140
]
},
{
"parameters": {
"jsCode": "const row = $json;\nconst day = row.day_number;\nconst total = Number($env.CHALLENGE_TOTAL_DAYS || 200);\nconst transcript = row.transcript_de || '';\n\nconst system = `\u0422\u044b \u043f\u0438\u0448\u0435\u0448\u044c \u0442\u0435\u043a\u0441\u0442\u044b \u0434\u043b\u044f \u043d\u0435\u043c\u0435\u0446\u043a\u043e\u044f\u0437\u044b\u0447\u043d\u043e\u0433\u043e \u0431\u043b\u043e\u0433\u0430 \u043e \u0447\u0435\u043b\u043b\u0435\u043d\u0434\u0436\u0435 \"200 \u0434\u043d\u0435\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438\". \u0410\u0432\u0442\u043e\u0440 \u0431\u043b\u043e\u0433\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0434\u0435\u043d\u044c \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u0442 \u043a\u043e\u0440\u043e\u0442\u043a\u043e\u0435 \u0432\u0438\u0434\u0435\u043e \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043e\u043d \u043e\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044e (n8n, API, AI-\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b); \u0446\u0435\u043b\u044c \u0447\u0435\u043b\u043b\u0435\u043d\u0434\u0436\u0430 \u2014 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0444\u0444\u0435\u0440 \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0443.\\n\\n\u041a\u0430\u0436\u0434\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 \u0441\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u0445\u0443\u043a\u0430 \u0438 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \"Tag ${day}/${total}\".\\n\\n\u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u043c:\\n- caption_linkedin: \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0442\u043e\u043d, 600\u2013900 \u0437\u043d\u0430\u043a\u043e\u0432, 3\u20135 \u0445\u044d\u0448\u0442\u0435\u0433\u043e\u0432.\\n- caption_instagram: \u0436\u0438\u0432\u043e\u0439 \u0442\u043e\u043d, 300\u2013500 \u0437\u043d\u0430\u043a\u043e\u0432, 5\u20138 \u0445\u044d\u0448\u0442\u0435\u0433\u043e\u0432, \u044d\u043c\u043e\u0434\u0437\u0438 \u0443\u043c\u0435\u0440\u0435\u043d\u043d\u043e.\\n- title_youtube: \u0434\u043e 70 \u0437\u043d\u0430\u043a\u043e\u0432, \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \"Tag ${day}/${total}\".\\n- caption_youtube: \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 200\u2013400 \u0437\u043d\u0430\u043a\u043e\u0432.\\n\\n\u0412\u0441\u0435 \u0442\u0435\u043a\u0441\u0442\u044b \u043d\u0430 \u043d\u0435\u043c\u0435\u0446\u043a\u043e\u043c \u044f\u0437\u044b\u043a\u0435.\\n\\n\u0412\u0435\u0440\u043d\u0438 \u0422\u041e\u041b\u042c\u041a\u041e \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0439 JSON \u0431\u0435\u0437 markdown \u0438 \u0431\u0435\u0437 \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u0439, \u0440\u043e\u0432\u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b:\\n{ \"caption_linkedin\": \"...\", \"caption_instagram\": \"...\", \"caption_youtube\": \"...\", \"title_youtube\": \"...\" }`;\n\nconst user = `\u0422\u0440\u0430\u043d\u0441\u043a\u0440\u0438\u043f\u0442 \u043d\u0435\u043c\u0435\u0446\u043a\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0432\u0438\u0434\u0435\u043e (\u0434\u0435\u043d\u044c ${day}/${total}):\\n\\n${transcript}\\n\\n\u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0442\u0435\u043a\u0441\u0442\u043e\u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043d\u0435 \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u0441\u044f. \u0412\u043e\u0442 \u043e\u043d:\\nLinkedIn: ${row.caption_linkedin || ''}\\nInstagram: ${row.caption_instagram || ''}\\nYouTube: ${row.title_youtube || ''} \u2014 ${row.caption_youtube || ''}\\n\\n\u0421\u0434\u0435\u043b\u0430\u0439 \u0414\u0420\u0423\u0413\u041e\u0419 \u0432\u0430\u0440\u0438\u0430\u043d\u0442: \u0434\u0440\u0443\u0433\u043e\u0439 \u0445\u0443\u043a, \u0434\u0440\u0443\u0433\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430, \u0434\u0440\u0443\u0433\u0438\u0435 \u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u043a\u0438.`;\n\nreturn [{ json: {\n day_number: day,\n claudeRequest: {\n model: 'claude-sonnet-4-6',\n max_tokens: 2000,\n system,\n messages: [{ role: 'user', content: user }]\n }\n} }];"
},
"id": "c-regen-build",
"name": "\u0417\u0430\u043f\u0440\u043e\u0441: \u0434\u0440\u0443\u0433\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
-300,
140
]
},
{
"parameters": {
"method": "POST",
"url": "https://api.anthropic.com/v1/messages",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "x-api-key",
"value": "={{ $env.ANTHROPIC_API_KEY }}"
},
{
"name": "anthropic-version",
"value": "2023-06-01"
},
{
"name": "Content-Type",
"value": "application/json"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={{ JSON.stringify($json.claudeRequest) }}",
"options": {}
},
"id": "c-regen-claude",
"name": "Claude: \u0434\u0440\u0443\u0433\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
-80,
140
],
"retryOnFail": true,
"maxTries": 3,
"waitBetweenTries": 5000
},
{
"parameters": {
"jsCode": "let text = ($json.content && $json.content[0] && $json.content[0].text) || '';\ntext = text.trim().replace(/^```(json)?\\s*/i, '').replace(/```\\s*$/, '').trim();\ntry {\n const p = JSON.parse(text);\n if (!p.caption_linkedin || !p.caption_instagram || !p.caption_youtube || !p.title_youtube) throw new Error('missing fields');\n return [{ json: { ok: true, ...p } }];\n} catch (e) {\n return [{ json: { ok: false } }];\n}"
},
"id": "c-regen-parse",
"name": "\u0420\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c JSON (regen)",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
140,
140
]
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"typeValidation": "loose",
"version": 2
},
"conditions": [
{
"leftValue": "={{ $json.ok }}",
"rightValue": true,
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
}
}
],
"combinator": "and"
},
"options": {}
},
"id": "c-regen-ok",
"name": "JSON \u0432\u0430\u043b\u0438\u0434\u0435\u043d? (regen)",
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
360,
140
]
},
{
"parameters": {
"chatId": "={{ $('\u0420\u0430\u0437\u0431\u043e\u0440 callback').first().json.chat_id }}",
"text": "=\u26a0\ufe0f \u0414\u0435\u043d\u044c {{ $('\u0420\u0430\u0437\u0431\u043e\u0440 callback').first().json.day }}: \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 (\u043d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0439 JSON \u043e\u0442 Claude). \u041d\u0430\u0436\u043c\u0438 \u00ab\u041f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u044b\u00bb \u0435\u0449\u0451 \u0440\u0430\u0437.",
"additionalFields": {
"appendAttribution": false
}
},
"id": "c-regen-fail",
"name": "\u041e\u0448\u0438\u0431\u043a\u0430 \u0440\u0435\u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438",
"type": "n8n-nodes-base.telegram",
"typeVersion": 1.2,
"position": [
580,
260
],
"retryOnFail": true,
"maxTries": 3,
"waitBetweenTries": 5000
},
{
"parameters": {
"operation": "appendOrUpdate",
"documentId": {
"__rl": true,
"mode": "id",
"value": "={{ $env.GOOGLE_SHEETS_ID }}"
},
"sheetName": {
"__rl": true,
"mode": "name",
"value": "pipeline"
},
"columns": {
"mappingMode": "defineBelow",
"value": {
"day_number": "={{ $('\u0420\u0430\u0437\u0431\u043e\u0440 callback').first().json.day }}",
"caption_linkedin": "={{ $json.caption_linkedin }}",
"caption_instagram": "={{ $json.caption_instagram }}",
"caption_youtube": "={{ $json.caption_youtube }}",
"title_youtube": "={{ $json.title_youtube }}",
"status": "awaiting_approval"
},
"matchingColumns": [
"day_number"
],
"schema": []
},
"options": {}
},
"id": "c-regen-save",
"name": "\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u044b (regen)",
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.5,
"position": [
580,
60
]
},
{
"parameters": {
"chatId": "={{ $('\u0420\u0430\u0437\u0431\u043e\u0440 callback').first().json.chat_id }}",
"text": "=\ud83d\udcdd \u041d\u043e\u0432\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0442\u0435\u043a\u0441\u0442\u043e\u0432 \u0434\u043b\u044f \u0434\u043d\u044f {{ $('\u0420\u0430\u0437\u0431\u043e\u0440 callback').first().json.day }}:\n\n\ud83d\udd37 LinkedIn:\n{{ $('\u0420\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c JSON (regen)').first().json.caption_linkedin }}\n\n\ud83d\udcf8 Instagram:\n{{ $('\u0420\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c JSON (regen)').first().json.caption_instagram }}\n\n\u25b6\ufe0f YouTube: {{ $('\u0420\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c JSON (regen)').first().json.title_youtube }}\n{{ $('\u0420\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c JSON (regen)').first().json.caption_youtube }}",
"replyMarkup": "inlineKeyboard",
"inlineKeyboard": {
"rows": [
{
"row": {
"buttons": [
{
"text": "\u2705 \u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u0439\u0447\u0430\u0441",
"additionalFields": {
"callback_data": "=publish:{{ $('\u0420\u0430\u0437\u0431\u043e\u0440 callback').first().json.day }}"
}
}
]
}
},
{
"row": {
"buttons": [
{
"text": "\ud83d\uddd3 \u0412 \u043e\u0447\u0435\u0440\u0435\u0434\u044c (\u0430\u0432\u0442\u043e, 18:00)",
"additionalFields": {
"callback_data": "=queue:{{ $('\u0420\u0430\u0437\u0431\u043e\u0440 callback').first().json.day }}"
}
}
]
}
},
{
"row": {
"buttons": [
{
"text": "\u270f\ufe0f \u041f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u044b",
"additionalFields": {
"callback_data": "=regen:{{ $('\u0420\u0430\u0437\u0431\u043e\u0440 callback').first().json.day }}"
}
}
]
}
},
{
"row": {
"buttons": [
{
"text": "\u274c \u041e\u0442\u043a\u043b\u043e\u043d\u0438\u0442\u044c",
"additionalFields": {
"callback_data": "=reject:{{ $('\u0420\u0430\u0437\u0431\u043e\u0440 callback').first().json.day }}"
}
}
]
}
}
]
},
"additionalFields": {
"appendAttribution": false
}
},
"id": "c-regen-preview",
"name": "\u041f\u0440\u0435\u0432\u044c\u044e (regen)",
"type": "n8n-nodes-base.telegram",
"typeVersion": 1.2,
"position": [
800,
60
],
"retryOnFail": true,
"maxTries": 3,
"waitBetweenTries": 5000
},
{
"parameters": {
"operation": "appendOrUpdate",
"documentId": {
"__rl": true,
"mode": "id",
"value": "={{ $env.GOOGLE_SHEETS_ID }}"
},
"sheetName": {
"__rl": true,
"mode": "name",
"value": "pipeline"
},
"columns": {
"mappingMode": "defineBelow",
"value": {
"day_number": "={{ $('\u0420\u0430\u0437\u0431\u043e\u0440 callback').first().json.day }}",
"status": "rejected"
},
"matchingColumns": [
"day_number"
],
"schema": []
},
"options": {}
},
"id": "c-reject",
"name": "\u0421\u0442\u0430\u0442\u0443\u0441: rejected",
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.5,
"position": [
-520,
460
]
},
{
"parameters": {
"chatId": "={{ $('\u0420\u0430\u0437\u0431\u043e\u0440 callback').first().json.chat_id }}",
"text": "=\u274c \u0414\u0435\u043d\u044c {{ $('\u0420\u0430\u0437\u0431\u043e\u0440 callback').first().json.day }} \u043e\u0442\u043a\u043b\u043e\u043d\u0451\u043d. \u041f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442.",
"additionalFields": {
"appendAttribution": false
}
},
"id": "c-reject-msg",
"name": "\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u0435",
"type": "n8n-nodes-base.telegram",
"typeVersion": 1.2,
"position": [
-300,
460
],
"retryOnFail": true,
"maxTries": 3,
"waitBetweenTries": 5000
}
],
"connections": {
"\u0417\u0430\u043f\u0443\u0441\u043a \u0438\u0437 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430": {
"main": [
[
{
"node": "\u0420\u0430\u0437\u0431\u043e\u0440 callback",
"type": "main",
"index": 0
}
]
]
},
"\u0420\u0430\u0437\u0431\u043e\u0440 callback": {
"main": [
[
{
"node": "\u041e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u043d\u0430 callback",
"type": "main",
"index": 0
}
]
]
},
"\u041e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u043d\u0430 callback": {
"main": [
[
{
"node": "\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435",
"type": "main",
"index": 0
}
]
]
},
"\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435": {
"main": [
[
{
"node": "\u0414\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438",
"type": "main",
"index": 0
}
],
[
{
"node": "\u0412\u0441\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 (queue)",
"type": "main",
"index": 0
}
],
[
{
"node": "\u0421\u0442\u0440\u043e\u043a\u0430 (regen)",
"type": "main",
"index": 0
}
],
[
{
"node": "\u0421\u0442\u0430\u0442\u0443\u0441: rejected",
"type": "main",
"index": 0
}
]
]
},
"\u0414\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438": {
"main": [
[
{
"node": "\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044e (P)",
"type": "main",
"index": 0
}
]
]
},
"\u0412\u0441\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 (queue)": {
"main": [
[
{
"node": "\u0412\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u0434\u0430\u0442\u0443 \u043e\u0447\u0435\u0440\u0435\u0434\u0438",
"type": "main",
"index": 0
}
]
]
},
"\u0412\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u0434\u0430\u0442\u0443 \u043e\u0447\u0435\u0440\u0435\u0434\u0438": {
"main": [
[
{
"node": "\u041e\u0447\u0435\u0440\u0435\u0434\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430?",
"type": "main",
"index": 0
}
]
]
},
"\u041e\u0447\u0435\u0440\u0435\u0434\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430?": {
"main": [
[
{
"node": "\u0417\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c",
"type": "main",
"index": 0
}
],
[
{
"node": "\u041e\u0447\u0435\u0440\u0435\u0434\u044c: \u043e\u0442\u043a\u0430\u0437",
"type": "main",
"index": 0
}
]
]
},
"\u0417\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c": {
"main": [
[
{
"node": "\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c \u043e\u0447\u0435\u0440\u0435\u0434\u044c",
"type": "main",
"index": 0
}
]
]
},
"\u0421\u0442\u0440\u043e\u043a\u0430 (regen)": {
"main": [
[
{
"node": "\u0417\u0430\u043f\u0440\u043e\u0441: \u0434\u0440\u0443\u0433\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442",
"type": "main",
"index": 0
}
]
]
},
"\u0417\u0430\u043f\u0440\u043e\u0441: \u0434\u0440\u0443\u0433\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442": {
"main": [
[
{
"node": "Claude: \u0434\u0440\u0443\u0433\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442",
"type": "main",
"index": 0
}
]
]
},
"Claude: \u0434\u0440\u0443\u0433\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442": {
"main": [
[
{
"node": "\u0420\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c JSON (regen)",
"type": "main",
"index": 0
}
]
]
},
"\u0420\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c JSON (regen)": {
"main": [
[
{
"node": "JSON \u0432\u0430\u043b\u0438\u0434\u0435\u043d? (regen)",
"type": "main",
"index": 0
}
]
]
},
"JSON \u0432\u0430\u043b\u0438\u0434\u0435\u043d? (regen)": {
"main": [
[
{
"node": "\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u044b (regen)",
"type": "main",
"index": 0
}
],
[
{
"node": "\u041e\u0448\u0438\u0431\u043a\u0430 \u0440\u0435\u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438",
"type": "main",
"index": 0
}
]
]
},
"\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u044b (regen)": {
"main": [
[
{
"node": "\u041f\u0440\u0435\u0432\u044c\u044e (regen)",
"type": "main",
"index": 0
}
]
]
},
"\u0421\u0442\u0430\u0442\u0443\u0441: rejected": {
"main": [
[
{
"node": "\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u0435",
"type": "main",
"index": 0
}
]
]
}
},
"settings": {
"executionOrder": "v1"
}
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
C — Кнопки и публикация (Челлендж 200 дней). Uses executeWorkflowTrigger, telegram, googleSheets, httpRequest. Event-driven trigger; 22 nodes.
Source: https://github.com/nikita-automation/content-publishing-pipeline/blob/main/workflows/C-callbacks-publish.json — 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.
Deal-Finder. Uses executeWorkflowTrigger, googleSheets, perplexity, httpRequest. Event-driven trigger; 49 nodes.
This workflow provides a complete solution for handling Telegram Stars payments, invoicing and refunds using n8n. It automates the process of sending invoices, managing pre-checkout approvals, recordi
A — Приём и перевод (Челлендж 200 дней). Uses executeWorkflowTrigger, telegram, httpRequest, executeCommand. Event-driven trigger; 32 nodes.
P — Публикация: движок (Челлендж 200 дней). Uses executeWorkflowTrigger, googleSheets, telegram, httpRequest. Event-driven trigger; 15 nodes.
DocFlow 04 - Invoice Extractor. Uses executeWorkflowTrigger, httpRequest, googleSheets, telegram. Event-driven trigger; 9 nodes.