n8n Thumbnail Automation Workflow — Step by Step
I've built this exact workflow twice now, once for a faceless history channel I help run and once for a client who publishes three explainer videos a week. The job is simple: a new video title shows up somewhere (a Sheet, a webhook, a form), and a finished YouTube thumbnail should land in Drive without anyone opening Photoshop, Canva, or anything else.
n8n is what I reach for here because the pipeline is mostly glue between services, and writing that glue in Node would mean managing a server I don't want to manage. By the end of this guide you'll have a workflow you can trigger manually for testing, then promote to a Schedule or Sheets trigger when you're ready.
What the Workflow Does
- Receives a video title as input (from a form, webhook, spreadsheet, or manual trigger)
- Sends a POST request to the ThumbAPI generate endpoint
- Decodes the base64 image response
- Saves the thumbnail to disk or uploads it to a destination of your choice (Google Drive, S3, YouTube)
- Logs the result
The whole flow runs in under 30 seconds.
Prerequisites
- n8n instance (self-hosted or cloud at n8n.io)
- ThumbAPI API key — start free with 50 credits per month
- Basic familiarity with n8n nodes
Step 1 — Create a New Workflow
In your n8n dashboard, click New Workflow and give it a name like YouTube Thumbnail Generator.
Step 2 — Add a Trigger Node
For manual testing, use a Manual Trigger node. For production, replace this with:
- Schedule Trigger, to run at a fixed time (e.g., every morning to process the day's videos)
- Webhook, to trigger from an external CMS or publishing tool
- Google Sheets Trigger, to fire when a new row is added to a spreadsheet of video titles
Step 3 — Add a Set Node (Define Your Input)
Add a Set node after the trigger to define the video title you want to process. In production, this value would come from a spreadsheet row, a form submission, or a previous node in your pipeline.
Step 4 — Add an HTTP Request Node (Call ThumbAPI)
This is the core step. Add an HTTP Request node and configure it:
Method: POST
URL: https://api.thumbapi.dev/v1/generate
Headers:
x-api-key: YOUR_API_KEY
Content-Type: application/json
Body (JSON):
{
"title": "={{ $json.title }}",
"format": "youtube",
"imageStyle": "faceless",
"outputFormat": "webp"
}
To use a custom asset dataset for brand consistency, add the customAssetsId field:
{
"title": "={{ $json.title }}",
"format": "youtube",
"imageStyle": "faceless",
"outputFormat": "webp",
"customAssetsId": "m6XhjtZNdF0N2AFXUOiq"
}
Step 5 — Add a Code Node (Decode the Base64 Image)
The API returns a base64-encoded image. Add a Code node to decode it:
// Decode base64 thumbnail from ThumbAPI response
const imageDataUri = $input.first().json.image;
const base64Data = imageDataUri.split(",")[1];
const binaryBuffer = Buffer.from(base64Data, "base64");
return [
{
json: {
filename: "thumbnail.webp",
format: $input.first().json.format,
width: $input.first().json.dimensions.width,
height: $input.first().json.dimensions.height
},
binary: {
thumbnail: await this.helpers.prepareBinaryData(
binaryBuffer,
"thumbnail.webp",
"image/webp"
)
}
}
];
Step 6 — Save or Upload the Thumbnail
Connect one of these nodes after the Code node depending on where you want the thumbnail to go:
Option A — Save to Google Drive
Add a Google Drive node with Operation: Upload, File Name from the json output, and Binary Property set to thumbnail.
Option B — Save to Local Disk
Add a Read/Write Files from Disk node (Operation: Write File to Disk) with the output path and Binary Property set to thumbnail.
Option C — Upload Directly to YouTube
Add an HTTP Request node calling the YouTube Data API thumbnails.set endpoint with the binary data. Requires YouTube OAuth credentials configured in n8n.
Step 7 — Add an Error Handler
Connect an Error Trigger node to catch failures and notify you via Slack, email, or any other channel. Configure it to log the video title that failed, the HTTP status code, and a timestamp.
Processing Multiple Titles from a Spreadsheet
To process a batch of titles from Google Sheets:
- Replace the Manual Trigger with a Google Sheets node (Operation: Read Rows)
- Add a Split In Batches node to process one row at a time
- Connect to the HTTP Request node — use
={{ $json["Title"] }}to reference the sheet column - Add a Wait node (2 seconds) between iterations to respect rate limits
Your spreadsheet becomes the content queue. Add a row, the workflow processes it automatically.
Full Workflow Summary
Manual Trigger (or Schedule / Webhook / Google Sheets)
↓
Set Node — define title
↓
HTTP Request — POST to ThumbAPI
↓
Code Node — decode base64 image
↓
Google Drive / Read-Write Files from Disk / YouTube Upload
↓
(optional) Slack/Email notification
Total nodes: 5–7. Setup time: under 30 minutes.
Triggering from Other Workflows
If you already have an n8n workflow for content scheduling, you can call this thumbnail workflow as a sub-workflow using the Execute Workflow node. Pass the video title as an input parameter and receive the thumbnail binary as output.
This keeps your pipeline modular: the thumbnail generator becomes one reusable component in a larger automation system, and you can swap its trigger or destination without touching the rest.
Cost Per Thumbnail
At $49/month for the Pro plan (2,500 credits — roughly 250 standard 1K thumbnails), each base thumbnail costs about $0.20. For a channel publishing three videos per week, that's roughly $2.40/month in thumbnail costs.
Compare that to the hourly rate of a designer or the 45 minutes per thumbnail a creator would otherwise spend in Canva or Photoshop.
Start free with 50 credits per month and wire the workflow up in under 30 minutes.

Written by
Aldin KozicaFull-stack developer from Bosnia and Herzegovina. I built ThumbAPI because I kept watching content teams waste hours on thumbnail design when the patterns are predictable enough to automate. The API is the tool I wished existed when building content pipelines for my own projects.
Continue Reading
Build an n8n workflow that detects new YouTube uploads, generates a thumbnail with ThumbAPI, and saves it to Drive — fully automated, with batch and multi-platform patterns.
How to Automate YouTube Thumbnail Uploads — Full GuideA real walkthrough — Google Cloud OAuth2 setup, the credential wiring nobody documents, and a paste-ready workflow that pushes a ThumbAPI-generated image directly to YouTube.
How to Generate YouTube Thumbnails Automatically With an APIGenerate YouTube thumbnails automatically from a video title with a single API call. Code examples, batch patterns, and design tradeoffs for production pipelines.
How to Use a Thumbnail API With Node.js — Step-by-Step GuideA complete walkthrough for wiring a thumbnail API into a Node.js project — env setup, first request, saving files, error handling, and dropping the call inside an Express or Next.js route.
Generate Thumbnails With an API
Try ThumbAPI free. 50 credits per month, no credit card required. One API call, production-ready output.