Generate DALL-E hero images from Airtable content briefs

When a new brief lands in your Airtable content calendar, generate an on-brand hero image with OpenAI, attach it to the row, and post a Slack link for review.

Agentic Task
AirtableOpenAISlack BotMarketingOperationsContent GenerationNotifications & Alerts
PromptCreate

Build me an agent workflow that turns filled-in content briefs in an Airtable content calendar into finished hero images, using OpenAI for image generation and Slack Bot for review notifications.

Trigger: poll Airtable using the new_or_updated_record event on my content calendar table. Fire whenever a row is created or updated. I will pick the base, table, and view when I set it up.

On each trigger the agent should do the following, in order:

1. Read the record fields. Assume the row has: a Brief field (long text), a Brand Voice field (long text, optional), a Style Notes field (long text, optional), an Aspect Ratio field (single select, optional, values like 'Square', 'Wide 16:9', 'Portrait 3:4'), a Status field, and an attachment field called Hero Image.

2. Skip the row entirely if the Brief field is empty, if the Hero Image attachment already has a file, or if the Status field is a terminal state like 'Archived' or 'Published'. In those cases stop silently without calling any other integration.

3. Otherwise, compose an on-brand image prompt from the Brief, Brand Voice, and Style Notes. The prompt should describe the subject, mood, composition, color palette, and any style constraints. Keep it concrete and visual, not marketing copy. If Aspect Ratio is set, translate it into an OpenAI image size (square, landscape, or portrait). If unset, default to landscape.

4. Call OpenAI's Generate Image operation with the composed prompt and chosen size. If the call fails moderation or returns a safety refusal, rewrite the prompt to be more descriptive and less brand-name-heavy, and try one more time. If the second attempt also fails, do not update Airtable. Instead post a Slack message flagging the row for human review with the record link and the refusal reason, and stop.

5. On success, take the returned image URL and use Airtable's Update Record operation on the same record to (a) attach the image to the Hero Image field and (b) set Status to 'Ready for review' (or whatever the equivalent value is in my Status field).

6. Post a short Slack Bot message to a channel I configure (default: #content-review). The message should include the record title or primary field, a link to the Airtable record, an inline preview of the generated image, and one line summarizing which brief inputs drove the prompt. Keep it under four lines.

Guardrails: never regenerate an image for a row that already has one. Never call OpenAI more than twice per trigger. Never write to any field other than Hero Image and Status. If the agent is uncertain which field maps to Brief, Brand Voice, Style Notes, or Aspect Ratio, ask me during setup rather than guessing.

Integrations to wire up: Airtable (poll trigger plus Update Record), OpenAI (Generate Image), Slack Bot (Send a Message). Prefer Slack Bot over the user Slack integration so the notifications come from a bot identity.

Additional information

What does this prompt do?
  • Watches your Airtable content calendar and picks up any row where the brief is filled in but no image is attached yet.
  • Reads the brief, brand voice, and style notes on the row, then writes an on-brand image prompt tuned to those inputs.
  • Generates the hero image with OpenAI, respects the row's aspect ratio if you use one, and retries with a second variation if the first attempt is blocked.
  • Attaches the finished image back to the same Airtable row, marks it ready, and posts a Slack message with links so a human can approve at a glance.
What do I need to use this?
  • An Airtable base with a content calendar table that has a brief field and an attachment field for the hero image.
  • An OpenAI account with image generation enabled.
  • A Slack workspace and a channel where the review notifications should land.
How can I customize it?
  • Change which Airtable table or view is watched, and which fields count as the brief, brand voice, style notes, and aspect ratio.
  • Swap the Slack channel that receives the review ping, or send it as a direct message to a specific reviewer instead.
  • Tighten or loosen the style guardrails in the image prompt, or restrict runs to rows in a specific status like 'Ready for image'.

Frequently asked questions

Will it overwrite images I already added by hand?
No. The workflow skips any row that already has an image in the attachment field, so anything you uploaded manually stays untouched.
What happens if OpenAI refuses to generate the first image?
The agent rewrites the prompt with a safer, more descriptive variation and tries once more. If the second attempt is also blocked, the row is left untouched and the Slack message flags it for a human.
Can I control the shape of the image, like square versus wide?
Yes. If your table has an aspect ratio field, the agent reads it and generates the image at the matching shape. If the field is missing or empty, it falls back to a sensible default you can set in the prompt.
How on-brand will the images actually be?
The agent uses whatever brand voice and style notes you write on the row, so the more specific you are (colors, mood, references, subjects to avoid), the more consistent the output. Treat the first week as a tuning period.
Do I need a paid Slack plan?
No. Free Slack works fine for posting the review notifications. You just need a channel the bot can send messages to.

Stop waiting on hero images to ship content.

Connect Airtable, OpenAI, and Slack once, and Geni will turn every filled brief into a review-ready hero image without you touching a design tool.