# charlesdove977/carousel-builder architecture

> Architecture diagram of the GitHub repository charlesdove977/carousel-builder, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/charlesdove977/carousel-builder
- Repository: https://github.com/charlesdove977/carousel-builder
- Video tour (about a minute): https://gitdiagram.com/charlesdove977/carousel-builder/video

## Overview

Carousel Builder is a Claude Code command package for turning a topic into a branded, Canva-assembled social carousel, with a separate reusable caption command. The main workflow interviews the user, uses a reference deck and brand context, drafts and checks copy before image generation, then assembles a Canva preview for approval before commit. The README also documents standalone caption generation using a voice fingerprint. Source excerpts were unavailable, so relationships here follow documented behavior rather than inspected implementation.

Main entry points: [`commands/carousel.md`](https://github.com/charlesdove977/carousel-builder/blob/main/commands/carousel.md) (Canva assembly), [`commands/short-form-caption.md`](https://github.com/charlesdove977/carousel-builder/blob/main/commands/short-form-caption.md) (Caption writing), [`config/brand-context.example.md`](https://github.com/charlesdove977/carousel-builder/blob/main/config/brand-context.example.md) (Brand context), [`config/voice-fingerprint.example.md`](https://github.com/charlesdove977/carousel-builder/blob/main/config/voice-fingerprint.example.md) (Voice fingerprint)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workflow["Carousel workflow"]
  node_topic["Topic interview<br/>[carousel.md]"]
  node_framework["Deck framework<br/>[carousel.md]"]
  node_copy["Copy and budgets<br/>[carousel.md]"]
  node_cover["Cover generation<br/>[carousel.md]"]
  node_pillar_images["Pillar images<br/>[carousel.md]"]
  node_canva_draft["Canva assembly<br/>[carousel.md]"]
  node_approval["Preview approval<br/>[carousel.md]"]
  node_caption["Caption writing"]
end

subgraph group_inputs["Brand inputs"]
  node_brand_context["Brand context"]
  node_voice_fingerprint["Voice fingerprint"]
  node_reference_deck["Reference deck"]
end

subgraph group_integrations["External services"]
  node_higgsfield["Higgsfield MCP"]
  node_canva["Canva MCP"]
end

subgraph group_results["Generated results"]
  node_carousel_files["Carousel files"]
  node_canva_design["Canva design"]
  node_caption_output["Caption text"]
end

node_user(("User"))

node_user -->|"provides topic"| node_topic
node_topic -->|"frames from"| node_framework
node_framework -->|"reads"| node_reference_deck
node_framework -->|"reads"| node_brand_context
node_topic -->|"develops pillars"| node_copy
node_copy -->|"drafts cover"| node_cover
node_cover -->|"requests images"| node_higgsfield
node_copy -->|"approves copy first"| node_pillar_images
node_pillar_images -->|"requests images"| node_higgsfield
node_cover -->|"supplies cover"| node_canva_draft
node_pillar_images -->|"supplies images"| node_canva_draft
node_copy -->|"supplies text"| node_canva_draft
node_canva_draft -->|"duplicates and edits"| node_canva
node_canva -->|"shows preview"| node_approval
node_user -->|"approves"| node_approval
node_approval -->|"commits on approval"| node_canva
node_canva_draft -->|"writes files"| node_carousel_files
node_approval -->|"provides links"| node_canva_design
node_canva_draft -->|"invokes"| node_caption
node_user -.->|"requests standalone"| node_caption
node_caption -->|"reads"| node_voice_fingerprint
node_caption -->|"writes caption"| node_caption_output
node_caption -->|"adds caption"| node_carousel_files

click node_topic "https://github.com/charlesdove977/carousel-builder/blob/main/commands/carousel.md"
click node_framework "https://github.com/charlesdove977/carousel-builder/blob/main/commands/carousel.md"
click node_copy "https://github.com/charlesdove977/carousel-builder/blob/main/commands/carousel.md"
click node_cover "https://github.com/charlesdove977/carousel-builder/blob/main/commands/carousel.md"
click node_pillar_images "https://github.com/charlesdove977/carousel-builder/blob/main/commands/carousel.md"
click node_canva_draft "https://github.com/charlesdove977/carousel-builder/blob/main/commands/carousel.md"
click node_approval "https://github.com/charlesdove977/carousel-builder/blob/main/commands/carousel.md"
click node_caption "https://github.com/charlesdove977/carousel-builder/blob/main/commands/short-form-caption.md"
click node_brand_context "https://github.com/charlesdove977/carousel-builder/blob/main/config/brand-context.example.md"
click node_voice_fingerprint "https://github.com/charlesdove977/carousel-builder/blob/main/config/voice-fingerprint.example.md"
click node_reference_deck "https://github.com/charlesdove977/carousel-builder/tree/main/examples/template-reference"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_topic,node_framework,node_copy,node_cover,node_pillar_images,node_canva_draft,node_approval,node_caption,node_user toneBlue
class node_brand_context,node_voice_fingerprint,node_reference_deck toneAmber
class node_higgsfield,node_canva toneMint
class node_carousel_files,node_canva_design,node_caption_output toneRose
```

## Components

### Carousel workflow

- [Topic interview](https://github.com/charlesdove977/carousel-builder/blob/main/commands/carousel.md): `commands/carousel.md`
- [Deck framework](https://github.com/charlesdove977/carousel-builder/blob/main/commands/carousel.md): `commands/carousel.md`
- [Copy and budgets](https://github.com/charlesdove977/carousel-builder/blob/main/commands/carousel.md): `commands/carousel.md`
- [Cover generation](https://github.com/charlesdove977/carousel-builder/blob/main/commands/carousel.md): `commands/carousel.md`
- [Pillar images](https://github.com/charlesdove977/carousel-builder/blob/main/commands/carousel.md): `commands/carousel.md`
- [Canva assembly](https://github.com/charlesdove977/carousel-builder/blob/main/commands/carousel.md): `commands/carousel.md`
- [Preview approval](https://github.com/charlesdove977/carousel-builder/blob/main/commands/carousel.md): `commands/carousel.md`
- [Caption writing](https://github.com/charlesdove977/carousel-builder/blob/main/commands/short-form-caption.md): `commands/short-form-caption.md`

### Brand inputs

- [Brand context](https://github.com/charlesdove977/carousel-builder/blob/main/config/brand-context.example.md): `config/brand-context.example.md`
- [Voice fingerprint](https://github.com/charlesdove977/carousel-builder/blob/main/config/voice-fingerprint.example.md): `config/voice-fingerprint.example.md`
- [Reference deck](https://github.com/charlesdove977/carousel-builder/tree/main/examples/template-reference): `examples/template-reference`

### External services

- **Higgsfield MCP**
- **Canva MCP**

### Generated results

- **Carousel files**
- **Canva design**
- **Caption text**

### Other components

- **User**

## Connections

- User → Topic interview: provides topic
- Topic interview → Deck framework: frames from
- Deck framework → Reference deck: reads
- Deck framework → Brand context: reads
- Topic interview → Copy and budgets: develops pillars
- Copy and budgets → Cover generation: drafts cover
- Cover generation → Higgsfield MCP: requests images
- Copy and budgets → Pillar images: approves copy first
- Pillar images → Higgsfield MCP: requests images
- Cover generation → Canva assembly: supplies cover
- Pillar images → Canva assembly: supplies images
- Copy and budgets → Canva assembly: supplies text
- Canva assembly → Canva MCP: duplicates and edits
- Canva MCP → Preview approval: shows preview
- User → Preview approval: approves
- Preview approval → Canva MCP: commits on approval
- Canva assembly → Carousel files: writes files
- Preview approval → Canva design: provides links
- Canva assembly → Caption writing: invokes
- User → Caption writing: requests standalone
- Caption writing → Voice fingerprint: reads
- Caption writing → Caption text: writes caption
- Caption writing → Carousel files: adds caption
