Agent skill

Thumbnail Creator

by mohitagw15856 in mohitagw15856/pm-claude-skills

Generate article or newsletter thumbnail candidates using the Gemini API from inside Claude Code.

MITAuto-check passedMedia & Creative

Install Thumbnail Creator

skills CLI
$ npx skills add mohitagw15856/pm-claude-skills --skill thumbnail-creator -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install mohitagw15856/pm-claude-skills thumbnail-creator --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/mohitagw15856/pm-claude-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/thumbnail-creator .claude/skills/thumbnail-creator && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
thumbnail-creator
GitHub stars
1.4k
Token cost
~6.3k tokens
SKILL.md length
1,902 words
Files
1
Skills in repo
1,348
Repo updated
First seen
Licence
MIT

At a glance

Generate article or newsletter thumbnail candidates using the Gemini API from inside Claude Code.

  • Works in 12 steps: Gemini API Key → generate_image.py Script → Composition Proposals (text, before any… → …
  • Asked to create thumbnails
  • SKILL.md covers Prerequisites, Required Inputs, Output Structure and How Claude Should Execute This…, plus 7 more sections
  • Calls python3, pip and uv; reaches aistudio.google.com; needs GEMINI_API_KEY

What it does

Thumbnail Creator is an agent skill from mohitagw15856/pm-claude-skills. Generate article or newsletter thumbnail candidates using the Gemini API from inside Claude Code. Claude reads article copy, proposes composition concepts, writes image generation prompts incorporating brand specs, calls Gemini to generate the images, evaluates the results via computer vision, and returns ranked candidates with rationale. Use when asked to create thumbnails, generate cover images, or produce visual candidates for an article or newsletter.

Its SKILL.md is about 6.3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Media & Creative, covering Social media graphics, Image generation and Newsletters. It works with Google Gemini. The repository describes itself as: 1255 professional Agent Skills for Claude, ChatGPT, Gemini, Cursor & Codex — PRDs, postmortems, leases, medical bills, layoffs, go-bags, new countries. Plain markdown, MIT, in… The licence is MIT.

When your agent uses it

  • Asked to create thumbnails
  • Generate cover images
  • Produce visual candidates for an article

Example prompts

  • “/thumbnail-creator”

Requirements

  • Python 3
  • A credential in GEMINI_API_KEY

Workflow steps

12 steps, taken from the step headings in SKILL.md.

  1. Gemini API Key
  2. generate_image.py Script
  3. Composition Proposals (text, before any API calls)
  4. Generated Image Files
  5. Evaluation Summary Table
  6. Ingest and analyse the article
  7. Collect brand specs
  8. Propose composition concepts
  9. Write Gemini image generation prompts
  10. Check prerequisites and run the generation script
  11. Evaluate generated images
  12. Produce the evaluation report

What it can do on your machine

Read from SKILL.md and the folder at commit 1cbf1f0. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • python3
    • pip
    • uv
    • just

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • aistudio.google.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • GEMINI_API_KEY

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Thumbnail Creator loads about 6.3k tokens when it runs. Until then it costs about 119 tokens; SKILL.md has 1,902 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~119
When it runs · the whole SKILL.md, loaded when a task matches
~6.3k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from mohitagw15856/pm-claude-skills at commit 1cbf1f0, republished under its MIT licence (© mohitagw15856). 1,902 words, ~6,257 tokens.

Download SKILL.mdSave it as .claude/skills/thumbnail-creator/SKILL.md (or your agent's skills folder).
name
thumbnail-creator
description
Generate article or newsletter thumbnail candidates using the Gemini API from inside Claude Code. Claude reads article copy, proposes composition concepts, writes image generation prompts incorporating brand specs, calls Gemini to generate the images, evaluates the results via computer vision, and returns ranked candidates with rationale. Use when asked to create thumbnails, generate cover images, or produce visual candidates for an article or newsletter.

Thumbnail Creator Skill (via Gemini)

Generates article and newsletter thumbnail candidates by acting as an image-generation agent inside Claude Code. Instead of switching between tools and prompting Gemini's web UI one image at a time, this skill makes Claude do the full loop: read the copy, propose compositions, write tailored prompts, call the Gemini API, evaluate the outputs, and return ranked results with brief rationale.

The output is production-ready thumbnail candidates you can drop directly into your CMS, newsletter tool, or social scheduler.


Prerequisites

Both of these must be in place before the skill can generate images:

1. Gemini API Key

Get a free key from Google AI Studio.

Set it as an environment variable:

bash
export GEMINI_API_KEY=<your-key>

To persist it across sessions, add to your shell profile (~/.zshrc or ~/.bashrc):

bash
echo 'export GEMINI_API_KEY=<your-key>' >> ~/.zshrc
source ~/.zshrc

Verify it is set:

bash
echo $GEMINI_API_KEY
2. generate_image.py Script

This script must exist at ./generate_image.py in the project root. The full template is provided in the Script Template section below. Claude will check for it and offer to create it if missing.

Python dependencies:

bash
pip install google-generativeai Pillow requests

Or with uv:

bash
uv pip install google-generativeai Pillow requests

Required Inputs

Claude will ask for these if not provided:

InputRequiredNotes
Article copy or URLYesPaste the full article text, or provide a URL to fetch. Used to extract themes, hooks, and key claims for composition.
Brand coloursRecommendedHex codes or descriptive names. E.g. #1A1A2E (navy), #E94560 (coral). If not provided, Claude uses clean neutral defaults.
Fonts / type styleRecommendedE.g. "bold sans-serif", "editorial serif", "Neue Haas Grotesk". Used in prompt to guide text treatment.
Style reference descriptionRecommendedE.g. "flat illustration, minimal, like Stripe's marketing site" or "photorealistic, dark background, high contrast". A style image URL can also be provided.
Output dimensionsNoDefaults to 1792x1024 (landscape, standard article thumbnail). Options: 1024x1024 (square), 1024x1792 (portrait/mobile).
Number of candidatesNoDefaults to 4. Min 1, max 8 (API limits and cost).
Article title (if different from H1)NoUsed as the primary text element in image prompts.
Candidate selectionNoAfter proposing compositions, Claude asks which to generate. User can say "all" or pick by number.

Output Structure

Phase 1 — Composition Proposals (text, before any API calls)

Claude presents 3-4 composition concepts for user approval. Format:

Composition Concepts for: "[Article Title]"

1. BOLD CLAIM
   Layout:    Full-bleed dark background, large white headline centred, 
              single accent data point (e.g. "3x faster") in brand colour below
   Mood:      High authority, newsletter-style
   Best for:  LinkedIn, Substack headers
   Rationale: The article's central claim ("X outperforms Y by 3x") is specific 
              enough to anchor the visual — readers stop on data.

2. CONCEPTUAL OBJECT
   Layout:    Central object illustration (e.g. a broken clock for a time-waste article), 
              title in upper third, minimal texture background
   Mood:      Editorial, Medium-style
   Best for:  Blog header, Medium cover, email preheader
   Rationale: Gives art directors visual metaphor flexibility; works across sizes.

3. CONTRAST SPLIT
   Layout:    Left half brand colour, right half white or image, 
              title on colour side, supporting subtext on white side
   Mood:      Clean, professional, startup-brand feel
   Best for:  Newsletter, LinkedIn carousel first slide
   Rationale: Split layout performs consistently in newsletter A/B tests; 
              text is readable at small sizes.

4. TYPOGRAPHIC ONLY
   Layout:    No illustration, oversized title treatment, 
              author name in small caps at bottom, thin rule separator
   Mood:      Premium, confident, editorial
   Best for:  Substack, Ghost, high-density email lists
   Rationale: Works when the brand has strong type identity. Fastest to produce.

Which compositions do you want generated? (Reply with numbers, e.g. "1, 3" or "all")
Phase 2 — Generated Image Files

After generation, Claude saves files to ./thumbnails/[article-slug]/:

thumbnails/
└── article-slug-from-title/
    ├── candidate_01_bold_claim.png
    ├── candidate_02_conceptual_object.png
    ├── candidate_03_contrast_split.png
    ├── candidate_04_typographic.png
    └── evaluation_report.md
Phase 3 — Evaluation Summary Table

Claude evaluates each returned image via computer vision and produces:

Thumbnail Evaluation — "[Article Title]"
Generated: 2026-05-27  |  Model: Gemini Imagen  |  Dimensions: 1792x1024

| # | Candidate | Composition | Brand Fit /10 | Text Legibility /10 | Recommendation |
|---|---|---|---|---|---|
| 1 | candidate_01_bold_claim.png | Bold Claim | 9 | 8 | ★ Top pick — strong data anchor, brand colours correct, title readable at 200px width |
| 2 | candidate_02_conceptual_object.png | Conceptual Object | 7 | 9 | Good fallback — legible, clean, but illustration style drifted slightly from brand |
| 3 | candidate_03_contrast_split.png | Contrast Split | 8 | 7 | Works well at full size; test at thumbnail size before publishing — right side text tightens |
| 4 | candidate_04_typographic.png | Typographic | 9 | 10 | Strongest for email — zero brand drift risk, completely text-based |

Recommended for web:          candidate_01_bold_claim.png
Recommended for email/mobile: candidate_04_typographic.png
Recommended for social:       candidate_03_contrast_split.png

Files saved to: ./thumbnails/article-slug-from-title/

How Claude Should Execute This Skill

Step 1 — Ingest and analyse the article

Accept article copy as pasted text or a URL.

If a URL is provided, fetch the page and extract:

  • The H1 title
  • The first 3-5 paragraphs (the hook, central claim, and key points)
  • Any notable statistics or named frameworks mentioned
  • The author name (for typographic compositions)

If text is pasted, read it directly. Focus on:

  • The hook: What is the opening claim or tension?
  • The central thesis: What is the one thing the article argues or teaches?
  • Key specifics: Any numbers, named frameworks, or concrete examples that could anchor a visual
  • Tone: Is this formal/authoritative, conversational/accessible, provocative/challenge-based?

Summarise these findings internally before proposing compositions — the proposals should feel tailored to this specific article, not generic.

Step 2 — Collect brand specs

Ask the user for brand specs if not provided:

To generate on-brand thumbnails, I need a few details:

1. Brand colours (hex codes or descriptions) — e.g. #1A1A2E, #E94560
2. Font style preference — e.g. "bold sans-serif", "editorial serif", "geometric"
3. Visual style — e.g. "flat minimal", "photorealistic", "illustrated", "typographic only"
4. Any style references — describe a brand or publication whose aesthetic you want to match, 
   or share an image URL

If you don't have brand specs yet, say "use clean defaults" and I'll use a professional 
dark-on-white editorial style.

If the user says "use clean defaults", apply:

  • Background: #FFFFFF or #0F0F0F (dark mode default)
  • Accent: #2563EB (blue)
  • Font style: bold geometric sans-serif
  • Style: minimal flat, no textures, high contrast
Step 3 — Propose composition concepts

Write 3-4 composition concepts tailored to the article's tone and content. Each concept must:

  • Have a name (short, memorable label)
  • Describe the layout precisely (where title goes, what visual element anchors it, background treatment)
  • Note the mood and the use case it's best suited for
  • Include a rationale sentence explaining why this composition fits this specific article

After presenting the concepts, ask which to generate. Wait for user confirmation before making any API calls.

Step 4 — Write Gemini image generation prompts

For each selected composition, write a detailed image generation prompt. Image generation prompts follow a different grammar than text prompts — they are descriptive, not instructional.

Prompt structure:

[Subject/composition] + [Style] + [Colour palette] + [Mood/lighting] + 
[Text treatment if any] + [What to avoid]

Example prompt for Bold Claim composition:

Article thumbnail image. Large bold white sans-serif headline text reading "3x Faster Than 
Traditional Methods" centred on a deep navy blue background (#1A1A2E). Small coral accent 
text (#E94560) below reading the subtitle. Minimal flat design, no gradients, no stock photo 
elements, no people. Clean professional editorial style, high contrast, newsletter header 
format, 16:9 landscape orientation. The composition is typographic — text is the hero, 
no illustration required. Avoid: clip art, drop shadows, low contrast, crowded layout.

Prompt rules:

  • Include exact hex colours when brand colours are provided
  • Specify the exact headline text to appear in the image
  • Name the style explicitly ("flat design", "editorial", "photorealistic") — Gemini responds well to style category names
  • Add a negative prompt ("Avoid: ...") at the end to reduce drift from brand style
  • Keep prompts under 300 words — longer prompts do not reliably produce better outputs
Step 5 — Check prerequisites and run the generation script

Before calling the API, verify:

bash
# Check API key is set
echo $GEMINI_API_KEY

# Check script exists
ls -la ./generate_image.py

# Check dependencies
python3 -c "import google.generativeai, PIL, requests; print('Dependencies OK')"

If the script is missing, offer to create it using the template in the Script Template section below.

Run the generation script for each prompt:

bash
python3 generate_image.py \
  --prompt "your full prompt here" \
  --output "./thumbnails/article-slug/candidate_01_bold_claim.png" \
  --width 1792 \
  --height 1024

Or pass all prompts in a batch config file:

bash
python3 generate_image.py --config ./thumbnails/article-slug/prompts.json
Step 6 — Evaluate generated images

After each image is saved, examine it using computer vision. Evaluate on two dimensions:

Brand Fit (score /10):

  • Are the brand colours correct? (1-2 points each)
  • Does the style match the requested aesthetic? (2 points)
  • Is the layout consistent with the composition brief? (2 points)
  • Are there any AI artefacts, distorted text, or unintended elements? (-1 per issue)

Text Legibility (score /10):

  • Is the headline text readable at full resolution? (3 points)
  • Is the headline text readable when the image is scaled to 300px wide (thumbnail size)? (3 points)
  • Is there sufficient contrast between text and background? (2 points)
  • Is the text placement within safe zones (not cut off at edges)? (2 points)

Note: Gemini Imagen sometimes renders text with spelling errors or distorted letterforms. If this happens, note it in the evaluation and suggest the user add the text overlay manually in Canva or Figma.

Step 7 — Produce the evaluation report

Write the evaluation summary table (format shown in Output Structure section) and save it as evaluation_report.md in the output folder.

Include:

  • One-line rationale for each score
  • A top pick recommendation per use case (web, email/mobile, social)
  • Any production notes (e.g. "text rendering is imperfect on candidate_02 — overlay text manually")
  • The full prompts used, so the user can iterate directly in AI Studio if needed
Step 8 — Offer iteration

After delivering the candidates, offer one iteration pass:

Want me to iterate on any of these?

Options:
- Adjust colours or style on a specific candidate
- Try a different composition concept
- Change the headline text
- Rerun with different Gemini parameters (different temperature/seed)
- Generate additional variants of the top pick

Just tell me what to change.

Script Template

Claude should offer to write this file if generate_image.py is not present. This is the canonical template to use.

python
#!/usr/bin/env python3
"""
generate_image.py — Gemini Imagen wrapper for Thumbnail Creator skill.

Usage:
    python3 generate_image.py --prompt "..." --output "./out.png" [--width 1792] [--height 1024]
    python3 generate_image.py --config ./prompts.json

Config JSON format:
    [
      {
        "prompt": "...",
        "output": "./thumbnails/slug/candidate_01.png",
        "width": 1792,
        "height": 1024
      }
    ]

Requirements:
    pip install google-generativeai Pillow
"""

import os
import sys
import json
import argparse
import base64
from pathlib import Path

try:
    import google.generativeai as genai
    from google.generativeai import types as genai_types
except ImportError:
    print("ERROR: google-generativeai not installed. Run: pip install google-generativeai")
    sys.exit(1)

try:
    from PIL import Image
    import io
except ImportError:
    print("ERROR: Pillow not installed. Run: pip install Pillow")
    sys.exit(1)


def get_api_key() -> str:
    key = os.environ.get("GEMINI_API_KEY", "")
    if not key:
        print("ERROR: GEMINI_API_KEY environment variable is not set.")
        print("Get a key at: https://aistudio.google.com/app/apikey")
        print("Then run: export GEMINI_API_KEY=<your-key>")
        sys.exit(1)
    return key


def generate_image(
    prompt: str,
    output_path: str,
    width: int = 1792,
    height: int = 1024,
) -> bool:
    """
    Call Gemini Imagen to generate a single image and save it to output_path.
    Returns True on success, False on failure.
    """
    api_key = get_api_key()
    genai.configure(api_key=api_key)

    # Determine aspect ratio from dimensions
    ratio = width / height
    if abs(ratio - 16/9) < 0.1:
        aspect_ratio = "16:9"
    elif abs(ratio - 1.0) < 0.1:
        aspect_ratio = "1:1"
    elif abs(ratio - 9/16) < 0.1:
        aspect_ratio = "9:16"
    else:
        aspect_ratio = "16:9"  # default fallback

    try:
        imagen_model = genai.ImageGenerationModel("imagen-3.0-generate-002")

        result = imagen_model.generate_images(
            prompt=prompt,
            number_of_images=1,
            aspect_ratio=aspect_ratio,
            safety_filter_level="block_only_high",
            person_generation="allow_adult",
        )

        if not result.images:
            print(f"  No images returned for: {output_path}")
            return False

        image_data = result.images[0]

        # Ensure output directory exists
        Path(output_path).parent.mkdir(parents=True, exist_ok=True)

        # Save the image
        if hasattr(image_data, '_image_bytes'):
            img_bytes = image_data._image_bytes
        elif hasattr(image_data, 'image'):
            img_bytes = image_data.image
        else:
            # Fallback: try to access raw data
            img_bytes = bytes(image_data)

        img = Image.open(io.BytesIO(img_bytes))

        # Resize to exact dimensions if needed
        if img.size != (width, height):
            img = img.resize((width, height), Image.LANCZOS)

        img.save(output_path, format="PNG", optimize=True)
        print(f"  Saved: {output_path} ({img.size[0]}x{img.size[1]})")
        return True

    except Exception as e:
        print(f"  ERROR generating image: {e}")
        return False


def run_from_args():
    parser = argparse.ArgumentParser(description="Gemini Imagen wrapper for thumbnail generation")
    parser.add_argument("--prompt", type=str, help="Image generation prompt")
    parser.add_argument("--output", type=str, help="Output file path (.png)")
    parser.add_argument("--width", type=int, default=1792, help="Image width in pixels")
    parser.add_argument("--height", type=int, default=1024, help="Image height in pixels")
    parser.add_argument("--config", type=str, help="JSON config file with batch of prompts")
    args = parser.parse_args()

    if args.config:
        # Batch mode
        with open(args.config, "r") as f:
            items = json.load(f)
        print(f"Batch mode: {len(items)} image(s) to generate")
        results = []
        for i, item in enumerate(items, start=1):
            print(f"\n[{i}/{len(items)}] Generating: {item['output']}")
            ok = generate_image(
                prompt=item["prompt"],
                output_path=item["output"],
                width=item.get("width", 1792),
                height=item.get("height", 1024),
            )
            results.append({"output": item["output"], "ok": ok})

        print(f"\nBatch complete: {sum(r['ok'] for r in results)}/{len(results)} succeeded")
        for r in results:
            status = "OK " if r["ok"] else "ERR"
            print(f"  {status}  {r['output']}")

    elif args.prompt and args.output:
        # Single image mode
        print(f"Generating: {args.output}")
        ok = generate_image(
            prompt=args.prompt,
            output_path=args.output,
            width=args.width,
            height=args.height,
        )
        if ok:
            print("Done.")
        else:
            print("Failed.")
            sys.exit(1)

    else:
        parser.print_help()
        sys.exit(1)


if __name__ == "__main__":
    run_from_args()

To create this file from inside Claude Code:

bash
# Claude will write this file if it doesn't exist:
ls ./generate_image.py || echo "Script missing — Claude will create it"

Prompt Writing Reference

Claude should use this reference when writing image generation prompts. These patterns produce the most consistent results with Gemini Imagen.

Composition patterns
Composition typePrompt anchor phrase
Text-led, dark background"Bold white sans-serif headline text on deep [colour] background, minimal flat design"
Text-led, light background"High-contrast black headline text on clean white background, editorial layout"
Object/illustration centred"Centred [object] illustration, [style], [colour] background, title text in upper third"
Split layout"Vertical split: left half [colour], right half white. Headline on left side, supporting text on right"
Photography style"Photorealistic [scene description], [mood] lighting, [colour] colour grade, text overlay area at [position]"
Show full SKILL.md (744 more words)Show less
Style modifiers that work well with Gemini
  • flat design, no gradients — clean vector-style outputs
  • editorial magazine style — sophisticated, typographic
  • minimal, lots of whitespace — reduces visual noise
  • high contrast, bold typography — strong thumbnail legibility
  • Bauhaus-inspired — geometric, structured
  • dark mode aesthetic — dark backgrounds with light text
  • startup marketing style — clean, optimistic, sans-serif
Negative prompts (always include)

Append to every prompt:

Avoid: stock photography clichés, clipart, excessive gradients, drop shadows, 
cluttered layout, lens flares, watermarks, low contrast text, AI artefacts.
Text rendering note

Gemini Imagen sometimes renders short text phrases accurately and longer headlines poorly. If the article headline is longer than 6 words, consider splitting it in the prompt:

Primary headline: "[First 4-5 words]"
Secondary text:   "[Remaining words]"

Or instruct the user to add text overlay manually in Canva after generation if legibility is critical.


Troubleshooting

IssueCauseFix
GEMINI_API_KEY not setEnvironment variable missingRun export GEMINI_API_KEY=<your-key> and retry
ModuleNotFoundError: google.generativeaiDependency missingRun pip install google-generativeai
No images returnedSafety filter triggeredRevise prompt to remove any ambiguous language; check that the prompt doesn't describe faces, violence, or brand logos
Generated image has garbled textImagen text rendering limitationUse shorter headline in prompt, or plan to add text overlay in Canva/Figma post-generation
Image is the wrong sizeAspect ratio mismatchConfirm --width and --height args match one of the supported ratios (16:9, 1:1, 9:16)
generate_image.py not foundScript not created yetAsk Claude to create it using the template above
API quota exceededFree tier limitWait or upgrade to Gemini API paid tier
Style drift from brandPrompt not specific enoughAdd exact hex codes and specific style descriptors; add stronger negative prompt

Quality Checks

Before marking the task complete, verify each item:

  • GEMINI_API_KEY environment variable confirmed set before any API calls
  • generate_image.py script exists in project root — created from template if missing
  • All Python dependencies installed and verified (google-generativeai, Pillow)
  • Composition proposals were presented and user confirmed which to generate before any API calls
  • Each composition proposal is specific to this article's content — not generic placeholders
  • Brand colours (hex codes) are included in the image generation prompts
  • Negative prompt appended to every image generation prompt
  • Headline text in prompts is 6 words or fewer per text element (longer headlines split or noted as overlay candidates)
  • Output folder created at ./thumbnails/[article-slug]/ with correct slug derived from article title
  • Files named with candidate number and composition name (candidate_01_bold_claim.png)
  • Each generated image evaluated via computer vision — not assumed to be correct
  • Brand Fit and Text Legibility scores are specific and justified, not round numbers
  • Any text rendering issues noted in evaluation with "add text overlay manually" recommendation
  • Evaluation report saved as evaluation_report.md in the output folder
  • At least one recommendation given per use case: web, email/mobile, social
  • Full prompts used are included in the evaluation report for user iteration reference
  • Iteration offer made after delivering results

Anti-Patterns

  • Do not generate thumbnails without incorporating brand colours and style specs when provided — off-brand outputs must be regenerated
  • Do not skip the evaluation step — all candidates must be scored before being presented to the user
  • Do not present only one thumbnail candidate — always generate multiple options for comparison
  • Do not include the full image generation prompts in a separate document — they must be included in the evaluation report for iteration reference
  • Do not claim a thumbnail is final without offering an iteration round

Example Trigger Phrases

  • "Create thumbnails for this article"
  • "Generate cover image candidates for my newsletter"
  • "Make me 4 thumbnail options for this post"
  • "Can you generate some thumbnail ideas using Gemini?"
  • "I need a featured image for this article — use my brand colours"
  • "Create a thumbnail for this piece using Gemini" [followed by article text or URL]
  • "Generate article cover images for these brand specs: [colours, style]"
  • "Make thumbnail candidates and rank them"
  • "I need newsletter header images — here's the copy"
  • "Generate and evaluate thumbnail options for this draft"
  • "Use Gemini to create cover image options"
  • "Thumbnail this article" [followed by article text]
  • "Create 3 thumbnail compositions and pick the best one"

Cost and Rate Limits

Gemini AI Studio free tier (as of early 2026):

  • Imagen 3: 10 images per day (free)
  • Rate limit: varies by region and account tier

Paid tier:

  • Imagen 3 pricing: approximately $0.03-0.05 per image (check current Google Cloud pricing)
  • For a typical session generating 4-8 candidates, total cost is under $0.40

Recommendation:

  • Use the free tier for exploration and iteration
  • Generate final production candidates on paid tier for higher daily limits
  • For newsletter teams generating thumbnails weekly, the paid tier is more practical

Originally created by Karen Spinner (Wondering About AI) — adapted and extended for this library.

© mohitagw15856, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/thumbnail-creator of mohitagw15856/pm-claude-skills.

Open the folder on GitHubat commit 1cbf1f0

Compare with similar skills

Thumbnail Creator next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Thumbnail Creator compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Thumbnail Creator this skillmohitagw15856/pm-claude-skills1.4k—~6.3kAutomated safety check: PassMIT
SEO Image GeneratorAgriciDaniel/claude-seo19k2 repos~2.1kAutomated safety check: PassMIT
Nanobananaminicoohei/ai-agent-camp347—~554Automated safety check: PassNone
Xiaohongshu Cover GeneratorVivixiao980/xhs-cover-skill204—~2.9kAutomated safety check: PassNone
Youtube Thumbnailhassancs91/claude-youtube-editor328—~2.1kAutomated safety check: NotesMIT
Gemini Interactions APIAyuilos/Miffan217—~4.6kAutomated safety check: PassAGPL-3.0

Similar skills

  • SEO Image Generator

    AgriciDaniel/claude-seo

    Generates Open Graph previews, blog hero images, product photos and infographics for SEO use through Gemini image tools and the banana extension.

    19k GitHub starsUsed in 2 repos~2.1k tokens
    Media & CreativeAuto-check passed
  • Nanobanana

    minicoohei/ai-agent-camp

    Gemini画像生成APIでテキストから画像生成、既存画像の編集を行うスキル. An agent skill from minicoohei/ai-agent-camp.

    347 GitHub stars~554 tokensUpdated 3 days ago
    Media & CreativeAuto-check passed
  • Xiaohongshu Cover Generator

    Vivixiao980/xhs-cover-skill

    Creates and edits Xiaohongshu (RedNote) cover images from a portrait photo and text, using GPT Image 2 first and a Gemini CLI script as fallback.

    204 GitHub stars~2.9k tokensUpdated 4 mo ago
    Media & CreativeAuto-check passed
  • Youtube Thumbnail

    hassancs91/claude-youtube-editor

    Dedicated YouTube thumbnail generator — interviews you for exactly the style elements you want (environment, text budget, extras, accent color), then renders high-contrast, vibrant, face-consistent…

    328 GitHub stars~2.1k tokensUpdated 1 mo ago
    Media & CreativeAuto-check: notes
  • A skill your agent uses when writing code that calls the Gemini API for text generation, multi-turn chat, multimodal understanding, image generation, video generation, streaming responses…

    217 GitHub stars~4.6k tokensUpdated yesterday
    Media & CreativeAuto-check passed
  • Image Generation

    SawyerHood/middleman

    Generate images using Google Gemini (gemini-3-pro-image-preview).

    184 GitHub stars~346 tokensUpdated 4 mo ago
    Media & CreativeAuto-check passed

More from mohitagw15856/pm-claude-skills

All 1,348 skills in this repo
  • Car Tco

    mohitagw15856/pm-claude-skills

    Compare the total cost of car ownership across buy-new, buy-used, lease, and keep-your-current-car — depreciation, insurance, maintenance ramp, and fuel over a real horizon, not just the monthly…

    1.4k GitHub stars~1.1k tokensUpdated yesterday
    Auto-check passed
  • Cs Health Scorecard

    mohitagw15856/pm-claude-skills

    Build a customer health scorecard for a specific account. An agent skill from mohitagw15856/pm-claude-skills.

    1.4k GitHub stars~2.4k tokensUpdated yesterday
    Auto-check passed
  • Exit Waterfall

    mohitagw15856/pm-claude-skills

    Compute who gets what at each exit price from a cap table — liquidation preferences, conversion points, and where the founders' share collapses.

    1.4k GitHub stars~1.1k tokensUpdated yesterday
    Auto-check passed
  • Feature Prioritisation

    mohitagw15856/pm-claude-skills

    Apply prioritisation frameworks (RICE, MoSCoW, Kano, ICE, Opportunity Scoring) to rank features and backlog items.

    1.4k GitHub stars~2k tokensUpdated yesterday
    Auto-check passed
  • Fire Number

    mohitagw15856/pm-claude-skills

    Compute a financial-independence (FIRE) target and years-to-reach with every assumption labeled as an assumption — plus a sensitivity table instead of a single false-precision answer.

    1.4k GitHub stars~1.1k tokensUpdated yesterday
    Auto-check passed
  • Freelance Rate

    mohitagw15856/pm-claude-skills

    Derive a freelance day/hourly rate backwards from target income, honest billable utilization, overhead, and the self-employment tax premium — the arithmetic that proves a rate is not salary÷2000.

    1.4k GitHub stars~1.2k tokensUpdated yesterday
    Auto-check passed

Works with

Questions about Thumbnail Creator

What does Thumbnail Creator do?

Generate article or newsletter thumbnail candidates using the Gemini API from inside Claude Code. Thumbnail Creator is an agent skill from mohitagw15856/pm-claude-skills. Generate article or newsletter thumbnail candidates using the Gemini API from inside Claude Code.

When should I use Thumbnail Creator?

Thumbnail Creator fits situations like: asked to create thumbnails; generate cover images; produce visual candidates for an article.

How do I install Thumbnail Creator in Claude Code?

Run `npx skills add mohitagw15856/pm-claude-skills --skill thumbnail-creator -a claude-code`. Or copy the skill folder (skills/thumbnail-creator in mohitagw15856/pm-claude-skills) into .claude/skills/thumbnail-creator in your project. Claude Code loads it when a task matches its description.

How do I install Thumbnail Creator in Codex?

Run `npx skills add mohitagw15856/pm-claude-skills --skill thumbnail-creator -a codex`. Or copy the skill folder (skills/thumbnail-creator in mohitagw15856/pm-claude-skills) into .agents/skills/thumbnail-creator in your project. Codex loads it when a task matches its description.

Can I use Thumbnail Creator in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add mohitagw15856/pm-claude-skills --skill thumbnail-creator -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/thumbnail-creator, .gemini/skills/thumbnail-creator, .github/skills/thumbnail-creator and .opencode/skills/thumbnail-creator in your project.

What does Thumbnail Creator need to run?

Going by SKILL.md and its folder, Thumbnail Creator needs the command-line tools its instructions call (python3, pip, uv and just) and credentials named GEMINI_API_KEY. Our summary lists: Python 3; A credential in GEMINI_API_KEY.

Does Thumbnail Creator access the network?

SKILL.md names 1 domain. In commands or code: aistudio.google.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Thumbnail Creator safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Thumbnail Creator use?

Thumbnail Creator is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Thumbnail Creator use?

About 6.3k tokens (SKILL.md is roughly 25k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Thumbnail Creator?

Skills that share tags, products or a category with Thumbnail Creator: SEO Image Generator (AgriciDaniel/claude-seo, 19k stars), Nanobanana (minicoohei/ai-agent-camp, 347 stars), Xiaohongshu Cover Generator (Vivixiao980/xhs-cover-skill, 204 stars) and Youtube Thumbnail (hassancs91/claude-youtube-editor, 328 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Thumbnail Creator?

mohitagw15856 (a GitHub user) maintains it in mohitagw15856/pm-claude-skills, which has 1,434 GitHub stars. The repository holds 1,348 skills in this directory. The repository was last updated on October 9, 2026.

Source: mohitagw15856/pm-claude-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.