GenCreatordocs

Creator Studio, stacks, and workspace briefs

How GenCreator compiles source briefs into six channel artifacts, routes /personas to /stacks, and gates unprovisioned offers behind /products/waitlist.

LiveChecked against frankxai/gencreator.ai/next.config.ts, frankxai/gencreator.ai/README.md, frankxai/gencreator.ai/GO-LIVE.md, frankxai/gencreator.ai/lib/creator-studio/core.ts, frankxai/gencreator.ai/app/stacks/stacks.data.ts
MCP endpoint/api/mcp

GenCreator (frankxai/gencreator.ai) is built on Next.js 16 (App Router) and React 19 (fra1 Vercel region). It provides an editable source-to-artifact workspace (/creator-studio), a seven-stack operating directory (/stacks), and strict release-gate routing for commercial offers (/products/waitlist).

Creator Studio workflow (/creator-studio)

The Creator Studio (app/creator-studio/page.tsx and lib/creator-studio/core.ts) arranges a creator's own notes into reviewable, exportable drafts without requiring an account on first visit.

1. Validated workspace brief (briefSchema)

Every run is validated by Zod (briefSchema in lib/creator-studio/core.ts) before compilation:

FieldConstraintPurpose
creator1–100 charsAuthor attribution attached to exported editions
title3–140 charsRelease headline
audience3–240 charsIntended reader or viewer segment
source40–20,000 charsPrimary source notes supplied by the creator
sourceLabel1–160 charsProvenance label (for example notebook or session name)
callToAction3–200 charsExplicit human action appended to channel drafts
destinationValid https:// URL (<= 2048 chars, no credentials)Canonical link destination
channels1–6 unique channelsSelected from linkedin, instagram, x, newsletter, video, website
sourcePermissionLiteral trueConfirms the creator owns or has permission to use the source text

2. Deterministic compilation and SHA-256 provenance

compileCreatorBrief(input) hashes the raw source via Web Crypto (crypto.subtle.digest('SHA-256', ...)) to emit a sourceDigest (sha256:<64-hex-chars>) and produces a typed CreatorArtifact (kind: 'source_arrangement') for each selected channel:

  • LinkedIn post (linkedin): Opening two paragraphs plus CTA and destination URL.
  • Instagram caption (instagram): Lead paragraph plus CTA.
  • X post (x): Lead paragraph plus destination URL.
  • Newsletter (newsletter): Title, full source body, CTA, destination URL, and creator sign-off.
  • Video outline (video): Structured into Opening, Develop the idea, and Closing sections.
  • Website page (website): Standalone, script-free HTML rendered via renderCreatorWebsite with HTML entity escaping (escapeHtml).

Stacks directory (/stacks) and route redirects

In app/stacks/stacks.data.ts, GenCreator organizes creator and infrastructure workflows into 7 stacks rendered at /stacks and /stacks/[slug]:

SlugNameTarget operatorCore pillars
writerWriterEssayists, novelists, newsletter operatorsStrategy, Governance (voice-match score >= 8), Data
videoVideo CreatorYouTubers, course creators, short-form creatorsStrategy, Technology (transcript-based editing), Data
founderFounderSolo founders, indie hackers, startup operatorsStrategy, Governance (human sign-off on external sends), Technology
musicianMusicianIndependent artists, producers, composersStrategy, Data (prompt + stem archive), Ethics
coachCoachCoaches, consultants, educatorsGovernance (client data isolation), Talent, Data
visualVisual ArtistIllustrators, designers, photographersStrategy, Ethics (training reference disclosure), Data
stackguideStarlight StackGuideSovereign local AI stack control plane (kind: 'infrastructure')Sovereignty (local-first manifests), Memory, Governance

Canonical redirects (next.config.ts)

gencreator.ai/next.config.ts enforces five redirects so legacy persona links and /docs paths resolve cleanly:

Source pathDestinationStatus
/personas/stackspermanent: true (308)
/personas/:slug/stacks/:slugpermanent: true (308)
/login/sign-inpermanent: true (308)
/apply/studio/applypermanent: false (307)
/docs and /docs/:path*https://docs.gencreator.ai / https://docs.gencreator.ai/:path*permanent: false (307, PR #290)

Waitlist routing for unprovisioned offers (/products/waitlist)

GenCreator refuses to display an active buy button for any product that has not passed its release gate. In app/products/waitlist/page.tsx (backed by commercePosture, getProduct, and products in lib/factory/manifest):

  • Unprovisioned products route to /products/waitlist?product=<id> (with robots: { index: false, follow: true }).
  • The page displays the product's current stage (not yet for sale), explains why checkout is disabled (posture.reason), lists the named alternatives the product must beat (product.mustBeat), and records early-access interest via ProductWaitlistForm without fabricating or seeding waitlist counts.
  • Live storefront checkout on /os is reserved for verified Whop products (OS Circle, Suno Mastery, Personal AI CoE Playbook, Creator Prompt Pack in GO-LIVE.md §7b) synced via /api/webhooks/whop.

Local verification and smoke checks (GO-LIVE.md)

# Run the full local verification gate (clean install -> lint -> typecheck -> unit tests)
pnpm go-live

# Run the 15-check production smoke suite and verify environment health
pnpm smoke https://gencreator.ai
curl -s https://gencreator.ai/api/health