AI commercial director

Describe the idea.
We direct the film.

0/2000
Try
References
Upload any references you want the generation to consider.
No references added.
Quality
Seedance 2.5 · ModelArk
Duration
4s30s
10s
Ratio
Output
Idle
Your film appears here.
Add references, describe the idea and press the red button.
Archive

Generated films

No generated films yet.
Private control center

Owner Cabinet

Visitors today00 / 30d
Active now0last 5 min
Generations00% success
Conversion0%visit → generate
Projected revenue$0.000% markup
Projected profit$0.000% margin
Good results0 rated
Downloads00 shares
Traffic & Generations
Last 30 days. Anonymous first-party analytics.
Conversion Funnel
Where people continue or drop.
Quality Signals
Feedback reasons and Master Prompt performance.
System Health
Server, connections, failures and reference mix.
Generation Metrics
Cost, speed, duration, quality, aspect ratios and brain usage.
Errors
Recent generation/API failure categories.
Growth & Product Controls
Pricing, analytics, retry behavior, sharing and Master Prompt A/B tests.
Customer Accounts & Credits
Beta accounts, usage and manual credit grants before payment processing is connected.
Live Activity
Recent product events. No prompt text or file contents are logged.
Anonymous Users
First-party visitor IDs until real accounts are added.
AI Brain
Choose the OpenAI brain used to build the final Seedance prompt.
Prompt System · Live Director Brain
Production
The exact OpenAI instruction system used to direct every NAPPIAD commercial. Edit by topic or inspect the complete raw prompt.
Changes affect the next generation.
Generations
Select a run to inspect its exact prompt and cost.
Generation Inspector
Select a generation.
OpenAI$0.00
Seedance$0.00
Total$0.00
+Number(n||0).toFixed(2); } function renderV63Pricing(){ const input=$('v63MarkupInput'); if(!input) return; const raw=Number(input.value); const preview=Math.min(1000,Math.max(0,Number.isFinite(raw)?raw:v63SavedMarkup)); let current=0; try{ current=Math.max(0,Number(customerGenerationEstimate()||0)); }catch(_){} const base=current>0 ? current/(1+v63SavedMarkup/100) : 0; const client=base*(1+preview/100); const profit=Math.max(0,client-base); const margin=client>0 ? profit/client*100 : 0; if($('v63Cost')) $('v63Cost').textContent=v63Money(base); if($('v63Client')) $('v63Client').textContent=v63Money(client); if($('v63Profit')) $('v63Profit').textContent=v63Money(profit); if($('v63Margin')) $('v63Margin').textContent=margin.toFixed(1)+'%'; } function v63SetPricingStatus(message,type=''){ const el=$('v63PricingStatus'); if(!el) return; el.textContent=message||''; el.className='v63-status'+(type?' '+type:''); } async function saveV63Markup(){ const input=$('v63MarkupInput'); const btn=$('v63MarkupSave'); if(!input) return; const value=Math.min(1000,Math.max(0,Number(input.value||0))); input.value=String(value); if(btn){btn.disabled=true;btn.textContent='Saving…';} v63SetPricingStatus('Saving…'); try{ const growth=await v63SaveGrowth({customerMarkupPercent:value}); v63SavedMarkup=Math.min(1000,Math.max(0,Number(growth.customerMarkupPercent??value))); input.value=String(v63SavedMarkup); state.publicSettings.customerMarkupPercent=v63SavedMarkup; const legacy=$('ownerMarkup'); if(legacy) legacy.value=String(v63SavedMarkup); renderV63Pricing(); try{ updateCostEstimate?.(); }catch(_){} v63SetPricingStatus('Saved. '+v63SavedMarkup+'% is active.','ok'); try{showToast('Markup updated to '+v63SavedMarkup+'%');}catch(_){} }catch(error){v63SetPricingStatus(error.message||'Could not save markup.','error');} finally{if(btn){btn.disabled=false;btn.textContent='Save markup';}} } function renderV63Api(){ const toggle=$('v63ApiToggle'), stateEl=$('v63ApiState'); if(!toggle||!stateEl) return; toggle.checked=Boolean(v63ApiEnabled); stateEl.textContent=v63ApiEnabled?'API ON':'API OFF'; stateEl.classList.toggle('off',!v63ApiEnabled); } async function saveV63Api(){ const toggle=$('v63ApiToggle'), stateEl=$('v63ApiState'); if(!toggle||!stateEl) return; const wanted=Boolean(toggle.checked); toggle.disabled=true; stateEl.textContent='SAVING…'; stateEl.classList.remove('off'); try{ const growth=await v63SaveGrowth({publicGenerationEnabled:wanted}); v63ApiEnabled=growth.publicGenerationEnabled !== false; state.publicSettings.publicGenerationEnabled=v63ApiEnabled; if(typeof ownerPublicGenerationEnabled!=='undefined'&&ownerPublicGenerationEnabled){ownerPublicGenerationEnabled.checked=v63ApiEnabled;try{syncOwnerApiGenerationState();}catch(_){}} renderV63Api(); try{renderGenerationAccess?.();}catch(_){} try{showToast(v63ApiEnabled?'Generation API enabled':'Generation API disabled');}catch(_){} }catch(error){toggle.checked=v63ApiEnabled;renderV63Api();try{showToast(error.message||'Could not update API');}catch(_){}} finally{toggle.disabled=false;} } async function refreshV63CriticalOwnerControls(){ const growth=await v63LoadGrowth(); v63SavedMarkup=Math.min(1000,Math.max(0,Number(growth.customerMarkupPercent ?? state.publicSettings.customerMarkupPercent ?? 100))); v63ApiEnabled=growth.publicGenerationEnabled !== false; const input=$('v63MarkupInput'); if(input) input.value=String(v63SavedMarkup); renderV63Pricing(); renderV63Api(); } function installV63CriticalOwnerControls(){ try{installV62OwnerAccordion();}catch(_){} const pricingBody=v62SectionBody('pricing'); const apiBody=v62SectionBody('api'); if(!pricingBody||!apiBody) return; if(!$('v63PricingCard')){ const card=document.createElement('section'); card.id='v63PricingCard'; card.className='v63-critical-card'; card.innerHTML='
Customer Markup
Set the exact markup used server-side for customer generation pricing.
NAPPIAD cost
Client price
Gross profit
Gross margin
'; pricingBody.appendChild(card); $('v63MarkupInput')?.addEventListener('input',()=>{v63SetPricingStatus('Unsaved change');renderV63Pricing();}); $('v63MarkupSave')?.addEventListener('click',saveV63Markup); card.querySelectorAll('[data-v63-m]').forEach(btn=>btn.addEventListener('click',()=>{const input=$('v63MarkupInput');if(input){input.value=btn.dataset.v63M;v63SetPricingStatus('Unsaved change');renderV63Pricing();}})); } if(!$('v63ApiCard')){ const card=document.createElement('section'); card.id='v63ApiCard'; card.className='v63-critical-card'; card.innerHTML='
Generation API
Global kill switch. OFF blocks paid generation for every user, including Owner, before OpenAI or ModelArk is called.
API ON
This control is saved on the server.
'; apiBody.appendChild(card); $('v63ApiToggle')?.addEventListener('change',saveV63Api); } refreshV63CriticalOwnerControls(); } document.addEventListener('click',event=>{ const button=event.target?.closest?.('[data-v62-open="pricing"],[data-v62-open="api"]'); if(!button) return; setTimeout(()=>{installV63CriticalOwnerControls();refreshV63CriticalOwnerControls();},30); },true); adminBtn?.addEventListener('click',()=>{setTimeout(installV63CriticalOwnerControls,120);setTimeout(installV63CriticalOwnerControls,650);}); setTimeout(installV63CriticalOwnerControls,1300); accountBtn.addEventListener('click', () => { if (accountDrawer.classList.contains('open')) closeAccount(); else openAccount(); }); accountClose.addEventListener('click', closeAccount); accountSignup.addEventListener('click', () => submitAccount('signup')); accountLogin.addEventListener('click', () => submitAccount('login')); accountLogout.addEventListener('click', logoutAccount); accountPassword.addEventListener('keydown', event => { if (event.key === 'Enter') submitAccount('login'); }); libraryBtn.addEventListener('click', () => { if (libraryOverlay.classList.contains('open')) closeLibrary(); else openLibrary(); }); libraryClose.addEventListener('click', closeLibrary); apiBtn.addEventListener('click', () => { if (apiDrawer.classList.contains('open')) closeApi(); else openApi(); }); apiClose.addEventListener('click', closeApi); showBrainKey.addEventListener('click', () => { const visible = brainApiKey.type === 'text'; brainApiKey.type = visible ? 'password' : 'text'; showBrainKey.textContent = visible ? 'Show' : 'Hide'; }); showKey.addEventListener('click', () => { const visible = apiKey.type === 'text'; apiKey.type = visible ? 'password' : 'text'; showKey.textContent = visible ? 'Show' : 'Hide'; }); connectBrain.addEventListener('click', connectOpenAiBrain); disconnectBrain.addEventListener('click', disconnectOpenAiBrain); connectApi.addEventListener('click', connectModelArk); disconnectApi.addEventListener('click', disconnectModelArk); document.addEventListener('keydown', e => { if (e.key !== 'Escape') return; closeLibrary(); closeApi(); closeAccount(); }); renderAssets(); setApiConnected(false); setBrainConnected(false); renderTopBalance(null); feedbackPanel.hidden = true; shareBtn.disabled = true; quality1080.disabled = false; updateDurationForQuality(false); updateCostEstimate(); loadLibrary(false); track('visit'); setInterval(() => { if (document.visibilityState === 'visible') track('heartbeat'); }, 60000); Promise.all([ loadPublicSettings(), restoreSavedCredentials(), loadProviderStatus(), loadAccountState() ]).then(async () => { ensureV54AccountSecurityUi(); await restoreV53Draft(); loadSharedGeneration(); }); })();