This workflow corresponds to n8n.io template #6985 — we link there as the canonical source.
This workflow follows the Editimage → 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 →
{
"meta": {
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "41c3bd43-1ed6-4434-a9d7-0eb8acd3e063",
"name": "Assign parameters",
"type": "n8n-nodes-base.set",
"position": [
-1240,
60
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "b836ba12-262a-4fed-a31d-9e2f6514137a",
"name": "startUrls",
"type": "array",
"value": "=[\n \"{{ $json['Youtube URL'] }}\" \n ]"
},
{
"id": "c96b80ed-077b-4eaa-a371-77127ef5ee4b",
"name": "",
"type": "string",
"value": ""
}
]
}
},
"typeVersion": 3.4
},
{
"id": "1107a130-42e7-4234-95d7-c72fa327e17c",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1460,
-280
],
"parameters": {
"color": 6,
"width": 380,
"height": 660,
"content": "### \ud83d\udd27 Step-by-Step Setup\n\n#### 1\ufe0f\u20e3 Form & Parameter Assignment\n- **Node**: `Form Trigger`\n- **How it works**: Collects the YouTube URL via a form embedded in your n8n instance.\n- **API Required**: None\n- **Additional Node**: `Set`\n - Converts the single input URL into the format Apify expects: an array of `{ url }` objects."
},
"typeVersion": 1
},
{
"id": "19f794fc-7a7e-4c04-b413-ddcc16a58d3a",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1060,
-280
],
"parameters": {
"width": 420,
"height": 660,
"content": "#### 2\ufe0f\u20e3 Apify Actors for Data Extraction\n- **Node**: `HTTP Request (Query Metadata)`\n - **URL**: `https://api.apify.com/v2/acts/streamers~youtube-scraper/run-sync-get-dataset-items`\n - **Payload**: JSON with `startUrls` array and filtering options like `maxResults`, `isHD`, etc.\n- **Node**: `HTTP Request (Query Transcript)`\n - **URL**: `https://api.apify.com/v2/acts/topaz_sharingan~Youtube-Transcript-Scraper/run-sync-get-dataset-items`\n - **Payload**: `startUrls` array\n- **API Required**: Apify API Token (via HTTP Query Auth)\n- **Notes**: You must have an Apify account and actor credits to use these actors."
},
"typeVersion": 1
},
{
"id": "b32862a1-954b-4ba0-a249-1b8ad5cc1365",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-620,
-280
],
"parameters": {
"color": 3,
"width": 560,
"height": 660,
"content": "#### 3\ufe0f\u20e3 OpenAI GPT-4o & DALL\u00b7E Generation\n- **Node**: `OpenAI (Prompt Creator)`\n - Uses the transcript and title to generate a DALL\u00b7E-compatible visual prompt.\n- **Node**: `OpenAI (Image Generator)`\n - Resource: `image`\n - Model: DALL\u00b7E (default with GPT-4o key)\n- **API Required**: OpenAI API Key\n- **Prompt Strategy**:\n```markdown\nCreate a minimalist YouTube thumbnail in an illustration style. The background should be a very simple, uncluttered setting with soft, ambient lighting that subtly reflects the essence of the transcript. The overall mood should be professional and non-cluttered, ensuring that the text overlay stands out without distraction. Do not include any text.\n```"
},
"typeVersion": 1
},
{
"id": "c9c56605-3c8a-4f89-bc21-f124ac8a835e",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-40,
-280
],
"parameters": {
"height": 660,
"content": "#### 4\ufe0f\u20e3 Resize for YouTube Format\n- **Node**: `Edit Image`\n- **Purpose**: Resize final image to 1280x720 with `ignoreAspectRatio` set to true.\n- **No API required** \u2014 this runs entirely in n8n.\n\n---"
},
"typeVersion": 1
},
{
"id": "7cd80358-da9e-45a1-865b-d4897b7fd08f",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1460,
-460
],
"parameters": {
"color": 4,
"width": 1660,
"content": "### \ud83d\udc64 Need more help? \n**Robert Breen** \nAutomation Consultant | AI Workflow Designer | n8n Expert \n\ud83d\udce7 [robert@ynteractive.com](mailto:robert@ynteractive.com) \n\ud83d\udd17 [LinkedIn](https://www.linkedin.com/in/robert-breen-29429625/)"
},
"typeVersion": 1
},
{
"id": "03071d6f-19c8-4322-81df-86976686304b",
"name": "Get URL",
"type": "n8n-nodes-base.formTrigger",
"position": [
-1400,
220
],
"parameters": {
"options": {},
"formTitle": "Get URL",
"formFields": {
"values": [
{
"fieldLabel": "Youtube URL",
"placeholder": "https://www.youtube.com/watch?v=lW5xEm7iSXk",
"requiredField": true
}
]
},
"formDescription": "get URL"
},
"typeVersion": 2.2
},
{
"id": "41fb5123-61fa-4221-ab83-7aa62f6186f2",
"name": "Query Metadata",
"type": "n8n-nodes-base.httpRequest",
"position": [
-1000,
180
],
"parameters": {
"url": "=https://api.apify.com/v2/acts/streamers~youtube-scraper/run-sync-get-dataset-items\n",
"method": "POST",
"options": {},
"jsonBody": "={\n \"downloadSubtitles\": false,\n \"hasCC\": false,\n \"hasLocation\": false,\n \"hasSubtitles\": false,\n \"is360\": false,\n \"is3D\": false,\n \"is4K\": false,\n \"isBought\": false,\n \"isHD\": false,\n \"isHDR\": false,\n \"isLive\": false,\n \"isVR180\": false,\n \"maxResultStreams\": 0,\n \"maxResults\": 1,\n \"maxResultsShorts\": 0,\n \"preferAutoGeneratedSubtitles\": false,\n \"saveSubsToKVS\": false,\n \"startUrls\": [\n {\n \"url\": \"{{ $('Get URL').item.json['Youtube URL'] }}\" ,\n \"method\": \"GET\"\n }\n ]\n} ",
"sendBody": true,
"specifyBody": "json",
"authentication": "genericCredentialType",
"genericAuthType": "httpQueryAuth"
},
"credentials": {
"httpQueryAuth": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "efbce0a6-7735-4afb-abce-60d0d3fc6d7a",
"name": "Query Transcript",
"type": "n8n-nodes-base.httpRequest",
"position": [
-800,
100
],
"parameters": {
"url": "=https://api.apify.com/v2/acts/topaz_sharingan~Youtube-Transcript-Scraper/run-sync-get-dataset-items",
"method": "POST",
"options": {},
"sendBody": true,
"authentication": "genericCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "startUrls",
"value": "={{ $('Assign parameters').item.json.startUrls }}"
}
]
},
"genericAuthType": "httpQueryAuth"
},
"credentials": {
"httpQueryAuth": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "9c564d2d-dcdd-4f2e-bd72-5edf38a0e0e4",
"name": "Image Prompt Generator",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
-580,
240
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4o",
"cachedResultName": "GPT-4O"
},
"options": {},
"messages": {
"values": [
{
"content": "=Analyze the transcript and video title below and generate a single, detailed prompt for DALL-E to create a YouTube thumbnail image. The prompt must include:\n\nCreate a minimalist YouTube thumbnail in an illustration style. The background should be a very simple, uncluttered setting with soft, ambient lighting that subtly reflects the essence of the transcript. The overall mood should be professional and non-cluttered, ensuring that the text overlay stands out without distraction. Do not include any text.\n\nTranscript: {{ $json.max_transcript }}\nVideo Title: {{ $json.videoTitle }}"
}
]
},
"jsonOutput": true
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.8
},
{
"id": "5eacaebd-8705-48cf-88c1-44704cbb737b",
"name": "Create Image",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
-240,
220
],
"parameters": {
"prompt": "={{ $json.message.content.prompt }}",
"options": {
"size": "1792x1024",
"returnImageUrls": false
},
"resource": "image"
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.8
},
{
"id": "3172d569-b188-45dd-879f-c1ea5c0e7d8c",
"name": "Resize Image",
"type": "n8n-nodes-base.editImage",
"position": [
20,
200
],
"parameters": {
"width": 1280,
"height": 720,
"options": {
"format": "jpeg",
"fileName": "={{ $('Query Transcript').item.json.videoTitle }}"
},
"operation": "resize",
"resizeOption": "ignoreAspectRatio"
},
"typeVersion": 1
}
],
"connections": {
"Get URL": {
"main": [
[
{
"node": "Assign parameters",
"type": "main",
"index": 0
}
]
]
},
"Create Image": {
"main": [
[
{
"node": "Resize Image",
"type": "main",
"index": 0
}
]
]
},
"Resize Image": {
"main": [
[]
]
},
"Query Metadata": {
"main": [
[
{
"node": "Query Transcript",
"type": "main",
"index": 0
}
]
]
},
"Query Transcript": {
"main": [
[
{
"node": "Image Prompt Generator",
"type": "main",
"index": 0
}
]
]
},
"Assign parameters": {
"main": [
[
{
"node": "Query Metadata",
"type": "main",
"index": 0
}
]
]
},
"Image Prompt Generator": {
"main": [
[
{
"node": "Create Image",
"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.
httpQueryAuthopenAiApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This n8n workflow automatically generates a custom YouTube thumbnail using OpenAI’s DALL·E based on a YouTube video’s transcript and title. It uses Apify actors to extract video metadata and transcript, then processes the data into a prompt for DALL·E and creates a…
Source: https://n8n.io/workflows/6985/ — 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.
Product - SERP Analysis (Serper + Firecrawl). Uses formTrigger, httpRequest, googleSheets, openAi. Event-driven trigger; 40 nodes.
Product - SERP Analysis (Serper & Crawl4AI). Uses formTrigger, httpRequest, googleSheets, openAi. Event-driven trigger; 39 nodes.
Product - SERP Analysis (SerpAPI + Crawl4AI). Uses formTrigger, httpRequest, googleSheets, openAi. Event-driven trigger; 38 nodes.
This n8n template helps recruitment agencies discover active job openings, filter them based on hiring relevance, and qualify them using AI — specifically designed for semi-skilled manpower hiring use
This template shows how you can use the ChannelCrawler API alongside ChatGPT (or any LLM) to generate google slides using images and texts received from the API A user inputs the link to the Youtube c