Skip to main content

Documentation

No results found.
Features

AI Logo Generation

Operators can generate a matching pair of light and dark logos directly from the Branding settings page, without needing existing artwork. One click pops a modal with a context-rich default prompt, generates a configurable number of options...

Works with any image provider — Managed AI, OpenAI, Google Gemini, or fal.ai. Logo generation uses text-to-image (no reference image required), so every image provider is supported. Configure your provider at Dashboard → Settings → AI.

Operators can generate a matching pair of light and dark logos directly from the Branding settings page, without needing existing artwork. One click pops a modal with a context-rich default prompt, generates a configurable number of options, and lets the operator pick the pair they like best.


How it works

  1. Go to Dashboard → Settings → Branding.
  2. Click the sparkles button at the top-right of the Logo card. The button is always visible (it doesn't depend on whether a logo is already uploaded).
  3. A modal opens with a pre-filled prompt and a number-of-options input (default 3).
  4. Click Generate. WebProCMS makes 2 API calls per option (one for the light variant, one for the dark), so 3 options = 6 calls. Generation takes roughly 30–90 seconds depending on the provider.
  5. Each option is shown as a side-by-side preview: light variant on a white background, dark variant on a black background.
  6. Click Use option N on the pair you want. Both images are saved to the media library under the Logos category, set as the active light + dark logos, and the modal closes. The other generated options are deleted from temp storage automatically.

If the operator wants to start over before picking, the modal offers Try again with new prompt (results discarded, prompt editor returns) and Cancel (everything discarded).


The default prompt

The modal pre-fills a structured prompt built from three Settings values, so the model has real business context without the operator having to type it. The prompt includes:

  • Site name — from seo.schema.name, falling back to the Laravel app.name.
  • About the business — from business.llms_description (managed at Settings → Business), truncated to ~400 characters. If the LLM description is empty, the business tagline (business.tagline) is used instead.
  • Brand colors — primary and secondary hex values from the Branding page. Disabled color groups are omitted.
  • Style instructions — transparent background, vector-style design, can be a wordmark / icon+name / icon-only depending on what fits the business.

The default prompt deliberately does NOT lock the aspect ratio to square. Most logos are landscape wordmarks; some are square icons. Letting the model pick produces more natural output. If you want to force a shape, add it to the prompt yourself (e.g. "Horizontal wordmark format, roughly 3:1 width-to-height ratio") before clicking Generate.

The operator can freely edit the prompt before clicking Generate, and a Reset to default link rebuilds it from current settings.

A per-variant suffix is appended automatically before each API call so the same option produces two coordinated images:

  • Light variant suffix: "Intended for use on LIGHT backgrounds. Use dark or colored strokes and fills that contrast against white. Transparent background."
  • Dark variant suffix: "Intended for use on DARK backgrounds. Use light or colored strokes and fills that contrast against black. Transparent background."

Provider support

Provider Supported Notes
OpenAI ✅ Uses /v1/images/generations with the configured image model (ai.openai_image_model, default gpt-image-2.5-flare). Size forced to 1024x1024. Honors your global output format / quality settings.
Google Gemini ✅ Uses generateContent with the text-only prompt. Always returns PNG; extension reconciled after generation.
fal.ai ✅ Uses the operator's configured fal image model.
Anthropic (Claude) ❌ Claude has no image-generation API. If you need AI logo generation, switch to one of the image providers above.

Sizing and output

No fixed size is enforced. Each provider uses whatever default the operator has configured in Settings → API Keys (OpenAI defaults to 1024x1024 but 1536x1024 and 1024x1536 are also valid), and the operator can steer the aspect via the prompt itself.

  • OpenAI: format follows the operator's Output Format setting (WebP default, with server-side PNG→WebP conversion since gpt-image-2 ignores output_format: webp).
  • Google: always returns PNG; the file extension is reconciled automatically after generation.
  • Stability / fal.ai: provider-determined format, reconciled to the actual sniffed format after generation.

Transparent backgrounds are requested in the prompt but compliance varies by provider — some return solid backgrounds anyway. If transparency matters for your use, prefer OpenAI or Google.


How variants are stored

Both light and dark variants are saved into the media library under the Logos category (the same category used by the AI Favicon feature). Each saved media item gets a deterministic alt text:

  • Light variant: Site logo
  • Dark variant: Site logo (dark)

(Unlike the page-editor AI image flow, no extra vision API call is made for descriptive alt text — for site logos, the deterministic label is more useful than something like "A logo with three blue circles.")

The Branding page then references the new media via branding.logo_url and branding.dark_logo_url. Operators can return to a previous logo at any time via the regular Pick from Media Library button on either logo card.


Cost and timing

Each option requires two API calls (light + dark), so the total spend is proportional to options × 2. The modal default of 3 options = 6 calls. For exploring concepts on a tight budget, lowering the number to 1 or 2 cuts the cost proportionally.

Generation runs synchronously in the request thread. The PHP execution time limit is raised to 5 minutes for the duration of the call, which comfortably covers up to 5 options × 2 calls × the slowest provider's typical 15-second response time.


Cleanup

Generated previews live in storage/app/public/tmp/ until the operator picks one. When the operator picks an option, all unpicked variants in that batch are deleted immediately. Clicking Cancel or Try again with new prompt also deletes the staged variants.

If the browser is closed mid-flow before any decision is made, the temp files remain on disk. They're small (typically 50–200KB each) and accumulate slowly, but if you need to clear them manually, delete the tmp/ai-logo-* files under storage/app/public/tmp/.


Operator checklist

  • API key configured for an image-capable provider (Settings → API Keys)
  • Image provider set to OpenAI, Stability, Google, or fal.ai (Settings → API Keys)
  • (Optional but recommended) Business AI/LLM description filled in (Settings → Business → AI / LLM description) — this gives the model real context about what the business does
  • (Optional) Brand colors set on the Branding page — these are included in the default prompt