Generate Facebook Ads
Describe your offer and let AI create unique, diverse ad images — ready to download.
Your generated ads will appear here
Campaign History
Social Post Creator
Generate a full content calendar — AI-written posts with matching images, planned to avoid repetition across all days.
Your generated posts will appear here
Post Session History
User Management
| Username | Role | Status | Credits | Created | Actions |
|---|
Features & Changelog
What you can do with each tool, and what's new.
New Campaigns
Generate complete Facebook ad sets from a single topic. AI creates multiple ad variations with unique angles, layouts, and color palettes, then renders images with Gemini and writes social post copy for each ad.
Social Posts
Create batches of social media posts powered by source material you provide — paste text, upload a document, enter a URL, or pull a YouTube transcript. Match your writing style, generate images or go text-only, and create HeyGen talking-head videos.
History
Browse and reload any past campaign or post session. Clone a previous session to reuse its settings and source material as a starting point for new content, or rename sessions to keep things organized.
Calendar
See all your scheduled posts in one place — across GoHighLevel, Meta (Facebook & Instagram), and LinkedIn. A visual day grid shows exactly when each post is set to publish.
Changelog
- Logo compression — logos are now automatically resized and compressed before upload (max 800px, JPEG). A 2 MB logo becomes ~50-100 KB, dramatically improving image generation reliability
- Timeout tuning — first-attempt timeout for multimodal requests increased from 25s to 45s
- Concurrency reduction — when a reference image is attached, batch size drops from 3 to 2 concurrent requests to avoid overloading the AI
- IDOR hardening — all API endpoints now enforce resource ownership checks; scheduling endpoints verify post ownership
- Image gen diagnostics — every failed generation attempt logs prompt size, ref image size, model, timeout, and error type to the error log
- Image type diversity — new imageType dimension (graphic, photo, meme, illustrated, cinematic, mockup, infographic, collage) for visually distinct ads
- Randomized variations — ad specs now shuffle all creative dimensions per campaign instead of deterministic assignment
- Server-side logo cap — oversized logos loaded from R2 (old uploads) are skipped to prevent worker timeouts during regeneration
- Crash-safe background tasks — top-level try/catch around all waitUntil bodies to ensure errors are always logged
- GHL calendar debug — new
/api/ghl/debug-postsendpoint returns raw GHL API response for diagnosing why scheduled posts don't appear in the calendar - Conflict checking — single-post scheduling on GHL, Meta, and LinkedIn now warns if another post is already scheduled at the same time
- Visual diversity overhaul — ad images are now dramatically more varied. Expanded from 5 layouts to 10, 5 styles to 8, 4 backgrounds to 8, and 10 palettes to 14
- New layouts — diagonal, asymmetric, poster, layered, typographic, floating — each producing distinct visual compositions
- New styles — retro (vintage/halftone), luxe (metallic/premium), handcrafted (brush strokes/organic)
- New backgrounds — texture (marble/metal/fabric), 3D (rendered shapes with lighting), duotone, bokeh (cinematic blur)
- New palettes — pastel (lavender/pink), earth (terracotta/sand), neon (electric accents on black), cream (warm ivory/copper)
- Creative prompts — Gemini now gets creative direction instead of rigid blueprints, producing more unique and eye-catching images
- HeyGen video scheduling — posts with HeyGen videos can now be scheduled to Instagram (as Reels), GHL, and Facebook. Previously, posts without images but with HeyGen videos were rejected at scheduling time
- Media fallback — GHL and Instagram scheduling now automatically falls back to HeyGen video when no image exists, instead of failing with "no image available"
- Instagram Reels — HeyGen videos are published as Instagram Reels via Meta's Content Publishing API
- Anti-repetition — each post now sees the actual text of prior posts in the series, so the AI avoids reusing sentences, phrases, and examples across posts
- Max characters setting — optional field to cap post length (e.g. 800 for shorter posts). Stored per session and used on regeneration too
- GHL scheduling fix — scheduling now fails with a clear error if the image hasn't been generated yet, instead of silently scheduling as text-only
- Calendar fix — calendar now shows all posts (pending, published, failed) instead of only pending, so past months are no longer empty
- Calendar error logging — all 4 data channels (IG, Facebook, GHL, LinkedIn) now log errors instead of silently failing
- Status badges — calendar events show colored status dots: green for published, red for failed, with reduced opacity on published posts
- Single-image regen resilience — 90s timeout per attempt (up from 25–60s), 4 attempts (up from 3), stays synchronous so the Worker gives Gemini the full request lifetime
- Image generation resilience — increased timeout (45s → 60s), 3s retry delay, reduced concurrency (3 → 2) to prevent Gemini overload cascades
- Logo preserved on retry — supporting image now included on fallback attempt 2 (Flash + logo), only dropped as last resort on attempt 3
- HeyGen error clarity — failure messages now show the actual reason (e.g. insufficient API credits) instead of generic errors
- HeyGen import fix — importing portal-generated videos by ID now falls back to v1 API when v2 returns 404
- Paste Text source option — replaced "None" with a textarea to paste articles, notes, or transcripts directly as source material
- No-images mode — new "No images — text only" option in the image model selector, skips image generation entirely for text-only or video-focused workflows
- Features & Changelog page — this page! Accessible via the info icon in the nav bar
- LinkedIn integration — OAuth connection, single & bulk post scheduling, calendar view, cron-based publishing with token refresh
- HeyGen integration — AI-generated talking-head videos from post text, avatar & voice selection, script generation, R2 storage
- Background image generation — campaigns and posts return instantly while images render in the background with live polling
- Gemini resilience — 3-attempt retry with timeout, automatic Pro → Flash model fallback, simplified prompt fallback
- Deep links — URL hash routing for sessions and campaigns (#session/N, #campaign/N) survives page refresh
- Campaign clone improvements — logo and ref_context carry over when cloning
- Error context logging — structured context data on all error log entries for easier debugging
- Initial release — Facebook Ad Generator with campaign creation, social post pipeline, GHL & Meta scheduling, calendar view, admin panel, credit system
Settings
Manage your integrations and connected accounts.
Integrations