All Startup Ideas

Static Ad to Video Generator

Turn static ad images into platform-ready video ads in minutes. AI motion, captions, and multi-format export for Shopify brands and performance marketers.

Performance marketers live in a split reality. Creative teams ship beautiful static banners—1200×628 Meta carousels, 1080×1920 story frames, square Shopify promos—and then the media buyer gets told the account needs video to unlock reach. TikTok and Instagram Reels deprioritize static. YouTube Shorts won't even accept a PNG. The brand has twenty winning static variants from last quarter's test, but rebuilding each one as motion graphics means opening After Effects, briefing a freelancer, or paying an agency $800 per fifteen-second cut.

Built for Marketers, Solo Founders.

Global digital video advertising is projected at $140.18 billion in 2025, up from $104.65 billion in 2024—a 34% CAGR—and expected to reach $458.37 billion by 2029 (Statista / industry analyst consensus cited in Ideabrowser competitive analysis).

Suggested stack: Next.js 14 + Vercel, Remotion or FFmpeg (via fluent-ffmpeg on a worker), Runway / Replicate API (optional), Supabase, Inngest or BullMQ + Redis, Stripe Billing. Weekend scope: about 10 hours.

The Problem

Performance marketers live in a split reality. Creative teams ship beautiful static banners—1200×628 Meta carousels, 1080×1920 story frames, square Shopify promos—and then the…

The Solution

AdMotion is a web app that ingests a static ad—PNG, JPG, or layered export from Figma/Canva—and outputs platform-ready video files in under three minutes. Upload the creative…

Market Research

Global digital video advertising is projected at $140.18 billion in 2025, up from $104.65 billion in 2024—a 34% CAGR—and expected to reach $458.37 billion by 2029 (Statista /…

Competitive Landscape

RunwayML — Best-in-class generative video (text/image-to-video, inpainting). Powerful for cinematic content, not ad-format presets or batch static conversion. Freemium → paid Pro…

Business Model

Free ($0) — 3 conversions/month, watermark, 720p, single format—the Product Hunt / Reddit demo tier

Recommended Tech Stack

Next.js 14 + Vercel — App Router for dashboard, Edge route for upload webhooks, Vercel Blob for temp assets. Server Actions trigger render jobs.

AI Prompts to Build This

Copy these build prompts into Claude, Cursor, or your AI coding tool. Create a free account to unlock the full research behind them.

  1. 1. Project Setup

    Build the weekend MVP of "AdMotion": turn a static ad image into a short captionless video in three formats, rendered in your browser. The image never leaves your computer.
    
    Stack: Next.js (App Router), TypeScript, Tailwind, Supabase (Postgres, Row Level Security, Auth with email magic link) for accounts and render records only, ffmpeg.wasm (the single-thread build, so no special headers are needed) to render in the browser. Deploy on Vercel.
    
    Tables (Row Level Security on, each user reads only their own rows; files are never stored):
    - projects(id, user_id, name)
    - assets(id, project_id, user_id, filename, width, height, created_at)
    - render_records(id, asset_id, user_id, template, formats text[], duration_seconds, status, error, created_at)  status is done or failed
    
    Screens: /login, /projects, /studio (drop an image, pick a template, formats and duration, preview and download).
    Env vars (names only): NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_ANON_KEY, SUPABASE_SERVICE_ROLE_KEY (server only).
    
    Do not build: billing, plans or metered overage, a server render queue or Redis, file storage, AI image-to-video, voiceover or music, batch ZIP upload, captions.
    Done when: npm run dev starts, you can sign in, and the three tables exist with Row Level Security on.
  2. 2. Core Feature

    Build the one feature that proves AdMotion: a still ad becomes three correctly sized videos you can post.
    1. The studio takes a PNG or JPG by drop or pick, reads its width and height and shows it. Warn when the image is smaller than the output size.
    2. Offer two templates: ken_burns (a slow zoom from 1.0 to 1.15 with a gentle pan) and zoom_reveal (start at 1.2 and settle at 1.0). Offer a duration from 6 to 15 seconds and a fit choice: fill (crop to the frame) or fit (the whole image over a blurred copy of itself).
    3. Offer three formats: 9:16 at 1080 by 1920, 1:1 at 1080 by 1080 and 16:9 at 1920 by 1080.
    4. Render in the browser with ffmpeg.wasm to MP4, H.264, 30 frames per second, yuv420p. Render a 480p preview of the first format first and show it within about 20 seconds, then render the full files one at a time with a progress bar.
    5. Check each output: the file is under 30 MB for 15 seconds (lower the quality or shorten if it is not), and read back its width, height and codec to confirm them. Show a download button for each.
    6. Draw a safe-zone guide over the preview from margins kept in one config file that you copy from each platform's current ad specs and date.
    7. Save a render_records row with the template, formats and result. Do not upload the image or the video.
    Rules: nothing leaves the browser except the record. Say so on the studio page. Free of watermarks; this is your own creative.
    Empty state: before an image is dropped, show the drop zone and the size to aim for.
    Done when: a sample 1080 by 1350 banner renders in all three formats at the right sizes in H.264, the preview appears first, an oversize file is reduced under 30 MB, and no network request carries the image.
  3. 3. Landing Page

    Build a one-page landing site for AdMotion, static ads turned into video in your browser.
    Hero: "Your static ads already work. Now make them video." Sub: "Drop a banner. Get 9:16, 1:1 and 16:9 MP4s in a few minutes, rendered on your own computer." One button: Join the waitlist.
    Sections: a before and after of a static ad and its vertical video, how it works in three steps (drop, pick a motion, download), and an FAQ on where your image goes (nowhere, it renders in your browser), the formats and sizes, and what is coming next (captions, voiceover and batch).
    Waitlist: store the email in a waitlist table in Supabase. No other service.
    Style: Geist, a dark hero, one lime accent (#84cc16), generous whitespace.
    Done when: the page renders on a phone and a submitted email appears in the waitlist table.
  4. 4. Branding Package

    Use a design or image tool for this one. A coding agent cannot draw a logo.
    Brand for AdMotion: a wordmark and an icon that suggest a square that unfolds into a taller frame.
    Colors: near-black, off-white and one lime (#84cc16). Type: Geist, with Geist Mono for sizes.
    Deliverables: wordmark, icon, three format chips (9:16, 1:1, 16:9) that differ by shape as well as color, a studio preview frame style with a safe-zone guide, and one launch graphic.
    Done when: each deliverable is saved in one folder and the format chips are distinguishable without color.