# Keep your brand's AI characters consistent across campaigns

> One place to manage every AI character your brand uses, run themed photo shoots on demand, and keep the same face showing up across every campaign.

- Workflow type: app
- Services: Higgsfield, Google Drive, Buffer
- Categories: Marketing
- Published: 2026-08-24

## What it does

- Gives you a roster of character cards, one per recurring AI character your brand uses, each holding its trained character reference and the full gallery of shots produced from it.
- Trains a new character from a set of reference photos so the same face can be reused forever, instead of drifting every time someone generates a new image.
- Runs a themed shoot in the background: type a theme like autumn campaign, gym wear, or office headshots, and a set of varied on-model shots lands back in that character's gallery, grouped and labelled with the theme they came from.
- Lets you promote a favourite shot into a short video, archive approved assets into Google Drive, and schedule a shot to social through Buffer without leaving the gallery.

## What you'll need

- A Higgsfield account with an API key created from your Higgsfield Cloud dashboard.
- Reference photos for each character you want to train, ideally a handful covering different angles and lighting.
- A Google Drive account if you want approved shots archived into campaign folders.
- A Buffer account with your social channels connected if you want to schedule posts straight from the gallery.

## Prompt

Build me an app that manages my brand's recurring cast of AI characters, so the same face shows up consistently across every campaign instead of drifting each time someone generates a new image. The main surface is a roster of character cards. Each card is one character and holds its trained Higgsfield Soul ID, a thumbnail, its look notes, its preferred style, and a count of the shots and shoots produced from it. Clicking a card opens that character's detail page with its full gallery.

Store the roster in the app's own storage: for each character keep a name, the Soul ID returned by Higgsfield, the reference image URLs used to train it, free-text look notes (hair, wardrobe rules, framing preferences, anything the team must not let drift), and a preferred Soul style id. For each shoot keep the character it belongs to, the theme the user typed, the time it ran, and its status. For each shot keep the image URL, the exact prompt used, the shoot it belongs to, its status, and whether it has been archived to Drive or queued to social.

The "Train a new character" form takes a name, look notes, and a set of reference photos uploaded from my machine. Reference images have to be public URLs before Higgsfield can use them, so the handler first calls Generate Upload URL for each file, PUTs the bytes to the returned presigned URL, then calls Create Soul ID (Custom Character Reference) with those URLs to train a reusable character reference. Training is asynchronous, so poll Get Request Status until the request resolves and show the card in a training state until it is ready. Populate the preferred-style picker from List Soul Styles, since styles are chosen by id. Also give me an "Import existing" option that pulls Soul IDs already on my account with List Soul IDs (Custom Character References) so I can bring characters I trained elsewhere into the roster.

On any character I hit "Run a shoot" and type a theme, for example autumn campaign, gym wear, or office headshots. That kicks off a background agent scoped to that character. The agent reads the character's look notes and preferred style, then writes a varied set of shot prompts around the theme, varying framing, setting, wardrobe, and lighting while holding the character's described look fixed. It generates each one with Generate Image with Soul (Text-to-Image), passing that character's Soul ID as the custom reference and its preferred style id, so the likeness holds. Generation is asynchronous: each submit returns a request id, so the agent polls Get Request Status until each one reaches completed, failed, or nsfw, and writes the finished images back into that character's gallery grouped as a single shoot tagged with the theme. Shots that fail or get blocked are recorded with that status rather than silently dropped, and the rest of the shoot still lands. Show shots streaming into the gallery as they finish instead of waiting for the whole batch.

The gallery on a character page is grouped by shoot, newest first, with the theme as the group heading. Every individual shot must always show which shoot and which theme it came from, including when I open it full size or view a filtered feed of the character's best work. Keep the character's look notes and preferred style pinned in a panel right next to the gallery, editable in place, because consistency is the entire point of this app and those notes are what the next shoot reads from.

From any shot in the gallery I can promote a favourite into motion. Give me a "Make it move" action that offers Generate Video with DoP (Image-to-Video, Motion Presets), with the motion preset chosen by id from List Motions, or Generate Video with Kling 2.1 Pro (Image-to-Video) for a longer clip. Both take the shot's image URL as input, both are asynchronous, so poll Get Request Status the same way and attach the finished video back to that shot in the gallery so the clip stays connected to the shoot and theme it came from.

Approved assets get archived with Google Drive. An "Archive" action on a shot or on a whole shoot uploads the image or video with Upload File (Multipart), filing it into a folder named for the character and the shoot theme, creating that folder with Create Folder the first time it is needed. Mark archived assets in the gallery so I can see at a glance what has been filed and what has not.

A "Queue to social" action on a shot schedules it through Buffer. Populate a channel picker from List Channels, then call Create Post with the shot's image or video attached, letting me pick between adding it to the queue, sharing now, or scheduling for a specific date and time, and let me edit the caption before it goes. Record on the shot that it has been queued, to which channel, and when, so the gallery doubles as a record of what has already gone out.

Rules to hold throughout: never generate a shot for a character without passing that character's Soul ID, since an unanchored generation defeats the purpose. Treat the roster as the home screen and the character gallery as the surface people live in. Handle the asynchronous nature of every Higgsfield generation gracefully with visible pending states, and treat a blocked result as an ordinary outcome to display rather than an error that breaks the page.

## How to customize

- Pin a preferred style and look notes to each character so every shoot starts from the same visual baseline.
- Change how many shots a single shoot produces and how widely the themes vary, from tight product framing to broad lifestyle sets.
- Decide whether social posts join your Buffer queue, go out right away, or land at a specific date and time.
- Point the Drive archive at a folder per character or per campaign so approved assets file themselves.

## FAQ

### Do I have to train a character before I can run a shoot?

Yes. Training is what makes the face reusable. You upload a few reference photos once through the Train a new character form, the app trains a character reference from them, and from that point every shoot generates against that saved reference.

### How many reference photos does a character need?

A handful is usually enough. Aim for several shots of the same person or figure across different angles, expressions, and lighting. Consistent, well lit, unobstructed faces train better than a large pile of similar or low quality images.

### Will the character actually look the same in every shoot?

That is the entire point of the app. Every shot is generated against the character's saved reference plus the look notes and preferred style pinned to its card, so the likeness holds even when the theme changes from office headshots to gym wear.

### Can I manage more than one character?

Yes. The roster is built for a recurring cast, so you can keep separate cards for different faces, personas, or brand ambassadors, each with its own gallery, look notes, and shoot history.

### What happens if a shot fails or gets blocked?

That shot is marked in the gallery with its status and the rest of the shoot still lands, so one bad generation does not sink the batch. You can rerun the shoot or generate replacements for the shots you are missing.

### How long does a shoot take?

Shoots run in the background, so you can close the character page and come back. Image generation is queued and processed by Higgsfield, and each shot appears in the gallery as it finishes rather than all at once at the end.

Use this prompt in General Input: https://www.generalinput.com/prompts/keep-your-brands-ai-characters-consistent-across-campaigns