Open AI UGC
June 3, 2026 ยท View on GitHub
The free, open-source alternative to Arcads and MakeUGC. Generate AI UGC video ads with realistic AI actors using 4+ state-of-the-art video models โ no per-seat pricing, no locked actor library, no vendor watermark.
Community: Join Reddit & Discord for discussions and support
๐ค Automate UGC ad generations with AI coding agents: Generative-Media-Skills โ a library of skills that let agents like Claude Code, Codex, and other coding assistants drive image/video models end-to-end (script โ generate โ review โ re-render) directly from your terminal. Perfect for shipping 100 ad variants overnight without touching a UI.
Related projects
Open-source Node based workflow builder -> https://github.com/SamurAIGPT/Vibe-Workflow
Open-source AI Clipping โ turn any long-form YouTube video into viral-ready vertical shorts -> https://github.com/SamurAIGPT/AI-Youtube-Shorts-Generator
Open-source AI Design Agent -> https://github.com/Anil-matcha/Open-AI-Design-Agent
Schedule your UGC content automatically with AI -> https://github.com/Anil-matcha/Free-AI-Social-Media-Scheduler
๐ Live Demo & Deploy
Live Demo: open-ai-ugc.vercel.app
Follow the creator for updates
Open AI UGC is a free, open-source AI UGC video ad studio that brings the Arcads / MakeUGC workflow to everyone โ without the $110โ$500+/month per-seat subscription. Paste a script, upload a reference face or product image, pick a model, and ship a scroll-stopping 9:16 vertical ad for TikTok, Reels, or Shorts in under a minute. Powered by Muapi.ai, it supports image-to-video and text-to-video generation across models like Veo 3.1, Seedance 2, Grok Video, and Happy Horse 1 โ all from a sleek, modern interface you can self-host, rebrand, and customize end to end.
Why Open AI UGC instead of Arcads or MakeUGC?
- Free & open-source โ no $110โ$500/mo subscription, no vendor lock-in
- Bring your own actors โ upload any face or product image instead of being locked to a vendor roster
- Model choice โ switch between Veo 3.1, Seedance 2, Grok Video, and Happy Horse 1 per render
- No watermark, no branding โ 100% your domain, your studio, your client deliverables
- Self-hosted โ your data and renders stay on your infra, full creative control
- Stripe & credits built-in โ clone, swap branding, and sell it as your own UGC SaaS
- Extensible โ add any MUAPI model in ~10 lines, modify the UI, build agencies on top of it
โจ Features
- AI UGC Video Studio โ Paste a script, optionally upload up to 7 reference images (faces, products, scenes), pick a model, and generate a 9:16 vertical UGC ad. Reference images inline with
@image1,@image2, etc. - Multi-model support โ 4 leading video models pre-wired: Veo 3.1 (Google), Seedance 2 (ByteDance), Grok Video (xAI), and Happy Horse 1. Switch per render.
- Image-to-Video & Text-to-Video โ Animate a product shot, an AI-generated actor, or generate purely from text โ your call.
- Per-model parameter control โ Aspect ratio (9:16, 16:9, 1:1, etc.), duration (3โ30s), resolution (480p โ 4K), and mode (fun / normal / spicy for Grok) โ UI adapts automatically to each model's capabilities.
- Async job pipeline โ MUAPI delivers finished renders via webhook; the dashboard polls and updates live without page reloads.
- Creations dashboard โ Every generation is persisted per user with prompt, settings, status, and final video URL.
- Credits system โ Each user starts with 10 free credits; 1 credit per generation; insufficient-credit gating built in.
- Stripe billing โ 3-tier pricing page (Free / Pro $19.99 / Elite $49.99) with Checkout + webhook credit top-up. Swap the tiers to whatever you want and ship.
- Google sign-in โ NextAuth.js with Prisma adapter, ready to go. Add more providers in one file.
- Responsive UI โ Tailwind v4 + Framer Motion, works on desktop and mobile, glassmorphism design.
๐ฌ UGC Video Generation โ Dual Mode
The studio automatically adapts based on whether you upload reference images:
| Mode | Trigger | Use case | Prompt |
|---|---|---|---|
| Text-to-Video | No image uploaded | Generate a UGC ad purely from a script | Required |
| Image-to-Video | Reference image(s) uploaded | Animate a specific actor face / product shot / scene | Optional |
Supported Models
| Model | Provider | Type | Aspect Ratios | Duration | Resolution | Notes |
|---|---|---|---|---|---|---|
| Veo 3.1 | I2V | 16:9, 9:16 | 8s | 720p / 1080p / 4K | High-fidelity, realistic motion โ best for premium client ads | |
| Seedance 2 | ByteDance | I2V | 21:9, 16:9, 4:3, 1:1, 3:4, 9:16 | 4โ15s | โ | Character-reference support, multi-shot generation |
| Grok Video | xAI | I2V | 9:16, 16:9, 2:3, 3:2, 1:1 | 6โ30s | 480p / 720p | Modes: fun / normal / spicy โ strong for high-CTR hooks |
| Happy Horse 1 | โ | I2V | 16:9, 9:16, 1:1, 4:3, 3:4 | 3โ15s | 720p | Fast, lifelike animation โ great for batch iteration |
Adding a new MUAPI model takes ~10 lines in src/app/page.js (append to the MODELS array) and one line in src/app/api/generate/route.js (add to MODEL_ENDPOINTS).
๐ผ๏ธ Multi-Image Reference Input
UGC ads frequently need multiple references โ actor face + product + setting. Open AI UGC supports up to 7 reference images per generation:
- Drag-and-drop or click to upload โ images upload asynchronously with live status pills
- Inline references in your script โ
@image1 holding the bottle, walking through @image2 - Per-image previews with one-click removal
- Auto-routing โ passed as both
image_url(first image) andimages_list(full array) so every MUAPI model receives them in the format it expects
๐ณ Credits & Stripe Billing
Out-of-the-box billing flow you can sell as a SaaS:
| Plan | Price | Credits | Target |
|---|---|---|---|
| Starter | Free | 10 | Trial users |
| Pro Studio | $19.99/mo | 500 | Solo creators / freelancers |
| Elite Creator | $49.99/mo | 1,500 | Agencies / power users |
Plans, prices, and features are defined in one file (src/app/pricing/page.js) โ change them to whatever your business model needs. Stripe Checkout handles the payment, the webhook (src/app/api/webhook/stripe/route.js) increments credits on success.
๐ Quick Start
Prerequisites
- Node.js (v18+)
- A PostgreSQL database (free tiers on Neon, Supabase, or Railway)
- A Muapi.ai access key โ copy the generated key value, not the label
- A Google OAuth client (Client ID + Secret)
- A Stripe account (test mode is fine to start)
Setup
# Clone the repo
git clone https://github.com/Anil-matcha/Open-AI-UGC.git
cd Open-AI-UGC
# Install dependencies
npm install
# Copy env template and fill in the values
cp .env.example .env
# Push the Prisma schema to your database
npx prisma db push
# Start the dev server
npm run dev
Open http://localhost:3000, sign in with Google, and start generating. Every new user starts with 10 free credits.
Environment Variables
# Postgres (Neon / Supabase / Railway / self-hosted)
DATABASE_URL="postgresql://user:password@host:port/dbname"
DIRECT_URL="postgresql://user:password@host:port/dbname"
# NextAuth โ generate with: openssl rand -base64 32
NEXTAUTH_URL="http://localhost:3000"
NEXTAUTH_SECRET="..."
# Google OAuth
GOOGLE_CLIENT_ID="..."
GOOGLE_CLIENT_SECRET="..."
# MUAPI โ https://muapi.ai/access-keys
UGC_API_KEY="..."
WEBHOOK_URL="https://your-deployment-url.com" # MUAPI calls this when a render finishes
# Stripe
STRIPE_SECRET_KEY="sk_test_..."
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY="pk_test_..."
STRIPE_WEBHOOK_SECRET="whsec_..."
# UI
NEXT_PUBLIC_THEME=light
Production Build
npm run build
npm run start
โก Deployment: Vercel & Production
This architecture is engineered explicitly for Vercel serverless environments.
๐ Launching on Vercel: Step-by-Step
- Database Provisioning: Create a new Postgres database (via Supabase or Neon) and retrieve connection URLs.
- Project Creation: Import your GitHub repository (
https://github.com/Anil-matcha/Open-AI-UGC) into the Vercel dashboard. - Configure Environment Variables: Add all variables from
.env.examplein Vercel. SetWEBHOOK_URLto your Vercel deployment URL (e.g.https://open-ai-ugc.vercel.app). - Deploy: Build with Vercel. Next.js page generation will run Prisma client generation automatically via our script config.
- Database Push: Run
npx prisma db pushto synchronize database models before launching. - Webhooks Setup:
- Configure a Stripe Webhook pointing to
https://open-ai-ugc.vercel.app/api/webhook/stripeselectingcheckout.session.completed. - Configure the MuAPI Webhook pointing to
https://open-ai-ugc.vercel.app/api/webhook/muapi.
- Configure a Stripe Webhook pointing to
๐๏ธ Architecture
Open-AI-UGC/
โโโ src/
โ โโโ app/
โ โ โโโ layout.js # Root layout (Tailwind, NextAuth provider, Navbar)
โ โ โโโ page.js # Main UGC generator โ model picker, prompt, image upload
โ โ โโโ dashboard/page.js # User's generation history
โ โ โโโ pricing/page.js # Stripe-powered pricing page
โ โ โโโ api/
โ โ โโโ generate/route.js # POST โ kick off a UGC video generation
โ โ โโโ upload/route.js # POST โ image upload โ hosted URL
โ โ โโโ creations/route.js # GET โ list user's creations
โ โ โโโ creations/[id]/route.js # GET โ single creation (polled by frontend)
โ โ โโโ webhook/muapi/route.js # POST โ MUAPI render-complete callback
โ โ โโโ webhook/stripe/route.js # POST โ Stripe payment callback โ top up credits
โ โ โโโ checkout/stripe/route.js # POST โ create Stripe Checkout session
โ โ โโโ auth/[...nextauth]/route.js # NextAuth handler
โ โโโ components/
โ โ โโโ saas/Navbar.jsx # Top nav with credits badge & profile menu
โ โ โโโ saas/AuthButtons.jsx
โ โ โโโ ui/ # Button, Card primitives
โ โโโ lib/
โ โโโ auth.js # NextAuth config (Google + Prisma adapter)
โ โโโ prisma.js # Prisma client singleton
โโโ prisma/
โ โโโ schema.prisma # User, Creation, Account, Session, VerificationToken
โโโ package.json
๐ API Integration
Open AI UGC communicates with Muapi.ai using a webhook pattern:
- Submit โ
POST /api/v1/{model-endpoint}withprompt,images_list, model parameters, andwebhook_url - Wait โ MUAPI runs the render asynchronously (8sโ2min depending on model and duration)
- Callback โ MUAPI calls your
webhook_urlwith the finished video URL and request ID - Update โ
/api/webhook/muapi/route.jsfinds the matchingCreationrow byrequest_idand updates its status + URL - Poll โ the frontend polls
/api/creations/[id]every 3 seconds and switches from spinner to video player as soon as status flips
Authentication uses the x-api-key header. Credits are decremented on submit (so failed renders cost a credit โ you can adjust this in src/app/api/generate/route.js if you'd rather refund on failure).
๐ ๏ธ Tech Stack
- Next.js 16 โ App Router, server components, React 19
- React 19 โ Studio UI
- Tailwind CSS v4 โ Utility-first styling
- Framer Motion โ Animations and transitions
- Prisma 7 โ Type-safe Postgres ORM
- NextAuth.js โ Google OAuth with Prisma adapter
- Stripe โ Checkout + webhooks for credit top-up
- Muapi.ai โ AI video model API gateway (Veo, Seedance, Grok, Happy Horse, and more)
๐ค How is this different from Arcads and MakeUGC?
Open AI UGC is a community-driven, open-source alternative that gives you the same Arcads/MakeUGC workflow without the closed ecosystem and per-seat pricing.
| Arcads / MakeUGC | Open AI UGC | |
|---|---|---|
| Cost | $110โ$500+/mo per seat | Free (open-source) โ pay only for MUAPI API usage |
| Actor library | Locked to vendor's roster | Bring your own โ any face or product image |
| Model choice | Single in-house model | Veo 3.1, Seedance 2, Grok Video, Happy Horse 1 (swap per render) |
| Hosted version | SaaS only | Self-host on Vercel / your own infra |
| White-label | Vendor branding / templates | 100% your brand, your domain, your client deliverables |
| Custom pricing | Fixed tiers | Stripe + 3 tiers wired up, edit one file to change |
| Source code | Closed | MIT licensed, fully hackable |
| Data privacy | Cloud-only | Your renders and user data stay on your infra |
| Reseller-friendly | No | Yes โ built to be cloned, rebranded, and sold |
๐ License
MIT โ fork it, rebrand it, ship it.
๐ Credits
Built with Muapi.ai โ the unified API for AI image and video generation models.
Looking for a free, open-source alternative to Arcads or MakeUGC? Open AI UGC is a self-hostable AI UGC video ad studio you can customize, rebrand, and resell. No content filters, no vendor lock-in, no per-seat pricing.