Thumbnail Generation

Generate and edit thumbnails, swap in real faces, extract references, and compose prompts.

llms.txt Full docs for LLMs

TOOL find_outlier_references

Default entry point for a brand-new thumbnail. Searches Algrow's database for topically-similar videos with proven outlier performance and renders them as a clickable grid in the thumbnail studio widget. Requires a specific YouTube niche or video title (2+ meaningful words) — generic single words like 'thumbnail' or 'video' are rejected.

Example prompts
"Find outlier thumbnails for the niche 'AI side hustles'"
"Show me viral references for a video titled 'I survived 24 hours in a black hole'"
ParameterTypeDefaultDescription
topicstringrequiredAlgrow semantic search query — must be a specific YouTube niche or video title (2+ meaningful words). Pass the exact same string as title when both are present.
titlestringnullThe user's video title. The widget pre-fills its TITLE field with this. Always pass when known.
content_typestringlongformlongform or shorts. Default longform.
limitinteger12Max thumbnails per page. Default 12, capped at 24.
min_outlier_scorenumber2.0Floor on outlier multiplier. Default 2.0.
pageinteger11-indexed Algrow page. Default 1.
TOOL extract_reference_from_video

Use a specific YouTube video as the reference for a new thumbnail. Pulls the video's title and best-quality thumbnail via youtubei.js and mounts the widget with the reference preselected. If user_title is passed, the widget auto-runs the full pipeline (compose engineered prompt → generate image) with stage-by-stage progress.

Example prompts
"Make a thumbnail like this video https://youtube.com/watch?v=abc123 for my video 'How I lost 50 lbs'"
"Use this YouTube video as the reference for a new thumbnail"
ParameterTypeDefaultDescription
url_or_idstringrequiredYouTube URL or bare 11-character video ID.
user_titlestringnullThe user's NEW video title — what THEIR thumbnail is for. Always pass when known so the widget auto-runs compose + generate.
modelstringnano-banana-proImage-gen backend — nano-banana-pro (default), gpt-image-2, seedream-5.0-lite, or seedream-4.5-edit.
channel_presetstringnull
waitbooleanfalse
TOOL extract_reference_from_image

Use a direct image URL (not a YouTube video) as the reference for a new thumbnail — R2 mirrors, raw .jpg/.png/.webp URLs, screenshots the user uploaded, etc. Mounts the widget with the reference preselected and, when user_title is provided, auto-runs the full compose + generate pipeline.

Example prompts
"Use this screenshot as the reference for my thumbnail"
"Make a thumbnail in the style of this image https://example.com/foo.jpg for 'My new course'"
ParameterTypeDefaultDescription
image_urlstringrequiredDirect image URL. Must be http(s). R2 mirrors, raw .jpg / .png / .webp are all fine.
user_titlestringnullThe user's NEW video title. Widget pre-fills its title field and triggers the auto-pipeline. Always pass when known.
reference_titlestringnullOptional. What the reference image is of / what it was made for. Helps the compose step reason about WHY the reference works.
modelstringnano-banana-proImage-gen backend — nano-banana-pro (default), gpt-image-2, seedream-5.0-lite, or seedream-4.5-edit.
channel_presetstringnull
waitbooleanfalse
TOOL extract_reference_from_channel

Use a whole channel's design system as the reference. Resolves the @handle or UC id via Algrow, fetches the channel's top 10 thumbnails by view count, vision-analyzes them in parallel, and synthesizes a 'channel DNA' (palette, typography, composition, lighting, effects) plus a tailored prompt applying that DNA to the user's title. ~90–120s first time, ~5s on cache hit (30-day cache).

Example prompts
"Make a thumbnail in MrBeast's style for 'I gave away $1M to strangers'"
"Use Veritasium's design system for my new physics video"
ParameterTypeDefaultDescription
channelstringrequiredYouTube @handle (e.g. @fern-tv) or channel ID (UCxxxxxxxxxxxxxxxxxxxxxx). Leading @ is optional.
user_titlestringnullThe user's NEW video title. Channel DNA is applied to this title. Always pass when known.
modelstringnano-banana-proImage-gen backend. Default nano-banana-pro. Channel-style generates WITHOUT a reference image, so seedream-4.5-edit (img2img) is a poor fit.
TOOL generate_thumbnail

Submit a thumbnail generation request to the configured image backend (Nano Banana Pro, gpt-image-2, or a Seedream variant). Returns immediately with a task_id; the inline widget polls for the result automatically. Default aspect ratio 16:9. Accepts up to 8 reference URLs (YouTube links, bare video IDs, i.ytimg.com URLs, direct image URLs). Costs 1 credit per image regardless of model.

Example prompts
"Generate a YouTube thumbnail of a person looking shocked at a giant pile of cash"
"Make me a 16:9 thumbnail using these references and nano-banana-pro"
ParameterTypeDefaultDescription
promptstringrequiredDescribe the subject and scene — who's on camera (or what the visual is about), what's happening, key props, and any text overlay the user wants.
aspect_ratiostring16:916:9 / 9:16 / 1:1 / 4:5 / 4:3 / 3:2 / 21:9 / auto. Default 16:9.
resolutionstring2K1K / 2K / 4K. Default 2K.
reference_urlsarraynullUp to 8 reference inputs. Each can be a YouTube URL, bare video ID, i.ytimg.com URL, or direct image URL.
reference_imagesarraynullAlias for reference_urls, accepted for back-compat.
find_outliers_firstbooleanfalseAuto-pick path: fetch viral references from Algrow and use the top 3. Only set True when the user explicitly opts into auto-pick.
outlier_topicstringnullTopic to search Algrow for when find_outliers_first=True. Keep short (2–3 words).
analyze_referencesbooleantrueWhen True (default) and reference_urls are provided, the server runs Gemini vision on the references to extract a design breakdown and folds it into the prompt.
modelstringgpt-image-2Image-gen backend: gpt-image-2 (default), seedream-5.0-lite (permissive filter), seedream-4.5-edit (image-to-image), or nano-banana-pro (requires BYOK Gemini key). All models cost 1 credit per image.
use_own_keybooleantrue
fastbooleanfalse
compose_task_idstringnull
num_variantsinteger1
channel_presetstringnull
custom_instructionsstringnull
video_scriptstringnull
realisticbooleanfalse
character_refsarraynull
waitbooleanfalse
TOOL edit_thumbnail

Apply a plain-English edit to an already-generated thumbnail — a surgical img2img pass, not a regeneration. The finished image goes back to the image model as the canvas plus the instruction; everything the instruction doesn't cover stays identical, and the result lands as a NEW version in the widget's version strip (earlier versions are never overwritten). Returns immediately with a task_id; the widget polls check_thumbnail_status. Powers the widget's Edit box, but Claude may also call it directly when the user asks for a specific edit to an existing render — base_image_url must be a real URL from a completed generation, never invented.

Example prompts
"Make the text on that thumbnail yellow"
"Remove the red arrow from the last thumbnail you generated"
ParameterTypeDefaultDescription
base_image_urlstringrequiredURL of the generated thumbnail to edit — must come from a completed generation (never invented). Sent to the image model as image 1 (the canvas).
instructionstringrequiredPlain-English description of the change to make, e.g. 'make the text yellow'. Max 2000 chars.
reference_urlsarraynullOptional extra source images for the change (a product, face, or logo to insert/swap). Sent as images 2+; the canvas plus these are capped at 8 total.
modelstringnano-banana-proImage-gen backend. Default nano-banana-pro. gpt-image-2 is force-remapped to nano-banana-pro — its img2img copy tendency fights instruction edits.
aspect_ratiostring16:916:9 / 9:16 / etc. Default 16:9 — keep it matching the base image.
use_own_keybooleantrueSame semantics as generate_thumbnail: when True (default) and the user has a BYOK Gemini key, nano-banana-pro edits on THEIR key (no Algrow credits). When False, Algrow credits.
fastbooleanfalseFast-mode toggle — same semantics as generate_thumbnail (dedicated fast render path, flat 3 credits/image).
waitbooleanfalse
TOOL list_channel_thumbnails

Page through a channel's LONGFORM upload catalogue (shorts excluded) — newest first, 50 per page. Each video carries its thumbnail, title, and view count, plus the channel's recent-median view baseline (median_views) so any video scores as view_count / median_views. Use to hand-pick a specific channel thumbnail as a style reference, or to see what performs on a channel. Pass next_page_token AND playlist_id from the previous response for the next page. Free — no credits.

Example prompts
"Show me MrBeast's recent thumbnails so I can pick a style reference"
"Which of @mkbhd's recent videos overperformed?"
ParameterTypeDefaultDescription
channelstringrequired@handle, channel URL, or UC id.
page_tokenstringnullnext_page_token from the previous page.
playlist_idstringnullplaylist_id from the previous page — page tokens are playlist-specific.
TOOL saved_channel_styles

Manage the user's saved channel styles (the bookmarks in the thumbnail studio's Channel Style tab). action='list' returns them; action='save' bookmarks a channel; action='remove' deletes one. Saves store identity only — the catalogue is always fetched live via list_channel_thumbnails, so new uploads always appear. Free.

Example prompts
"Save MrBeast as one of my channel styles"
"Which channel styles have I saved?"
ParameterTypeDefaultDescription
actionstringlistlist | save | remove. Default list.
channelstringnull@handle / URL / UC id — required for action='save'.
channel_idstringnullUC id from the list — required for action='remove'.
TOOL instruction_presets

Manage the user's reusable custom-instruction presets for thumbnail generation (e.g. 'dark moody palette, no extra text'). action='list' returns them; action='save' creates or updates by name; action='remove' deletes by id. Apply a preset by passing its instructions as custom_instructions to compose/generate. Free.

Example prompts
"Save these thumbnail instructions as a preset called "Dark moody""
"List my thumbnail instruction presets"
ParameterTypeDefaultDescription
actionstringlistlist | save | remove. Default list.
namestringnullPreset name — required for action='save'. Saving an existing name updates it.
instructionsstringnullThe custom-instructions text — required for action='save'. Max 2000 chars.
preset_idintegernullPreset id from the list — required for action='remove'.
TOOL my_channel_presets

Manage presets for your OWN channels — one saved bundle per channel so you don't re-specify your look every time. Keyed by a free-form label (e.g. 'Marion Vale hair'), a preset bundles custom instructions, a subject face that is auto-added as the on-camera person on every generation, and default model / aspect_ratio / resolution. How it differs: instruction_presets holds only reusable TEXT; saved_channel_styles bookmarks OTHER channels to borrow a look from; this is the full recipe for YOUR channel. action='list' returns them; action='save' creates or updates by label; action='remove' deletes by id. Apply one by passing its label as channel_preset to generate_thumbnail / compose_thumbnail_prompt / extract_reference_from_video / extract_reference_from_image: the face becomes reference 1 (the person), the picked reference supplies the style, and instructions + defaults fold in. Free.

Example prompts
"Save a channel preset called "Marion Vale" with this face and these brand instructions"
"Make a thumbnail for my Marion Vale channel titled "..." using this reference for style"
"List my channel presets"
ParameterTypeDefaultDescription
actionstringlistlist | save | remove. Default list.
labelstringnullFree-form preset label (the channel name) — required for action='save'.
instructionsstringnullCustom brand/style instructions applied to every thumbnail for this channel.
face_urlstringnullPublic URL of the subject face put in every thumbnail (an audio.algrow.online R2 URL or a direct image URL).
face_image_b64stringnullBase64 image bytes of the subject face — uploaded to R2 and stored as face_url. Use when the face isn't already hosted.
style_reference_urlsarraynullStyle-reference thumbnail(s) whose look the channel copies (the Studio's step-2 style pick). Applied as extra references, after the face, on every generation.
channel_stylestringnullOptional channel (@handle / UC id) whose design language this channel borrows (the 'Channel style' tab). Stored for reference.
modelstringnullDefault image-gen backend for this channel.
aspect_ratiostringnullDefault aspect ratio (16:9 / 9:16 / …).
resolutionstringnullDefault resolution (1K / 2K / 4K).
preset_idintegernullPreset id from the list — required for action='remove'.
TOOL check_thumbnail_status

Internal poll for the thumbnail studio widget — looks up the status of a generation task by task_id. The widget calls this on a loop while a generation is in flight; Claude should not normally invoke it from chat.

Example prompt
"(Widget-internal) Check thumbnail generation status for task_id abc123"
ParameterTypeDefaultDescription
task_idstringrequiredThe task_id returned by generate_thumbnail.
promptstringOriginal prompt (echoed back to the widget).
aspect_ratiostring16:9Echoed back to the widget.
resolutionstring2KEchoed back to the widget.
reference_urlsarraynullEchoed back to the widget.
outliersarraynullEchoed back to the widget.
outlier_topicstringnullEchoed back to the widget.
modelstringnano-banana-proEchoed back to the widget.
compose_task_idstringnull
TOOL detect_people_in_reference

Check whether a reference image has a person in it, so you can offer to put the user's own face in the render instead of a stranger's. Cheaper and faster than a full thumbnail analysis, and cached per image for six hours. Free — no credits.

Example prompt
"Is there a person in this reference? https://i.ytimg.com/vi/dQw4w9WgXcQ/maxresdefault.jpg"
ParameterTypeDefaultDescription
image_urlstringrequiredReference image to inspect — a YouTube URL, bare video id, i.ytimg.com URL, or direct image URL.
TOOL search_faces

Find photos of a person by name so one can be used as an identity reference — either as a character reference when generating, or as the face for swap_face. Returns candidate image URLs; run the chosen one through import_face before rendering with it. Free — no credits.

Example prompt
"Find a photo of Serena Williams I can use as the face in a thumbnail"
ParameterTypeDefaultDescription
querystringrequiredThe person's name, optionally with a disambiguator — e.g. Elias Yoder, MrBeast 2024.
TOOL import_face

Copy a face image into Algrow storage and return a stable URL the render pipeline can always fetch. Always run an external face URL through this before using it as a character reference or in swap_face — hotlinked sources can start refusing the download at render time. Free — no credits.

Example prompt
"Import this face photo so I can use it in a thumbnail: https://example.com/photo.jpg"
ParameterTypeDefaultDescription
image_urlstringrequiredDirect URL of the face image to import.
fallback_urlstringnullSecond URL to try when the first can't be fetched — e.g. the search result's smaller thumbnail.
TOOL swap_face

Put a real person's face onto a thumbnail you already generated, leaving everything else in the image untouched. base_image_url must come from a completed generation; face_url is the person's photo (run external URLs through import_face first). Costs 1 credit, or 3 with fast. Returns a pending task_id — the inline widget polls it, so pass wait=true from clients without one.

Example prompt
"Swap my face onto that thumbnail you just made"
ParameterTypeDefaultDescription
base_image_urlstringrequiredURL of the finished thumbnail to put the face onto (from a completed generation).
face_urlstringrequiredPhoto of the person whose face to use — identity is preserved exactly.
aspect_ratiostring16:9Keep this matching the base image.
fastbooleanfalsePrioritised render. Flat 3 credits instead of 1.
waitbooleanfalseBlock until the swap finishes and return the images in one call. Use from clients with no inline widget.
TOOL submit_thumbnail_feedback

Record a thumbs up or down on a generated thumbnail, with an optional note. Sending the same task_id again updates the existing rating rather than adding a second one. Free — no credits.

Example prompt
"That last thumbnail was bad — the face came out blurry"
ParameterTypeDefaultDescription
ratingstringrequiredup or down.
task_idstringnullThe generation's task_id — anchors the rating so a re-rate updates it.
image_urlstringnullURL of the rated image, when you don't have the task id.
feedbackstringnullFree-text note (max 2,000 characters).
esc
×

Buy More Credits

Boost
150
credits
$4.99
Good for:
  • ~12 min caption removal
Studio
1,000
credits
$31.49
Good for:
  • ~80 min caption removal