thumbnail-play-button

star 1

Add a YouTube-style play button overlay to any image thumbnail. Use this skill whenever the user uploads an image and wants to make it look like a clickable video link - for newsletters, websites, WordPress posts, or any document where a thumbnail should indicate a video. Triggers include "add a play button", "make this look clickable", "add a video overlay", "YouTube style", or any request to overlay a play button on a thumbnail image.

Mick-P-UK By Mick-P-UK schedule Updated 4/11/2026

name: thumbnail-play-button description: Add a YouTube-style play button overlay to any image thumbnail. Use this skill whenever the user uploads an image and wants to make it look like a clickable video link - for newsletters, websites, WordPress posts, or any document where a thumbnail should indicate a video. Triggers include "add a play button", "make this look clickable", "add a video overlay", "YouTube style", or any request to overlay a play button on a thumbnail image.

Thumbnail Play Button Skill

Adds a professional YouTube-style play button overlay to an image, making it suitable for use as a clickable video thumbnail in newsletters, websites, or documents.

Output

A new JPG image with:

  • Semi-transparent dark circle centred on the image
  • Red outline ring (YouTube style)
  • White triangular play arrow

Inputs

  • One uploaded image (JPG or PNG)
  • Optionally: size preference (small / medium / large), position (centre / bottom-right)

Defaults

  • Size: medium (13% of image height as radius)
  • Position: centre
  • Style: YouTube (dark circle, red outline, white arrow)

Workflow

Step 1 - Confirm the image

Check the uploaded image is accessible at /mnt/user-data/uploads/. If no image is present, ask the user to upload one.

Step 2 - Run the overlay script

from PIL import Image, ImageDraw

img = Image.open("/mnt/user-data/uploads/[FILENAME]").convert("RGBA")
w, h = img.size

overlay = Image.new("RGBA", (w, h), (0, 0, 0, 0))
draw = ImageDraw.Draw(overlay)

# Size control: adjust multiplier for small (0.09), medium (0.13), large (0.18)
radius = int(h * 0.13)
cx, cy = w // 2, h // 2  # centre position

# Dark semi-transparent circle background
draw.ellipse([cx-radius, cy-radius, cx+radius, cy+radius], fill=(0, 0, 0, 160))

# Red YouTube-style outline ring
stroke = int(radius * 0.08)
draw.ellipse([cx-radius, cy-radius, cx+radius, cy+radius], outline=(255, 0, 0, 230), width=stroke)

# White play triangle (offset slightly right for optical balance)
tri_size = int(radius * 0.55)
tx = cx + int(radius * 0.1)
ty = cy
triangle = [
    (tx - int(tri_size * 0.5), ty - int(tri_size * 0.85)),
    (tx - int(tri_size * 0.5), ty + int(tri_size * 0.85)),
    (tx + int(tri_size * 0.9), ty)
]
draw.polygon(triangle, fill=(255, 255, 255, 240))

result = Image.alpha_composite(img, overlay).convert("RGB")
result.save("/mnt/user-data/outputs/[OUTPUT_FILENAME].jpg", quality=95)

Step 3 - Name the output file

Follow Mick's YYYY.MM.DD naming convention: YYYY.MM.DD_[descriptive-name]_PlayBtn.jpg

Step 4 - Present the file

Use present_files to share the result with the user.


Variations

User request Change to make
Smaller button radius multiplier: 0.09
Larger button radius multiplier: 0.18
Subtle / understated Reduce circle fill alpha from 160 to 100, outline alpha from 230 to 150
Bottom-right position cx = int(w * 0.78), cy = int(h * 0.72)
White outline instead of red outline=(255, 255, 255, 230)

Notes

  • Pillow must be available: pip install Pillow --break-system-packages
  • Works on any standard JPG or PNG image
  • Output is always JPG at 95% quality
  • Typical use: newsletter YouTube thumbnails, WordPress post images, webinar landing pages
  • Created: 2026.02.26 from proven workflow (DIY Investors Newsletter session)
Install via CLI
npx skills add https://github.com/Mick-P-UK/Dex-MickP --skill thumbnail-play-button
Repository Details
star Stars 1
call_split Forks 0
navigation Branch main
article Path SKILL.md
More from Creator