/* VideoGen AI — landing page */
const { useState, useEffect, useRef, useMemo } = React;
const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{
"accent": "#2F5BFF",
"headline": "Make once.",
"headlineTail": "everywhere.",
"rotatingPlatforms": true
}/*EDITMODE-END*/;
const BILLING_URL = "https://video.vangogodesign.com/billing";
// ── Data ────────────────────────────────────────────────────────────────────
const PLATFORMS = [
{ name: "TikTok", short: "TT", spec: "9:16 · 15–60s" },
{ name: "Reels", short: "IG", spec: "9:16 · ≤90s" },
{ name: "Shorts", short: "YT", spec: "9:16 · ≤60s" },
{ name: "LinkedIn", short: "LI", spec: "1:1 · ≤3min" },
{ name: "X", short: "X", spec: "16:9 · ≤2:20" },
{ name: "Facebook", short: "FB", spec: "1:1 · ≤90s" },
{ name: "Pinterest", short: "PI", spec: "9:16 · ≤60s" },
{ name: "YouTube", short: "YT", spec: "16:9 · long-form" },
];
const TIERS = [
{
name: "Starter",
tag: "Slider clips",
desc: "Slider videos up to 1 minute. Social-media posts only — Reels, TikTok, Shorts.",
priceMo: 19,
priceYr: 15,
features: [
"Slider clips up to 60 seconds",
"Auto-publish to social platforms",
"Per-platform captions + hashtags",
"Music, transitions, templates",
"Download to edit yourself",
],
},
{
name: "Creator",
tag: "Real animation",
desc: "Real animation rendered on professional engines. Up to 3 minutes. The growth tier.",
priceMo: 49,
priceYr: 39,
featured: true,
badge: "Most popular",
features: [
"Up to 3-minute animated videos",
"Professional animation engines",
"AI script, voiceover, motion",
"Product placement in every shot",
"All social platforms, every aspect",
"Scheduled drops + A/B titles",
"Upload your own images & clips",
],
},
{
name: "Pro",
tag: "Unlimited length",
desc: "Unlimited length — up to 60 minutes. Consistent characters, cinematic camera, lip-sync.",
priceMo: 129,
priceYr: 99,
features: [
"Long-form up to 60 minutes",
"Voice clone — your voice, any script",
"Multi-character support",
"Consistent characters & locations",
"Cinematic camera + action moves",
"AI presenter with lip-sync",
"Brand kit, fonts, templates",
"Team seats (5) + API",
],
},
];
const FEATURES = [
["One brief →", "ten platforms", "Drop an idea or upload a clip. We re-cut, re-caption, and re-format it for every feed. You approve once."],
["Caption rewrites", "for each algorithm", "Same idea, ten different captions. Hooks tuned to each platform's ranking signals — not a copy-paste."],
["Hashtags &", "keywords on autopilot", "We pull trending tags hourly, score them by reach + competition, and slot the right mix per platform."],
["AI voiceover", "in 32 voices", "Pick a voice, paste a script, or let the AI write it. Lip-sync on Creator and Pro."],
["Best-time", "scheduling", "Per-platform drop windows trained on your audience. Queue a week in three minutes."],
["Analytics", "that compare apples", "One dashboard. Cross-platform views, retention, and ROI — normalized so you can compare what's actually winning."],
];
const FAQ = [
["Do you actually publish, or just export?", "Both. Connect your platform accounts and VideoGen AI publishes on schedule. Prefer to download? Every video exports as MP4 in all aspect ratios."],
["Which platforms does the auto-publish cover?", "TikTok, Instagram Reels, YouTube Shorts & Long-form, LinkedIn, Facebook, X, Pinterest, Threads, and Snapchat. New platforms are added monthly."],
["How is each platform 'optimized'?", "Same idea, ten outputs: aspect ratio, length, hook timing, caption length, hashtag density, and the title/description structure each algorithm rewards. We rewrite — not resize."],
["What's the difference between Creator and Pro?", "Creator is animation, AI voiceover, and motion graphics up to 3 minutes. Pro adds AI presenters with lip-sync and long-form (20+ min) — built for YouTube, sales, and webinars."],
["Can I keep my brand consistent?", "Yes. Upload your brand kit (logos, colors, fonts, intros, outros, lower-thirds). Every export uses your kit by default."],
["What happens to my data and accounts?", "Your raw assets are yours. Platform tokens are encrypted and revocable. We never post without your queue's approval."],
["Is there a free trial?", "Get Early Access for free during the beta. No card required — you'll only see billing after the public launch."],
];
const SAMPLES = [
{ tag: "Starter", title: "Local bakery", platform: "Reels · 28s" },
{ tag: "Creator", title: "SaaS feature drop", platform: "Shorts · 1:42" },
{ tag: "Creator", title: "Real-estate tour", platform: "TikTok · 0:58" },
{ tag: "Pro", title: "Founder interview", platform: "YouTube · 12:08" },
];
// ── Hooks ───────────────────────────────────────────────────────────────────
function useRotator(items, interval = 1800, enabled = true) {
const [i, setI] = useState(0);
useEffect(() => {
if (!enabled) return;
const id = setInterval(() => setI((x) => (x + 1) % items.length), interval);
return () => clearInterval(id);
}, [items.length, interval, enabled]);
return [i, items[i]];
}
function useReveal() {
useEffect(() => {
const els = document.querySelectorAll('[data-reveal]');
const io = new IntersectionObserver((entries) => {
entries.forEach((e) => {
if (e.isIntersecting) {
e.target.classList.add('in');
io.unobserve(e.target);
}
});
}, { threshold: 0.12 });
els.forEach((el) => io.observe(el));
return () => io.disconnect();
}, []);
}
// ── Atoms ───────────────────────────────────────────────────────────────────
const Arrow = ({ size = 14 }) => (
);
const Play = () => (
);
// ── Sections ────────────────────────────────────────────────────────────────
function Nav() {
return (
);
}
function Hero({ headline, tail, rotating }) {
const [idx] = useRotator(PLATFORMS, 1800, rotating);
return (
VideoGen AI plans, scripts, and ships social video across every platform — each
one rewritten for its own algorithm. One workflow, one subscription, zero tab-juggling.
{headline}
Post to{" "}
{PLATFORMS.map((p) => {p.name}.)}
And {tail}
Marketers and small-business owners didn't sign up to be video editors, copywriters, and social-media managers. They signed up to ship.
Cut in one tool. Caption in another. Rewrite for each feed. Schedule somewhere else. Forget what you posted where.
One brief. One subscription. Every platform optimized — and posted — automatically.
No prompts to engineer. No timeline to fight. You stay the director — VideoGen AI handles the production line.
Starter for slider clips up to 1 min — social posts only. Creator for real animation on professional engines, up to 3 min. Pro for unlimited length.
Type a line. Get a real storyboard you can tweak shot-by-shot. Consistent characters and locations across every cut (Pro). Long-form up to 60 minutes.
Animate the action and camera moves like a film pro — push-ins, parallax, whip-pans, lip-sync. Approve once; we ship to every platform on its own best time.
Every shot is its own card. Reorder, replace, retime. The AI follows the storyboard — not the other way around.
Pull any frame, key art, or generated image out as a layered file. Open it in Photoshop, Figma, or your editor of choice. Bring it back in.
Upload your own images, B-roll, voice, or product clips. VideoGen AI weaves them in alongside the generated shots.
Lock a character, a brand, a location — then keep them on-model across every shot of a 60-minute long-form (Pro).
Push-ins, parallax, whip-pans, rack-focus. Animate the action and the camera, not just the subject.
Trim by the frame. Adjust easing. Swap voices. The details that separate work from slop — they're all here.
Start where you are. Upgrade when you outgrow it. Every tier publishes to every platform — they differ on the kind of video the AI can make.
{t.desc}
Hooks, scripts, motion, voiceover, captions, hashtags, scheduling, analytics. What used to be a stack is now a sidebar.
{p}
Real outputs from the beta. Each card is the same idea, ten platform cuts.
Cancel anytime. Yearly saves you 20%. Beta pricing locks in for life.
{t.desc}
Anything else? Email hi@videogen.ai — a human gets back same-day.
{a}
Beta seats are limited. Pricing locks in for life if you join now.