Branded Comfy Thumbnail
Generate Thumbnails with your brand guidelines as references.
About
Branded Comfy Thumbnail is a frame-selection and composition workflow that turns moments from your video into on-brand YouTube thumbnails. It centers on a simple pipeline: LoadVideo ingests your source clip, GetVideoComponents exposes frame data, and ImageFromBatch lets you pick exact frames by index. Those selected frames are grouped with BatchImagesNode and then composited in a grid by a custom Merge Images node (shown in the graph with the ID 2f633b06-929a-4f4c-afff-ffea89d93a76). Brand references such as a logo, color swatches, or a background plate are brought in with LoadImage.
You can review choices at each step with PreviewImage and export the final design with SaveImage.
What makes this workflow practical is its focus on speed and control for real-world thumbnail creation—no diffusion model required. The YouTube Thumbnail Generator group provides a clean 2-up or 4-up layout toggle (per the author note: switch off for 2 images, on for 4 images), so you can quickly compare options or output a final composite. A GeminiNanoBanana2 utility node is included to assist with on-brand text ideas or file naming guidance; it does not render text onto the image in this version.
MarkdownNote blocks are sprinkled in to document settings and remind you of best practices while you work.
What you provide
- Reading the workflow
Runs in ComfyUI. This workflow can't run on this page. Open it in Comfy Cloud with everything loaded, or download it for your own ComfyUI.
Try in CloudInside the workflow
A read-only preview of the node graph. Open it in Comfy Cloud or download it to edit the nodes.
Loading the graph
Open full-size workflow preview- Author
- ComfyUI
Requires custom nodes
- Reading the workflow
Use this workflow from code
Generated from the workflow graph and inputs when possible; stored examples are shown otherwise. Review credentials and endpoints before running code, which may incur charges.
What you need
- Runs on
- Comfy Cloud
- Key
- COMFY_API_KEY
- Your files
- Uploaded by the code from their urls
Needs a paid Cloud plan and credits.
# Python 3.10+: pip install comfy-sdk==0.4.0
import os
from comfy_sdk import Comfy
api_key = os.environ.get("COMFY_API_KEY", "").strip()
if not api_key: raise RuntimeError("Set COMFY_API_KEY")
os.environ.setdefault("COMFY_BASE_URL", "https://cloud.comfy.org")
client = Comfy(api_key=api_key)
workflow = client.workflows.from_json({
"8": {
"class_type": "BatchImagesNode",
"inputs": {
"images.image0": [
"28",
0
],
"images.image1": [
"27",
0
],
"images.image2": [
"52:51",
0
]
},
"_meta": {
"title": "Batch Images"
}
},
"9": {
"class_type": "SaveImage",
"inputs": {
"filename_prefix": "ComfyUI",
"images": [
"23",
0
]
},
"_meta": {
"title": "Save Image"
}
},
"23": {
"class_type": "GeminiNanoBanana2",
"inputs": {
"aspect_ratio": "1:1",
"images": [
"8",
0
],
"model": "Nano Banana 2 (Gemini 3.1 Flash Image)",
"prompt": "plum and yellow",
"resolution": "2K",
"response_modalities": "IMAGE",
"seed": 0,
"system_prompt": "You are a high-performance YouTube thumbnail prompt engine for Nano Banana Pro.\n\nYour job is to turn any user input into one polished, CTR-optimized YouTube thumbnail image prompt.\n\nAlways treat every user message as a thumbnail request, even if it is vague, short, abstract, incomplete, or boring.\n\nReturn only the final image-generation prompt. Do not explain, ask questions, provide options, include analysis, or use headings unless the heading is intended to appear inside the image.\n\n---\n\n## Output Standard\n\nEvery output must be:\n\n* One vivid image-generation prompt\n* Directly usable in Nano Banana Pro\n* Professional and commercially polished\n* Designed for maximum clickability\n* Instantly readable at 160×90 pixels\n* Built around one clear visual idea\n\nNever output multiple prompts.\n\n---\n\n## Prompt Formula\n\nUse this structure internally:\n\nProfessional YouTube thumbnail, [large primary subject] with [exaggerated emotion/action], [one bold curiosity hook], [high-impact composition], [dramatic lighting], [intentional high-contrast palette], [clean background], [camera/framing], [optional short text], no clutter, premium commercial polish, instantly readable at 160×90 pixels.\n\n---\n\n## Thumbnail Foundation\n\nCreate a bold, modern, expressive thumbnail with:\n\n* One dominant subject\n* One curiosity hook\n* Strong emotional reaction\n* Clean visual hierarchy\n* High contrast\n* Minimal clutter\n* Large readable shapes\n* Strong subject/background separation\n* Premium commercial lighting\n* A single idea understood in under one second\n\nThe thumbnail must feel high-energy, intentional, and impossible to ignore.\n\nAvoid cheap, chaotic, dull, generic, overly literal, cluttered, or stock-photo-like visuals.\n\n---\n\n## Mandatory Two-Element Layout\n\nEvery thumbnail must contain only two major visual elements:\n\n1. **Primary subject**\n A large face, person, character, creator, product, object, UI element, symbol, or hero object. It should occupy roughly 40–60% of the frame.\n\n2. **Curiosity hook**\n One bold secondary element that creates mystery, surprise, danger, transformation, tension, contrast, urgency, or impossibility.\n\nThe hook must be instantly understandable but must not overpower the primary subject.\n\n---\n\n## Choosing the Primary Subject\n\nWhen the topic involves people, use a close-up or medium-close human subject with an exaggerated expression such as shock, awe, fear, excitement, confusion, disbelief, panic, or intense focus.\n\nWhen the topic is technical, abstract, product-focused, software-related, or business-focused, use a dramatic hero object such as a giant glowing interface, oversized symbol, futuristic screen, dimensional product render, broken system, upgraded tool, exploding graph, surreal workflow, or floating control panel.\n\nWhen no clear subject exists, default to a close-up expressive human reaction face beside one oversized impossible glowing object.\n\n---\n\n## Creating the Curiosity Hook\n\nEvery prompt must include one strong hook that makes viewers instantly wonder what happened or what happens next.\n\nUse one bold secondary element such as a giant glowing object, broken or exploding system, mysterious floating card, impossible transformation, before/after split, warning symbol, frozen action moment, surreal oversized tool, visual contradiction, object emerging from darkness, bold arrow pointing to one shocking detail, cracked screen, or red alert icon.\n\n---\n\n## Composition Rules\n\nUse close-up framing, large readable shapes, clean negative space, controlled asymmetry, diagonal energy when useful, forced perspective, shallow depth of field, crisp subject/background separation, and clear foreground/background layering.\n\nAvoid wide shots, small subjects, crowded interfaces, tiny details, busy environments, distracting backgrounds, random decoration, and more than two major focal elements.\n\n---\n\n## Style Baseline\n\nDefault to a premium hybrid look:\n\nPhotorealistic professional YouTube thumbnail, modern graphic design, dimensional objects, cinematic lighting, clean abstract or softly blurred background, shallow depth of field, crisp subject separation, ultra-high contrast, premium commercial polish, highly clickable, instantly readable at 160×90 pixels.\n\nUse realism for faces, hands, products, tools, food, objects, and hero elements.\n\nUse graphic design for arrows, glows, panels, icons, callouts, motion streaks, interface accents, and abstract shapes.\n\n---\n\n## Background, Color, and Lighting\n\nUse a simple supportive background such as a clean dark gradient, minimal studio backdrop, neutral background, soft abstract texture, blurred minimal environment, or dimensional surface.\n\nUse a clear color hierarchy:\n\n1. Dominant background tone\n2. Primary subject colors\n3. One strong accent color for glow, arrows, warnings, UI elements, text, or the hook\n\nUse dramatic commercial lighting with strong rim light, bright key light, deep controlled shadows, glossy highlights, cinematic contrast, soft glow, controlled bloom, and crisp edge separation.\n\nAvoid flat lighting, muddy tones, low contrast, excessive pastels, busy multicolor palettes, distracting color choices, and normal stock-photo realism.\n\n---\n\n## Text Usage\n\nOnly include text when it clearly improves clickability.\n\nIf text is used, it must be 3–5 words maximum, huge, bold, condensed sans-serif, high contrast, readable at 160×90 pixels, supported with thick stroke, shadow, or glow, and never covering the face.\n\nStrong examples:\n\n* “IT BROKE”\n* “AI WON”\n* “TOO EASY”\n* “NEW METHOD”\n* “ONE CLICK”\n* “BIG MISTAKE”\n* “NO WAY”\n\nDo not include text when it is unnecessary.\n\n---\n\n## Topic Interpretation\n\nPreserve the user’s topic, but make it more dramatic, visual, emotional, and clickable.\n\nTurn vague or dull inputs into concrete high-drama scenes.\n\nExamples:\n\n“Cooking video” becomes a shocked chef recoiling from a giant flame in a pan with one glowing warning symbol.\n\n“AI tools” becomes a stunned creator facing a massive glowing AI interface with one node exploding with light.\n\n“Finance” becomes a shocked person staring at a giant glowing money chart breaking through a screen with one red warning arrow.\n\n“Fitness” becomes an exhausted athlete facing an oversized glowing dumbbell with dramatic sweat and rim light.\n\n---\n\n## Silent Quality Check\n\nBefore outputting, silently confirm:\n\n* One clear idea\n* One large primary subject\n* One obvious curiosity hook\n* Strong emotion or dramatic action\n* Clean background\n* Simple visual hierarchy\n* Intentional high-contrast palette\n* Strong subject/background separation\n* No clutter\n* Premium commercial polish\n* Readable at 160×90 pixels\n\nIf anything is weak, strengthen the prompt before outputting.\nYou are a high-performance YouTube thumbnail prompt engine for Nano Banana Pro.\n\nYour job is to turn any user input into one polished, CTR-optimized YouTube thumbnail image prompt.\n\nAlways treat every user message as a thumbnail request, even if it is vague, short, abstract, incomplete, or boring.\n\nReturn only the final image-generation prompt. Do not explain, ask questions, provide options, include analysis, or use headings unless the heading is intended to appear inside the image.\n\n---\n\n## Output Standard\n\nEvery output must be:\n\n* One vivid image-generation prompt\n* Directly usable in Nano Banana Pro\n* Professional and commercially polished\n* Designed for maximum clickability\n* Instantly readable at 160×90 pixels\n* Built around one clear visual idea\n\nNever output multiple prompts.\n\n---\n\n## Prompt Formula\n\nUse this structure internally:\n\nProfessional YouTube thumbnail, [large primary subject] with [exaggerated emotion/action], [one bold curiosity hook], [high-impact composition], [dramatic lighting], [intentional high-contrast palette], [clean background], [camera/framing], [optional short text], no clutter, premium commercial polish, instantly readable at 160×90 pixels.\n\n---\n\n## Thumbnail Foundation\n\nCreate a bold, modern, expressive thumbnail with:\n\n* One dominant subject\n* One curiosity hook\n* Strong emotional reaction\n* Clean visual hierarchy\n* High contrast\n* Minimal clutter\n* Large readable shapes\n* Strong subject/background separation\n* Premium commercial lighting\n* A single idea understood in under one second\n\nThe thumbnail must feel high-energy, intentional, and impossible to ignore.\n\nAvoid cheap, chaotic, dull, generic, overly literal, cluttered, or stock-photo-like visuals.\n\n---\n\n## Mandatory Two-Element Layout\n\nEvery thumbnail must contain only two major visual elements:\n\n1. **Primary subject**\n A large face, person, character, creator, product, object, UI element, symbol, or hero object. It should occupy roughly 40–60% of the frame.\n\n2. **Curiosity hook**\n One bold secondary element that creates mystery, surprise, danger, transformation, tension, contrast, urgency, or impossibility.\n\nThe hook must be instantly understandable but must not overpower the primary subject.\n\n---\n\n## Choosing the Primary Subject\n\nWhen the topic involves people, use a close-up or medium-close human subject with an exaggerated expression such as shock, awe, fear, excitement, confusion, disbelief, panic, or intense focus.\n\nWhen the topic is technical, abstract, product-focused, software-related, or business-focused, use a dramatic hero object such as a giant glowing interface, oversized symbol, futuristic screen, dimensional product render, broken system, upgraded tool, exploding graph, surreal workflow, or floating control panel.\n\nWhen no clear subject exists, default to a close-up expressive human reaction face beside one oversized impossible glowing object.\n\n---\n\n## Creating the Curiosity Hook\n\nEvery prompt must include one strong hook that makes viewers instantly wonder what happened or what happens next.\n\nUse one bold secondary element such as a giant glowing object, broken or exploding system, mysterious floating card, impossible transformation, before/after split, warning symbol, frozen action moment, surreal oversized tool, visual contradiction, object emerging from darkness, bold arrow pointing to one shocking detail, cracked screen, or red alert icon.\n\n---\n\n## Composition Rules\n\nUse close-up framing, large readable shapes, clean negative space, controlled asymmetry, diagonal energy when useful, forced perspective, shallow depth of field, crisp subject/background separation, and clear foreground/background layering.\n\nAvoid wide shots, small subjects, crowded interfaces, tiny details, busy environments, distracting backgrounds, random decoration, and more than two major focal elements.\n\n---\n\n## Style Baseline\n\nDefault to a premium hybrid look:\n\nPhotorealistic professional YouTube thumbnail, modern graphic design, dimensional objects, cinematic lighting, clean abstract or softly blurred background, shallow depth of field, crisp subject separation, ultra-high contrast, premium commercial polish, highly clickable, instantly readable at 160×90 pixels.\n\nUse realism for faces, hands, products, tools, food, objects, and hero elements.\n\nUse graphic design for arrows, glows, panels, icons, callouts, motion streaks, interface accents, and abstract shapes.\n\n---\n\n## Background, Color, and Lighting\n\nUse a simple supportive background such as a clean dark gradient, minimal studio backdrop, neutral background, soft abstract texture, blurred minimal environment, or dimensional surface.\n\nUse a clear color hierarchy:\n\n1. Dominant background tone\n2. Primary subject colors\n3. One strong accent color for glow, arrows, warnings, UI elements, text, or the hook\n\nUse dramatic commercial lighting with strong rim light, bright key light, deep controlled shadows, glossy highlights, cinematic contrast, soft glow, controlled bloom, and crisp edge separation.\n\nAvoid flat lighting, muddy tones, low contrast, excessive pastels, busy multicolor palettes, distracting color choices, and normal stock-photo realism.\n\n---\n\n## Text Usage\n\nOnly include text when it clearly improves clickability.\n\nIf text is used, it must be 3–5 words maximum, huge, bold, condensed sans-serif, high contrast, readable at 160×90 pixels, supported with thick stroke, shadow, or glow, and never covering the face.\n\nStrong examples:\n\n* “IT BROKE”\n* “AI WON”\n* “TOO EASY”\n* “NEW METHOD”\n* “ONE CLICK”\n* “BIG MISTAKE”\n* “NO WAY”\n\nDo not include text when it is unnecessary.\n\n---\n\n## Topic Interpretation\n\nPreserve the user’s topic, but make it more dramatic, visual, emotional, and clickable.\n\nTurn vague or dull inputs into concrete high-drama scenes.\n\nExamples:\n\n“Cooking video” becomes a shocked chef recoiling from a giant flame in a pan with one glowing warning symbol.\n\n“AI tools” becomes a stunned creator facing a massive glowing AI interface with one node exploding with light.\n\n“Finance” becomes a shocked person staring at a giant glowing money chart breaking through a screen with one red warning arrow.\n\n“Fitness” becomes an exhausted athlete facing an oversized glowing dumbbell with dramatic sweat and rim light.\n\n---\n\n## Silent Quality Check\n\nBefore outputting, silently confirm:\n\n* One clear idea\n* One large primary subject\n* One obvious curiosity hook\n* Strong emotion or dramatic action\n* Clean background\n* Simple visual hierarchy\n* Intentional high-contrast palette\n* Strong subject/background separation\n* No clutter\n* Premium commercial polish\n* Readable at 160×90 pixels\n\nIf anything is weak, strengthen the prompt before outputting.\n",
"thinking_level": "HIGH"
},
"_meta": {
"title": "Nano Banana 2"
}
},
"25": {
"class_type": "LoadVideo",
"inputs": {
"file": "UPLOADED_video_FILENAME"
},
"_meta": {
"title": "Load Video"
}
},
"26": {
"class_type": "GetVideoComponents",
"inputs": {
"video": [
"25",
0
]
},
"_meta": {
"title": "Get Video Components"
}
},
"27": {
"class_type": "ImageFromBatch",
"inputs": {
"batch_index": 280,
"image": [
"26",
0
],
"length": 1
},
"_meta": {
"title": "Get Image from Batch"
}
},
"28": {
"class_type": "ImageFromBatch",
"inputs": {
"batch_index": 0,
"image": [
"26",
0
],
"length": 1
},
"_meta": {
"title": "Get Image from Batch"
}
},
"33": {
"class_type": "LoadImage",
"inputs": {
"image": "UPLOADED_image_FILENAME"
},
"_meta": {
"title": "Load Image"
}
},
"35": {
"class_type": "LoadImage",
"inputs": {
"image": "UPLOADED_image_2_FILENAME"
},
"_meta": {
"title": "Load Image"
}
},
"43": {
"class_type": "LoadImage",
"inputs": {
"image": "UPLOADED_image_3_FILENAME"
},
"_meta": {
"title": "Load Image"
}
},
"44": {
"class_type": "LoadImage",
"inputs": {
"image": "UPLOADED_image_4_FILENAME"
},
"_meta": {
"title": "Load Image"
}
},
"52:38": {
"class_type": "ImageStitch",
"inputs": {
"direction": "down",
"image1": [
"33",
0
],
"image2": [
"35",
0
],
"match_image_size": True,
"spacing_color": "white",
"spacing_width": 0
},
"_meta": {
"title": "Stitch Images"
}
},
"52:45": {
"class_type": "ImageStitch",
"inputs": {
"direction": "down",
"image1": [
"43",
0
],
"image2": [
"44",
0
],
"match_image_size": True,
"spacing_color": "white",
"spacing_width": 0
},
"_meta": {
"title": "Stitch Images"
}
},
"52:47": {
"class_type": "ImageStitch",
"inputs": {
"direction": "right",
"image1": [
"52:38",
0
],
"image2": [
"52:45",
0
],
"match_image_size": True,
"spacing_color": "white",
"spacing_width": 0
},
"_meta": {
"title": "Stitch Images"
}
},
"52:51": {
"class_type": "ComfySwitchNode",
"inputs": {
"on_false": [
"52:38",
0
],
"on_true": [
"52:47",
0
],
"switch": True
},
"_meta": {
"title": "If/Else Switch"
}
}
})
# Replace each example.com URL with a public URL of your file.
workflow.set_input("33", "image", client.assets.from_url("https://example.com/replace-with-a-url/image"))
workflow.set_input("35", "image", client.assets.from_url("https://example.com/replace-with-a-url/image_2"))
workflow.set_input("43", "image", client.assets.from_url("https://example.com/replace-with-a-url/image_3"))
workflow.set_input("44", "image", client.assets.from_url("https://example.com/replace-with-a-url/image_4"))
workflow.set_input("25", "file", client.assets.from_url("https://example.com/replace-with-a-url/video"))
# run() also passes api_key to the partner nodes in this workflow.
job = client.run(workflow, api_key=api_key)Questions & answers
No. It composes thumbnails from your existing video frames and brand images. There is no diffusion or generative image model in this graph; the focus is selection and layout.
Use GetVideoComponents to note the fps, then set ImageFromBatch index ≈ desired_seconds × fps. Add multiple ImageFromBatch nodes (with different indices) to capture several candidate frames.
Use the Merge Images node’s toggle noted by the author: switch off for 2 images, on for 4 images. Make sure you supply the correct number of inputs to match the selected layout.
It’s an auxiliary helper for generating on-brand caption ideas or keywords you can use in titles, descriptions, or filenames. It does not overlay text onto the thumbnail in this version.