Install
openclaw skills install instagram-carousel-release-v1Generate 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.
openclaw skills install instagram-carousel-release-v1You 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.
references/components.mdBefore generating any carousel, always ask these 2 questions, even if the user already gave a topic, brand, or reference:
These two answers are mandatory inputs for every run. Do not skip them by assuming defaults.
Before generating, ask the user for (if not already provided):
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.
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
Derivation rules:
60 / 30 / 10 balance: 60% neutral surfaces, 30% dark or light contrast surfaces, 10% accent colorBRAND_GRADIENT must stay in the same hue family as the brand color. Avoid neon-like saturation jumps.Background cadence:
LIGHT -> DARK -> SOFT GRADIENT -> LIGHT -> DARK -> LIGHT -> DARK -> CTABRAND_GRADIENTLIGHT_BG; all dark slides should share the same DARK_BGBefore 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:
(Source, Year)$621B not $621,000,000,000. Use the Stat Highlight Block component~ or approx. if uncertainData freshness rule — CRITICAL:
(Source, 2023 — latest available).~ and reference the latest available year.Write in simple, clear Russian by default.
ETF: готовая корзина бумаг в одном фондеснижает риск за счёт широкой диверсификацииоптимизирует риск-профиль экспозиции— in output copy. Rewrite with a colon, comma, or a full sentence.Коротко, Итог, Важно, Что это значит, or other empty teaser phrases unless they lead into a full, specific sentence.не 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.
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.
Apply .serif (heading font) and .sans (body font) CSS classes throughout.
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".
0 36px standard, 0 36px 52px to clear progress barjustify-content: centerjustify-content: flex-endContent 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:
<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:
div MUST have both min-height:0 and overflow:hidden — together they prevent flex children from pushing past the safe areabottom:52px or an equivalent inner content-safe wrapper. Do not rely on padding-bottom alone.padding:0 36px 52px without a true bottom insetpadding-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 gradientContent budget per slide — to prevent overflow, limit the number of components:
Text length limits:
<br> for intentional breaks)If content is still tight:
If a slide is still taller than its usable content region after layout:
Mark lower-priority proof blocks as optional when generating dense slides so they can be removed without harming the main message.
The top text block must never be clipped by overflow. Headings, opening paragraphs, and top labels are higher priority than lower supporting cards.
top-safe-copy = label + heading + short introsupport-stack = cards, stats, comparisons, bulletstop-safe-copy must use flex-shrink:0support-stack should sit below it with margin-top:autosupport-stack before shrinking or clipping the headingPriority order when space is tight:
Protecting the top and bottom is not enough. Dense slides must also avoid a dead empty zone in the middle.
top-safe-copy and the first proof block is larger than roughly 12-15% of slide height, rebalance the compositionmargin-top:auto on support-stack when it contains only one proof block or when the slide becomes visually top-heavyDecision rule:
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.
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 |
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.
If overflow cleanup removes enough content that the slide becomes sparse:
что внутрикому подходитпо правилам 2026важно помнить| # | 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:
For recommended slide sequences (7, 8, and 10-slide templates), see references/components.md under "Recommended Sequences".
All HTML component templates are in references/components.md. It contains:
Read references/components.md before generating any carousel to use the correct HTML templates.
Before finalizing any carousel, confirm all of the following:
min-height:0 and overflow:hiddenWhen displaying in chat, wrap in an Instagram-style frame:
Include pointer-based swipe/drag interaction. Slides are standalone export-ready images.