A daily brand-DNA-driven carousel engine that turns trend signal, point of view, and reusable visual styles into publishable social slideshow packs.
Built for Claude Code, Codex, OpenClaw, Hermes, and any agent workflow that can read skills.
Brand DNA -> Trend Signal -> Concept Slate -> Script -> Scene Direction -> Styled Carousel -> Publish Pack
Slideshow Kit automates the social carousel workflow most teams still run by hand:
- Onboard the brand - Extract voice, beliefs, visual system, and reusable style rules from real samples
- Find the angle - Turn trend input and operator hot takes into ranked carousel concepts
- Write the script - Draft a format-compliant carousel with hook patterns, close actions, and save-worthy density
- Direct the visuals - Generate per-slide scene briefs before rendering so the image matches the argument
- Render the carousel - Produce style-driven PNG slides through
gpt-image-2or Codex-native generation - QA the output - Lint voice, format, word caps, save-worthiness, and render completion
- Package for publishing - Create local run artifacts, Postiz drafts/schedules, Telegram alerts, and run logs
The result: a repeatable carousel production loop that sounds like the brand, looks like the brand, and leaves behind the artifacts an operator needs to review, rerun, or publish.
Most social teams do not have an ideas problem.
They have a repeatability and taste problem.
One good carousel is easy. A consistent carousel machine is hard. You need a real point of view, a voice that does not collapse into generic AI copy, visual systems that survive across formats, and enough QA that the output is worth posting without a 45-minute rescue pass.
Most AI carousel tools skip the hard part. They give you templates, generic hooks, and a deck that looks like an ad.
Slideshow Kit starts from brand DNA. It reads how the brand talks, what it believes, what it refuses to say, how its visual system works, and which social-native formats fit the channel. Then it turns trend signal into a structured carousel run: concepts, script, scene direction, slides, prompts, logs, and publish payloads.
Not a prompt dump. Not a Canva template pack. Not a generic auto-poster.
A carousel operating system for people who want a daily social machine without losing the voice.
| Layer | Question |
|---|---|
| Brand DNA | Who does this need to sound like and look like? |
| Trend Signal | What is worth reacting to today? |
| Concept Slate | What are the strongest angles we could ship? |
| Script | How does the argument unfold slide by slide? |
| Scene Direction | What should each slide actually show? |
| Styled Render | Which reusable visual recipe should package this idea? |
| Publish Pack | What does the operator need to review, schedule, or rerun? |
The loop is the product.
┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Brand DNA │ → │ Concept │ → │ Script │ → │ Scene │
│ Voice + POV │ │ Slate │ │ Format-safe │ │ Direction │
└──────────────┘ └──────────────┘ └──────────────┘ └──────┬───────┘
│
┌─────────────────────────────────────────────────────────┘
↓
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Render │ → │ QA │ → │ Publish │
│ Styled PNGs │ │ Logs + Lints │ │ Postiz/Files │
└──────────────┘ └──────────────┘ └──────────────┘
Every run is artifact-backed. The agent is not just producing slides; it is producing a traceable packet:
concepts.md- 5-10 ranked concepts with hook variants and visual hooksconcept-pick.md- the selected concept and hookscript.md- frontmatter-compliant carousel scriptscene-direction.md- per-slide visual briefsconcept-meta.json- structured concept and visual metadataprompts.json- exact image promptsoutput-log.json- render status, timing, model/provider, and per-slide resultspost-NN.json- publish payloads for Postiz or manual scheduling
That is what makes the workflow recoverable. If a render partially fails, you can see which slide failed. If a concept was weak, you can inspect the score and hook pattern. If a style misses, you can adjust the style system instead of rewriting the whole kit.
- Brand DNA before generation - Voice, perspective, visual system, and style rules are first-class inputs, not after-the-fact instructions.
- Concepts before scripts - The kit ranks angles before it writes slides, so you choose the move before polishing the execution.
- Formats are explicit - Narrative, diagnostic, receipt/context, process reveal, anatomy breakdown, before/after, and counter-narrative formats have real slot rules.
- Visuals are directed before render - Scene direction happens at script time, so the image is part of the story, not a decorative afterthought.
- Styles are reusable assets - Each brand can keep named styles under
styles/<name>/, withDESIGN.md, refs, and optional word-cap overrides. - QA is built into the path - Voice lint, format lint, save filter, prompt logs, and partial-render accounting all happen before the operator ships.
- Agent-native, not platform-locked - Works through Claude Code, Codex, OpenClaw, Hermes, or a plain local checkout.
Every brand gets a local workspace with three DNA files:
brands/<slug>/
├── brand-voice.md
├── brand-perspective.md
├── visual-system.md
├── config.json
└── styles/
└── <style-name>/
├── DESIGN.md
├── style.yaml
└── refs/
Use paste mode when you have 5-10 strong posts. Use interview mode when the brand does not have enough samples yet.
The concept-generator skill turns trend input and brand corpus into ranked concepts. Each concept includes:
- format
- close action
- arc
- why it works
- personal-fact risk
- hook variants
- visual hook
- concept score
Interactive mode can pause for operator specifics. Autopilot mode avoids personal-fact concepts and picks a safer concept automatically.
The selected concept becomes script.md, with YAML frontmatter and section headings that match one of the supported carousel formats. The lint chain checks:
- brand voice violations
- em dashes and AI-tell phrases
- slot count and word count
- close-action vocabulary
- save-worthiness markers like numbers, dates, named frameworks, quotes, or tactical asides
The visual director writes scene-direction.md, one concrete visual brief per slide. Character-driven styles get content-matched variety instead of the same desk, same crop, same expression across every slide.
The styled-carousel skill merges:
kit defaults <- brand visual-system.md <- style DESIGN.md/style.yaml
Then it renders each slide in the requested sizes. In Codex Desktop, --provider auto prepares Codex-native generation requests. In shell/API mode, it can call the OpenAI image API.
The daily loop can create publish payloads and route them through Postiz. Telegram check-ins and alerts are optional and isolated, so a Telegram issue does not block publishing and a Postiz issue does not destroy the local run.
| Skill | What It Does |
|---|---|
slideshow-kit |
Top-level router for brand onboarding, carousel generation, daily loop, brand management, and style work |
concept-generator |
Generates concepts, selects one, drafts the carousel script, and writes concept metadata |
styled-carousel |
Renders a script into style-driven carousel PNGs with prompts and output logs |
Supporting workflows:
| Workflow | What It Does |
|---|---|
workflows/onboard-brand.md |
Extract brand voice, perspective, visual system, and default style |
workflows/daily-loop.md |
Trends -> check-in -> concepts -> script -> render -> publish -> log |
workflows/checkin.md |
Operator hot-take collection through Telegram or in-session review |
| Format | Use When |
|---|---|
narrative |
Story-driven lessons, case studies, and founder POV |
numbered_diagnostic |
"The 4 tells", "5 reasons your X is broken", diagnostic posts |
receipt_context |
Quote, screenshot, or claim followed by interpretation |
process_reveal |
"How I did X in N minutes" or workflow breakdowns |
anatomy_breakdown |
Teardowns, examples, and what-to-notice posts |
before_after |
Transformation, contrast, and old-way/new-way posts |
counter_narrative |
Contrarian takes on category orthodoxy |
See references/formats/README.md for slot templates and aliases.
git clone https://github.com/TheMattBerman/slideshow-kit.git
cd slideshow-kit
./install.shinstall.sh detects installed agents and installs the kit where it can:
~/.claude/skills/~/.codex/skills/~/.clawd/skills/- Hermes plugin paths when configured
./doctor.shThe doctor checks agent installs, image-generation keys, Postiz auth, optional Telegram setup, and brand DNA files.
./scripts/init_brand.sh mattThen fill the core DNA files:
$EDITOR ./brands/matt/brand-voice.md
$EDITOR ./brands/matt/brand-perspective.md
$EDITOR ./brands/matt/visual-system.mdOr let the agent onboard the brand from samples:
Onboard a new brand called `matt`. I'll paste 5-10 of my best social posts.
python skills/styled-carousel/scripts/generate_styled_carousel.py \
--brand matt \
--script examples/test-script.md \
--output ./brands/matt/runs/$(date +%F)/ \
--dry-runDry run writes prompts and logs without spending image-generation credits.
python skills/styled-carousel/scripts/generate_styled_carousel.py \
--brand matt \
--style social_native \
--script examples/test-snc-script.md \
--output ./brands/matt/runs/$(date +%F)/Once a brand is onboarded:
export SLIDESHOW_BRAND=mattThen ask your agent:
Run today's slideshow loop for matt.
The loop:
- Loads brand DNA
- Applies the live-spend gate
- Invokes trend research
- Collects or skips operator check-in
- Generates concepts
- Picks and drafts the script
- Writes scene direction
- Renders the configured styles
- Builds Postiz payloads
- Logs the run
Autopilot is intentionally gated. A brand needs 7+ draft/history runs before autopilot mode is allowed to spend or schedule without daily review. See references/live-spend-gating.md.
./scripts/init_brand.sh client-acme
./scripts/list_brands.sh
./scripts/switch_brand.sh client-acme
./scripts/list_styles.sh client-acmeCreate a new reusable visual style:
./scripts/add_style.sh --brand client-acme --style founder-notesStyle state lives with the brand, not inside the kit. That keeps client-specific voice, references, and visual decisions out of the repo.
Custom brand roots are supported:
export SLIDESHOW_BRANDS_ROOT="$HOME/work/brands"See references/brand-management.md and references/style-system.md for the full rules.
A typical run directory looks like:
brands/matt/runs/2026-05-08/
├── trends.json
├── checkin-response.md
├── concepts.md
├── concept-pick.md
├── script.md
├── scene-direction.md
├── concept-meta.json
├── prompts.json
├── output-log.json
├── social_native-slide-01-1024x1024.png
├── social_native-slide-02-1024x1024.png
├── ...
├── post-01.json
└── run-summary.json
The important part: this is not a black box. Every decision and every render can be inspected.
| Level | APIs | What Works |
|---|---|---|
| Dry run | None | Brand setup, scripts, prompts, linting, logs |
| Codex-native generation | Codex Desktop image generation | Native request packets and agent-mediated image creation |
| OpenAI API rendering | OPENAI_API_KEY |
Direct gpt-image-2 render path, visual director, face/continuity checks where enabled |
| Publishing | Postiz CLI auth | Draft or scheduled carousel posts |
| Check-ins / alerts | Telegram bot token | Optional daily review and failure alerts |
Start with dry runs. Add live rendering only after the script and style are working.
- Brand voice beats generic polish. If it does not sound like the brand, it fails.
- One idea per carousel. A crowded carousel is a weak argument with slide numbers.
- The hook must earn the swipe. Slide 1 is not a title slide.
- Format rules are real. Slot count, word count, close action, and save-worthiness are gates.
- Visuals must serve the argument. Pretty-but-random scenes are not good output.
- Draft mode comes before autopilot. Live scheduling is earned through run history.
- The run packet is the deliverable. PNGs matter, but prompts, logs, script, and metadata make the workflow reusable.
slideshow-kit/
├── README.md
├── CHANGELOG.md
├── SKILL.md
├── SUITE.md
├── SPEC.md
├── AGENTS.md
├── CLAUDE.md
├── install.sh
├── uninstall.sh
├── doctor.sh
├── skills/
│ ├── concept-generator/
│ └── styled-carousel/
├── workflows/
│ ├── onboard-brand.md
│ ├── daily-loop.md
│ └── checkin.md
├── scripts/
│ ├── init_brand.sh
│ ├── add_style.sh
│ ├── list_brands.sh
│ ├── list_styles.sh
│ ├── publish_postiz.sh
│ └── send_telegram.sh
├── lib/
├── references/
│ ├── formats/
│ ├── styles/
│ ├── concept-patterns/
│ └── brand-templates/
├── examples/
├── evals/
└── tests/
Slideshow Kit sits in the same family as the rest of the agent kit stack:
- 100k Posts Kit - performance signal into weekly content ideas
- Creator Breakout Kit - creator concepts before sourcing or production
- Landing Page Factory - URL to deployable landing page
- Brand Shoot Kit - ecommerce visual production loop
- Outcome Kit - real winners, fake winners, leaks, and next moves
Slideshow Kit owns the carousel lane: brand-native, social-native, repeatable posts that can be generated, reviewed, and published every day.
The future of social content is not asking AI for posts.
It is a production loop:
Signal -> point of view -> native format -> visual system -> QA -> publish -> memory
Slideshow Kit is that loop in repo form.
MIT License. See LICENSE.
Built by Matt Berman.
- Twitter/X: @themattberman
- Newsletter: Big Players
- Agency: Emerald Digital
This is for operators who want a daily carousel system, not another folder of prompts.