PRODUCTION · CONTENT ENGINE · v1.0

One input.
Eight channels. 30 seconds.

Paste a product URL, pick a brand voice, and watch Claude generate a blog post, LinkedIn, Twitter thread, Instagram caption, email, Google Ads, meta description, and product copy — all in parallel. Plus AI-generated images via Gemini and cinematic product video via Veo 2.0.

8
Content types
4
Brand voices
28
Routes
3
AI providers
studio.app/studio/create
Product URL
allbirds.com/products/wool-runner
Brand voice
Professional
B2B · authoritative
Casual
D2C · friendly
Luxury
premium · elegant
Edgy
bold · disruptive
Generating 8 assets…
📝 Blog 💼 LinkedIn 🐦 Twitter 📸 Instagram 📧 Email 🔍 Google Ads 🏷️ Meta 🛍️ Product
📝 Blog Post completed
Why Allbirds Wool Runners Are the Last Pair You'll Need — In a world drowning in synthetic fast-fashion, one shoe is quietly changing the game. Made from superfine merino wool, the Wool Runner doesn't just feel different…
GEMINI
4 image variants
VEO 2.0
Product video
Powered by
Claude Sonnet 4 Gemini Flash Veo 2.0 FastAPI PostgreSQL BeautifulSoup S3 Storage Docker
THE PROBLEM

Content production is the bottleneck.

Agencies and D2C brands need content for 6+ channels per product — blog, social, email, ads, SEO — and every piece needs the same brand voice. That's 4–6 hours per product, per week.

4–6 hours per product

Write a blog, repurpose for LinkedIn, rewrite for Twitter, different format for email, different again for ads. Repeat.

Voice drifts across channels

Blog sounds professional, Instagram sounds casual, ads sound robotic. One product, three different brands.

Platform rules ignored

Google Ads headlines need <30 chars, meta descriptions <155 — yet most copy is written without counting.

Visuals are an afterthought

Copy goes to design, design makes one image, it gets cropped badly for 4 platforms. No consistency.

THE SOLUTION

One input, one voice,
every channel at once.

Paste a URL (or text, or upload an image). Pick a voice. Claude generates 8 content types in parallel — each platform-optimized, character-validated, brand-consistent. Gemini adds images, Veo adds video.

1

Paste URL, text, or upload image

BeautifulSoup scrapes the page; Claude's vision analyzes uploaded photos; or just paste a brief.

2

Pick a brand voice

Professional, Casual, Luxury, or Edgy — injected into every prompt as a system-level persona.

3

8 generators fire in parallel

asyncio.gather() launches blog, LinkedIn, Twitter, Instagram, email, Google Ads, meta, and product copy simultaneously.

4

Gemini generates 4 image variants

Base product shot → Instagram, blog hero, ad banner, social thumbnail. Each platform-optimized using the base as reference.

5

Veo 2.0 cinematic product video

16:9, dark studio lighting, product orbit — no text, no people, no watermarks. Async polling until complete.

ai_service.py · generate_all_content()
# 8 content types generated in parallel
BRAND_VOICES = {
  "professional": "authoritative, B2B...",
  "casual":       "friendly, D2C...",
  "luxury":       "elegant, premium...",
  "edgy":         "bold, disruptive...",
}

async def generate_all_content(
    context: dict,
    voice: str,
    keywords: str | None,
    cta: str | None,
    image_path: str | None,
) -> dict:
    results = await asyncio.gather(
        _generate_blog(context, voice, ...),
        _generate_linkedin(context, voice, ...),
        _generate_twitter(context, voice, ...),
        _generate_instagram(context, voice, ...),
        _generate_email(context, voice, ...),
        _generate_google_ad(context, voice, ...),
        _generate_meta_description(context, voice, ...),
        _generate_product_description(context, voice, ...),
    )
    return dict(zip(CONTENT_TYPES, results))
GENERATION PIPELINE

Three AI providers, one background task.

Input stage
URL scrape
bs4 · httpx
Text brief
freeform
Product image
vision · base64
Claude Sonnet 4 — 8 parallel generators
asyncio.gather() · Semaphore(2) · JSON schema · retry 4x
ProfessionalCasualLuxuryEdgy
Content output — 8 types
📝
Blog
800 words
💼
LinkedIn
1200 chars
🐦
Twitter
5 tweets
📸
Instagram
+ hashtags
📧
Email
subj + body
🔍
Google Ads
30c · 90c
🏷️
Meta desc
155 chars
🛍️
Product
150 words
Optional media generation
Gemini Flash
4 platform variants from base image
InstagramBlog heroAd bannerThumb
Veo 2.0
Cinematic product video · 16:9 · async poll
dark studiono textproduct orbit
FEATURES

Content, images, video — all from one form.

8 content types, parallel

Blog (800w), LinkedIn (1200c), Twitter thread (5 tweets), Instagram (+ hashtags), email (subject+body), Google Ads (30c headlines), meta (155c), product copy.

asyncio.gatherJSON schema

4 brand voice presets

Professional (B2B), Casual (D2C), Luxury (premium), Edgy (startup). Voice injected as system persona across all 8 generators.

system promptsconsistent tone

Vision-enabled input

Upload a product photo → Claude analyzes colors, materials, design, style → content reflects the actual visuals, not generic text.

base64Claude vision

4 platform image variants

Gemini generates a base shot, then 4 platform-optimized variants (Instagram square, blog hero 16:9, ad banner, social thumb) using the base as reference.

Gemini Flashreference img

Cinematic product video

Veo 2.0 generates dark-moody product orbit videos. 16:9, no text/people/watermarks. Async polling with 5-min timeout.

Veo 2.0async poll

Character-validated output

Google Ads: 30c headlines, 90c descriptions. Meta: 155c. Twitter: <280c per tweet. Instagram: hashtag count. All enforced in prompts and displayed in UI.

char countsplatform rules

Inline regeneration

Regenerate any single content type with custom instructions ("shorter", "more emoji", "different angle") without re-running the full pipeline.

per-typecustom prompt

One-click ZIP export

All 8 content pieces as markdown files + project summary. Download a clean, handoff-ready package for the client or design team.

ZIPmarkdown

URL scraping with price

BeautifulSoup extracts title, meta, headings, body, images, and price (regex for $, £, €). Context feeds all 8 generators.

bs4httpxprice regex
TECH STACK

Three AI engines, one async backend.

Backend

  • FastAPI + Uvicorn
  • Python 3.11+
  • Pydantic v2
  • httpx + bs4
  • aiosmtplib

Data

  • PostgreSQL
  • asyncpg driver
  • SQLAlchemy 2.0
  • Alembic migrations
  • UUID PKs · JSON

AI / Media

  • Claude Sonnet 4
  • Claude Vision
  • Gemini Flash (img)
  • Veo 2.0 (video)
  • Semaphore(2)

Infra / UI

  • Docker / Compose
  • Azure Pipelines CI
  • Jinja2 + Tailwind
  • S3 / Spaces
  • ZIP export
USER JOURNEY

From product URL to content package.

01

Choose input type

Paste a product URL (scraper extracts title, meta, headings, price), type a brief, or upload a product photo for vision analysis.

02

Pick voice + options

Select brand voice (Professional/Casual/Luxury/Edgy), add keywords, CTA, audience persona. Toggle images/video.

03

Background pipeline fires

asyncio.create_task() launches content gen (8 parallel Claude calls), then images (Gemini), then video (Veo). Frontend polls every second.

04

Results stream in

Cards populate as each piece completes. Blog, LinkedIn, tweets, email, ads — each with Preview and Raw tabs, copy button, regenerate button.

05

Review, tweak, regenerate

Click regenerate on any single type with custom instructions. Edit in place. Copy individual pieces to clipboard. View images and video.

06

Download ZIP or copy

One-click export: 8 markdown files + project summary. Hand off to client, design team, or publish directly.

PRODUCT TOUR

See it in action.

Dashboard, login, and the full studio experience — captured in multiple parts because the results page is that dense.

studio.app/login
Login
Passwordless OTP login
Email + 6-digit code, session token with 24h expiry.
Auth
studio.app/dashboard
Dashboard
Project dashboard
Project grid with brand voice, status, content count.
Projects
Studio — results page
Full desktop captures, stacked top-to-bottom.
studio.app/studio/{id} — top section
Studio top section
Part 1 — header + first content cards
Blog, LinkedIn, Twitter thread, Instagram caption.
Content
studio.app/studio/{id} — middle section
Studio middle section
Part 2 — email, Google Ads, meta, product copy
Character-validated ads headlines, meta description.
Validated
studio.app/studio/{id} — bottom section
Studio bottom section
Part 3 — generated images + video player
4 platform image variants, cinematic product video.
Media
IMPACT

An entire content team,
compressed to 30 seconds.

One form replaces a copywriter, social media manager, email marketer, SEO specialist, and ad creative — all in one brand voice, all platform-validated, all exportable.

6hrs → 30s
Per product
8-in-1
Content types
3 AIs
Claude + Gemini + Veo
100%
Voice-consistent
Production-ready · async throughout · 3 AI providers · ZIP export