ElarisLabs is the AI-native creative operating system for brands. Here's how we make the very first step feel instant, turning a single web address into a production-ready brand profile, with ScrapeGraph as the engine under the hood.
ElarisLabs generates on-brand creative across image, video and audio, and publishes it straight to Meta, TikTok and Snapchat. At its center is Iris, a conversational AI agent that takes a brand brief and returns channel-ready creative in minutes, not weeks. Every asset stays locked to your brand's colors, fonts and voice, because the platform learns your brand the moment you join.
Describe a campaign in plain language, and Iris plans it, generates the assets and assembles them, end to end.
On-brand image generation with brand-lock applied to every prompt, so nothing drifts off-brand.
AI video, scripted, voiced and rendered to a finished MP4, with production handled programmatically.
One creative, every aspect ratio, resized across channels automatically while staying perfectly on-brand.
Spin up a full multi-asset campaign from a single brief, with brand constraints baked in from the start.
Publish directly to Meta, TikTok and Snapchat, then track what's working with brand-scoped analytics.
Everything above only matters if a new brand can get started in seconds. The last thing someone joining ElarisLabs should do is spend twenty minutes uploading logos, eyedropping hex codes and dragging in product photos. And when they want a product video, they shouldn't re-type everything already sitting on an Amazon or Shopify page.
So to make onboarding instant, we reach for ScrapeGraph, the engine that turns a single URL into structured brand or product data. It's the first step in two of our highest-value flows. We wire it in through the scrapegraph-js v2 SDK behind a shared client, so the rest of ElarisLabs never thinks about scraping at all.
Brand onboarding. Colors, fonts, logo, photos and AI-inferred personality, pre-filled in under 30 seconds.
URL to Video. Extract name, price, hi-res media and features from real merchant pages, then generate.
Here is the whole idea on a single real product page. On the left, the messy, JavaScript-rendered, bot-protected page a shopper sees. On the right, exactly what ElarisLabs receives back from one extract() call, clean enough to drop straight into a video.
Buried price, a 62px thumbnail and a lazy gallery become clean JSON, with the image URL auto-upgraded to full resolution. See how ScrapeGraph extract() handles it →
Both flows converge on a single ScrapeGraph client, but they call different primitives tuned to their target pages. Watch the data move from entry point, through the API, and back out to where ElarisLabs stores or renders it.
scrape()
URL to Video · extract()
Shared client + API
mode: 'auto' fetchjs + stealth + scrolls fetchOn the onboarding page, step zero is a website field. The user pastes qdb.qa or nike.com; ElarisLabs runs a scanning animation while ScrapeGraph works, then advances to a review form with everything pre-filled. If scraping fails, the user still proceeds to manual entry. Scraping is an accelerator, not a gate.
The server action scrapeBrandFromWebsite() authenticates the user via Supabase, calls scrapeBrandData(url), and returns a typed ScrapedBrandData object. One HTTP call asks ScrapeGraph for three formats at once:
Colors, typography, logo, favicon, OG image, spacing, framework hints, plus AI-inferred tone, energy and target audience.
Raw page images populate the brand photo gallery, deduped and capped at 12 to keep the picker clean.
A tightly-scoped LLM extraction for the homepage slogan only, with a strict schema so the model can't hallucinate extra fields.
ScrapeGraph returns v2-shaped data; the client maps it into the legacy ScrapedBranding interface, validating and re-shaping along the way.
| ScrapeGraph output | ElarisLabs field | Processing |
|---|---|---|
colors.primary / accent | → colors object | Hex validation (#RRGGBB only) |
typography.heading / mono | → fonts[] with roles | Deduped: heading, body, mono |
typography sizes | → typography (legacy) | Rebuild fontStacks, fontSizes |
images.logo | → logo_url | HTTP(S) URLs only |
ogImage + results.images | → brand_photos[] | Deduped, max 12 |
personality | → brand_personality | tone, energy, targetAudience |
results.json.tagline | → tagline | From dedicated json format |
If the branding format fails entirely, ElarisLabs returns success: false, because the review UI depends on those fields, so a partial result isn't surfaced as a win. A helper, hasValidScrapedData(), guards against empty scrapes before treating a result as useful. Scraped logos and photos are then re-hosted via uploadExternalImageToSupabase() so generation pipelines never depend on third-party CDN uptime.
Brand creation is free, with no credit deduction. Scraping lives in the acquisition funnel, not behind a paywall.
Once onboarding completes, brand context flows into every creative surface.
Studio brand picker · Brand Pack multi-ratio resizing · Video Studio constraints · Campaign Wizard · Insights & Scheduler
URL to Video lives at /url-video, orchestrated by UrlVideoWizard.tsx. ScrapeGraph powers step one entirely and seeds step two. Everything after it is the ElarisLabs generation and rendering stack.
Paste a product page URL, or enter details manually.
Confirm scraped images, videos, name, price, features.
Duration, aspect ratio, language, target audience.
LLM-generated script options from the scraped data.
ElevenLabs TTS with word-level captions.
Remotion template render to a final MP4.
E-commerce product pages are JavaScript-rendered, lazy-loaded and bot-protected. So unlike onboarding's lightweight scrape, product extraction uses a single extract() call with a detailed prompt, a schema requiring only product_name, and a much heavier fetch config.
The prompt bakes in platform-specific instructions for Amazon, Flipkart, Shopify and Shopee, covering thumbnail-vs-full-size URL patterns, gallery containers, data-old-hires, srcset. The code notes this costs extra credits but materially improves hit-rate on exactly the merchant pages URL-to-video depends on.
ScrapeGraph returns image URLs; ElarisLabs then runs upgradeImageUrl(), rewriting known CDN thumbnail patterns into their full-resolution equivalents.
Images are deduped by base URL (ignoring query strings), capped at 10 images and 5 videos. Price strings are cleaned locale-aware, and currency is detected from ISO code or symbol (₹→INR, €→EUR). The result is a normalised product object, clean enough to feed straight into script generation, voiceover and the Remotion render.
One SDK and API key serve both flows, but every dimension is tuned to its target pages.
| Dimension | Brand onboarding | URL to Video |
|---|---|---|
| ScrapeGraph API | scrape() | extract() |
| Primary formats | branding · images · json | structured JSON via prompt + schema |
| Fetch mode | auto (lightweight) | js + stealth + 3 scrolls (heavy) |
| Target pages | Marketing / corporate sites | E-commerce product pages |
| Key outputs | Logo, colors, fonts, personality, photos | Name, price, hi-res images, videos, features |
| Post-processing | Hex validation, font roles, photo dedup | CDN URL upgrading, price parsing, dedup |
| Persistence | Supabase brands table | In-memory wizard state → render |
| Fallback | Manual form entry | Manual product entry |
Investors and users see a working brand profile or product video starting from a URL, not a blank form.
Brand scrape() and product extract() share an SDK and key, but use strategies tuned per use case.
Scraped brand data powers Studio, Scheduler and Insights; scraped product data feeds URL-to-Video and Product Staging.
Stealth JS rendering plus platform-specific image upgrading makes URL-to-video viable on real merchant pages.
That's where ElarisLabs begins, and ScrapeGraph is the engine that makes the first mile instant. Paste a URL, and within seconds the platform knows your colors, fonts, voice and products, ready to generate on-brand creative across image, video and audio. The blank form is gone; the work starts immediately.