Turn a campaign brief into a storyboard your team can animate

Paste the brief, get six shots back as images you can re-roll, animate into short clips, and send to the team for review without leaving the page.

App
HiggsfieldGoogle DriveSlackMarketingContent Generation
PromptCreate

Build me an app where my creative team turns a campaign brief into a finished storyboard without leaving the page. It uses Higgsfield to generate the frames and the clips, Google Drive to archive approved work, and Slack to send the board out for review.

The main surface is a list of campaigns. Each campaign is a saved record with a name, the brief text, the date it was created, the number of shots, and a thumbnail of its first frame. Past campaigns stay browsable and reopenable forever, because the whole point is that the team can go back to a board that worked and reuse it. A New campaign button opens an empty campaign with a large text area for the brief.

Inside a campaign I paste the brief and hit Build the storyboard. That button kicks off an embedded background agent. The agent reads the brief, splits it into five or six shots that cover the arc of the spot, and writes both a short human readable shot direction and a full image prompt for each shot. It saves that shot list onto the campaign right away so the strip renders immediately with placeholder tiles, then submits each shot to the Higgsfield operation Generate Image with Soul (Text-to-Image) and records the returned request id on the shot. The campaign can also carry one Soul style id, chosen from List Soul Styles, so every frame in a board shares a consistent look.

Higgsfield generation is asynchronous and that has to be baked into the UI, not bolted on. A submit returns a request id, not an image, so the app polls Get Request Status per request until it reaches a terminal state: queued, in_progress, completed, failed, or nsfw. Every frame tile carries its own state chip for queued, in progress, and done. There must never be one blocking spinner across the whole board. Frames appear on the strip as they finish, out of order is fine, and tiles that come back failed or nsfw show the reason plus a retry button. If someone closes the campaign and reopens it later, any generation still in flight resumes polling instead of getting lost.

Clicking a tile opens that single frame full size with its prompt in an editable field. From there I can generate it again in one of two ways. Generate a fresh image runs Generate Image with Soul (Text-to-Image) with the edited prompt. Edit this frame runs Generate Image with FLUX Kontext (Text-to-Image / Edit), passing the current frame image url along with the instruction, for when I want the existing composition changed rather than a whole new picture. Keep a version history per shot so a re-roll never destroys the previous frame, and let me pick which version is the keeper for the strip.

Every frame also has an Animate button. It opens a visual motion preset gallery built from List Motions, showing each preset's preview so I choose by looking rather than by reading names. Picking one submits Generate Video with DoP (Image-to-Video, Motion Presets) with that frame's image url and the chosen motion id, and the resulting clip tracks through the same per item queued, in progress, done states as the images do. When the clip is ready it plays in place of the still on that tile, with a toggle back to the frame.

Approving a frame or a clip archives it. The first approval in a campaign calls the Google Drive operation Create Folder to make a folder for that campaign, nested under a parent folder set once in app settings, and saves the folder id on the campaign so everything else lands in the same place. Each approved asset is then archived with Upload File (Multipart), named by shot number and campaign. Multipart upload covers files up to 5MB, so check size first and, when a clip is larger than that, keep its source link on the shot record and show that clearly instead of failing quietly.

A Send for review button posts the finished strip to our team channel using the Slack operation Send a Message. The message carries the campaign name, a one line summary of the brief, each shot in order with its direction and a link to the frame, links to any clips that exist, and a link to the campaign's Drive folder. Record on the campaign when it was last sent and who sent it, and keep the button available so a board can be sent again after changes.

Persist campaigns, shots, prompts and prompt history, request ids, generation states, image and video urls, approvals, the Drive folder id and the Slack channel, so reopening a campaign weeks later shows exactly the same board. Everything is shared across the team rather than per user: whoever opens the app sees every campaign.

What does this prompt do?

  • Keeps every campaign on one screen, so the team can reopen a board they built last month and reuse a storyboard that worked
  • Paste a brief and hit Build the storyboard: the app breaks it into five or six shots, writes the direction for each one, and fills the strip with generated frames
  • Rewrite the direction on any single frame and generate it again, either as a brand new image or as an edit of the frame already sitting there
  • Pick a camera move from a gallery of examples to turn a still into a short cinematic clip, file approved work into that campaign's Drive folder, and post the finished strip to Slack for review

What do I need to use this?

  • A Higgsfield account, which is what generates the frames and the clips
  • A Google account with Drive, so approved frames and clips get filed somewhere the team can find them
  • A Slack workspace and the channel your team reviews creative work in
  • A campaign brief to start from. A paragraph is enough

How can I customize it?

  • Change how many shots a brief gets split into, and the look every frame is generated in
  • Point the review post at a different Slack channel, or file campaigns under a different Drive folder
  • Decide whether a frame has to be approved before anyone can animate it

FAQs

How long does one frame take to appear?
Frames are generated in the background and land one at a time, so the page never freezes behind a single spinner. Each tile shows its own waiting, generating, and done state, and you can keep working on other shots while one is still rendering.
Can I fix one shot without rebuilding the whole board?
Yes. Open any frame, rewrite the direction, and generate just that one. You can either start it fresh or ask for an edit of the picture already there, which keeps the composition and changes only the part you described.
Where do the finished frames and clips end up?
Anything you approve is filed into a Google Drive folder created for that campaign, so the rest of the company can get to the assets without opening the app.
Can we reuse a storyboard on a new campaign?
Past campaigns stay on the main list. Reopen any board, read back the shot direction that worked, and use it as the starting point for the next brief.
Do I need to be a designer or a video editor to use this?
No. You write the brief in plain language and pick a camera move from a visual gallery. The shot breakdown, the images, and the clips are all generated for you.

Related templates

Call overdue Xero customers with an AI collections agent

Every weekday at 10am, an AI voice agent phones your most overdue Xero accounts, logs what each customer promised, and reports back to finance in Slack.

LiveKit
Xero
Deepgram
+2
Agentic Task
Win back LiveChat visitors whose chats went unanswered

Every couple of hours we find the chats your team never answered, email those visitors a real reply, and hand the sensitive ones to a support lead.

LiveChat
Gmail
Slack
Agentic Task
Chat quality review board for LiveChat support leads

Score last week's finished live chats against one rubric, let an AI grader draft the notes with quotes, and send coaching straight to the agent.

LiveChat
Slack
General Input Database
App
Win back no-show and cancelled appointments every morning

Every weekday morning, every appointment that fell through yesterday gets a personal text or email inviting them to rebook, plus a task for the right rep.

LeadConnector
Google Sheets
Slack
Agentic Task
Live Loop returns analytics with product-level drill-down

Pick any date range up to 120 days and see return volume, refund versus exchange mix, and the products behind every number, recalculated each time you open it.

Loop Returns
Google Sheets
Slack
App
Newsletter pre-flight and approval board for Mailjet sends

Every newsletter gets read, checked and signed off in one place, so nothing goes out with a broken link or a half-filled greeting.

Mailjet
Slack
General Input Database
App

Stop rebuilding storyboards in a slide deck.

Give your creative team one page where a brief becomes a shot list, a set of frames, and clips ready for review.