simbiot-harness/video/carousels/studio-orchestration/index.html
Simbiot Harness 95b77f2839 карусели: генератор make.py (spec.json → hyperframes → PNG) + 4 карусели и 9 сгенерированных фото Alex
- make.py: 8 типов слайдов (cover/quote/phototop/photoside/stat/list/formula/final),
  палитры carbon и bone в стиле Shkor Labs;
- studio-orchestration, production-lessons — настоящие фото (ч/б);
  principle-zero, govern-agents — фото, сгенерированные Kling (Nano Banana Pro) по референсам;
- тезисы — из 42_Harness_Deck, Shkor_Labs_Deck, Simbiot Whitepaper, COOP_CONTEXT.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 11:03:19 +00:00

127 lines
16 KiB
HTML

<!doctype html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=1080, height=1350" />
<title>The value of orchestration</title><script src="./gsap.min.js"></script>
<style>
@font-face { font-family: "Fraunces"; font-weight: 400; src: url("fonts/fraunces-400-latin.woff2") format("woff2"); }
@font-face { font-family: "Fraunces"; font-weight: 700; src: url("fonts/fraunces-700-latin.woff2") format("woff2"); }
@font-face { font-family: "DM Sans"; font-weight: 400; src: url("fonts/dm-sans-400-latin.woff2") format("woff2"); }
@font-face { font-family: "DM Sans"; font-weight: 700; src: url("fonts/dm-sans-700-latin.woff2") format("woff2"); }
@font-face { font-family: "JetBrains Mono"; font-weight: 400; src: url("fonts/jetbrains-mono-400-latin.woff2") format("woff2"); }
@font-face { font-family: "JetBrains Mono"; font-weight: 700; src: url("fonts/jetbrains-mono-700-latin.woff2") format("woff2"); }
* { margin:0; padding:0; box-sizing:border-box; }
html, body { width:1080px; height:1350px; overflow:hidden; background:var(--bg); }
body { color:var(--ink); font-family:"DM Sans", sans-serif; }
#root { position:relative; width:100%; height:100%; overflow:hidden; }
.clip { position:absolute; inset:0; }
.mono { font-family:"JetBrains Mono", monospace; }
em { font-style:normal; }
#bg { background:radial-gradient(900px 1100px at 70% 20%, var(--bg2) 0%, var(--bg) 70%); }
#bg-grid { position:absolute; inset:0; background-image:linear-gradient(var(--line) 1px, transparent 1px), linear-gradient(90deg, var(--line) 1px, transparent 1px); background-size:90px 90px; opacity:0.35; }
.slide { overflow:hidden; }
.top { position:absolute; left:64px; right:64px; top:56px; display:flex; justify-content:space-between; align-items:center; z-index:5; }
.mark { width:56px; height:56px; display:block; }
.count { font-size:22px; letter-spacing:0.18em; color:var(--dim); background:rgba(var(--fade),0.75); padding:10px 16px; border-radius:20px; }
.count b { color:var(--ink); }
.foot { position:absolute; left:64px; right:64px; bottom:54px; display:flex; justify-content:space-between; align-items:center; font-size:22px; letter-spacing:0.14em; color:var(--dim); text-transform:uppercase; z-index:5; }
.swipe { display:flex; align-items:center; gap:14px; color:var(--ink); font-weight:700; }
.kick { font-size:24px; letter-spacing:0.26em; color:var(--dim); text-transform:uppercase; margin-bottom:26px; }
.kick b { color:var(--ink); }
.body { position:absolute; left:64px; right:64px; z-index:3; }
.q { font-family:"Fraunces", serif; font-weight:700; letter-spacing:-0.02em; line-height:1.05; }
.sub { font-size:34px; line-height:1.4; color:var(--dim); margin-top:34px; }
.photo { position:absolute; overflow:hidden; }
.photo img { display:block; width:100%; height:100%; object-fit:cover; }
.fadeb { position:absolute; left:0; right:0; }
/* cover */
.cover .photo { inset:0; }
.cover .fadeb { inset:0; background:linear-gradient(180deg, rgba(var(--fade),0) 0%, rgba(var(--fade),0.1) 30%, rgba(var(--fade),0.9) 52%, rgb(var(--fade)) 66%); }
.cover .body { bottom:150px; }
.cover .q { font-size:100px; }
.byline { margin-top:30px; font-size:30px; } .byline span { color:var(--dim); }
/* quote */
.quote .body { top:210px; } .quote .q { font-size:94px; }
.vis { position:absolute; left:64px; right:64px; bottom:140px; height:420px; }
/* phototop */
.phototop .photo { left:0; top:0; width:1080px; height:640px; }
.phototop .fadeb { top:380px; height:262px; background:linear-gradient(180deg, rgba(var(--fade),0), rgb(var(--fade))); }
.phototop .body { top:650px; } .phototop .q { font-size:76px; }
/* photoside */
.photoside .photo { right:0; top:0; width:520px; height:1350px; }
.photoside .fadeb { right:0; top:0; width:520px; height:1350px; background:linear-gradient(90deg, rgb(var(--fade)) 0%, rgba(var(--fade),0.25) 45%, rgba(var(--fade),0) 100%); left:auto; }
.photoside .body { top:250px; right:480px; } .photoside .q { font-size:80px; }
.dots { display:flex; gap:8px; margin-top:40px; }
.dots i { display:block; width:46px; height:46px; border-radius:50%; }
.dots .h { background:var(--ink); } .dots .a { border:4px solid var(--acc); }
/* stat */
.stat .body { top:330px; }
.big { font-family:"Fraunces", serif; font-weight:700; font-size:300px; line-height:0.95; letter-spacing:-0.04em; white-space:nowrap; }
.big-l { font-size:44px; font-weight:700; margin-top:24px; line-height:1.25; }
/* list */
.list .body { top:210px; } .list .q { font-size:76px; }
.items { margin-top:50px; display:flex; flex-direction:column; gap:22px; }
.item { display:flex; gap:28px; align-items:baseline; padding:26px 30px; border:2px solid var(--line); border-radius:22px; background:rgba(var(--fade),0.5); }
.item b { font-family:"JetBrains Mono", monospace; font-size:30px; color:var(--dim); flex:0 0 52px; }
.item span { font-size:38px; line-height:1.3; }
/* formula */
.formula .body { top:300px; }
.parts { display:flex; flex-direction:column; gap:6px; }
.part { font-family:"Fraunces", serif; font-weight:700; font-size:120px; line-height:1.02; letter-spacing:-0.02em; }
.op { font-family:"JetBrains Mono", monospace; font-size:60px; color:var(--dim); margin-left:6px; }
/* final */
.final .photo { left:64px; top:170px; width:300px; height:300px; border-radius:50%; border:6px solid var(--acc); }
.final .body { top:530px; } .final .q { font-size:74px; }
.cta { margin-top:48px; display:flex; align-items:center; gap:26px; }
.btn { padding:22px 40px; border-radius:40px; background:var(--acc); color:var(--accink); font-size:34px; font-weight:700; }
.handle { font-size:32px; }
.logo { position:absolute; left:64px; bottom:110px; width:380px; }
:root { --bg:#ece6da;--bg2:#e2dbcd;--ink:#0b0b0c;--dim:#55504a;--acc:#0b0b0c;--accink:#c6ff4d;--line:rgba(11,11,12,0.14);--fade:236,230,218 }
em { background:#c6ff4d; color:#0b0b0c; padding:0 0.12em; box-decoration-break:clone; -webkit-box-decoration-break:clone; }
</style></head><body>
<div id="root" data-composition-id="main" data-start="0" data-duration="28.0" data-width="1080" data-height="1350">
<div id="bg" class="clip" data-start="0" data-duration="28.0" data-track-index="0"><div id="bg-grid"></div></div>
<section id="s1" class="clip slide cover" data-start="0.00" data-duration="3.5" data-track-index="1"><div class="photo" id="s1-p"><img src="img/portrait.jpg" alt="" style="object-position:50% 18%"/></div><div class="fadeb"></div><div class="top"><img class=mark src=img/shkor-labs-icon-lime.svg alt=><div class="count mono"><b>01</b> / 08</div></div><div class="body"><div class="kick mono" id="s1-k">Why I build an <b>AI venture studio</b></div><div class="q" id="s1-q" style="font-size:84px">The cost of building <em>collapsed</em>. The value of orchestration didn't.</div><div class="byline" id="s1-b">Alex Shkor <span>· founder, Shkor Labs &amp; Cooperative 42</span></div></div><div class="foot mono"><span>cil.by</span><span class="swipe">swipe →</span></div></section><section id="s2" class="clip slide quote" data-start="3.50" data-duration="3.5" data-track-index="1"><div class="top"><img class=mark src=img/shkor-labs-icon-lime.svg alt=><div class="count mono"><b>02</b> / 08</div></div><div class="body"><div class="kick mono" id="s2-k">01 · The gap</div><div class="q" id="s2-q">AI agents made building cheap. Orchestrating them is still <em>hard</em>.</div><div class="sub" id="s2-s">A solo founder can't run a fleet, keep quality and sell at the same time.</div></div><svg class="vis" viewBox="0 0 952 420"><line x1="0" y1="400" x2="952" y2="400" stroke="var(--line)" stroke-width="2"/><path class="draw" d="M0 30 C 160 40, 240 130, 360 200 S 600 340, 952 386" fill="none" stroke="var(--acc)" stroke-width="6" stroke-linecap="round"/></svg></section><section id="s3" class="clip slide photoside" data-start="7.00" data-duration="3.5" data-track-index="1"><div class="photo" id="s3-p"><img src="img/studio.jpg" alt="" style="object-position:40% 20%"/></div><div class="fadeb"></div><div class="top"><img class=mark src=img/shkor-labs-icon-lime.svg alt=><div class="count mono"><b>03</b> / 08</div></div><div class="body"><div class="kick mono" id="s3-k">02 · The answer</div><div class="q" id="s3-q">A studio where the org chart is <em>half human, half agents</em>.</div><div class="dots" id="s3-d"><i class="h"></i><i class="h"></i><i class="h"></i><i class="a"></i><i class="a"></i><i class="a"></i></div><div class="sub" id="s3-s">Founders bring the vision. Agents bring the throughput.</div></div></section><section id="s4" class="clip slide list" data-start="10.50" data-duration="3.5" data-track-index="1"><div class="top"><img class=mark src=img/shkor-labs-icon-lime.svg alt=><div class="count mono"><b>04</b> / 08</div></div><div class="body"><div class="kick mono" id="s4-k">03 · The flywheel</div><div class="q" id="s4-q">Their revenue is <em>our revenue</em>.</div><div class="items"><div class="item" id="s4-i0"><b>01</b><span>Founders join the studio</span></div><div class="item" id="s4-i1"><b>02</b><span>Agents + methodology ship the product</span></div><div class="item" id="s4-i2"><b>03</b><span>Startups sell through studio Stripe and creators</span></div><div class="item" id="s4-i3"><b>04</b><span>Real revenue funds the next cohort</span></div></div></div></section><section id="s5" class="clip slide stat" data-start="14.00" data-duration="3.5" data-track-index="1"><div class="top"><img class=mark src=img/shkor-labs-icon-lime.svg alt=><div class="count mono"><b>05</b> / 08</div></div><div class="body"><div class="kick mono" id="s5-k">04 · Live, not slides</div><div class="big" id="s5-v" style="font-size:300px">5</div><div class="big-l" id="s5-l">products in production on <em>one platform</em></div><div class="sub" id="s5-s">Simbiot · DEIP Creators Exchange · ReelsUp · Monetix · AI Corp</div></div></section><section id="s6" class="clip slide phototop" data-start="17.50" data-duration="3.5" data-track-index="1"><div class="photo" id="s6-p"><img src="img/river.jpg" alt="" style="object-position:50% 30%"/></div><div class="fadeb"></div><div class="top"><img class=mark src=img/shkor-labs-icon-lime.svg alt=><div class="count mono"><b>06</b> / 08</div></div><div class="body"><div class="kick mono" id="s6-k">05 · Who gets in</div><div class="q" id="s6-q">Entry is <em>gated</em>, not sold.</div><div class="sub" id="s6-s">Application → board review → 25-minute interview → only then a payment link. We choose founders the way investors choose deals.</div></div></section><section id="s7" class="clip slide quote" data-start="21.00" data-duration="3.5" data-track-index="1"><div class="top"><img class=mark src=img/shkor-labs-icon-lime.svg alt=><div class="count mono"><b>07</b> / 08</div></div><div class="body"><div class="kick mono" id="s7-k">06 · Alignment</div><div class="q" id="s7-q">We make money only when our founders <em>make money</em>.</div><div class="sub" id="s7-s">Revenue share is withheld inside the payment split. No invoices, no chasing, no courts.</div></div><svg class="vis" viewBox="0 0 952 420"><line x1="0" y1="400" x2="952" y2="400" stroke="var(--line)" stroke-width="2"/><path class="draw" d="M0 380 C 220 370, 360 330, 520 250 S 800 60, 952 30" fill="none" stroke="var(--acc)" stroke-width="6" stroke-linecap="round"/></svg></section><section id="s8" class="clip slide final" data-start="24.50" data-duration="3.5" data-track-index="1"><div class="photo" id="s8-p"><img src="img/smile.jpg" alt="" style="object-position:50% 25%"/></div><div class="top" style="justify-content:flex-end"><div class="count mono"><b>08</b> / 08</div></div><div class="body"><div class="q" id="s8-q">We show systems, not projections. <em>Join the studio.</em></div><div class="cta" id="s8-c"><div class="btn">Apply at cil.by</div><div class="handle mono">@alexshkor</div></div></div><img class="logo" id="s8-logo" src="img/shkor-labs-logo-light.svg" alt=""/></section>
</div>
<script>
const tl = gsap.timeline({ paused: true });
tl.fromTo("#bg-grid", { y: 0 }, { y: 90, duration: 28.0, ease: "none" }, 0);
tl.fromTo("#s1-p", { scale: 1.12 }, { scale: 1, duration: 3.4, ease: "power2.out" }, 0.00);
tl.fromTo("#s1-q", { opacity: 0, y: 36 }, { opacity: 1, x: 0, y: 0, scale: 1, duration: 0.6, ease: "power3.out" }, 0.40);
tl.fromTo("#s1-b", { opacity: 0, y: 16 }, { opacity: 1, x: 0, y: 0, scale: 1, duration: 0.5, ease: "power3.out" }, 1.00);
tl.fromTo("#s1-k", { opacity: 0 }, { opacity: 1, duration: 0.4 }, 0.10);
tl.fromTo("#s2-q", { opacity: 0, y: 36 }, { opacity: 1, x: 0, y: 0, scale: 1, duration: 0.6, ease: "power3.out" }, 3.70);
tl.fromTo("#s2-s", { opacity: 0, y: 16 }, { opacity: 1, x: 0, y: 0, scale: 1, duration: 0.5, ease: "power3.out" }, 4.40);
document.querySelectorAll("#s2 .draw").forEach(p => { const L = p.getTotalLength(); p.style.strokeDasharray = L; p.style.strokeDashoffset = L; });
tl.to("#s2 .draw", { strokeDashoffset: 0, duration: 1.4, ease: "power2.inOut" }, 4.10);
tl.fromTo("#s2-k", { opacity: 0 }, { opacity: 1, duration: 0.4 }, 3.60);
tl.fromTo("#s3-p", { opacity: 0, x: 80 }, { opacity: 1, x: 0, y: 0, scale: 1, duration: 0.8, ease: "power3.out" }, 7.00);
tl.fromTo("#s3-q", { opacity: 0, y: 36 }, { opacity: 1, x: 0, y: 0, scale: 1, duration: 0.6, ease: "power3.out" }, 7.30);
tl.fromTo("#s3-s", { opacity: 0, y: 16 }, { opacity: 1, x: 0, y: 0, scale: 1, duration: 0.5, ease: "power3.out" }, 8.00);
tl.fromTo("#s3-d i", { opacity: 0, scale: 0.4 }, { opacity: 1, scale: 1, duration: 0.3, stagger: 0.1, ease: "back.out(2)" }, 7.80);
tl.fromTo("#s3-k", { opacity: 0 }, { opacity: 1, duration: 0.4 }, 7.10);
tl.fromTo("#s4-q", { opacity: 0, y: 36 }, { opacity: 1, x: 0, y: 0, scale: 1, duration: 0.6, ease: "power3.out" }, 10.70);
tl.fromTo("#s4-i0", { opacity: 0, x: -40 }, { opacity: 1, x: 0, y: 0, scale: 1, duration: 0.45, ease: "power3.out" }, 11.20);
tl.fromTo("#s4-i1", { opacity: 0, x: -40 }, { opacity: 1, x: 0, y: 0, scale: 1, duration: 0.45, ease: "power3.out" }, 11.45);
tl.fromTo("#s4-i2", { opacity: 0, x: -40 }, { opacity: 1, x: 0, y: 0, scale: 1, duration: 0.45, ease: "power3.out" }, 11.70);
tl.fromTo("#s4-i3", { opacity: 0, x: -40 }, { opacity: 1, x: 0, y: 0, scale: 1, duration: 0.45, ease: "power3.out" }, 11.95);
tl.fromTo("#s4-k", { opacity: 0 }, { opacity: 1, duration: 0.4 }, 10.60);
tl.fromTo("#s5-v", { opacity: 0, scale: 0.7 }, { opacity: 1, x: 0, y: 0, scale: 1, duration: 0.7, ease: "power3.out" }, 14.20);
tl.fromTo("#s5-l", { opacity: 0, y: 36 }, { opacity: 1, x: 0, y: 0, scale: 1, duration: 0.6, ease: "power3.out" }, 14.70);
tl.fromTo("#s5-s", { opacity: 0, y: 16 }, { opacity: 1, x: 0, y: 0, scale: 1, duration: 0.5, ease: "power3.out" }, 15.10);
tl.fromTo("#s5-k", { opacity: 0 }, { opacity: 1, duration: 0.4 }, 14.10);
tl.fromTo("#s6-p", { scale: 1.1 }, { scale: 1, duration: 3.4, ease: "power2.out" }, 17.50);
tl.fromTo("#s6-q", { opacity: 0, y: 36 }, { opacity: 1, x: 0, y: 0, scale: 1, duration: 0.6, ease: "power3.out" }, 17.80);
tl.fromTo("#s6-s", { opacity: 0, y: 16 }, { opacity: 1, x: 0, y: 0, scale: 1, duration: 0.5, ease: "power3.out" }, 18.50);
tl.fromTo("#s6-k", { opacity: 0 }, { opacity: 1, duration: 0.4 }, 17.60);
tl.fromTo("#s7-q", { opacity: 0, y: 36 }, { opacity: 1, x: 0, y: 0, scale: 1, duration: 0.6, ease: "power3.out" }, 21.20);
tl.fromTo("#s7-s", { opacity: 0, y: 16 }, { opacity: 1, x: 0, y: 0, scale: 1, duration: 0.5, ease: "power3.out" }, 21.90);
document.querySelectorAll("#s7 .draw").forEach(p => { const L = p.getTotalLength(); p.style.strokeDasharray = L; p.style.strokeDashoffset = L; });
tl.to("#s7 .draw", { strokeDashoffset: 0, duration: 1.4, ease: "power2.inOut" }, 21.60);
tl.fromTo("#s7-k", { opacity: 0 }, { opacity: 1, duration: 0.4 }, 21.10);
tl.fromTo("#s8-p", { opacity: 0, scale: 0.8 }, { opacity: 1, x: 0, y: 0, scale: 1, duration: 0.6, ease: "power3.out" }, 24.60);
tl.fromTo("#s8-q", { opacity: 0, y: 36 }, { opacity: 1, x: 0, y: 0, scale: 1, duration: 0.6, ease: "power3.out" }, 24.90);
tl.fromTo("#s8-c", { opacity: 0, y: 16 }, { opacity: 1, x: 0, y: 0, scale: 1, duration: 0.5, ease: "power3.out" }, 25.60);
tl.fromTo("#s8-logo", { opacity: 0 }, { opacity: 1, x: 0, y: 0, scale: 1, duration: 0.6, ease: "power3.out" }, 26.00);
window.__timelines = window.__timelines || {};
window.__timelines["main"] = tl;
</script></body></html>