AutomationFlowsSlack & Telegram › 수달 쇼츠 자동화 워크플로우

수달 쇼츠 자동화 워크플로우

수달 쇼츠 자동화 워크플로우. Uses httpRequest, googleDrive, telegram. Scheduled trigger; 10 nodes.

Cron / scheduled trigger★★★★☆ complexity10 nodesHTTP RequestGoogle DriveTelegram
Slack & Telegram Trigger: Cron / scheduled Nodes: 10 Complexity: ★★★★☆ Added:

This workflow follows the Google Drive → HTTP Request 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 →

Download .json
{
  "name": "\uc218\ub2ec \uc1fc\uce20 \uc790\ub3d9\ud654 \uc6cc\ud06c\ud50c\ub85c\uc6b0",
  "nodes": [
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "cronExpression",
              "expression": "0 9 * * *"
            }
          ]
        }
      },
      "id": "node-trigger",
      "name": "\ub9e4\uc77c \uc624\uc804 9\uc2dc \ud2b8\ub9ac\uac70",
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.1,
      "position": [
        240,
        300
      ]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://api.anthropic.com/v1/messages",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "x-api-key",
              "value": "={{ $credentials.httpHeaderAuth.value }}"
            },
            {
              "name": "anthropic-version",
              "value": "2023-06-01"
            },
            {
              "name": "content-type",
              "value": "application/json"
            }
          ]
        },
        "sendBody": true,
        "bodyParameters": {
          "parameters": []
        },
        "specifyBody": "json",
        "jsonBody": "{\n  \"model\": \"claude-sonnet-4-5\",\n  \"max_tokens\": 2000,\n  \"system\": \"\ub2f9\uc2e0\uc740 '\ucde8\uc900\ud558\ub294 \uc218\ub2ec\uc774' \uc1fc\uce20 \uc601\uc0c1 \ucf58\ud150\uce20 \ud06c\ub9ac\uc5d0\uc774\ud130\uc785\ub2c8\ub2e4.\\n\\n[\uce90\ub9ad\ud130 \uc124\uc815]\\n- \uc774\ub984: \uc218\ub2ec\uc774\\n- \ucee8\uc149: \ucde8\uc5c5 \uc900\ube44 \uc911\uc778 \uadc0\uc5ec\uc6b4 3D \uc218\ub2ec\\n- \ub9d0\ud22c: \uacf5\uac10\uac00\uace0 \uadc0\uc5fd\uace0 \ub530\ub73b\ud55c \ud1a4\\n- \ud0c0\uac9f: \ucde8\uc900\uc0dd, \uc9c1\uc7a5\uc778 \uacf5\uac10 \ucf58\ud150\uce20\\n\\n[\ucd9c\ub825 \ud615\uc2dd - \ubc18\ub4dc\uc2dc JSON\uc73c\ub85c\ub9cc \uc751\ub2f5]\\n{\\n  \\\"title\\\": \\\"\uc601\uc0c1 \uc81c\ubaa9\\\",\\n  \\\"concept\\\": \\\"\uc624\ub298\uc758 \ucee8\uc149 \ud55c \uc904 \uc124\uba85\\\",\\n  \\\"bgm_mood\\\": \\\"bgm \ubd84\uc704\uae30 \ud0a4\uc6cc\ub4dc (\uc608: lofi, \ub530\ub73b\ud55c, \uac10\uc131\uc801)\\\",\\n  \\\"scenes\\\": [\\n    {\\n      \\\"scene_number\\\": 1,\\n      \\\"duration_sec\\\": 4,\\n      \\\"narration\\\": \\\"\ub098\ub808\uc774\uc158 \ud14d\uc2a4\ud2b8\\\",\\n      \\\"image_prompt_en\\\": \\\"Gemini \uc774\ubbf8\uc9c0 \uc0dd\uc131\uc6a9 \uc601\uc5b4 \ud504\ub86c\ud504\ud2b8. \ubc18\ub4dc\uc2dc \ud3ec\ud568: cute 3D otter with big dark eyes, brown fur, white cheeks, chubby face, Pixar-style animation, warm soft lighting, vertical 9:16 format\\\",\\n      \\\"subtitle\\\": \\\"\uc601\uc0c1\uc5d0 \ud45c\uc2dc\ub420 \uc790\ub9c9 \ud14d\uc2a4\ud2b8\\\"\\n    }\\n  ],\\n  \\\"srt_content\\\": \\\"SRT \uc790\ub9c9 \ud30c\uc77c \uc804\uccb4 \ub0b4\uc6a9\\\"\\n}\",\n  \"messages\": [\n    {\n      \"role\": \"user\",\n      \"content\": \"\uc624\ub298 \ub0a0\uc9dc: {{ $now.toFormat('yyyy-MM-dd') }}\\n\\n\ucde8\uc900\ud558\ub294 \uc218\ub2ec\uc774 \uc1fc\uce20 \uc601\uc0c1 1\ud3b8\uc744 \uae30\ud68d\ud574\uc8fc\uc138\uc694.\\n- \ucd1d 4~5\uac1c \uc52c\\n- \uac01 \uc52c 4~5\ucd08\\n- \uc804\uccb4 \uc601\uc0c1 15~20\ucd08\\n- \uc624\ub298\uc758 \ucde8\uc900 \uacf5\uac10 \uc8fc\uc81c\ub85c \uc2a4\ud1a0\ub9ac \uad6c\uc131\\n- SRT \uc790\ub9c9 \ud30c\uc77c\ub3c4 \ud568\uaed8 \uc0dd\uc131 (\uac01 \uc52c \ud0c0\uc784\ucf54\ub4dc \ud3ec\ud568)\\n\\nJSON \ud615\uc2dd\uc73c\ub85c\ub9cc \uc751\ub2f5\ud558\uc138\uc694. \ub9c8\ud06c\ub2e4\uc6b4 \ucf54\ub4dc\ube14\ub85d \uc5c6\uc774 \uc21c\uc218 JSON\ub9cc.\"\n    }\n  ]\n}",
        "options": {}
      },
      "id": "node-claude",
      "name": "Claude - \uc2a4\ud06c\ub9bd\ud2b8 \uc0dd\uc131",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        460,
        300
      ],
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "jsCode": "// Claude \uc751\ub2f5\uc5d0\uc11c JSON \ud30c\uc2f1\nconst response = $input.first().json;\nconst content = response.content[0].text;\n\n// JSON \ud30c\uc2f1 (\ub9c8\ud06c\ub2e4\uc6b4 \ucf54\ub4dc\ube14\ub85d \uc81c\uac70 \ud6c4)\nconst cleanJson = content\n  .replace(/```json\\n?/g, '')\n  .replace(/```\\n?/g, '')\n  .trim();\n\nlet scriptData;\ntry {\n  scriptData = JSON.parse(cleanJson);\n} catch(e) {\n  throw new Error('Claude \uc751\ub2f5 \ud30c\uc2f1 \uc2e4\ud328: ' + content);\n}\n\n// \uc52c\ubcc4\ub85c \uac1c\ubcc4 \uc544\uc774\ud15c \uc0dd\uc131 (Gemini \uc774\ubbf8\uc9c0 \uc0dd\uc131\uc6a9)\nconst scenes = scriptData.scenes;\nconst results = [];\n\nfor (const scene of scenes) {\n  results.push({\n    json: {\n      // \uc804\uccb4 \uc2a4\ud06c\ub9bd\ud2b8 \ub370\uc774\ud130\n      title: scriptData.title,\n      concept: scriptData.concept,\n      bgm_mood: scriptData.bgm_mood,\n      srt_content: scriptData.srt_content,\n      total_scenes: scenes.length,\n      // \ud604\uc7ac \uc52c \ub370\uc774\ud130\n      scene_number: scene.scene_number,\n      duration_sec: scene.duration_sec,\n      narration: scene.narration,\n      image_prompt_en: scene.image_prompt_en,\n      subtitle: scene.subtitle,\n      // \ud30c\uc77c\uba85\uc6a9 \ub0a0\uc9dc\n      date_str: new Date().toISOString().split('T')[0]\n    }\n  });\n}\n\nreturn results;"
      },
      "id": "node-parse",
      "name": "\uc2a4\ud06c\ub9bd\ud2b8 \ud30c\uc2f1 + \uc52c \ubd84\ub9ac",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        680,
        300
      ]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.1-flash-image-preview:generateContent",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpQueryAuth",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        },
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "{\n  \"contents\": [\n    {\n      \"parts\": [\n        {\n          \"text\": \"{{ $json.image_prompt_en }}, vertical 9:16 aspect ratio, for YouTube Shorts\"\n        }\n      ]\n    }\n  ],\n  \"generationConfig\": {\n    \"responseModalities\": [\"IMAGE\", \"TEXT\"],\n    \"responseMimeType\": \"image/png\"\n  }\n}",
        "options": {}
      },
      "id": "node-gemini",
      "name": "Gemini - \uc774\ubbf8\uc9c0 \uc0dd\uc131",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        900,
        300
      ],
      "credentials": {
        "httpQueryAuth": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "jsCode": "// Gemini \uc751\ub2f5\uc5d0\uc11c base64 \uc774\ubbf8\uc9c0 \ucd94\ucd9c\nconst response = $input.first().json;\nconst sceneData = $input.first().json;\n\n// Gemini \uc774\ubbf8\uc9c0 \uc751\ub2f5 \ud30c\uc2f1\nlet base64Image = null;\nlet mimeType = 'image/png';\n\ntry {\n  const parts = response.candidates[0].content.parts;\n  for (const part of parts) {\n    if (part.inlineData) {\n      base64Image = part.inlineData.data;\n      mimeType = part.inlineData.mimeType || 'image/png';\n      break;\n    }\n  }\n} catch(e) {\n  throw new Error('Gemini \uc774\ubbf8\uc9c0 \ud30c\uc2f1 \uc2e4\ud328: ' + JSON.stringify(response));\n}\n\nif (!base64Image) {\n  throw new Error('\uc774\ubbf8\uc9c0 \ub370\uc774\ud130\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4');\n}\n\nreturn [{\n  json: {\n    title: $('\uc2a4\ud06c\ub9bd\ud2b8 \ud30c\uc2f1 + \uc52c \ubd84\ub9ac').item.json.title,\n    concept: $('\uc2a4\ud06c\ub9bd\ud2b8 \ud30c\uc2f1 + \uc52c \ubd84\ub9ac').item.json.concept,\n    bgm_mood: $('\uc2a4\ud06c\ub9bd\ud2b8 \ud30c\uc2f1 + \uc52c \ubd84\ub9ac').item.json.bgm_mood,\n    srt_content: $('\uc2a4\ud06c\ub9bd\ud2b8 \ud30c\uc2f1 + \uc52c \ubd84\ub9ac').item.json.srt_content,\n    scene_number: $('\uc2a4\ud06c\ub9bd\ud2b8 \ud30c\uc2f1 + \uc52c \ubd84\ub9ac').item.json.scene_number,\n    subtitle: $('\uc2a4\ud06c\ub9bd\ud2b8 \ud30c\uc2f1 + \uc52c \ubd84\ub9ac').item.json.subtitle,\n    date_str: $('\uc2a4\ud06c\ub9bd\ud2b8 \ud30c\uc2f1 + \uc52c \ubd84\ub9ac').item.json.date_str,\n    total_scenes: $('\uc2a4\ud06c\ub9bd\ud2b8 \ud30c\uc2f1 + \uc52c \ubd84\ub9ac').item.json.total_scenes,\n    image_base64: base64Image,\n    mime_type: mimeType,\n    file_name: `scene_${ $('\uc2a4\ud06c\ub9bd\ud2b8 \ud30c\uc2f1 + \uc52c \ubd84\ub9ac').item.json.scene_number }_${ $('\uc2a4\ud06c\ub9bd\ud2b8 \ud30c\uc2f1 + \uc52c \ubd84\ub9ac').item.json.date_str }.png`\n  },\n  binary: {\n    image: {\n      data: base64Image,\n      mimeType: mimeType,\n      fileName: `scene_${ $('\uc2a4\ud06c\ub9bd\ud2b8 \ud30c\uc2f1 + \uc52c \ubd84\ub9ac').item.json.scene_number }_${ $('\uc2a4\ud06c\ub9bd\ud2b8 \ud30c\uc2f1 + \uc52c \ubd84\ub9ac').item.json.date_str }.png`\n    }\n  }\n}];"
      },
      "id": "node-extract-image",
      "name": "\uc774\ubbf8\uc9c0 \ucd94\ucd9c",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        1120,
        300
      ]
    },
    {
      "parameters": {
        "operation": "upload",
        "name": "={{ $json.file_name }}",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive"
        },
        "folderId": {
          "__rl": true,
          "mode": "list",
          "value": "GOOGLE_DRIVE_FOLDER_ID"
        },
        "binaryData": true,
        "binaryPropertyName": "image",
        "options": {}
      },
      "id": "node-drive-image",
      "name": "Google Drive - \uc774\ubbf8\uc9c0 \uc800\uc7a5",
      "type": "n8n-nodes-base.googleDrive",
      "typeVersion": 3,
      "position": [
        1340,
        180
      ],
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict"
          },
          "conditions": [
            {
              "id": "last-scene-check",
              "leftValue": "={{ $json.scene_number }}",
              "rightValue": "={{ $json.total_scenes }}",
              "operator": {
                "type": "number",
                "operation": "equals"
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "id": "node-if-last",
      "name": "\ub9c8\uc9c0\ub9c9 \uc52c?",
      "type": "n8n-nodes-base.if",
      "typeVersion": 2,
      "position": [
        1560,
        300
      ]
    },
    {
      "parameters": {
        "operation": "upload",
        "name": "={{ $('\uc2a4\ud06c\ub9bd\ud2b8 \ud30c\uc2f1 + \uc52c \ubd84\ub9ac').first().json.date_str }}_subtitle.srt",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive"
        },
        "folderId": {
          "__rl": true,
          "mode": "list",
          "value": "GOOGLE_DRIVE_FOLDER_ID"
        },
        "binaryData": false,
        "fileContent": "={{ $('\uc2a4\ud06c\ub9bd\ud2b8 \ud30c\uc2f1 + \uc52c \ubd84\ub9ac').first().json.srt_content }}",
        "options": {}
      },
      "id": "node-drive-srt",
      "name": "Google Drive - \uc790\ub9c9 \uc800\uc7a5",
      "type": "n8n-nodes-base.googleDrive",
      "typeVersion": 3,
      "position": [
        1780,
        180
      ],
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "jsCode": "// BGM \uc120\ud0dd \ub85c\uc9c1 - \ubd84\uc704\uae30 \ud0a4\uc6cc\ub4dc\ub85c \ub9e4\uce6d\nconst bgmMood = $('\uc2a4\ud06c\ub9bd\ud2b8 \ud30c\uc2f1 + \uc52c \ubd84\ub9ac').first().json.bgm_mood;\nconst dateStr = $('\uc2a4\ud06c\ub9bd\ud2b8 \ud30c\uc2f1 + \uc52c \ubd84\ub9ac').first().json.date_str;\nconst title = $('\uc2a4\ud06c\ub9bd\ud2b8 \ud30c\uc2f1 + \uc52c \ubd84\ub9ac').first().json.title;\nconst concept = $('\uc2a4\ud06c\ub9bd\ud2b8 \ud30c\uc2f1 + \uc52c \ubd84\ub9ac').first().json.concept;\n\n// BGM \ud480 (Drive\uc5d0 \ubbf8\ub9ac \uc800\uc7a5\ud574\ub454 \ud30c\uc77c\uba85 \ubaa9\ub85d)\n// \u26a0\ufe0f \uc18c\uc815\ub2d8\uc774 Suno\uc5d0\uc11c \ub9cc\ub4e0 BGM \ud30c\uc77c\uba85\uc73c\ub85c \uad50\uccb4\ud574\uc8fc\uc138\uc694\nconst bgmPool = {\n  lofi: 'bgm_lofi_chill.mp3',\n  \uac10\uc131: 'bgm_emotional_warm.mp3',\n  \ub530\ub73b\ud55c: 'bgm_warm_cozy.mp3',\n  \uc2e0\ub098\ub294: 'bgm_upbeat_fun.mp3',\n  \uc794\uc794\ud55c: 'bgm_calm_peaceful.mp3',\n  default: 'bgm_lofi_chill.mp3'\n};\n\n// \ud0a4\uc6cc\ub4dc \ub9e4\uce6d\nlet selectedBgm = bgmPool.default;\nfor (const [keyword, filename] of Object.entries(bgmPool)) {\n  if (bgmMood && bgmMood.includes(keyword)) {\n    selectedBgm = filename;\n    break;\n  }\n}\n\nreturn [{\n  json: {\n    date_str: dateStr,\n    title: title,\n    concept: concept,\n    bgm_mood: bgmMood,\n    selected_bgm: selectedBgm,\n    total_scenes: $('\uc2a4\ud06c\ub9bd\ud2b8 \ud30c\uc2f1 + \uc52c \ubd84\ub9ac').first().json.total_scenes\n  }\n}];"
      },
      "id": "node-bgm",
      "name": "BGM \ub9e4\uce6d",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        1780,
        420
      ]
    },
    {
      "parameters": {
        "chatId": "YOUR_TELEGRAM_CHAT_ID",
        "text": "=\ud83e\udda6 \uc218\ub2ec\uc774 \ucf58\ud150\uce20 \uc900\ube44 \uc644\ub8cc!\n\n\ud83d\udcc5 \ub0a0\uc9dc: {{ $('BGM \ub9e4\uce6d').item.json.date_str }}\n\ud83c\udfac \uc81c\ubaa9: {{ $('BGM \ub9e4\uce6d').item.json.title }}\n\ud83d\udca1 \ucee8\uc149: {{ $('BGM \ub9e4\uce6d').item.json.concept }}\n\ud83c\udfb5 BGM \ubd84\uc704\uae30: {{ $('BGM \ub9e4\uce6d').item.json.bgm_mood }}\n\ud83c\udfb6 \uc120\ud0dd\ub41c BGM: {{ $('BGM \ub9e4\uce6d').item.json.selected_bgm }}\n\n\ud83d\udcc1 \uad6c\uae00 \ub4dc\ub77c\uc774\ube0c \ud655\uc778\n\u2192 \uc774\ubbf8\uc9c0 {{ $('BGM \ub9e4\uce6d').item.json.total_scenes }}\uc7a5 \uc800\uc7a5 \uc644\ub8cc\n\u2192 \uc790\ub9c9 \ud30c\uc77c(.srt) \uc800\uc7a5 \uc644\ub8cc\n\n\u2705 \ub2e4\uc74c \ub2e8\uacc4\n1. Drive\uc5d0\uc11c \uc774\ubbf8\uc9c0 \ud655\uc778\n2. Genspark R2V\ub85c \ud074\ub9bd \uc0dd\uc131\n3. CapCut\uc5d0\uc11c .srt \uc790\ub9c9 \uc784\ud3ec\ud2b8 \ud6c4 \ud3b8\uc9d1\n4. BGM \ucd94\uac00 \ud6c4 \uc5c5\ub85c\ub4dc",
        "additionalFields": {}
      },
      "id": "node-telegram",
      "name": "Telegram - \uc644\ub8cc \uc54c\ub9bc",
      "type": "n8n-nodes-base.telegram",
      "typeVersion": 1.2,
      "position": [
        2000,
        300
      ],
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      }
    }
  ],
  "connections": {
    "\ub9e4\uc77c \uc624\uc804 9\uc2dc \ud2b8\ub9ac\uac70": {
      "main": [
        [
          {
            "node": "Claude - \uc2a4\ud06c\ub9bd\ud2b8 \uc0dd\uc131",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Claude - \uc2a4\ud06c\ub9bd\ud2b8 \uc0dd\uc131": {
      "main": [
        [
          {
            "node": "\uc2a4\ud06c\ub9bd\ud2b8 \ud30c\uc2f1 + \uc52c \ubd84\ub9ac",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\uc2a4\ud06c\ub9bd\ud2b8 \ud30c\uc2f1 + \uc52c \ubd84\ub9ac": {
      "main": [
        [
          {
            "node": "Gemini - \uc774\ubbf8\uc9c0 \uc0dd\uc131",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Gemini - \uc774\ubbf8\uc9c0 \uc0dd\uc131": {
      "main": [
        [
          {
            "node": "\uc774\ubbf8\uc9c0 \ucd94\ucd9c",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\uc774\ubbf8\uc9c0 \ucd94\ucd9c": {
      "main": [
        [
          {
            "node": "Google Drive - \uc774\ubbf8\uc9c0 \uc800\uc7a5",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Drive - \uc774\ubbf8\uc9c0 \uc800\uc7a5": {
      "main": [
        [
          {
            "node": "\ub9c8\uc9c0\ub9c9 \uc52c?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\ub9c8\uc9c0\ub9c9 \uc52c?": {
      "main": [
        [
          {
            "node": "Google Drive - \uc790\ub9c9 \uc800\uc7a5",
            "type": "main",
            "index": 0
          },
          {
            "node": "BGM \ub9e4\uce6d",
            "type": "main",
            "index": 0
          }
        ],
        []
      ]
    },
    "Google Drive - \uc790\ub9c9 \uc800\uc7a5": {
      "main": [
        [
          {
            "node": "Telegram - \uc644\ub8cc \uc54c\ub9bc",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "BGM \ub9e4\uce6d": {
      "main": [
        [
          {
            "node": "Telegram - \uc644\ub8cc \uc54c\ub9bc",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  },
  "staticData": null,
  "tags": [
    "\uc218\ub2ec\uc774",
    "\uc1fc\uce20\uc790\ub3d9\ud654"
  ],
  "triggerCount": 1,
  "updatedAt": "2026-05-19T00:00:00.000Z",
  "versionId": "1"
}

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.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

수달 쇼츠 자동화 워크플로우. Uses httpRequest, googleDrive, telegram. Scheduled trigger; 10 nodes.

Source: https://github.com/sjeong722/EDUTECH/blob/61c19739fd4c645e76f9bf21923d7770a8b1d3b6/otter_shorts_automation/otter_shorts_workflow.json — 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

This workflow runs daily at 9 AM, uses Perplexity to compile vaping industry news, optionally captures article screenshots via Browserless, and generates a HeyGen avatar video from a template. It then

Telegram, Google Drive, HTTP Request
Slack & Telegram

MindFrame Psychology - FREE Complete Workflow. Uses httpRequest, googleDrive, telegram. Scheduled trigger; 25 nodes.

HTTP Request, Google Drive, Telegram
Slack & Telegram

Renta Vehículos Workflow. Uses telegram, telegramTrigger, googleDrive, httpRequest. Scheduled trigger; 10 nodes.

Telegram, Telegram Trigger, Google Drive +2
Slack & Telegram

Auto Hunt. Uses httpRequest, googleSheets, rssFeedRead, telegram. Scheduled trigger; 78 nodes.

HTTP Request, Google Sheets, RSS Feed Read +1
Slack & Telegram

Auto-Hunt. Uses httpRequest, googleSheets, rssFeedRead, telegram. Scheduled trigger; 78 nodes.

HTTP Request, Google Sheets, RSS Feed Read +1