agentsclimarketplace

Image generation

Skill puretechnyc/purebrain-skills/skills/content/image-generation

Generate images for blog banners, social posts, LinkedIn graphics, and marketing materials using AI image generation APIs. Multi-platform sizing, compression workflows, and prompt engineering patterns.From its SKILL.md

Install
npx -y skills add puretechnyc/purebrain-skills --skill image-generation

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

6.3 KB, ~1.5k tokens by cl100k_base, as published. Nobody here has run it

Image Generation Skill

Purpose: Generate images using AI image generation APIs (Google Gemini, FLUX.2 via Replicate, DALL-E, or similar).


PLATFORM-SPECIFIC REQUIREMENTS

PlatformAspect RatioMax SizeFormatResolution
Blog header16:9No limitPNG2K
Bluesky1:1 SQUARE<976KBJPEG1K
Twitter16:9~5MBPNG/JPEG2K
LinkedIn16:9 or 1:1No limitPNG2K

Bluesky Compression (MANDATORY for posts)

Bluesky REJECTS images >976KB. Always compress:

from PIL import Image

def compress_for_bluesky(input_path: str, output_path: str):
    """Compress image for Bluesky (<976KB requirement)."""
    img = Image.open(input_path)
    if img.mode in ('RGBA', 'P'):
        img = img.convert('RGB')
    img.save(output_path, "JPEG", quality=85, optimize=True)
    print(f"Compressed: {output_path}")

Quick Start (Google Gemini)

from google import genai
from google.genai import types
import os

client = genai.Client(api_key=os.environ['GOOGLE_API_KEY'])

# Generate image
response = client.models.generate_content(
    model="gemini-3-pro-image-preview",
    contents="A digital art piece showing interconnected nodes in a constellation pattern",
    config=types.GenerateContentConfig(
        response_modalities=['IMAGE'],
        image_config=types.ImageConfig(
            aspect_ratio="16:9",
            image_size="2K"
        ),
    )
)

# Save image
for part in response.parts:
    if part.inline_data is not None:
        image = part.as_image()
        image.save("output.png")
        print("Image saved!")

Aspect Ratios

RatioBest For
1:1Social media profile pics, square posts
16:9Blog headers, YouTube thumbnails
9:16Mobile/Stories content
4:3Classic photos
3:4Portrait orientation
4:5LinkedIn portrait posts (max feed space)
21:9Ultrawide banners

Image Resolution

SizeResolutionBest For
1K1024pxSocial media, quick iterations
2K2048pxBlog headers, general use (recommended)
4K4096pxPrint, high-quality needs

Text in Images

Modern AI image generators (especially Gemini) excel at text rendering. Use this capability.

Great uses for text in images:

  • Quote cards: Include the quote directly in the image
  • Titles/Headlines: Blog titles, thread hooks
  • Infographics: Labels, data points, explanations
  • Branding: Your brand name, tagline
  • Call-to-action: "Read more", "Thread below"

How to request text:

prompt = """Quote card with the text "Memory is our moat" in bold white typography.
Dark blue gradient background.
Text should be LARGE and CENTERED.
Professional design, clean composition."""

Be explicit: "Write 'HELLO' in bold serif font" creates clearer results than vague requests.


Style Keywords That Work Well

  • Photography terms: "35mm prime lens", "macro close-up", "film grain", "bokeh"
  • Quality modifiers: "8K quality", "high detail", "professional photography"
  • Lighting descriptors: "Rembrandt lighting", "golden hour", "backlit", "dramatic"

Complete Function

import os
from pathlib import Path
from google import genai
from google.genai import types

def generate_image(
    prompt: str,
    output_path: str = "output.png",
    aspect_ratio: str = "16:9",
    image_size: str = "2K"
):
    """
    Generate an image using an AI image generation API.

    Args:
        prompt: Text description of the image to generate
        output_path: Where to save the image
        aspect_ratio: 1:1, 16:9, 9:16, 4:3, 3:4, 21:9
        image_size: "1K", "2K", or "4K"

    Returns:
        Saved file path, or None if generation failed
    """
    client = genai.Client(api_key=os.environ['GOOGLE_API_KEY'])

    response = client.models.generate_content(
        model="gemini-3-pro-image-preview",
        contents=prompt,
        config=types.GenerateContentConfig(
            response_modalities=['IMAGE'],
            image_config=types.ImageConfig(
                aspect_ratio=aspect_ratio,
                image_size=image_size
            ),
        )
    )

    for part in response.parts:
        if part.inline_data is not None:
            image = part.as_image()
            image.save(output_path)
            print(f"Saved to: {output_path}")
            return output_path

    print("No image generated")
    return None

Use Case Examples

Blog Header (16:9, 2K)

generate_image(
    prompt="Blog header for article about AI and marketing. Abstract neural network with glowing nodes. Modern tech aesthetic. Include title 'The Future of Marketing' in bold white.",
    output_path="blog-header.png",
    aspect_ratio="16:9",
    image_size="2K"
)

Social Media Post (1:1, 1K)

generate_image(
    prompt="Square social media graphic showing AI collaboration. Abstract, modern, professional.",
    output_path="social-image.png",
    aspect_ratio="1:1",
    image_size="1K"
)

Quote Card

generate_image(
    prompt='Quote card with text "Data without insight is just noise" in elegant typography. Dark background, golden text, professional design.',
    output_path="quote-card.png",
    aspect_ratio="1:1",
    image_size="2K"
)

Troubleshooting

ProblemSolution
"Model not found"Verify model ID and API key access
Image not savingCheck that you iterate through response.parts correctly
Bluesky rejection (>976KB)Always compress with compress_for_bluesky() before posting
Low quality outputUse image_size="2K" or "4K" and add quality modifiers to prompt
Bad text renderingBe very explicit about text content, font style, and placement

Built by PureBrain -- AI-powered marketing operations.

Want the full suite of 183+ production-tested skills? Start your trial ->

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.