Thumbnail Generation
Generate and edit thumbnails, swap in real faces, extract references, and compose prompts.
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.
| Parameter | Type | Default | Description |
|---|---|---|---|
| topic | string | required | Algrow 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. |
| title | string | null | The user's video title. The widget pre-fills its TITLE field with this. Always pass when known. |
| content_type | string | longform | longform or shorts. Default longform. |
| limit | integer | 12 | Max thumbnails per page. Default 12, capped at 24. |
| min_outlier_score | number | 2.0 | Floor on outlier multiplier. Default 2.0. |
| page | integer | 1 | 1-indexed Algrow page. Default 1. |
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.
| Parameter | Type | Default | Description |
|---|---|---|---|
| prompt | string | required | The video title the thumbnail is for, plus only specifics you explicitly want (exact overlay text, who must appear). With references attached, the engine designs the scene and composes the text itself. |
| aspect_ratio | string | 16:9 | 16:9 / 9:16 / 1:1 / 4:5 / 4:3 / 3:2 / 21:9 / auto. Default 16:9. |
| resolution | string | 2K | 1K / 2K / 4K. Default 2K. |
| reference_urls | array | null | Up to 8 reference inputs. Each can be a YouTube URL, bare video ID, i.ytimg.com URL, or direct image URL. |
| reference_images | array | null | Alias for reference_urls, accepted for back-compat. |
| find_outliers_first | boolean | false | Auto-pick path: fetch viral references from Algrow and use the top 3. Only set True when the user explicitly opts into auto-pick. |
| outlier_topic | string | null | Topic to search Algrow for when find_outliers_first=True. Keep short (2–3 words). |
| analyze_references | boolean | true | When 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. |
| model | string | gpt-image-2 | Image-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_key | boolean | true | |
| fast | boolean | false | |
| compose_task_id | string | null | |
| num_variants | integer | 1 | |
| channel_preset | string | null | |
| custom_instructions | string | null | |
| video_script | string | null | |
| realistic | boolean | false | |
| character_refs | array | null | |
| wait | boolean | false |
One-call pipeline for 'make a thumbnail in the design of @channel'. Pass the video title + the channel and the server runs the whole Studio pipeline itself: pulls the channel's top thumbnails, vision-analyses them, matches the best one to the title, engineers the prompt (overlay text included) and renders. 1 credit (3 with fast=true); typically 60–240s with wait=true.
| Parameter | Type | Default | Description |
|---|---|---|---|
| title | string | required | The video title the thumbnail is for. |
| channel | string | required | The channel whose design to copy — UC... id, @handle, or channel URL. |
| model | string | gpt-image-2 | Image-gen backend. Default gpt-image-2. |
| fast | boolean | false | Fast-mode toggle — dedicated fast render path, flat 3 credits/image. |
| realistic | boolean | false | Realistic Mode: render as a real, unretouched phone photo — keeps the matched design's layout and text but forces a photographic medium. |
| aspect_ratio | string | 16:9 | 16:9 / 9:16 / 1:1 / … Default 16:9. |
| resolution | string | 2K | 1K / 2K / 4K. Default 2K. |
| custom_instructions | string | null | Only for design requirements you explicitly have — leave unset otherwise. |
| video_script | string | null | Optional: the video's script/outline — grounds the design in what the video actually shows. |
| character_refs | array | null | Optional identity refs — 'render THIS person': [{url, name?, description?}]. |
| wait | boolean | false | Block until the image is ready and return images + a summary in one call (recommended without a widget). |
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.
| Parameter | Type | Default | Description |
|---|---|---|---|
| base_image_url | string | required | URL of the generated thumbnail to edit — must come from a completed generation (never invented). Sent to the image model as image 1 (the canvas). |
| instruction | string | required | Plain-English description of the change to make, e.g. 'make the text yellow'. Max 2000 chars. |
| reference_urls | array | null | Optional 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. |
| model | string | nano-banana-pro | Image-gen backend. Default nano-banana-pro. gpt-image-2 is force-remapped to nano-banana-pro — its img2img copy tendency fights instruction edits. |
| aspect_ratio | string | 16:9 | 16:9 / 9:16 / etc. Default 16:9 — keep it matching the base image. |
| use_own_key | boolean | true | Same 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. |
| fast | boolean | false | Fast-mode toggle — same semantics as generate_thumbnail (dedicated fast render path, flat 3 credits/image). |
| wait | boolean | false |
ONE tool for everything reusable in thumbnail generation — mirrors the Studio's unified Presets. A preset is keyed by a free-form label and snapshots whatever you have set: custom instructions, a subject face (auto-added as the on-camera person), style reference thumbnail(s), a borrowed channel, and default model / aspect_ratio / resolution / fast_mode / realistic_mode. action='list' returns your presets (tagged kind: full or text) plus recent_channels; action='save' creates or updates by label; action='remove' deletes one. Apply a preset by passing its label as channel_preset to generate_thumbnail. Free.
| Parameter | Type | Default | Description |
|---|---|---|---|
| action | string | list | list | save | remove. Default list. |
| label | string | null | Free-form preset label — required for action='save'. |
| instructions | string | null | Custom design instructions stored with the preset. |
| face_url | string | null | Public URL of the subject face put in every thumbnail. |
| face_image_b64 | string | null | Base64 image bytes of the subject face — uploaded to R2 and stored as face_url. |
| style_reference_urls | array | null | Style-reference thumbnail(s) whose look to reuse — applied as extra references, after the face. |
| channel_style | string | null | Optional channel (@handle / UC id) whose design language this preset borrows. |
| model | string | null | Default image-gen backend. |
| aspect_ratio | string | null | Default aspect ratio (16:9 / 9:16 / …). |
| resolution | string | null | Default resolution (1K / 2K / 4K). |
| fast_mode | boolean | null | Default Fast-mode state. Omit to leave unrecorded. |
| realistic_mode | boolean | null | Default Realistic-mode state. Omit to leave unrecorded. |
| preset_id | integer | null | Preset id from the list — required for action='remove' (kinds full and text). |
| kind | string | null | For action='remove': full (default) | text | recent_channel. |
| channel_id | string | null | UC id — required for action='remove' with kind='recent_channel'. |
Your generated-thumbnail history, newest first — every thumbnail you've made, whether it came from the browser Studio, the MCP tools, or the REST API (one shared history). Each item carries the final image URL(s), the title it was made for, model, aspect ratio and timestamp. Reuse an old thumbnail as a style reference by passing its image URL in reference_urls. Paged with limit + offset; has_more signals another page. Free.
| Parameter | Type | Default | Description |
|---|---|---|---|
| limit | integer | 24 | How many items to return (1–60). Default 24. |
| offset | integer | 0 | Skip this many items (for paging). Default 0. |
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.
| Parameter | Type | Default | Description |
|---|---|---|---|
| task_id | string | required | The task_id returned by generate_thumbnail. |
| prompt | string | Original prompt (echoed back to the widget). | |
| aspect_ratio | string | 16:9 | Echoed back to the widget. |
| resolution | string | 2K | Echoed back to the widget. |
| reference_urls | array | null | Echoed back to the widget. |
| outliers | array | null | Echoed back to the widget. |
| outlier_topic | string | null | Echoed back to the widget. |
| model | string | nano-banana-pro | Echoed back to the widget. |
| compose_task_id | string | null |
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.
| Parameter | Type | Default | Description |
|---|---|---|---|
| image_url | string | required | Reference image to inspect — a YouTube URL, bare video id, i.ytimg.com URL, or direct image URL. |
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.
| Parameter | Type | Default | Description |
|---|---|---|---|
| query | string | required | The person's name, optionally with a disambiguator — e.g. Elias Yoder, MrBeast 2024. |
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.
| Parameter | Type | Default | Description |
|---|---|---|---|
| image_url | string | required | Direct URL of the face image to import. |
| fallback_url | string | null | Second URL to try when the first can't be fetched — e.g. the search result's smaller thumbnail. |
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.
| Parameter | Type | Default | Description |
|---|---|---|---|
| base_image_url | string | required | URL of the finished thumbnail to put the face onto (from a completed generation). |
| face_url | string | required | Photo of the person whose face to use — identity is preserved exactly. |
| aspect_ratio | string | 16:9 | Keep this matching the base image. |
| fast | boolean | false | Prioritised render. Flat 3 credits instead of 1. |
| wait | boolean | false | Block until the swap finishes and return the images in one call. Use from clients with no inline widget. |
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.
| Parameter | Type | Default | Description |
|---|---|---|---|
| rating | string | required | up or down. |
| task_id | string | null | The generation's task_id — anchors the rating so a re-rate updates it. |
| image_url | string | null | URL of the rated image, when you don't have the task id. |
| feedback | string | null | Free-text note (max 2,000 characters). |
Algrow
Shorts Channels