ThumbAPI logoThumbAPI
Automation

n8n Thumbnail Automation Workflow — Step by Step

Aldin Kozica
Aldin Kozica
4 min read
n8n Thumbnail Automation Workflow — Step by Step — ThumbAPI Blog

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

  1. Receives a video title as input (from a form, webhook, spreadsheet, or manual trigger)
  2. Sends a POST request to the ThumbAPI generate endpoint
  3. Decodes the base64 image response
  4. Saves the thumbnail to disk or uploads it to a destination of your choice (Google Drive, S3, YouTube)
  5. Logs the result

The whole flow runs in under 30 seconds.

Prerequisites

  • n8n instance (self-hosted or cloud at n8n.io)
  • ThumbAPI API key (get one free here)
  • 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:

  1. Replace the Manual Trigger with a Google Sheets node (Operation: Read Rows)
  2. Add a Split In Batches node to process one row at a time
  3. Connect to the HTTP Request node — use ={{ $json["Title"] }} to reference the sheet column
  4. 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 (200 generations), each thumbnail costs about $0.25. For a channel publishing three videos per week, that's roughly $3/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.

Aldin Kozica

Written by

Aldin Kozica

Full-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.

Generate Thumbnails With an API

Try ThumbAPI free. 5 thumbnail generations per month, no credit card required. One API call, production-ready output.