Creative flow runner
Run · Facebook Ads
Start with your product, offer, or campaign angle, then launch a set of static ad directions built for testing and reuse.
Run the ad variation flow
Create static Facebook ad variations that explore offer-led, benefit-led, proof-led, and urgency-led campaign angles from one product brief.
Quick-start campaign setups
Apply a paid-social brief pattern, then adjust the specifics before running the full flow.
Stage editors
Migrated stages now expose implementation-backed controls. Changed values are appended to the run query as a structured node-editor brief.
Offer + buyer brief
Thinking brief coreschema-text-editorFrame the offer, buyer promise, and product positioning before generating visual commerce assets.
Feature + CTA structure
Thinking hooks packcopy-pack-editorOrganize feature callouts, benefit copy, and CTA hierarchy for the visual pack.
Product visual pack
Generation object asset productobject-asset-editorGenerate the core product, ad, or listing visuals as a reusable batch.
Callout + layout pass
Composition campaign campaign packcampaign-layout-editorApply callouts, comparison framing, and conversion-oriented visual hierarchy to the set.
Final commerce pack export
Export package campaign packagepackage-export-settingsExport the final commerce image pack for repeatable delivery across campaign surfaces.
Describe the visual message or layout for Announcement Post.
Who is the visual for?
Choose the tone of the design.
Use a mobile-friendly frame unless your brief requires another format.
Root query template
Edit the root query when you want to override the default launch phrasing for this flow.
Rendered query preview
Create a Announcement Post visual design concept.
Primary brief:
{{brief}}
Reference directions: "App launch announcement" and "New feature drop with bold typography".
Audience: {{audience}}
Tone: {{tone}}
Aspect ratio: {{aspect_ratio}}
Return strict JSON only with this shape:
{
"title": "...",
"preset": "social",
"width": 1080,
"height": 1350,
"backgroundColor": "#0f172a",
"layers": [
{ "type": "rect", "x": 0, "y": 0, "width": 1080, "height": 1350, "color": "#0f172a" },
{ "type": "text", "x": 88, "y": 150, "content": "headline", "fontSize": 72, "fontWeight": "700", "color": "#ffffff" },
{ "type": "text", "x": 88, "y": 260, "content": "supporting copy", "fontSize": 30, "fontWeight": "500", "color": "#d1d5db" },
{ "type": "circle", "x": 930, "y": 180, "radius": 72, "color": "#10b981", "opacity": 0.2 }
]
}
Use only layer types text, rect, and circle. Do not wrap the JSON in markdown fences.