Brandmint
Orchestrated brand identity system that transforms a brand definition into comprehensive marketing outputs — from strategic text documents through AI-generated visual assets to video deliverables and published documentation sites.
Architecture Overview
brand-config.yaml
↓
┌─────────────┐ ┌───────────────────┐
│ Wave Planner│←────│Scenario Recommender│
└──────┬──────┘ └───────────────────┘
↓
Waves 1→6
↓
Skills Registry (44 skills, 9 categories)
↓
Hydrator (feeds outputs → config)
↓
Visual Pipeline (FAL.AI assets)
↓
Publishing Pipeline (Wave 7: theme, NotebookLM, decks, reports, diagrams, video)
↓
Wiki → Astro Site
Prerequisites
- Python 3.10+ with
uv package manager
- FAL_KEY in
~/.claude/.env
- Dependencies:
python-dotenv, fal-client, requests, pyyaml
- Bun (for Astro wiki publishing)
- Node.js >= 18 (for Remotion video rendering)
uv venv .venv && source .venv/bin/activate
uv pip install python-dotenv fal-client requests pyyaml
CLI Commands
# Main entry points (both work)
brandmint [command]
bm [command]
# Global flags (available on all commands)
bm --verbose launch ... # Enable verbose logging
bm --debug launch ... # Maximum verbosity
bm --quiet launch ... # Suppress most output
# Full pipeline wizard
bm launch --config brand-config.yaml --scenario crowdfunding-lean --waves 1-3
bm launch --config brand-config.yaml --max-cost 5.00 # Abort if cost exceeds budget
bm launch --config brand-config.yaml --resume-from 3 # Resume from specific wave
# Visual asset generation (3-phase)
bm visual generate --config brand-config.yaml # Phase 1: Generate scripts
bm visual execute --config brand-config.yaml --batch anchor # Phase 2a: Anchor FIRST
bm visual execute --config brand-config.yaml --batch identity # Phase 2b: Parallel batches
bm visual execute --config brand-config.yaml --batch all # Or run all remaining
bm visual execute --config brand-config.yaml --force # Bypass cache, regenerate
bm visual verify --config brand-config.yaml # Phase 3: Validate
# Execution reports
bm report --config brand-config.yaml # Console summary
bm report --config brand-config.yaml --format json # JSON output
bm report --config brand-config.yaml --format html -o report.html
# Cache management
bm cache stats # Show cache statistics
bm cache clear # Clear all cached prompts
bm cache clear --expired # Clear only expired entries
# Scenario planning
bm plan context --config brand-config.yaml
bm plan recommend --config brand-config.yaml
# Skill management
bm install skills # Creates symlinks in ~/.claude/skills/
bm install check # Verify installation
bm registry list # List all 44 skills
Image Providers
Set via env var or config (generation.provider in brand-config.yaml):
| Provider |
Env Var |
Style Anchor |
Notes |
| FAL.AI (default) |
FAL_KEY |
✅ Full |
Best consistency, recommended |
| OpenRouter |
OPENROUTER_API_KEY |
❌ |
Unified API, text-only prompts |
| OpenAI |
OPENAI_API_KEY |
⚠️ Limited |
DALL-E 3 has fixed sizes |
| Replicate |
REPLICATE_API_TOKEN |
⚠️ Limited |
Pay-per-second pricing |
Note: Only FAL.AI's Nano Banana Pro supports image references (style anchor cascade).
Skill Categories (44 skills)
| Category |
Count |
Purpose |
text-strategy/ |
7 |
Brand positioning, personas, voice, competitive analysis |
visual-prompters/ |
9 |
AI image prompt generation (product, fashion, editorial, brand) |
campaign-copy/ |
6 |
Campaign page copy, ads, hooks, press releases |
email-sequences/ |
3 |
Welcome, pre-launch, and launch email sequences |
brand-foundation/ |
3 |
Visual identity, brand naming, logo concept design |
social-growth/ |
5 |
Social content calendar, community, influencer outreach |
advertising/ |
5 |
Pre-launch ads, competitive ad extraction, niche validation |
publishing/ |
6 |
NotebookLM, slide decks, reports, diagrams, video, wiki |
visual-pipeline/ |
4 |
AI visual asset generation + integration orchestrator |
Workflow Routing
- "Create a brand for [X]" → Full orchestration: Waves 1-6 → visual pipeline → publishing
- "Generate assets for [X]" → Execute visual pipeline only (needs existing config)
- "Build wiki from outputs" → Publishing pipeline: wiki-doc-generator → markdown-to-astro-wiki
- "Run [skill-name] for [X]" → Individual skill execution
Wave Execution
Skills execute in dependency-ordered waves. Use depth to control how many waves run:
| Depth |
Waves |
Use Case |
surface |
1-2 |
Quick positioning only |
focused |
1-5 |
Standard launch (default) |
comprehensive |
1-6 |
Full campaign |
exhaustive |
all |
Enterprise/premium |
| Wave |
Skills |
Purpose |
| 1 |
buyer-persona, competitor-analysis |
Foundation research |
| 2 |
product-positioning-summary, mds-messaging-direction-summary |
Strategic positioning |
| 3 |
voice-and-tone, visual-identity-core |
Brand personality |
| 4 |
campaign-page-copy, detailed-product-description |
Core copy |
| 5 |
email sequences, social-content-engine, ads |
Channels |
| 6 |
Visual pipeline, publishing pipeline |
Assets & output |
| 7 |
Theme, NotebookLM, decks, reports, diagrams, video |
Deliverables |
Scenarios
Pre-built execution profiles that filter skills and set execution context:
| Scenario ID |
Budget |
Best For |
brand-genesis |
Bootstrapped |
Pre-launch foundation |
crowdfunding-lean |
Lean |
Kickstarter/Indiegogo essentials |
crowdfunding-full |
Standard |
Full crowdfunding campaign |
bootstrapped-dtc |
Bootstrapped |
Shopify/organic launch |
enterprise-gtm |
Premium |
B2B SaaS go-to-market |
custom-hybrid |
Any |
Pick-and-choose skills |
Domain Tags
Assets are filtered by brand.domain_tags in config. Only matching assets generate:
| Tag |
Assets Included |
* (universal) |
2A, 2B (always generated) |
dtc, crowdfunding |
2C, 3A, 3B, 4A, 4B, 5A-C, 7A, 8A |
app, saas |
APP-ICON, APP-SCREENSHOT, OG-IMAGE |
social |
IG-STORY, TWITTER-HEADER |
enterprise |
PITCH-HERO, 2C |
Hydrator
The hydrator feeds text skill outputs back into brand-config.yaml for downstream consumption:
| Skill Output |
Config Section |
| buyer-persona |
hydrated.buyer_persona |
| product-positioning-summary |
hydrated.positioning |
| mds-messaging-direction-summary |
hydrated.messaging |
| voice-and-tone |
hydrated.voice |
| competitor-analysis |
hydrated.competitors |
Backup behavior: save_hydrated_config() creates .yaml.bak before overwriting.
Visual Generation Pipeline
# Phase 1: Generate prompt cookbook + Python scripts
python3 scripts/generate_pipeline.py ./brand-config.yaml
# Phase 2: Execute (anchor first, then parallel batches)
python3 scripts/run_pipeline.py execute --batch anchor
python3 scripts/run_pipeline.py execute --batch identity # parallel
python3 scripts/run_pipeline.py execute --batch products # parallel
python3 scripts/run_pipeline.py execute --batch photography # parallel
# Phase 3: Verify
python3 scripts/run_pipeline.py verify --config ./brand-config.yaml
Publishing Pipeline (Wave 7)
# Standalone publishing commands
bm publish notebooklm --config brand-config.yaml # 7B: NotebookLM notebook + audio
bm publish decks --config brand-config.yaml # 7C: Slide decks (Marp → PDF)
bm publish reports --config brand-config.yaml # 7D: Reports (Typst → PDF)
bm publish diagrams --config brand-config.yaml # 7E: Mind maps & diagrams
bm publish video --config brand-config.yaml # 7F: Videos (Remotion → MP4)
# Wiki documentation site
./skills/publishing/markdown-to-astro-wiki/scripts/init-astro-wiki.sh my-wiki
./skills/publishing/markdown-to-astro-wiki/scripts/process-markdown.sh ./docs ./my-wiki/src/content/docs
cd my-wiki && bun run build
Key Files
| File |
Purpose |
scripts/generate_pipeline.py |
Template engine: config → prompts → generation scripts |
scripts/run_pipeline.py |
Pipeline executor with batch dispatch |
brandmint/core/wave_planner.py |
Dependency-ordered skill execution |
brandmint/core/hydrator.py |
Feeds skill outputs into config |
brandmint/core/skills_registry.py |
3-source skill discovery |
brandmint/core/cache.py |
Prompt hash caching for regeneration avoidance |
brandmint/cli/report.py |
Execution report generator (markdown/json/html) |
brandmint/cli/logging.py |
Structured logging with Rich integration |
brandmint/cli/notifications.py |
macOS/Linux desktop + webhook notifications |
brandmint/publishing/remotion_generator.py |
Remotion video scaffolding + rendering |
brandmint/publishing/theme_exporter.py |
Brand theme export (CSS/Typst/JSON/Remotion) |
brandmint/publishing/marp_generator.py |
Marp slide deck generation |
Brand Config Schema
Every brand is defined by brand-config.yaml:
- Schema:
assets/brand-config-schema.yaml
- Example:
assets/example-tryambakam-noesis.yaml
- Key sections:
brand, theme, palette, typography, aesthetic, logo_files, products, prompts
Cost Estimation
| Item |
FAL |
OpenRouter |
OpenAI |
| Full brand run (19 assets × 2 seeds) |
~$2-3 |
~$2-2.50 |
~$3-4 |
| Nano Banana Pro equivalent |
$0.08/img |
$0.05/img |
$0.08/img |
| Flux 2 Pro equivalent |
$0.05/img |
$0.05/img |
$0.04/img |
Use bm visual preview --config brand-config.yaml --json for detailed cost breakdown.
Critical Learnings
- Anchor cascade — Style anchor bento MUST generate before all other visual assets
- Recraft V3 returns SVG/WebP — Must detect and convert to PNG
- Recraft 1000-char limit — Prompts silently truncate
- Product identity in prompts — Use
{product_hero_physical} not generic descriptors
- Nano Banana aspect ratios — Use
16:9 format not Flux landscape_16_9
- API keys — Always
load_dotenv(os.path.expanduser("~/.claude/.env"))
Trigger Phrases
Claude should invoke this skill when user says:
- "create a brand", "brand identity", "brand launch"
- "generate brand assets", "visual assets for brand"
- "run brandmint", "execute brand workflow"
- "crowdfunding campaign", "launch campaign"
- "brand positioning", "buyer persona"
- "generate visual pipeline", "brand visuals"
1---2name: brandmint3description: End-to-end brand identity orchestration system. Generates text strategy, visual assets, campaign copy, video deliverables, and publishing outputs using 44 specialized skills across 9 categories. Chains FAL.AI/Nano Banana/Flux visual generation with brand positioning, buyer personas, and campaign workflows via wave-based execution. Includes Remotion-based programmatic video generation. USE WHEN a task matches the Craft workspace workflow for brandmint.4---56# Brandmint78Orchestrated brand identity system that transforms a brand definition into comprehensive marketing outputs — from strategic text documents through AI-generated visual assets to video deliverables and published documentation sites.910## Architecture Overview1112```13brand-config.yaml14 ↓15┌─────────────┐ ┌───────────────────┐16│ Wave Planner│←────│Scenario Recommender│17└──────┬──────┘ └───────────────────┘18 ↓19 Waves 1→620 ↓21 Skills Registry (44 skills, 9 categories)22 ↓23 Hydrator (feeds outputs → config)24 ↓25 Visual Pipeline (FAL.AI assets)26 ↓27 Publishing Pipeline (Wave 7: theme, NotebookLM, decks, reports, diagrams, video)28 ↓29 Wiki → Astro Site30```3132## Prerequisites3334- Python 3.10+ with `uv` package manager35- FAL_KEY in `~/.claude/.env`36- Dependencies: `python-dotenv`, `fal-client`, `requests`, `pyyaml`37- Bun (for Astro wiki publishing)38- Node.js >= 18 (for Remotion video rendering)3940```bash41uv venv .venv && source .venv/bin/activate42uv pip install python-dotenv fal-client requests pyyaml43```4445## CLI Commands4647```bash48# Main entry points (both work)49brandmint [command]50bm [command]5152# Global flags (available on all commands)53bm --verbose launch ... # Enable verbose logging54bm --debug launch ... # Maximum verbosity55bm --quiet launch ... # Suppress most output5657# Full pipeline wizard58bm launch --config brand-config.yaml --scenario crowdfunding-lean --waves 1-359bm launch --config brand-config.yaml --max-cost 5.00 # Abort if cost exceeds budget60bm launch --config brand-config.yaml --resume-from 3 # Resume from specific wave6162# Visual asset generation (3-phase)63bm visual generate --config brand-config.yaml # Phase 1: Generate scripts64bm visual execute --config brand-config.yaml --batch anchor # Phase 2a: Anchor FIRST65bm visual execute --config brand-config.yaml --batch identity # Phase 2b: Parallel batches66bm visual execute --config brand-config.yaml --batch all # Or run all remaining67bm visual execute --config brand-config.yaml --force # Bypass cache, regenerate68bm visual verify --config brand-config.yaml # Phase 3: Validate6970# Execution reports71bm report --config brand-config.yaml # Console summary72bm report --config brand-config.yaml --format json # JSON output73bm report --config brand-config.yaml --format html -o report.html7475# Cache management76bm cache stats # Show cache statistics77bm cache clear # Clear all cached prompts78bm cache clear --expired # Clear only expired entries7980# Scenario planning81bm plan context --config brand-config.yaml82bm plan recommend --config brand-config.yaml8384# Skill management85bm install skills # Creates symlinks in ~/.claude/skills/86bm install check # Verify installation87bm registry list # List all 44 skills88```8990## Image Providers9192Set via env var or config (`generation.provider` in brand-config.yaml):9394| Provider | Env Var | Style Anchor | Notes |95|----------|---------|--------------|-------|96| **FAL.AI** (default) | `FAL_KEY` | ✅ Full | Best consistency, recommended |97| **OpenRouter** | `OPENROUTER_API_KEY` | ❌ | Unified API, text-only prompts |98| **OpenAI** | `OPENAI_API_KEY` | ⚠️ Limited | DALL-E 3 has fixed sizes |99| **Replicate** | `REPLICATE_API_TOKEN` | ⚠️ Limited | Pay-per-second pricing |100101**Note:** Only FAL.AI's Nano Banana Pro supports image references (style anchor cascade).102103## Skill Categories (44 skills)104105| Category | Count | Purpose |106|----------|-------|---------|107| `text-strategy/` | 7 | Brand positioning, personas, voice, competitive analysis |108| `visual-prompters/` | 9 | AI image prompt generation (product, fashion, editorial, brand) |109| `campaign-copy/` | 6 | Campaign page copy, ads, hooks, press releases |110| `email-sequences/` | 3 | Welcome, pre-launch, and launch email sequences |111| `brand-foundation/` | 3 | Visual identity, brand naming, logo concept design |112| `social-growth/` | 5 | Social content calendar, community, influencer outreach |113| `advertising/` | 5 | Pre-launch ads, competitive ad extraction, niche validation |114| `publishing/` | 6 | NotebookLM, slide decks, reports, diagrams, video, wiki |115| `visual-pipeline/` | 4 | AI visual asset generation + integration orchestrator |116117## Workflow Routing118119- **"Create a brand for [X]"** → Full orchestration: Waves 1-6 → visual pipeline → publishing120- **"Generate assets for [X]"** → Execute visual pipeline only (needs existing config)121- **"Build wiki from outputs"** → Publishing pipeline: wiki-doc-generator → markdown-to-astro-wiki122- **"Run [skill-name] for [X]"** → Individual skill execution123124## Wave Execution125126Skills execute in dependency-ordered waves. Use `depth` to control how many waves run:127128| Depth | Waves | Use Case |129|-------|-------|----------|130| `surface` | 1-2 | Quick positioning only |131| `focused` | 1-5 | Standard launch (default) |132| `comprehensive` | 1-6 | Full campaign |133| `exhaustive` | all | Enterprise/premium |134135| Wave | Skills | Purpose |136|------|--------|---------|137| 1 | buyer-persona, competitor-analysis | Foundation research |138| 2 | product-positioning-summary, mds-messaging-direction-summary | Strategic positioning |139| 3 | voice-and-tone, visual-identity-core | Brand personality |140| 4 | campaign-page-copy, detailed-product-description | Core copy |141| 5 | email sequences, social-content-engine, ads | Channels |142| 6 | Visual pipeline, publishing pipeline | Assets & output |143| 7 | Theme, NotebookLM, decks, reports, diagrams, video | Deliverables |144145## Scenarios146147Pre-built execution profiles that filter skills and set execution context:148149| Scenario ID | Budget | Best For |150|-------------|--------|----------|151| `brand-genesis` | Bootstrapped | Pre-launch foundation |152| `crowdfunding-lean` | Lean | Kickstarter/Indiegogo essentials |153| `crowdfunding-full` | Standard | Full crowdfunding campaign |154| `bootstrapped-dtc` | Bootstrapped | Shopify/organic launch |155| `enterprise-gtm` | Premium | B2B SaaS go-to-market |156| `custom-hybrid` | Any | Pick-and-choose skills |157158## Domain Tags159160Assets are filtered by `brand.domain_tags` in config. Only matching assets generate:161162| Tag | Assets Included |163|-----|----------------|164| `*` (universal) | 2A, 2B (always generated) |165| `dtc`, `crowdfunding` | 2C, 3A, 3B, 4A, 4B, 5A-C, 7A, 8A |166| `app`, `saas` | APP-ICON, APP-SCREENSHOT, OG-IMAGE |167| `social` | IG-STORY, TWITTER-HEADER |168| `enterprise` | PITCH-HERO, 2C |169170## Hydrator171172The hydrator feeds text skill outputs back into `brand-config.yaml` for downstream consumption:173174| Skill Output | Config Section |175|-------------|---------------|176| buyer-persona | `hydrated.buyer_persona` |177| product-positioning-summary | `hydrated.positioning` |178| mds-messaging-direction-summary | `hydrated.messaging` |179| voice-and-tone | `hydrated.voice` |180| competitor-analysis | `hydrated.competitors` |181182**Backup behavior:** `save_hydrated_config()` creates `.yaml.bak` before overwriting.183184## Visual Generation Pipeline185186```bash187# Phase 1: Generate prompt cookbook + Python scripts188python3 scripts/generate_pipeline.py ./brand-config.yaml189190# Phase 2: Execute (anchor first, then parallel batches)191python3 scripts/run_pipeline.py execute --batch anchor192python3 scripts/run_pipeline.py execute --batch identity # parallel193python3 scripts/run_pipeline.py execute --batch products # parallel194python3 scripts/run_pipeline.py execute --batch photography # parallel195196# Phase 3: Verify197python3 scripts/run_pipeline.py verify --config ./brand-config.yaml198```199200## Publishing Pipeline (Wave 7)201202```bash203# Standalone publishing commands204bm publish notebooklm --config brand-config.yaml # 7B: NotebookLM notebook + audio205bm publish decks --config brand-config.yaml # 7C: Slide decks (Marp → PDF)206bm publish reports --config brand-config.yaml # 7D: Reports (Typst → PDF)207bm publish diagrams --config brand-config.yaml # 7E: Mind maps & diagrams208bm publish video --config brand-config.yaml # 7F: Videos (Remotion → MP4)209210# Wiki documentation site211./skills/publishing/markdown-to-astro-wiki/scripts/init-astro-wiki.sh my-wiki212./skills/publishing/markdown-to-astro-wiki/scripts/process-markdown.sh ./docs ./my-wiki/src/content/docs213cd my-wiki && bun run build214```215216## Key Files217218| File | Purpose |219|------|---------|220| `scripts/generate_pipeline.py` | Template engine: config → prompts → generation scripts |221| `scripts/run_pipeline.py` | Pipeline executor with batch dispatch |222| `brandmint/core/wave_planner.py` | Dependency-ordered skill execution |223| `brandmint/core/hydrator.py` | Feeds skill outputs into config |224| `brandmint/core/skills_registry.py` | 3-source skill discovery |225| `brandmint/core/cache.py` | Prompt hash caching for regeneration avoidance |226| `brandmint/cli/report.py` | Execution report generator (markdown/json/html) |227| `brandmint/cli/logging.py` | Structured logging with Rich integration |228| `brandmint/cli/notifications.py` | macOS/Linux desktop + webhook notifications |229| `brandmint/publishing/remotion_generator.py` | Remotion video scaffolding + rendering |230| `brandmint/publishing/theme_exporter.py` | Brand theme export (CSS/Typst/JSON/Remotion) |231| `brandmint/publishing/marp_generator.py` | Marp slide deck generation |232233## Brand Config Schema234235Every brand is defined by `brand-config.yaml`:236237- **Schema:** `assets/brand-config-schema.yaml`238- **Example:** `assets/example-tryambakam-noesis.yaml`239- **Key sections:** `brand`, `theme`, `palette`, `typography`, `aesthetic`, `logo_files`, `products`, `prompts`240241## Cost Estimation242243| Item | FAL | OpenRouter | OpenAI |244|------|-----|------------|--------|245| Full brand run (19 assets × 2 seeds) | ~$2-3 | ~$2-2.50 | ~$3-4 |246| Nano Banana Pro equivalent | $0.08/img | $0.05/img | $0.08/img |247| Flux 2 Pro equivalent | $0.05/img | $0.05/img | $0.04/img |248249Use `bm visual preview --config brand-config.yaml --json` for detailed cost breakdown.250251## Critical Learnings2522531. **Anchor cascade** — Style anchor bento MUST generate before all other visual assets2542. **Recraft V3 returns SVG/WebP** — Must detect and convert to PNG2553. **Recraft 1000-char limit** — Prompts silently truncate2564. **Product identity in prompts** — Use `{product_hero_physical}` not generic descriptors2575. **Nano Banana aspect ratios** — Use `16:9` format not Flux `landscape_16_9`2586. **API keys** — Always `load_dotenv(os.path.expanduser("~/.claude/.env"))`259260## Trigger Phrases261262Claude should invoke this skill when user says:263264- "create a brand", "brand identity", "brand launch"265- "generate brand assets", "visual assets for brand"266- "run brandmint", "execute brand workflow"267- "crowdfunding campaign", "launch campaign"268- "brand positioning", "buyer persona"269- "generate visual pipeline", "brand visuals"270271````272