---
name: social-carousel
description: Instagram / LinkedIn carousels of up to 10 slides in one consistent style, with titles, body text, Kenerate-generated images, progress dots, handle and swipe arrows, exported as PNGs, a multi-page PDF for LinkedIn document posts and a preview strip. Also splits one wide image into a seamless panorama carousel. Use when the user wants a carousel, swipe post, multi-slide post, LinkedIn document / PDF carousel, educational slides or a panorama post.
compatibility: Needs the Kenerate MCP server for images and Python 3.9+ with Pillow (ffmpeg not needed).
metadata:
  author: kenerate
  version: "1.0"
  kenerate-tools: "generate_image expand_image wait_for_generation"
---

# Social carousel

Rules: [references/KENERATE.md](references/KENERATE.md) (models and voices: [references/MODELS.md](references/MODELS.md), or the free `pick_model` / `pick_voice` tools).

## Ask the user
Topic and goal, number of slides (≤10), theme (light, dark or brand colour), handle, and which slides need images.

## 1. Write the slides
Slide 1 is the hook / title (with an image); slides 2..n-1 hold one idea each (title ≤ 6 words, body ≤ 25 words);
the last slide is the CTA (save, follow, link). Show the outline and get a yes. Save it as `slides.json`:
`{"slides": [{"title": "...", "body": "...", "image": "<url>"}, ...]}`.

## 2. Images (Kenerate)
For each slide with an image: `generate_image(prompt="<illustration of the idea>, <consistent style words>, no text", aspect_ratio="4:3" (in-slide card) or "4:5" (cover), model="kenerate/gpt-image-2.5-sunburst" or "kenerate/seedream-v5.0-pro")`.
For one consistent style across slides, generate slide 1 first, then pass it in `reference_image_urls` with
`kenerate/nano-banana-2.1`. Say the count and price before you start.
Panorama: `generate_image(..., aspect_ratio="21:9")` or `expand_image(image_url=..., aspect_ratio="21:9")`.

## 3. Render (local)
```
python <skill-dir>/scripts/carousel.py --spec slides.json --theme dark --brand-color "#FF5A1F" \
  --handle "@brand" --name <project> --out-dir kenerate-out/social-carousel
python <skill-dir>/scripts/carousel.py --panorama "<wide image url>" --count 3 --name <project>-pano
```
- `--size 1080x1350` (4:5, default) or `1080x1080`; `--theme light|dark|brand`; `--font` / `--font-family "Inter"`; `--no-pdf`.
- Outputs: `<project>_01.png … _NN.png`, `<project>.pdf` (LinkedIn) and `<project>_preview.jpg`. Show the preview.

## If something fails
The panorama ratio warning means the image gets cropped; outpaint it wider with `expand_image` (charged, ask first).
Long text auto-shrinks; split a slide in two if it gets small.
