claude-seo-ai
The SEO + AI-search (GEO/AEO) optimization toolkit for Claude Code, two-score audit + opt-in fixer. Built for 2026-2027.
Builds Instagram carousels through chat with Claude, designing slides and exporting them as PNGs at exact Instagram dimensions. Brand settings can be configured for consistent slides.
Clone the repository
$ git clone https://github.com/Hainrixz/open-carrusel


Local-first. Open source. One command to start.
Designing Instagram carousels eats hours. You either:
Open Carrusel takes a different bet. You chat with Claude — the same model many designers already trust — and it generates real HTML/CSS slides that get screenshotted to PNGs at exact Instagram dimensions. Slides are unique, on-brand, and pixel-perfect. Everything runs on your laptop. Nothing is sent to a cloud you don't control.
It's open source under MIT. Fork it, tweak the system prompt, ship your own variant. No accounts. No subscriptions. No vendor lock-in.
Dashboard — your carousels, templates, and one-click export.
Editor — chat panel (left), live preview (center), drag-reorderable filmstrip (bottom).
The slides shown above were generated by chatting with Claude. No templates, no copy-paste — every layout, color, and font choice came from a conversation.
First run takes 1–2 minutes (Puppeteer downloads ~300 MB of Chromium for PNG export). After that, every launch is seconds.
git clone https://github.com/Hainrixz/open-carrusel.git
cd open-carrusel
claude
/start
That's it. Dependencies install, the dev server starts, your browser opens. Now design carousels by chatting.
git clone https://github.com/Hainrixz/open-carrusel.git
cd open-carrusel
npm run setup # installs deps + seeds /data/
npm run dev # starts http://localhost:3000
You won't get the AI chat without Claude Code installed (the in-app agent shells out to the claude CLI), but the editor and export still work for static slides.
/data/ and /public/uploads/. Nothing is sent to a cloud you don't control. The only network call is when Claude Code talks to Anthropic.The in-app agent is the Claude CLI spawned as a subprocess from /api/chat with --allowedTools Bash WebFetch. Messages stream back to the browser via Server-Sent Events.
When you ask for a slide, Claude:
/api/carousels/[id]/slides via curl (using its Bash tool)You > Create a 5-slide carousel about “3 morning habits that
actually move the needle.” Punchy, dark mode, accent red,
portrait 4:5.
Claude > Coming up. I'll build a hook slide, three habit slides,
and a CTA. Working...
[streams 5 HTML slides into the filmstrip]
You > Slide 3 — the headline is too long. Cut it in half and
move the icon to the top.
Claude > Done.
[updates that slide; you can /undo if you preferred the old one]
Slides are stored as body-level HTML (no <html>/<head>/<!DOCTYPE>). The shared function wrapSlideHtml() in src/lib/slide-html.ts wraps that body into a full document — adding font loading, dimension constraints, and box-sizing reset — and serves it both:
<iframe> for live preview in the editorBecause the same wrap function feeds both paths, what you see is exactly what you export. No surprises.
Type these inside Claude Code:
| Command | What it does |
|---|---|
/start [port] | Install + seed + run + open browser. Idempotent — re-running on a healthy install is seconds. |
/stop [port] | Kill the dev server. Defaults to :3000, accepts a port arg matching /start. |
/reset | Wipe local carousels, templates, brand config, uploads, exports — and re-seed defaults. Asks first. |
/doctor | Run setup diagnostics: Node version, Claude CLI on PATH, deps installed, data files seeded, port free. |
You can also run them outside Claude Code:
npm run setup # equivalent to /start (skips the browser-open + background server bits)
npm run dev # start the dev server
npm run build # production build
npm run doctor # run scripts/doctor.mjs (works pre-`npm install`)
flowchart LR
U(["Browser :3000"])
C["Chat Panel"]
P["Slide Preview<br/>(sandboxed iframe)"]
F["Filmstrip<br/>(dnd-kit)"]
API["/api/chat<br/>SSE streaming/"]
CCLI["Claude CLI<br/>subprocess"]
SLIDES["/api/carousels/.../slides/"]
DATA[("/data/*.json<br/>async-mutex<br/>atomic writes")]
EXP["/api/.../export/"]
PUP["Puppeteer<br/>(headless Chromium)"]
ZIP{{"ZIP of PNGs"}}
U --> C & P & F
C -- "POST chat" --> API
API -- "spawn" --> CCLI
CCLI -. "SSE" .-> API
API -. "SSE" .-> C
CCLI -- "curl POST slide HTML" --> SLIDES
SLIDES <--> DATA
P <--> SLIDES
F <--> SLIDES
U -- "Export" --> EXP
EXP --> PUP
PUP --> ZIP
ZIP --> U
Why these choices:
Bash (to curl the slide-write endpoints) and WebFetch (for research while designing).<script> tags allowed (enforced by the iframe sandbox="" attribute). Slides can't run code or escape their box.src/lib/data.ts with proper locking, and writes are tmp-file + rename to avoid torn JSON.For more, see CLAUDE.md — the architecture doc tuned for AI assistants working on this codebase.
| Layer | Tool |
|---|---|
| Framework | Next.js 16 (Turbopack), React 19 |
| Language | TypeScript 5 |
| Styling | Tailwind CSS v4 (CSS-first config in globals.css) |
| UI primitives | Radix UI, lucide-react |
| Drag/drop | @dnd-kit |
| AI agent | Claude CLI subprocess |
| Image export | Puppeteer, Sharp |
| Zipping | Archiver |
| Storage | JSON files + async-mutex |
| Animation | CSS-first (Emil Kowalski's design philosophy) |
The SEO + AI-search (GEO/AEO) optimization toolkit for Claude Code, two-score audit + opt-in fixer. Built for 2026-2027.
A Claude Code plugin that interviews you about what to build, designs the architecture, and writes a self-contained blueprint another Claude Code instance can build from with no prior context. Each build step includes acceptance criteria and a verify command.
A security analysis skill for Claude Code that scans a local project for dependency vulnerabilities, insecure code patterns, leaked secrets and authentication flaws, then produces a report.
Gives Claude Code access to the prompts.chat library, letting you search, retrieve and improve AI prompt templates, and find and install Agent Skills from its registry.
A Claude Code skill for generating editable PPTX presentations and slides from a workflow, with reusable brand, style, layout, and deck workspaces, native charts, speaker notes, and template filling.
Gives AI agents control over Word, Excel and PowerPoint files, with skills for building .docx reports, academic papers, Excel dashboards and Morph-style animated slides.
A skill that builds animation-rich HTML presentations from scratch or converts PowerPoint files to web slides. Useful for anyone turning a deck into a web presentation.
Builds Instagram carousels through chat with Claude, designing slides and exporting them as PNGs at exact Instagram dimensions. Brand settings can be configured for consistent slides. Install it with the command on its page. Free and open source.
Is this plugin yours?
Claim it with GitHubSubmit a pluginPromote it