Skip to content

Image Post Generation

The high-engagement image post workflow generates static social media graphics with dynamic visuals and coherent text overlays designed to maximize engagement. Unlike video thumbnails, these are standalone graphic-design-oriented posts for platforms like Instagram, Twitter, LinkedIn, and Pinterest.

Terminal window
# From a niche/topic — generates hooks, then images
fabric run media/high-engagement-posts \
--input niche="AI productivity tools" \
--input platforms='["instagram-square", "twitter"]'
# From pre-existing hooks (skip hook generation)
fabric run media/high-engagement-posts-from-hooks \
--input hook_ideas='[{"hook_text": "Stop using ChatGPT wrong"}]'
# Trending topics → posts (composed pipeline)
fabric run global/hot-topics-to-posts
gather_competitor_insights → gather_trend_signals → generate_hook_ideas →
craft_image_prompts → generate_post_images → score_post_images →
prepare_post_output
craft_image_prompts → generate_post_images → score_post_images →
prepare_post_output
hot_topics_pipeline → bridge_topics_to_hooks → generate_hook_ideas →
craft_image_prompts → generate_post_images → score_post_images →
prepare_post_output

Takes hook ideas and produces image_specs[] — one per hook and platform combination.

  • Condenses hooks to 1-5 word overlays (ALL CAPS, bold)
  • LLM generates per-hook: visual concept, color direction, layout type, typography guidance
  • Applies high-engagement design principles:
    • Typography is the hero — text IS the content
    • High contrast (dark text on light, white/yellow on dark gradient)
    • Color psychology: red/orange = urgency, yellow = attention, blue = trust
    • Clean negative space, no busy backgrounds
    • Readable at phone-screen thumbnail size
    • Graphic design aesthetic, not photography

Two generation paths, automatically selected based on the configured model:

Uses Gemini’s native text rendering to generate images with text baked in:

  • Text overlay is part of the image generation prompt
  • Produces coherent, styled, visually integrated text
  • Best quality for text-heavy engagement posts

Each image spec generates num_variants (default 3) variants for selection.

Sends generated images back to Gemini vision for quality scoring (1-10) across:

DimensionDescription
text_readabilityCan the text be read at thumbnail size?
visual_impactDoes the image grab attention in a scroll?
text_image_coherenceDo text and visual work together?
click_appealWould you stop and click?
platform_fitDoes it match the platform’s aesthetic?

Images below threshold (default 6.0) are flagged. Set auto_regenerate=true to automatically retry low-scoring images.

Ranks results by score and identifies the best variant per platform.

ParameterTypeDefaultDescription
nichestringrequiredContent niche for hook generation
hook_ideaslist[dict]generatedPre-existing hooks (skips generation)
platformslist[str]["instagram-square", "twitter"]Target platforms
brand_stylestring""Brand style guidelines
num_variantsint3Variants per image spec
auto_regenerateboolfalseAuto-retry low-scoring images
qualitystring""Quality preset (affects image model)
PlatformDimensionsAspect Ratio
instagram-square1080 x 10801:1
instagram-portrait1080 x 13504:5
instagram-story1080 x 19209:16
twitter1200 x 67516:9
facebook1200 x 63016:9
linkedin1200 x 62716:9
pinterest1000 x 15002:3
threads1080 x 10801:1
{
"posts": [
{
"hook_text": "Stop using ChatGPT wrong",
"overlay_text": "STOP USING CHATGPT WRONG",
"platform": "instagram-square",
"image_path": "/tmp/post_001.png",
"scores": {
"text_readability": 8,
"visual_impact": 9,
"text_image_coherence": 7,
"click_appeal": 8,
"platform_fit": 9
},
"overall_score": 8.2,
"variant_index": 0,
"generation_method": "gemini_native"
}
],
"best_per_platform": {
"instagram-square": 0,
"twitter": 2
},
"workflow": "high-engagement-posts"
}

The workflow uses a post operation in the model configuration system:

ProfileModelText Rendering
(default)gemini-3.1-flash-image-previewNative (in-image)
premiumgemini-3.1-flash-image-previewNative (in-image)
localsdxl-turboPIL overlay
local-powerflux-schnellPIL overlay

Override per-run:

Terminal window
fabric run media/high-engagement-posts \
--input niche="AI tools" \
--input post_model="flux-schnell"

The craft_image_prompts task selects a layout type for text placement:

LayoutDescription
centeredSemi-transparent dark rectangle centered, text centered within
bannerSolid/gradient band across top or bottom third
splitDark half on left or right, text on the dark side
gradientGradient overlay from bottom, text in lower portion