{
  "id": 5420,
  "name": "Edit & deliver images with DALL-E 2, Google Drive & Telegram messaging",
  "description": "## \ud83c\udfa8 AI Image Editor with Form Upload + Telegram Delivery \ud83d\ude80\n\nWho\u2019s it for? \ud83d\udc65\n\nThis workflow is built for content creators, social media managers, designers, and agencies who need fast, AI-powered image editing without the hassle. Whether you're batch-editing for clients or spicing up personal projects, this tool gets it done \u2014 effortlessly.\n\n## What it does \ud83d\udee0\ufe0f\n\nA seamless pipeline that:\n\n\ud83d\udce5 Accepts uploads + prompts via a clean form\n\u2601\ufe0f Saves images to Google Drive automatically\n\ud83e\udde0 Edits images with OpenAI\u2019s image API\n\ud83d\udcc1 Converts results to downloadable PNGs\n\ud83d\udcec Delivers the final image instantly via Telegram\nPerfect for AI-enhanced workflows that need speed, structure, and simplicity.\n\n## How it works \u2699\ufe0f\n\nUser Uploads: Fill a form with an image + editing prompt\nCloud Save: Auto-upload to your Google Drive folder\nAI Editing: OpenAI processes the image with your prompt\nConvert & Format: Image saved as PNG\nTelegram Delivery: Final result sent straight to your chat \ud83d\udcac\nYou\u2019ll need \u2705\n\n\ud83d\udd11 OpenAI API key\n\ud83d\udcc2 Google Drive OAuth2 setup\n\ud83e\udd16 Telegram bot token & chat ID\n\u2699\ufe0f n8n instance (self-hosted or cloud)\nSetup in 4 Easy Steps \ud83d\udee0\ufe0f\n\n## 1. Connect APIs\n\nAdd OpenAI, Google Drive, and Telegram credentials to n8n\nStore keys securely (avoid hardcoding!)\n## 2. Configure Settings\n\nSet Google Drive folder ID\nAdd Telegram chat ID\nTweak image size (default: 1024\u00d71024)\n## 3. Deploy the Form\n\nAdd a Webhook Trigger node\nTest with a sample image\nShare the form link with users \ud83c\udfaf\n4. Fine-Tune Variables\nIn the Set node, customize:\n\n\ud83d\udcd0 Image size\n\ud83d\udcc1 Folder path\n\ud83d\udcf2 Delivery options\n\u23f1\ufe0f Timeout duration\nWant to customize more? \ud83c\udf9b\ufe0f\n\n\ud83d\uddbc\ufe0f Image Settings\n\nChange size (e.g. 512x512 or 2048x2048)\nUpdate the model (when new versions drop)\n\ud83d\udcc2 Storage\n\nAuto-organize files by date/category\nAdd dynamic file names using n8n expressions\n\ud83d\udce4 Delivery\n\nSwap Telegram with Slack, email, Discord\nAdd multiple delivery channels\nInclude image prompt or metadata in messages\n\ud83d\udcdd Form Upgrades\n\nAdd fields for advanced editing\nValidate file types (e.g. PNG/JPEG only)\nShow a progress bar for long edits\n\u26a1 Advanced Features\n\nAdd error handling or retry flows\nSupport batch editing\nInclude approvals or watermarking before delivery\n\u26a0\ufe0f Notes & Best Practices\n\u2705 Check OpenAI credit balance\n\ud83d\uddbc\ufe0f Test with different image sizes/types\n\u23f1\ufe0f Adjust timeout settings for larger files\n\ud83d\udd10 Always secure your API keys\n",
  "categories": [
    {
      "id": 31,
      "name": "Content Creation"
    },
    {
      "id": 51,
      "name": "Multimodal AI"
    }
  ],
  "totalViews": 686,
  "createdAt": "2025-06-28T01:46:29.266Z",
  "workflow": {
    "id": "e2a9WLWDqS85I1AX",
    "meta": {
      "instanceId": "2000c64071c20843606b95c63795bb0797c41036047055a6586498e855b96efc"
    },
    "name": "Edit Images with OPEN AI",
    "tags": [],
    "nodes": [
      {
        "id": "0b9585d8-e520-4ed2-9c63-de16fdcfdf50",
        "name": "\ud83d\ude80 Form Submission Trigger",
        "type": "n8n-nodes-base.formTrigger",
        "position": [
          380,
          280
        ],
        "webhookId": "f9d60b5f-0a09-4654-a840-84a0f745321e",
        "parameters": {
          "options": {},
          "formTitle": "AI Image Editor",
          "formFields": {
            "values": [
              {
                "fieldType": "file",
                "fieldLabel": "image",
                "multipleFiles": false,
                "requiredField": true
              },
              {
                "fieldLabel": "prompt",
                "placeholder": "Describe the edits you want (e.g., 'remove background', 'add sunglasses', 'change to winter scene')",
                "requiredField": true
              }
            ]
          },
          "formDescription": "Upload your image and describe the edits you want to make. Our AI will process your image and deliver the results instantly via Telegram."
        },
        "typeVersion": 2.2
      },
      {
        "id": "8fcc87f1-f2c0-4bbd-b1be-3baf1f154f67",
        "name": "\u2699\ufe0f Configuration Variables",
        "type": "n8n-nodes-base.set",
        "position": [
          640,
          280
        ],
        "parameters": {
          "options": {},
          "assignments": {
            "assignments": [
              {
                "id": "google_drive_folder_id",
                "name": "google_drive_folder_id",
                "type": "string",
                "value": "YOUR_GOOGLE_DRIVE_FOLDER_ID"
              },
              {
                "id": "telegram_chat_id",
                "name": "telegram_chat_id",
                "type": "string",
                "value": "YOUR_TELEGRAM_CHAT_ID"
              },
              {
                "id": "image_size",
                "name": "image_size",
                "type": "string",
                "value": "1024x1024"
              },
              {
                "id": "openai_model",
                "name": "openai_model",
                "type": "string",
                "value": "dall-e-2"
              }
            ]
          }
        },
        "typeVersion": 3.4
      },
      {
        "id": "877c3e0f-8566-438c-bf69-8e7ccdb9dfe3",
        "name": "\ud83d\udcc1 Upload Original to Drive",
        "type": "n8n-nodes-base.googleDrive",
        "position": [
          880,
          280
        ],
        "parameters": {
          "name": "=original-{{ $now.format('yyyy-MM-dd-HHmmss') }}.png",
          "driveId": {
            "__rl": true,
            "mode": "list",
            "value": "My Drive"
          },
          "options": {},
          "folderId": {
            "__rl": true,
            "mode": "id",
            "value": "={{ $('\u2699\ufe0f Configuration Variables').item.json.google_drive_folder_id }}"
          },
          "inputDataFieldName": "image"
        },
        "typeVersion": 3
      },
      {
        "id": "4742b2b8-5c56-468f-98b2-b1f2ea908702",
        "name": "\ud83d\udce5 Download for Processing",
        "type": "n8n-nodes-base.googleDrive",
        "position": [
          1140,
          280
        ],
        "parameters": {
          "fileId": {
            "__rl": true,
            "mode": "id",
            "value": "={{ $json.id }}"
          },
          "options": {},
          "operation": "download"
        },
        "typeVersion": 3
      },
      {
        "id": "c8008016-1d32-415b-a59b-0858d8f5887e",
        "name": "\ud83c\udfa8 AI Image Editor",
        "type": "n8n-nodes-base.httpRequest",
        "position": [
          1380,
          280
        ],
        "parameters": {
          "url": "https://api.openai.com/v1/images/edits",
          "method": "POST",
          "options": {
            "timeout": 60000
          },
          "sendBody": true,
          "contentType": "multipart-form-data",
          "authentication": "genericCredentialType",
          "bodyParameters": {
            "parameters": [
              {
                "name": "image",
                "parameterType": "formBinaryData",
                "inputDataFieldName": "data"
              },
              {
                "name": "prompt",
                "value": "={{ $('\ud83d\ude80 Form Submission Trigger').item.json.prompt }}"
              },
              {
                "name": "model",
                "value": "={{ $('\u2699\ufe0f Configuration Variables').item.json.openai_model }}"
              },
              {
                "name": "size",
                "value": "={{ $('\u2699\ufe0f Configuration Variables').item.json.image_size }}"
              },
              {
                "name": "n",
                "value": "1"
              }
            ]
          },
          "genericAuthType": "httpHeaderAuth"
        },
        "typeVersion": 4.2
      },
      {
        "id": "5c8753f1-43cf-45d5-a984-69232a14adac",
        "name": "\ud83d\udd04 Convert to File",
        "type": "n8n-nodes-base.convertToFile",
        "position": [
          1640,
          280
        ],
        "parameters": {
          "options": {
            "fileName": "=edited-{{ $now.format('yyyy-MM-dd-HHmmss') }}.png",
            "mimeType": "image/png"
          },
          "operation": "toBinary",
          "sourceProperty": "data[0].url"
        },
        "typeVersion": 1.1
      },
      {
        "id": "dd69866a-1439-4ad7-8e20-5e6eeccb3e2e",
        "name": "\ud83d\udcf1 Send to Telegram",
        "type": "n8n-nodes-base.telegram",
        "position": [
          1880,
          280
        ],
        "webhookId": "9b429508-63ad-471c-b8b5-ce71400ac43e",
        "parameters": {
          "chatId": "={{ $('\u2699\ufe0f Configuration Variables').item.json.telegram_chat_id }}",
          "operation": "sendPhoto",
          "binaryData": true,
          "additionalFields": {}
        },
        "typeVersion": 1.2
      },
      {
        "id": "14fd976d-849b-4b6c-b4f7-bb12d21da68d",
        "name": "Sticky Note",
        "type": "n8n-nodes-base.stickyNote",
        "position": [
          -200,
          40
        ],
        "parameters": {
          "width": 569,
          "height": 1304,
          "content": "# \ud83c\udfa8 AI Image Editor Workflow\n\n**Created by:** David Olusola\n\n## \ud83d\udccb What This Workflow Does\n\nThis automation creates a complete AI image editing pipeline that:\n- \u2705 Provides a user-friendly web form for image uploads\n- \u2705 Stores original images in Google Drive\n- \u2705 Processes images through OpenAI's image editing API  \n- \u2705 Delivers edited results instantly via Telegram\n\n## \ud83d\udee0\ufe0f Setup Requirements\n\n1. **OpenAI API Key** - Add to HTTP Request credentials\n2. **Google Drive OAuth** - For file storage\n3. **Telegram Bot** - For result delivery\n4. **Configuration Variables** - Update the yellow node with your IDs\n\n## \u2699\ufe0f Configuration Steps\n\n1. **Update Configuration Variables node:**\n   - `google_drive_folder_id`: Your Google Drive folder ID\n   - `telegram_chat_id`: Your Telegram chat ID\n   - `image_size`: Desired output size (default: 1024x1024)\n   - `openai_model`: AI model to use (default: dall-e-2)\n\n2. **Set up credentials:**\n   - OpenAI API in \"AI Image Editor\" node\n   - Google Drive OAuth in both Drive nodes\n   - Telegram Bot in \"Send to Telegram\" node\n\n3. **Test the workflow:**\n   - Deploy and get the form URL\n   - Upload a test image with editing prompt\n   - Check Telegram for the result\n\n## \ud83c\udfaf Example Prompts\n- \"Remove the background\"\n- \"Add sunglasses to the person\"\n- \"Change the sky to sunset\"\n- \"Make it look like a cartoon\"\n\n## \ud83d\udd27 Customization Options\n- Change image dimensions in config\n- Modify file naming conventions\n- Add error handling nodes\n- Implement batch processing\n- Add multiple delivery channels"
        },
        "typeVersion": 1
      },
      {
        "id": "e8b0837c-bd0e-4184-a42a-13ce73837e29",
        "name": "Sticky Note1",
        "type": "n8n-nodes-base.stickyNote",
        "position": [
          280,
          160
        ],
        "parameters": {
          "color": 7,
          "width": 200,
          "height": 308,
          "content": "\ud83d\udca1 **STEP 1: Form Submission**\n\nUser uploads image and provides editing instructions through web form. The form validates file type and requires both image and prompt."
        },
        "typeVersion": 1
      },
      {
        "id": "04947555-cd06-4c6c-9f01-43aab9dcd821",
        "name": "Sticky Note2",
        "type": "n8n-nodes-base.stickyNote",
        "position": [
          540,
          160
        ],
        "parameters": {
          "color": 3,
          "width": 200,
          "height": 248,
          "content": "\u2699\ufe0f **STEP 2: Configuration**\n\nSets up all workflow variables that users need to customize. Update these values before first use!"
        },
        "typeVersion": 1
      },
      {
        "id": "4f504b1e-73c9-4d62-b7bf-41a83087d68a",
        "name": "Sticky Note3",
        "type": "n8n-nodes-base.stickyNote",
        "position": [
          780,
          160
        ],
        "parameters": {
          "color": 6,
          "width": 200,
          "height": 248,
          "content": "\ud83d\udcc1 **STEP 3: Backup Storage**\n\nUploads original image to Google Drive with timestamp for organization and backup purposes."
        },
        "typeVersion": 1
      },
      {
        "id": "e065914a-070c-48bd-ac65-e9c666478e78",
        "name": "Sticky Note4",
        "type": "n8n-nodes-base.stickyNote",
        "position": [
          1040,
          160
        ],
        "parameters": {
          "color": 3,
          "width": 200,
          "height": 248,
          "content": "\ud83d\udce5 **STEP 4: Prepare for AI**\n\nDownloads the image from Drive to prepare it for OpenAI processing in the correct format."
        },
        "typeVersion": 1
      },
      {
        "id": "0a9ffa00-4432-497d-98cb-d74e9320fcc7",
        "name": "Sticky Note5",
        "type": "n8n-nodes-base.stickyNote",
        "position": [
          1280,
          160
        ],
        "parameters": {
          "color": 6,
          "width": 200,
          "height": 248,
          "content": "\ud83c\udfa8 **STEP 5: AI Magic**\n\nSends image and prompt to OpenAI's image editing API. Uses DALL-E model for high-quality results."
        },
        "typeVersion": 1
      },
      {
        "id": "30d577e2-9c74-46b9-b62e-7b7a24aca423",
        "name": "Sticky Note6",
        "type": "n8n-nodes-base.stickyNote",
        "position": [
          1540,
          160
        ],
        "parameters": {
          "color": 2,
          "width": 200,
          "height": 268,
          "content": "\ud83d\udd04 **STEP 6: File Conversion**\n\nConverts the AI response to a downloadable PNG file with proper naming and metadata."
        },
        "typeVersion": 1
      },
      {
        "id": "97a064c2-60cb-4e8c-bfda-d81356c7918c",
        "name": "Sticky Note7",
        "type": "n8n-nodes-base.stickyNote",
        "position": [
          1780,
          160
        ],
        "parameters": {
          "color": 6,
          "width": 200,
          "height": 228,
          "content": "\ud83d\udcf1 **STEP 7: Instant Delivery**\n\nSends the edited image to Telegram with prompt details and timestamp for easy identification."
        },
        "typeVersion": 1
      }
    ],
    "active": false,
    "pinData": {},
    "settings": {
      "executionOrder": "v1"
    },
    "versionId": "9dce616c-0e79-4fea-b905-50aa27e1f0a8",
    "connections": {
      "\ud83c\udfa8 AI Image Editor": {
        "main": [
          [
            {
              "node": "\ud83d\udd04 Convert to File",
              "type": "main",
              "index": 0
            }
          ]
        ]
      },
      "\ud83d\udd04 Convert to File": {
        "main": [
          [
            {
              "node": "\ud83d\udcf1 Send to Telegram",
              "type": "main",
              "index": 0
            }
          ]
        ]
      },
      "\ud83d\udce5 Download for Processing": {
        "main": [
          [
            {
              "node": "\ud83c\udfa8 AI Image Editor",
              "type": "main",
              "index": 0
            }
          ]
        ]
      },
      "\ud83d\ude80 Form Submission Trigger": {
        "main": [
          [
            {
              "node": "\u2699\ufe0f Configuration Variables",
              "type": "main",
              "index": 0
            }
          ]
        ]
      },
      "\ud83d\udcc1 Upload Original to Drive": {
        "main": [
          [
            {
              "node": "\ud83d\udce5 Download for Processing",
              "type": "main",
              "index": 0
            }
          ]
        ]
      },
      "\u2699\ufe0f Configuration Variables": {
        "main": [
          [
            {
              "node": "\ud83d\udcc1 Upload Original to Drive",
              "type": "main",
              "index": 0
            }
          ]
        ]
      }
    }
  },
  "workflowInfo": {
    "nodeCount": 15,
    "nodeTypes": {
      "n8n-nodes-base.set": {
        "count": 1
      },
      "n8n-nodes-base.telegram": {
        "count": 1
      },
      "n8n-nodes-base.stickyNote": {
        "count": 8
      },
      "n8n-nodes-base.formTrigger": {
        "count": 1
      },
      "n8n-nodes-base.googleDrive": {
        "count": 2
      },
      "n8n-nodes-base.httpRequest": {
        "count": 1
      },
      "n8n-nodes-base.convertToFile": {
        "count": 1
      }
    }
  },
  "nodes": [
    "\ud83d\ude80 Form Submission Trigger",
    "\u2699\ufe0f Configuration Variables",
    "\ud83d\udcc1 Upload Original to Drive",
    "\ud83d\udce5 Download for Processing",
    "\ud83c\udfa8 AI Image Editor",
    "\ud83d\udd04 Convert to File",
    "\ud83d\udcf1 Send to Telegram",
    "Sticky Note",
    "Sticky Note1",
    "Sticky Note2",
    "Sticky Note3",
    "Sticky Note4",
    "Sticky Note5",
    "Sticky Note6",
    "Sticky Note7"
  ],
  "nodeTypes": [
    "n8n-nodes-base.httpRequest",
    "n8n-nodes-base.convertToFile",
    "n8n-nodes-base.stickyNote",
    "n8n-nodes-base.telegram",
    "n8n-nodes-base.formTrigger",
    "n8n-nodes-base.set",
    "n8n-nodes-base.googleDrive"
  ]
}