← back to Studio Zero
studio-zero: one-click auto-build all 7 steps (chains niche→title→script; hero + toolbar buttons; SZ_PROVIDER=demo force-flag)
cceb51da5ffd044c266655e45d689247d7fdcb43 · 2026-07-25 08:51:48 -0700 · Steve
Files touched
Diff
commit cceb51da5ffd044c266655e45d689247d7fdcb43
Author: Steve <steve@designerwallcoverings.com>
Date: Sat Jul 25 08:51:48 2026 -0700
studio-zero: one-click auto-build all 7 steps (chains niche→title→script; hero + toolbar buttons; SZ_PROVIDER=demo force-flag)
---
public/index.html | 65 +++++++++++++++++++++++++++++++++++++++++++++++++------
1 file changed, 58 insertions(+), 7 deletions(-)
diff --git a/public/index.html b/public/index.html
index 8650501..19f2cfc 100644
--- a/public/index.html
+++ b/public/index.html
@@ -137,6 +137,7 @@
<p class="sub">Studio Zero runs the seven prompts a $10K/mo creator agency would — and hands you the actual deliverables: niche, brand, a full quarter of content, scripts, thumbnails, and a money map.</p>
<div class="cta">
<button class="btn" id="startBtn">Start my channel →</button>
+ <button class="btn ghost" id="autoHeroBtn">⚡ Auto-build all 7</button>
<button class="btn ghost" id="demoBtn">See a demo run</button>
</div>
<div class="src">Method seeded by <a href="https://x.com/David263146/status/2079054195941147042" target="_blank" rel="noopener noreferrer">@David263146</a> · prompts run verbatim.</div>
@@ -159,7 +160,7 @@
<script>
const $=(s,r=document)=>r.querySelector(s), $$=(s,r=document)=>[...r.querySelectorAll(s)];
-let CFG={liveMode:false,model:'demo',rate:{in:3,out:15}}, PROMPTS=[], STATE=null, cur=0, sessionCost=0;
+let CFG={liveMode:false,model:'demo',rate:{in:3,out:15}}, PROMPTS=[], STATE=null, cur=0, sessionCost=0, autoMsg='';
const LS_PROJECTS='sz_projects', LS_CAL='sz_cal_prefs';
function toast(m){const t=$('#toast');t.textContent=m;t.classList.add('show');setTimeout(()=>t.classList.remove('show'),1800);}
@@ -241,16 +242,65 @@ function downloadFile(name,content,mime){
}
function renderBar(){
const done=Object.keys(STATE.outputs||{}).length;
+ const running=!!autoMsg;
const bar=$('#builderbar');
bar.innerHTML=`
- <input class="pname" id="pname" value="${escAttr(STATE.name||'Untitled channel')}" title="Rename this channel">
- <span class="prog2">${done}/7 steps</span>
+ <input class="pname" id="pname" value="${escAttr(STATE.name||'Untitled channel')}" title="Rename this channel" ${running?'disabled':''}>
+ <span class="prog2" id="autostatus">${running?'<span class="spin"></span> '+esc(autoMsg):done+'/7 steps'}</span>
<span class="sp"></span>
- <button class="btn ghost sm ${done?'':'done0'}" id="dlBtn">⤓ Download plan</button>
- <button class="btn ghost sm ${done?'':'done0'}" id="mdBtn">⧉ Copy markdown</button>`;
+ <button class="btn ghost sm" id="autoBtn" ${running?'disabled':''}>⚡ Auto-build all 7</button>
+ <button class="btn ghost sm ${done&&!running?'':'done0'}" id="dlBtn">⤓ Download plan</button>
+ <button class="btn ghost sm ${done&&!running?'':'done0'}" id="mdBtn">⧉ Copy markdown</button>`;
$('#pname').onchange=()=>{STATE.name=$('#pname').value.trim()||'Untitled channel';persist();};
- $('#dlBtn').onclick=()=>{ if(!done)return; downloadFile('studio-zero-'+slugify(STATE.name)+'.html',planHTML(),'text/html'); toast('Downloaded your channel plan'); };
- $('#mdBtn').onclick=()=>{ if(!done)return; navigator.clipboard.writeText(planMarkdown()); toast('Copied full plan as Markdown'); };
+ $('#autoBtn').onclick=()=>autoBuildAll();
+ $('#dlBtn').onclick=()=>{ if(!done||running)return; downloadFile('studio-zero-'+slugify(STATE.name)+'.html',planHTML(),'text/html'); toast('Downloaded your channel plan'); };
+ $('#mdBtn').onclick=()=>{ if(!done||running)return; navigator.clipboard.writeText(planMarkdown()); toast('Copied full plan as Markdown'); };
+}
+function setAuto(m){ autoMsg=m; renderBar(); }
+
+// Generate a single step from an explicit value map (DOM-independent — used by auto-build).
+async function generateInto(step,vals){
+ const prompt=fillPrompt(step,vals);
+ const res=await fetch('/api/generate',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({prompt,stepKey:step.key})});
+ const j=await res.json();
+ if(vals['[NICHE]'])STATE.niche=vals['[NICHE]'];
+ STATE.outputs[step.key]={text:j.text,demo:j.demo,cost:j.cost||0,maxPlan:!!j.maxPlan,equiv:j.equiv||null,at:new Date().toISOString()};
+ STATE.costs[step.key]=j.cost||0;
+ if(j.cost){sessionCost+=j.cost;updateCostChip();}
+ persist();
+ return j;
+}
+
+// One-click auto-pilot: chains all 7 steps, deriving cross-step inputs (niche → title → script).
+async function autoBuildAll(){
+ if(autoMsg)return; // already running
+ let niche=STATE.niche;
+ if(!niche){ niche=(window.prompt('What is your channel about? (your niche)','')||'').trim(); if(!niche){ toast('Need a niche to auto-build'); return; } STATE.niche=niche; }
+ if(!STATE.name||STATE.name==='Untitled channel')STATE.name=niche.slice(0,42);
+ let autoTitle='', script='';
+ for(let i=0;i<PROMPTS.length;i++){
+ const s=PROMPTS[i]; cur=i;
+ setAuto('Generating step '+s.id+'/7 · '+s.title+'…'); renderStepper();
+ const vals={};
+ (s.inputs||[]).forEach(inp=>{
+ const t=inp.token;
+ if(t==='[NICHE]')vals[t]=niche;
+ else if(t==='[VIDEO TITLE]'||t==='[TITLE]')vals[t]=autoTitle||('The Complete '+niche+' Guide');
+ else if(t==='[TONE]')vals[t]=inp.default||'conversational';
+ else if(t==='[X]')vals[t]=inp.default||'0';
+ else if(t==='[SCRIPT]')vals[t]=(script||'').slice(0,6000)||('A video about '+niche);
+ else vals[t]=inp.default||'';
+ });
+ try{
+ const j=await generateInto(s,vals);
+ if(s.key==='roadmap'){ const ts=parseTitles(j.text); if(ts.length)autoTitle=ts[0]; }
+ if(s.key==='script'){ script=j.text; }
+ }catch(e){ toast('Step '+s.id+' failed — continuing'); }
+ renderStepper();
+ }
+ setAuto('');
+ cur=6; renderStep(); renderStepper(); renderBar();
+ toast('Auto-build complete — 7/7 · download your plan');
}
function renderStepper(){
@@ -476,6 +526,7 @@ function show(which){
updateCostChip();
$('#startBtn').onclick=startNew;
$('#demoBtn').onclick=startNew;
+ $('#autoHeroBtn').onclick=()=>{ startNew(); autoBuildAll(); };
$('#homeBtn').onclick=()=>show('home');
show('home');
})();
← edefa92 studio-zero: export — download full channel plan as standalo
·
back to Studio Zero
·
chore: guard clipboard copy (toast honesty), v0.2.0 (session 987c6f9 →