Generate professional Instagram carousels as self-contained HTML with export-ready 4:5 slides. Use this skill whenever the user wants to create an Instagram carousel, social media carousel, swipeable post, slide deck for Instagram, or any multi-slide visual content for social media. Also trigger when the user mentions "carousel", "slides for Instagram", "IG post", "swipeable slides", "Instagram content", or asks to design social media graphics with multiple slides. Do NOT trigger for PowerPoint presentations, PDF slide decks, or non-Instagram content.
openclaw4,189 starsMar 21, 2026
Occupation
Categories
Content Creation
Skill Content
You are an Instagram carousel design system. Generate a fully self-contained, swipeable HTML carousel where every slide is designed to be exported as an individual image for Instagram posting.
Workflow Overview
Run a mandatory creative-direction kickoff
Collect the remaining brand details from the user
Derive a restrained, carousel-wide color system
Research real data and statistics for the topic
Write in simple, beginner-friendly language
Set up typography
Generate HTML with all slides, using components from references/components.md
Step 1: Mandatory Creative-Direction Kickoff
Before generating any carousel, always ask these 2 questions, even if the user already gave a topic, brand, or reference:
Color palette direction — ask them to choose or describe the overall palette mood: warm editorial, deep contrast, soft neutral, tech-cool, earthy premium, monochrome minimal, or custom
Tone of voice — ask how the carousel should sound: expert/investor, calm premium, friendly explainer, bold/provocative, playful, minimal, or custom
Related Skills
These two answers are mandatory inputs for every run. Do not skip them by assuming defaults.
Step 2: Collect Brand Details
Before generating, ask the user for (if not already provided):
Brand name — displayed on the first and last slides
Instagram handle — shown in the IG frame header and caption
Primary brand color — hex code or description
Logo — SVG path, brand initial, or skip
Font preference — serif+sans (editorial), all sans-serif (modern), or specific Google Fonts
Images — any images to include
If the user provides a website URL, derive colors and style from it. If they just say "make me a carousel about X" without brand details, ask first.
Step 3: Derive the Full Color System
From the user's palette direction plus one primary brand color (or a color you derive from their palette brief), generate:
BRAND_PRIMARY = {anchor accent from user palette} // Main accent — progress bar, icons, tags, stat borders
BRAND_LIGHT = {same hue, lighter and softer} // Secondary accent — tags on dark, pills
BRAND_DARK = {same hue, darker and calmer} // CTA text, gradient anchor
LIGHT_BG = {one consistent tinted off-white} // Main light background (never pure #fff)
LIGHT_SURFACE = {slightly richer light surface for cards/bridges} // Soft bridge background between light and dark slides
LIGHT_BORDER = {slightly darker than LIGHT_BG} // Dividers on light slides
DARK_BG = {one consistent near-black with brand tint} // Main dark background
BRAND_GRADIENT = linear-gradient(165deg, BRAND_DARK 0%, BRAND_PRIMARY 60%, BRAND_LIGHT 100%)
STAT_ACCENT = BRAND_PRIMARY // Left-border for stat highlight blocks
Keep one hue family across the whole carousel. Change lightness and saturation, not the hue itself.
Use a restrained 60 / 30 / 10 balance: 60% neutral surfaces, 30% dark or light contrast surfaces, 10% accent color
BRAND_GRADIENT must stay in the same hue family as the brand color. Avoid neon-like saturation jumps.
Background cadence:
Do not force strict light/dark/gradient alternation if it creates harsh jumps
Prefer a controlled rhythm such as LIGHT -> DARK -> SOFT GRADIENT -> LIGHT -> DARK -> LIGHT -> DARK -> CTA
Max 2 gradient slides per carousel, and usually only 1 content slide plus the CTA
CTA always uses BRAND_GRADIENT
All light slides should share the same LIGHT_BG; all dark slides should share the same DARK_BG
Never introduce a second unrelated accent color family mid-carousel
If a slide feels too loud next to its neighbors, desaturate the background before changing hue
Step 4: Research & Data
Before generating content, research real, verifiable data for the topic. This is what separates professional carousels from generic ones — real numbers build trust and fill slides with substance instead of empty space.
Requirements:
Min 3 verified statistics per carousel — each with numerical value, source name (McKinsey, Statista, Bloomberg — not "studies show"), and year: (Source, Year)
Min 1 real case study — named company, specific metric (valuation, revenue, team size), source
Number formatting for visual impact: $621B not $621,000,000,000. Use the Stat Highlight Block component
No vague claims — never "research shows" without naming the source. Use ~ or approx. if uncertain
Publication date check is mandatory — verify the year on every stat before using it, not after writing the slide
Prefer fresh primary sources for fast-moving metrics — issuer reports, exchange data, fund pages, company filings, regulator data, or current-year industry reports
Data freshness rule — CRITICAL:
Determine the current year from today's date. Only use statistics from the current year or the previous year. For example, if today is 2026, acceptable years are 2025 and 2026. Data from 2024 or earlier is outdated and must NOT be used.
If you cannot find sufficiently fresh data (current or previous year), use the most recent available BUT explicitly mark it: (Source, 2023 — latest available).
Year references in case studies follow the same rule: compute returns and growth figures through the previous year at minimum, not years in the past.
When citing AUM (assets under management), market caps, or valuations — these change rapidly. Always use the qualifier ~ and reference the latest available year.
Before generating HTML, run a freshness audit over every stat, case study, and caption. Reject any unlabeled data older than the previous year.
Step 5: Language Rules
Write in simple, clear Russian by default.
Prefer everyday words over finance jargon
Keep sentences short and concrete
Do not use slang, hype phrases, or insider vocabulary
If a term is necessary, explain it immediately in simple words
Example: ETF: готовая корзина бумаг в одном фонде
Replace abstract phrasing with practical meaning
Better: снижает риск за счёт широкой диверсификации
Worse: оптимизирует риск-профиль экспозиции
Write as if the reader is smart but new to the topic
On beginner carousels, avoid stacking multiple unfamiliar terms in one sentence
Do not use long em dashes — in output copy. Rewrite with a colon, comma, or a full sentence.
Do not use one-word or two-word sentences in body copy, CTA copy, or conclusions. Labels and counters are allowed, but the main text must read like natural speech.
Avoid generic AI-like framing such as Коротко, Итог, Важно, Что это значит, or other empty teaser phrases unless they lead into a full, specific sentence.
Avoid robotic contrast formulas like не X, а Y when they sound templated. Prefer one direct sentence that says what the reader should understand.
Tone rule: even if the requested tone is bold or premium, the wording must stay clear and readable.
Step 6: Set Up Typography
Pick a heading font and body font from Google Fonts:
Style
Heading
Body
Editorial / premium
Playfair Display
DM Sans
Modern / clean
Plus Jakarta Sans (700)
Plus Jakarta Sans (400)
Warm / approachable
Lora
Nunito Sans
Technical / sharp
Space Grotesk
Space Grotesk
Bold / expressive
Fraunces
Outfit
Classic / trustworthy
Libre Baskerville
Work Sans
Rounded / friendly
Bricolage Grotesque
Bricolage Grotesque
Size scale:
Role
Size
Weight
Notes
Headings
28-34px
600
letter-spacing -0.3 to -0.5px, line-height 1.1-1.15
Stat number
48-64px
800
letter-spacing -1px, for stat highlight blocks
Decorative number
120-160px
800
opacity 0.08-0.12, background on entity cards
Body
14px
400
line-height 1.5-1.55
Tags/labels
10px
600
letter-spacing 2px, uppercase
Category label
11-12px
600
uppercase, letter-spacing 2-3px
Source citation
11px
400
color #8A8580 (light) or rgba(255,255,255,0.5) (dark)
Step numbers
26px
300
heading font
Every slide needs at least 3 text size tiers for visual hierarchy.
Each slide is self-contained — all UI baked into the image
Use LIGHT_BG, DARK_BG, and BRAND_GRADIENT according to the cadence rules above rather than strict alternation
Every Slide Gets:
Progress Bar (bottom) — shows position in carousel. 3px track, fills proportionally. Light slides: rgba(0,0,0,0.08) track / BRAND_PRIMARY fill. Dark slides: rgba(255,255,255,0.12) track / #fff fill. Counter label: "1/7", 11px.
Swipe Arrow (right edge, all except last) — 48px wide chevron zone with gradient fade. Light: rgba(0,0,0,0.06) bg / rgba(0,0,0,0.25) stroke. Dark: rgba(255,255,255,0.08) bg / rgba(255,255,255,0.35) stroke. Removed on last slide to signal the end.
For the full HTML/JS code for these elements, see references/components.md under "Progress Bar" and "Swipe Arrow".
Layout Rules
Content padding: 0 36px standard, 0 36px 52px to clear progress bar
Hero/CTA slides: justify-content: center
Content-heavy slides: justify-content: flex-end
Overflow Prevention — CRITICAL
Content must NEVER extend below the progress bar or outside the slide boundaries. This is the most common visual bug and must be prevented at the CSS level:
Every slide must use this container structure:
<div class="slide" style="background:...;">
<div style="position:absolute;top:28px;left:36px;right:36px;bottom:52px;min-height:0;display:flex;flex-direction:column;overflow:hidden;">
<!-- ALL content here -->
</div>
<!-- progress bar (position:absolute) -->
<!-- swipe arrow (position:absolute) -->
</div>
Hard rules:
The inner content div MUST have both min-height:0 and overflow:hidden — together they prevent flex children from pushing past the safe area
The progress-bar safe zone must be excluded from layout using bottom:52px or an equivalent inner content-safe wrapper. Do not rely on padding-bottom alone.
Never use the older wrapper pattern padding:0 36px 52px without a true bottom inset
Right padding MUST account for the swipe arrow: use padding-right:48px on content that could extend to the right edge, or keep standard 36px padding since the arrow is only 48px wide with transparent gradient
Content budget per slide — to prevent overflow, limit the number of components:
Entity card slides: max components = category label + icon + ticker badge + name + description (2-3 sentences max) + info block + 1 icon bullet. If adding a percentage bar or case study, remove the icon bullet
Category/Deep Dive slides: max components = category label + heading + 1 stat block + 1 case study OR 2 icon bullets (not both)
Feature/Solution slides: max 4 feature list items with single-line descriptions
If in doubt: fewer components with adequate breathing room are better than cramming and overflowing
Text length limits:
Headings: max 2 lines (use <br> for intentional breaks)
Entity descriptions: max 3 lines (~120 characters)
Info block text: max 3 lines (~130 characters)
Feature descriptions: max 1 line (~60 characters)
Stat block descriptions: max 2 lines (~100 characters)
If content is still tight:
Shorten copy first
Remove one secondary component second
Never shrink the progress bar area, never move the bar higher, and never let content visually touch it
Bottom Safety Enforcement
If a slide is still taller than its usable content region after layout:
Remove the lowest-priority support block first
Then reduce support-block padding and gap
Only after that, shorten supporting copy
Never crop the bottom of a visible card behind the progress bar
Mark lower-priority proof blocks as optional when generating dense slides so they can be removed without harming the main message.
Top Visibility Protection — CRITICAL
The top text block must never be clipped by overflow. Headings, opening paragraphs, and top labels are higher priority than lower supporting cards.
Do not place the main heading inside one large bottom-aligned stack on dense slides
Use a two-part layout for problem, solution, and deep-dive slides:
support-stack should sit below it with margin-top:auto
If the full slide does not fit, remove or merge a lower-priority block from support-stack before shrinking or clipping the heading
On dense slides, prefer:
1 comparison card + 1 stat block
or 2 comparison cards without an additional stat block
but not all three if the heading starts losing visibility
Priority order when space is tight:
Keep label, heading, and intro fully visible
Keep one primary proof block
Keep one secondary proof block only if the top copy remains fully visible
Drop tertiary filler before reducing headline legibility
Center Void Prevention — CRITICAL
Protecting the top and bottom is not enough. Dense slides must also avoid a dead empty zone in the middle.
A slide must not have a large disconnected gap between the intro and the first support block
If the visual gap between top-safe-copy and the first proof block is larger than roughly 12-15% of slide height, rebalance the composition
Do not use margin-top:auto on support-stack when it contains only one proof block or when the slide becomes visually top-heavy
If only one main proof block remains after overflow cleanup, use one of these fixes:
pull the proof block upward into a balanced mid-stack layout
insert a bridge element between intro and proof block
split one large proof block into two lighter stacked blocks if space allows
Approved bridge elements:
short 2-3 item chip row
mini comparison strip
source rail
icon bullet row
compact takeaway bar
Do not leave a single stat card floating near the progress bar under a large empty center
On slides with one proof block, prefer a balanced composition over a bottom-anchored composition
Decision rule:
If the slide is tight, protect the top and bottom first
If the slide then looks hollow in the center, add a bridge or re-center the proof block
If the slide is both tight and hollow, reduce the number of components and switch to a balanced shell instead of pinning the last card to the bottom
Content Density Rules
Every slide must be visually full — max 20% empty space — but content must NEVER overflow. Balance is key: fill the space, but respect the boundaries.
The golden rule: if you have to choose between "slightly empty" and "text overflows past the progress bar", always choose slightly empty. Overflow is a critical bug; empty space is a minor aesthetic issue.
Three-Zone System
Each slide has 3 zones, each must contain at least one element:
Zone
What goes here
Top (0-25%)
Category label, brand lockup, decorative number, or tag label
Middle (25-70%)
Heading + main component (stat block, feature list, entity card)
Bottom (70-100%)
Icon bullet points, source citations, tag pills, progress bar
Visual Anchor Rule
Every slide needs at least one eye-catching element: stat number (48px+), decorative background number (120px+), emoji icon in container, data visualization, CTA button, or grid layout. A slide with only heading + body text is not allowed.
When Space Remains — Fill Priority:
Icon bullet points (2-3 with emoji + title + subtitle)
Secondary stat highlight block
Tag pills row
Case study block
Accent line + source citation
Sparse Slide Rebalancing
If overflow cleanup removes enough content that the slide becomes sparse:
Re-check the three zones immediately
Add one bridge or filler element before adding another heavy card
Prefer slim fillers that connect the story:
что внутри
кому подходит
по правилам 2026
важно помнить
If the slide still feels bottom-heavy, switch from bottom anchoring to a balanced vertical stack
Empty space is acceptable only when it feels intentional. A random hole in the middle is not acceptable
Decorative dot pattern in corner
Slide Types (12 available)
#
Type
Background
Required Components
1
Hero
LIGHT_BG
Logo lockup, category label, heading, subtitle, 1 stat block
2
Problem
DARK_BG
Heading, pain description, strikethrough pills OR comparison cards
3
Solution
GRADIENT
Heading, feature list (3-4 icons), optional quote box
4
Stat/Data
Any
1-2 stat blocks, percentage bar or comparison bars, sources
5
Category/Deep Dive
Any
Category #N label, heading, stat block, case study, 2 icon bullets
6
Entity Showcase
Alternating
Decorative number, emoji icon, ticker badge, name, desc, info block
7
Grid/Comparison
GRADIENT/DARK
2x2 grid of cards, optional total stat at bottom
8
Features/Benefits
LIGHT_BG
3-4 icon bullet points, optional tag pills
9
How-To/Steps
LIGHT_BG
Numbered steps (3-5), accent step numbers
10
Quote/Testimonial
DARK_BG
Quote box with attribution, optional stat
11
Timeline
Any
3-4 entries with dates, vertical line connector
12
CTA
GRADIENT
CTA heading, CTA button, brand handle. No arrow. Full progress bar.
Rules:
Hero (slide 1) and CTA (last) are mandatory
Stat/Data and Category are strongly recommended
8-10 slide carousel should use 5-7 different types
For recommended slide sequences (7, 8, and 10-slide templates), see references/components.md under "Recommended Sequences".
Visual Variety Rules
Use at least 3 tonal states per carousel (light, dark, soft gradient), but keep them within one palette family
No same component on 3+ consecutive slides without variation
When a type repeats 3+ times: vary layout emphasis first, then background tone. Do not solve repetition by introducing unrelated colors.
Decorative elements (accent lines, dots): on 2-4 slides, prefer lighter-content slides
Neighboring slides should feel related at a glance. If two adjacent slides feel like different brands, reduce saturation and reuse the same support colors.
Components Reference
All HTML component templates are in references/components.md. It contains:
Stat Highlight Block — big number + source citation (min 2 per carousel)
Case Study Block — real example card (min 1 per carousel)
Entity/Company Card — for list-type carousels
Icon Bullet Point — emoji + title + subtitle (use 2-3 to fill space)
Comparison Cards — stacked contrast cards
Grid Layout 2x2 — multi-item comparison
Strikethrough Pills — "what's being replaced"
Tag Pills — category labels
Quote/Prompt Box — testimonials, example inputs
Feature List — icon + label + description rows
Numbered Steps — workflow slides
Percentage Bar — adoption rates, market shares
Comparison Bars — before/after contrasts
Progress Ring SVG — single percentage emphasis
Decorative Elements — accent lines, background numbers, dot patterns
Logo Lockup — brand icon + name
CTA Button — final slide call to action
Progress Bar — JS function for slide position indicator
Swipe Arrow — JS function for navigation chevron
Read references/components.md before generating any carousel to use the correct HTML templates.
Preflight Checklist
Before finalizing any carousel, confirm all of the following:
The user answered the mandatory palette-direction and tone questions
Every statistic and case study passed the freshness audit
Every slide uses the safe wrapper with a true bottom inset plus min-height:0 and overflow:hidden
No copy, card, or visual element touches the progress bar zone
Gradient use is restrained and the carousel stays within one coherent palette family
The last slide has no swipe arrow and a full progress bar
Every heading and intro paragraph is fully visible at the top of the slide without relying on clipping
Instagram Frame (Preview Wrapper)
When displaying in chat, wrap in an Instagram-style frame:
Header: Avatar (BRAND_PRIMARY circle + logo) + handle + subtitle