{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Biz Novel Studio","description":"AI 小说创作工作台官方文档:从一句灵感,走向一本完整小说","colors":{"primary":"#16A34A"},"logo":{"light":"https://mintcdn.com/ai-novel-writing-assistant/EPaSP-_4jKaBdGvV/images/logo.svg?fit=max\u0026auto=format\u0026n=EPaSP-_4jKaBdGvV\u0026q=85\u0026s=46d743075cfdc9207d8e72dddacb3816","dark":"https://mintcdn.com/ai-novel-writing-assistant/EPaSP-_4jKaBdGvV/images/logo.svg?fit=max\u0026auto=format\u0026n=EPaSP-_4jKaBdGvV\u0026q=85\u0026s=46d743075cfdc9207d8e72dddacb3816"},"favicon":"https://mintcdn.com/ai-novel-writing-assistant/7vj_6BsfIDYV0gE1/favicon.svg?fit=max\u0026auto=format\u0026n=7vj_6BsfIDYV0gE1\u0026q=85\u0026s=12098b66b0b262a33bf09e2d4558228f","navbar":{"links":[{"href":"https://github.com/ExplosiveCoderflome/AI-Novel-Writing-Assistant/releases","label":"下载"},{"href":"https://github.com/ExplosiveCoderflome/AI-Novel-Writing-Assistant/issues","label":"问题反馈"}],"primary":{"type":"github","href":"https://github.com/ExplosiveCoderflome/AI-Novel-Writing-Assistant"}},"footer":{"socials":{"github":"https://github.com/ExplosiveCoderflome/AI-Novel-Writing-Assistant"},"links":[{"header":"开始","items":[{"label":"安装与启动","href":"/installation"},{"label":"快速开始","href":"/quickstart"},{"label":"第一本小说实战","href":"/guides/first-novel-walkthrough"}]},{"header":"社区","items":[{"label":"GitHub","href":"https://github.com/ExplosiveCoderflome/AI-Novel-Writing-Assistant"},{"label":"问题反馈","href":"https://github.com/ExplosiveCoderflome/AI-Novel-Writing-Assistant/issues"},{"label":"参与贡献","href":"/developers/contributing"}]},{"header":"更新","items":[{"label":"更新日志","href":"/changelog"},{"label":"路线图","href":"/roadmap"},{"label":"下载最新版","href":"https://github.com/ExplosiveCoderflome/AI-Novel-Writing-Assistant/releases"}]}]},"seo":{"metatags":{"author":"ExplosiveCoderflome","keywords":"AI 小说,AI 写小说,AI 小说创作,长篇小说生成,短篇小说,小说写作助手,开源,Biz Novel Studio,AI-Novel-Writing-Assistant,AI Novel Writing Assistant,AI novel writing assistant","language":"zh-CN","og:locale":"zh_CN","theme-color":"#05080a","application-name":"Biz Novel Studio","og:site_name":"Biz Novel Studio","twitter:card":"summary_large_image"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity"],"display":"header"},"styling":{"latex":false},"navigation":{"languages":[{"language":"zh-Hans","default":true,"href":""},{"language":"en","href":"en"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"ai-novel-writing-assistant","hasAudioNarration":false,"actualSubdomain":"ai-novel-writing-assistant","customDomains":[],"gitSource":{"type":"github","owner":"explosivecoderflome","repo":"ai-novel-writing-assistant","deployBranch":"main","contentDirectory":"mintlify-docs","isPrivate":false,"mountPath":"","label":"","_id":"6af42d9d566700d04eef0454"},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af72c53e766df7985e6a138","clientVersion":"0.0.4128","searchFilterCounts":[{"language":"zh-Hans","tag":"开始使用","count":9},{"language":"en","tag":"Get started","count":9},{"language":"zh-Hans","tag":"长篇与短篇创作","count":8},{"language":"en","tag":"Long and short fiction","count":8},{"language":"zh-Hans","tag":"世界、角色与写法","count":7},{"language":"en","tag":"Worlds, characters and style","count":7},{"language":"zh-Hans","tag":"帮助","count":5},{"language":"en","tag":"Help","count":5},{"language":"zh-Hans","tag":"开发者","count":4},{"language":"zh-Hans","tag":"资料与辅助","count":4},{"language":"en","tag":"Developers","count":4},{"language":"en","tag":"Research and assistance","count":4},{"language":"zh-Hans","tag":"衍生创作","count":2},{"language":"zh-Hans","tag":"创作原理","count":2},{"language":"zh-Hans","tag":"实战手册","count":2},{"language":"en","tag":"Adaptations","count":2},{"language":"en","tag":"How it works","count":2},{"language":"en","tag":"Playbooks","count":2}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"html:has(.bnh[data-bn-theme]) #navbar,html:has(.bnh[data-bn-theme]) [data-layout-item=\"topbar\"]{box-shadow:none!important;border-color:transparent!important;transition:background-color .8s ease, color .8s ease, border-color .8s ease!important}html:has(.bnh[data-bn-theme]) #navbar div,html:has(.bnh[data-bn-theme]) #navbar nav,html:has(.bnh[data-bn-theme]) [data-layout-item=\"topbar\"] div{background-color:transparent!important;background-image:none!important;box-shadow:none!important;border-color:transparent!important}html:has(.bnh[data-bn-theme]) #navbar a,html:has(.bnh[data-bn-theme]) #navbar button,html:has(.bnh[data-bn-theme]) #navbar span,html:has(.bnh[data-bn-theme]) #navbar svg{transition:color .3s ease, background-color .3s ease, border-color .3s ease, text-shadow .3s ease, fill .3s ease!important}html:has(.bnh[data-bn-theme]) #navbar::after{content:\"\";position:absolute;left:0;right:0;bottom:0;height:1px;pointer-events:none;transition:background .8s ease}html:has(.bnh[data-bn-theme]),html:has(.bnh[data-bn-theme]) body{transition:background-color .8s ease}html:has(.bnh[data-bn-theme]) #banner{display:none!important}html:has(.bnh[data-bn-theme=\"ink\"]),html:has(.bnh[data-bn-theme=\"ink\"]) body{background-color:#05080a!important}html:has(.bnh[data-bn-theme=\"ink\"]) #navbar,html:has(.bnh[data-bn-theme=\"ink\"]) [data-layout-item=\"topbar\"]{background-color:#05080a!important;background-image:radial-gradient(1200px 420px at 20% 160%, rgba(22, 163, 74, .26), transparent 70%)!important;backdrop-filter:blur(12px) saturate(140%)!important;-webkit-backdrop-filter:blur(12px) saturate(140%)!important;color:#e5f6ea!important}html:has(.bnh[data-bn-theme=\"ink\"]) #navbar::after{background:linear-gradient(90deg, transparent, rgba(74, 222, 128, .22), transparent)}html:has(.bnh[data-bn-theme=\"ink\"]) #navbar a,html:has(.bnh[data-bn-theme=\"ink\"]) #navbar button,html:has(.bnh[data-bn-theme=\"ink\"]) #navbar span,html:has(.bnh[data-bn-theme=\"ink\"]) #navbar svg{color:rgba(229, 246, 234, .78)!important}html:has(.bnh[data-bn-theme=\"ink\"]) #navbar svg path[fill]:not([fill=\"none\"]){fill:currentColor!important}html:has(.bnh[data-bn-theme=\"ink\"]) #navbar a:hover,html:has(.bnh[data-bn-theme=\"ink\"]) #navbar button:hover,html:has(.bnh[data-bn-theme=\"ink\"]) #navbar a:hover span,html:has(.bnh[data-bn-theme=\"ink\"]) #navbar button:hover svg{color:#86efac!important;text-shadow:0 0 12px rgba(74, 222, 128, .7)}html:has(.bnh[data-bn-theme=\"ink\"]) #navbar a[href=\"/\"],html:has(.bnh[data-bn-theme=\"ink\"]) #navbar a[href=\"/\"] *{color:#e5f6ea!important;font-weight:700;letter-spacing:.04em}html:has(.bnh[data-bn-theme=\"ink\"]) #navbar [data-search-item=\"trigger\"],html:has(.bnh[data-bn-theme=\"ink\"]) #navbar #search-bar-entry,html:has(.bnh[data-bn-theme=\"ink\"]) #navbar #assistant-entry,html:has(.bnh[data-bn-theme=\"ink\"]) #navbar [data-layout-item=\"search-entry\"],html:has(.bnh[data-bn-theme=\"ink\"]) #navbar [data-layout-item=\"assistant-entry\"]{background-color:rgba(22, 163, 74, .08)!important;border:1px solid rgba(134, 239, 172, .28)!important;color:rgba(229, 246, 234, .7)!important;box-shadow:none!important}html:has(.bnh[data-bn-theme=\"ink\"]) #navbar [data-search-item=\"trigger\"]:hover,html:has(.bnh[data-bn-theme=\"ink\"]) #navbar #search-bar-entry:hover,html:has(.bnh[data-bn-theme=\"ink\"]) #navbar #assistant-entry:hover{border-color:rgba(134, 239, 172, .6)!important;box-shadow:0 0 18px -4px rgba(34, 197, 94, .7)!important}html:has(.bnh[data-bn-theme=\"paper\"]),html:has(.bnh[data-bn-theme=\"paper\"]) body{background-color:#f3ede1!important}html:has(.bnh[data-bn-theme=\"paper\"]) #navbar,html:has(.bnh[data-bn-theme=\"paper\"]) [data-layout-item=\"topbar\"]{background-color:#f3ede1!important;background-image:url(\"data:image/svg+xml;utf8,\u003csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'>\u003cfilter id='n'>\u003cfeTurbulence type='fractalNoise' baseFrequency='.75' numOctaves='3' stitchTiles='stitch'/>\u003cfeColorMatrix values='0 0 0 0 .35 0 0 0 0 .28 0 0 0 0 .18 0 0 0 .09 0'/>\u003c/filter>\u003crect width='100%' height='100%' filter='url(%23n)'/>\u003c/svg>\")!important;backdrop-filter:blur(10px)!important;-webkit-backdrop-filter:blur(10px)!important;color:#1c1a17!important;font-family:\"Noto Serif SC\", \"Songti SC\", \"STSong\", serif!important}html:has(.bnh[data-bn-theme=\"paper\"]) #navbar::after{background:linear-gradient(90deg, transparent, rgba(28, 26, 23, .14) 20%, rgba(28, 26, 23, .14) 80%, transparent)}html:has(.bnh[data-bn-theme=\"paper\"]) #navbar a,html:has(.bnh[data-bn-theme=\"paper\"]) #navbar button,html:has(.bnh[data-bn-theme=\"paper\"]) #navbar span,html:has(.bnh[data-bn-theme=\"paper\"]) #navbar svg{color:rgba(28, 26, 23, .78)!important;font-family:\"Noto Serif SC\", \"Songti SC\", \"STSong\", serif!important}html:has(.bnh[data-bn-theme=\"paper\"]) #navbar svg path[fill]:not([fill=\"none\"]){fill:currentColor!important}html:has(.bnh[data-bn-theme=\"paper\"]) #navbar a:hover,html:has(.bnh[data-bn-theme=\"paper\"]) #navbar button:hover,html:has(.bnh[data-bn-theme=\"paper\"]) #navbar a:hover span,html:has(.bnh[data-bn-theme=\"paper\"]) #navbar button:hover svg{color:#b4382a!important}html:has(.bnh[data-bn-theme=\"paper\"]) #navbar a[href=\"/\"],html:has(.bnh[data-bn-theme=\"paper\"]) #navbar a[href=\"/\"] *{color:#1c1a17!important;font-weight:700;letter-spacing:.06em}html:has(.bnh[data-bn-theme=\"paper\"]) #navbar [data-search-item=\"trigger\"],html:has(.bnh[data-bn-theme=\"paper\"]) #navbar #search-bar-entry,html:has(.bnh[data-bn-theme=\"paper\"]) #navbar #assistant-entry,html:has(.bnh[data-bn-theme=\"paper\"]) #navbar [data-layout-item=\"search-entry\"],html:has(.bnh[data-bn-theme=\"paper\"]) #navbar [data-layout-item=\"assistant-entry\"]{background-color:#faf6ec!important;border:1px solid rgba(28, 26, 23, .3)!important;border-radius:4px!important;color:rgba(28, 26, 23, .65)!important;box-shadow:none!important}html:has(.bnh[data-bn-theme=\"paper\"]) #navbar [data-search-item=\"trigger\"]:hover,html:has(.bnh[data-bn-theme=\"paper\"]) #navbar #search-bar-entry:hover,html:has(.bnh[data-bn-theme=\"paper\"]) #navbar #assistant-entry:hover{border-color:#b4382a!important}"}],"page":{"pagePath":"en","slug":"/en","pageMetadata":{"title":"Biz Novel Studio","sidebarTitle":"Home","description":"Open-source AI novel writing workbench: from a single spark of inspiration to a complete novel","mode":"custom","keywords":["AI novel","AI novel writing","AI novel writing workbench","open source","long novel","short story","Biz Novel Studio","AI-Novel-Writing-Assistant"],"href":"/en/index"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Open-source AI novel writing workbench: from a single spark of inspiration to a complete novel\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];const BnHero=()=>{const _components={a:`a`,..._provideComponents()};const canvasRef=useRef(null);const full=`Toward a Complete Novel`;const[typed,setTyped]=useState(``);const[lines,setLines]=useState(0);useEffect(()=>{let i=0;const t=setInterval(()=>{i+=1;setTyped(full.slice(0,i));if(i>=full.length)clearInterval(t)},160);return()=>clearInterval(t)},[]);useEffect(()=>{const t=setInterval(()=>setLines(n=>n>=9?0:n+1),650);return()=>clearInterval(t)},[]);useEffect(()=>{const canvas=canvasRef.current;if(!canvas)return;const ctx=canvas.getContext(`2d`);let w=0,h=0,raf=0;const dpr=Math.min(window.devicePixelRatio||1,2);const resize=()=>{w=canvas.clientWidth;h=canvas.clientHeight;canvas.width=w*dpr;canvas.height=h*dpr;ctx.setTransform(dpr,0,0,dpr,0,0)};resize();const ro=new ResizeObserver(resize);ro.observe(canvas);const stars=Array.from({length:90},()=>({x:Math.random(),y:Math.random(),r:Math.random()*1.4+.3,v:Math.random()*25e-5+5e-5,p:Math.random()*Math.PI*2}));const draw=time=>{ctx.clearRect(0,0,w,h);for(const s of stars){s.y-=s.v;if(s.y\u003c0){s.y=1;s.x=Math.random()}const a=.35+.45*Math.sin(time/900+s.p);ctx.beginPath();ctx.arc(s.x*w,s.y*h,s.r,0,Math.PI*2);ctx.fillStyle=`rgba(134,239,172,${Math.max(a,.08)})`;ctx.fill()}raf=requestAnimationFrame(draw)};raf=requestAnimationFrame(draw);return()=>{cancelAnimationFrame(raf);ro.disconnect()}},[]);const widths=[92,78,88,64,95,82,70,90,58];return _jsxs(`div`,{className:`not-prose bn-hero`,children:[_jsx(`style`,{children:`\n .bn-hero{position:relative;overflow:hidden;background:radial-gradient(1200px 600px at 20% -10%,rgba(22,163,74,.28),transparent 60%),radial-gradient(900px 500px at 100% 100%,rgba(16,185,129,.16),transparent 60%),#05080a;color:#e7f5ec;padding:110px 24px 90px}\n .bn-hero canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}\n .bn-wrap{position:relative;max-width:1120px;margin:0 auto;display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:56px;align-items:center}\n .bn-tag{display:inline-flex;gap:8px;align-items:center;font-size:13px;padding:6px 14px;border-radius:999px;border:1px solid rgba(134,239,172,.3);background:rgba(22,163,74,.1);color:#86efac}\n .bn-dot{width:7px;height:7px;border-radius:50%;background:#22c55e;box-shadow:0 0 10px #22c55e;animation:bnPulse 1.8s infinite}\n .bn-h1{font-size:clamp(38px,6vw,64px);line-height:1.12;font-weight:800;letter-spacing:-.02em;margin:22px 0 0}\n .bn-grad{background:linear-gradient(90deg,#4ade80,#a7f3d0,#22c55e);-webkit-background-clip:text;background-clip:text;color:transparent}\n .bn-caret{display:inline-block;width:3px;height:.9em;background:#4ade80;margin-left:4px;vertical-align:-4px;animation:bnBlink 1s steps(1) infinite}\n .bn-sub{font-size:18px;line-height:1.75;color:rgba(231,245,236,.72);margin:24px 0 0;max-width:520px}\n .bn-btns{display:flex;flex-wrap:wrap;gap:14px;margin-top:36px}\n .bn-btn{display:inline-flex;align-items:center;gap:8px;padding:13px 24px;border-radius:12px;font-weight:600;font-size:15px;text-decoration:none;transition:all .25s}\n .bn-pri{background:#16A34A;color:#fff;box-shadow:0 10px 30px -8px rgba(22,163,74,.7)}\n .bn-pri:hover{background:#22c55e;transform:translateY(-2px)}\n .bn-sec{border:1px solid rgba(231,245,236,.2);color:#e7f5ec;background:rgba(255,255,255,.03)}\n .bn-sec:hover{border-color:#4ade80;color:#86efac;transform:translateY(-2px)}\n .bn-book{position:relative;justify-self:center;width:min(380px,100%);aspect-ratio:3/4;perspective:1400px}\n .bn-page{position:absolute;inset:0;border-radius:6px 16px 16px 6px;background:linear-gradient(135deg,rgba(255,255,255,.08),rgba(255,255,255,.02));border:1px solid rgba(134,239,172,.22);backdrop-filter:blur(6px);padding:38px 34px;box-shadow:0 40px 80px -30px rgba(0,0,0,.8),0 0 60px -20px rgba(34,197,94,.45);animation:bnFloat 6s ease-in-out infinite}\n .bn-back{transform:rotate(-6deg) translate(-18px,10px);opacity:.45;animation:none}\n .bn-ch{font-size:12px;letter-spacing:.3em;color:#86efac;opacity:.8}\n .bn-title{height:14px;width:55%;border-radius:4px;background:rgba(231,245,236,.55);margin:16px 0 26px}\n .bn-line{height:8px;border-radius:4px;background:rgba(231,245,236,.22);margin-bottom:15px;transform-origin:left;transition:transform .5s ease,opacity .5s}\n @keyframes bnBlink{50%{opacity:0}}\n @keyframes bnPulse{50%{opacity:.35}}\n @keyframes bnFloat{0%,100%{transform:translateY(0) rotate(1deg)}50%{transform:translateY(-12px) rotate(-1deg)}}\n `}),_jsx(`canvas`,{ref:canvasRef}),_jsxs(`div`,{className:`bn-wrap`,children:[_jsxs(`div`,{children:[_jsxs(`span`,{className:`bn-tag`,children:[_jsx(`span`,{className:`bn-dot`}),`v0.8.1 · Open Source · AGPL-3.0`]}),_jsxs(`h1`,{className:`bn-h1`,children:[`From a Spark of Inspiration,`,_jsx(`br`,{}),_jsx(`span`,{className:`bn-grad`,children:typed}),_jsx(`span`,{className:`bn-caret`})]}),_jsx(`p`,{className:`bn-sub`,children:`Biz Novel Studio is an open-source AI novel writing workbench. AI helps you plan worlds and characters, write chapter by chapter, review and save, giving long-form creation a path you can keep walking.`}),_jsxs(`div`,{className:`bn-btns`,children:[_jsx(_components.a,{className:`bn-btn bn-pri`,href:`/en/quickstart`,children:`Get Started →`}),_jsx(_components.a,{className:`bn-btn bn-sec`,href:`/en/installation`,children:`Download Desktop`}),_jsx(`a`,{className:`bn-btn bn-sec`,href:`https://github.com/ExplosiveCoderflome/AI-Novel-Writing-Assistant`,children:`GitHub`})]}),_jsx(`a`,{href:`https://github.com/ExplosiveCoderflome/AI-Novel-Writing-Assistant/stargazers`,style:{display:`inline-block`,marginTop:22},\"aria-label\":`GitHub Stars`,children:_jsx(`img`,{src:`https://img.shields.io/github/stars/ExplosiveCoderflome/AI-Novel-Writing-Assistant?style=for-the-badge\u0026logo=github\u0026label=Star\u0026labelColor=0b1210\u0026color=16A34A`,alt:`GitHub Stars`,style:{height:28,display:`block`}})})]}),_jsxs(`div`,{className:`bn-book`,\"aria-hidden\":`true`,children:[_jsx(`div`,{className:`bn-page bn-back`}),_jsxs(`div`,{className:`bn-page`,children:[_jsx(`div`,{className:`bn-ch`,children:`CHAPTER · 01`}),_jsx(`div`,{className:`bn-title`}),widths.map((wd,i)=>_jsx(`div`,{className:`bn-line`,style:{width:wd+`%`,transform:i\u003clines?`scaleX(1)`:`scaleX(0)`,opacity:i\u003clines?1:0,background:i===lines-1?`rgba(74,222,128,.7)`:undefined}},i))]})]})]})]})};const BnDirector=()=>{const STAGES=[`Direction Candidates`,`Project Creation`,`Story Macro`,`World Building`,`Character Generation`,`Volume Strategy`,`Beat Board`,`Chapter Detailing`,`Chapter Batch Ready`,`Draft Generation`,`Quality Review`,`Repair \u0026 Backfill`];const DETAILS=[`Generate optional book-level directions and title sets from inspiration.`,`Turn the confirmed direction into a novel project, writing candidate directions, titles, and run parameters.`,`Generate long-term conflict, progression loops, and mainline structure for the entire book.`,`Generate the world skeleton, rules, forces, and locations for this book.`,`Generate character candidates and lineup drafts.`,`Generate volume strategy, progression routes, and volume goals.`,`Break volume planning into executable chapter tasks.`,`Generate chapter briefs, scene cards, and goals.`,`Ready to start writing this batch of chapters.`,`Generate draft text according to chapter tasks.`,`Check whether the text meets task and style requirements.`,`Local editing, save text, and sync character and foreshadowing states.`];const[cur,setCur]=useState(0);const[paused,setPaused]=useState(false);useEffect(()=>{if(paused)return;const t=setInterval(()=>setCur(c=>(c+1)%STAGES.length),1800);return()=>clearInterval(t)},[paused]);const pct=(cur+1)/STAGES.length*100;return _jsxs(`div`,{className:`not-prose bn-dir`,onMouseEnter:()=>setPaused(true),onMouseLeave:()=>setPaused(false),children:[_jsx(`style`,{children:`\n .bn-dir{background:#05080a;color:#e7f5ec;padding:90px 24px;border-top:1px solid rgba(134,239,172,.08)}\n .bn-in{max-width:1120px;margin:0 auto}\n .bn-k{font-size:13px;letter-spacing:.3em;color:#4ade80}\n .bn-h2{font-size:clamp(28px,4vw,40px);font-weight:700;margin:12px 0 10px;letter-spacing:-.01em}\n .bn-p{color:rgba(231,245,236,.65);font-size:16px;line-height:1.7;max-width:640px}\n .bn-track{position:relative;height:2px;background:rgba(231,245,236,.1);margin:48px 0 0;border-radius:2px}\n .bn-fill{position:absolute;left:0;top:0;bottom:0;background:linear-gradient(90deg,#16A34A,#4ade80);box-shadow:0 0 14px #22c55e;transition:width .6s ease;border-radius:2px}\n .bn-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin-top:26px}\n .bn-st{text-align:left;padding:12px 14px;border-radius:12px;border:1px solid rgba(231,245,236,.08);background:rgba(255,255,255,.02);color:rgba(231,245,236,.5);font-size:14px;cursor:pointer;transition:all .3s;font-family:inherit}\n .bn-st:hover{border-color:rgba(74,222,128,.4);color:#e7f5ec}\n .bn-st.on{border-color:#22c55e;background:rgba(22,163,74,.14);color:#fff;box-shadow:0 0 24px -6px rgba(34,197,94,.6)}\n .bn-st.done{color:#86efac}\n .bn-n{display:block;font-size:11px;opacity:.6;margin-bottom:4px;font-variant-numeric:tabular-nums}\n .bn-detail{margin-top:26px;padding:22px 26px;border-radius:16px;border:1px solid rgba(134,239,172,.2);background:linear-gradient(135deg,rgba(22,163,74,.12),rgba(255,255,255,.02));min-height:84px}\n .bn-detail b{color:#4ade80;font-size:18px}\n .bn-detail p{margin:8px 0 0;color:rgba(231,245,236,.75);font-size:15px}\n `}),_jsxs(`div`,{className:`bn-in`,children:[_jsx(`div`,{className:`bn-k`,children:`AUTO DIRECTOR`}),_jsx(`div`,{className:`bn-h2`,children:`Auto Director keeps a book moving forward`}),_jsx(`div`,{className:`bn-p`,children:`From direction candidates to repair and backfill, twelve stages form a complete long-form production line. You can let it run fully automatically, or pause at key stages for your confirmation.`}),_jsx(`div`,{className:`bn-track`,children:_jsx(`div`,{className:`bn-fill`,style:{width:pct+`%`}})}),_jsx(`div`,{className:`bn-grid`,children:STAGES.map((s,i)=>_jsxs(`button`,{type:`button`,className:`bn-st`+(i===cur?` on`:i\u003ccur?` done`:``),onClick:()=>{setCur(i);setPaused(true)},children:[_jsx(`span`,{className:`bn-n`,children:String(i+1).padStart(2,`0`)}),s]},s))}),_jsxs(`div`,{className:`bn-detail`,\"aria-live\":`polite`,children:[_jsx(`b`,{children:STAGES[cur]}),_jsx(`p`,{children:DETAILS[cur]})]})]})]})};const BnFeatures=()=>{const _components={a:`a`,..._provideComponents()};const ITEMS=[{t:`Turn an Idea into a Book`,d:`Auto Director organizes genre, selling points, character goals, and candidate directions; you can also start from trending genres or a completed book breakdown.`,h:`/en/features/novels`},{t:`Write a Complete Short Story`,d:`From idea and direction selection into 3,000 to 30,000 word short-story production, continuous reading, editing, and exporting.`,h:`/en/features/short-story`},{t:`Keep Writing Subsequent Chapters`,d:`Advance around the authorized scope: near-term planning, chapter tasks, scenes, text, checking, and saving.`,h:`/en/features/auto-director`},{t:`Maintain Worlds and Characters`,d:`Save this book's world, characters, relationships, and chapter states; view world maps and character relationship diagrams.`,h:`/en/features/world-library`},{t:`Break Down Books to Learn from References`,d:`Break down structure, characters, and writing style, trace back to original evidence; results can be used for the Knowledge Base and style assets.`,h:`/en/features/book-analysis`},{t:`Choose Models for Different Tasks`,d:`Configure providers, connection tests, and model routing; select models separately for planning, text, review, and book breakdown.`,h:`/en/model-configuration`}];const onMove=e=>{const el=e.currentTarget;const r=el.getBoundingClientRect();el.style.setProperty(`--mx`,e.clientX-r.left+`px`);el.style.setProperty(`--my`,e.clientY-r.top+`px`)};return _jsxs(`div`,{className:`not-prose bn-ft`,children:[_jsx(`style`,{children:`\n .bn-ft{background:#05080a;color:#e7f5ec;padding:90px 24px}\n .bn-fin{max-width:1120px;margin:0 auto}\n .bn-fk{font-size:13px;letter-spacing:.3em;color:#4ade80}\n .bn-fh{font-size:clamp(28px,4vw,40px);font-weight:700;margin:12px 0 40px}\n .bn-fg{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:18px}\n .bn-aur{position:relative;border-radius:18px;padding:1px;overflow:hidden;transition:transform .3s}\n .bn-aur::before{content:\"\";position:absolute;left:50%;top:50%;width:200%;aspect-ratio:1;transform:translate(-50%,-50%);background:conic-gradient(from 0deg,transparent 0deg,rgba(74,222,128,.15) 60deg,#22c55e 110deg,#a7f3d0 140deg,rgba(16,185,129,.4) 180deg,transparent 240deg,transparent 360deg);animation:bnSpin 6s linear infinite;opacity:.45;transition:opacity .3s}\n .bn-aur:hover{transform:translateY(-4px)}\n .bn-aur:hover::before{opacity:1;animation-duration:2.5s}\n @keyframes bnSpin{to{transform:translate(-50%,-50%) rotate(360deg)}}\n .bn-card{position:relative;display:block;height:100%;box-sizing:border-box;padding:28px;border-radius:17px;background:#070c0a;text-decoration:none;color:inherit;overflow:hidden}\n .bn-card::before{content:\"\";position:absolute;inset:0;background:radial-gradient(320px circle at var(--mx,-200px) var(--my,-200px),rgba(34,197,94,.18),transparent 60%);opacity:0;transition:opacity .3s;pointer-events:none}\n .bn-aur:hover .bn-card::before{opacity:1}\n .bn-num{font-size:13px;color:#4ade80;font-variant-numeric:tabular-nums}\n .bn-ct{position:relative;font-size:19px;font-weight:600;margin:14px 0 10px}\n .bn-cd{position:relative;font-size:14.5px;line-height:1.75;color:rgba(231,245,236,.62)}\n .bn-go{position:relative;display:inline-block;margin-top:16px;font-size:14px;color:#86efac;transition:transform .3s}\n .bn-aur:hover .bn-go{transform:translateX(6px)}\n `}),_jsxs(`div`,{className:`bn-fin`,children:[_jsx(`div`,{className:`bn-fk`,children:`FEATURES`}),_jsx(`div`,{className:`bn-fh`,children:`What you can do now`}),_jsx(`div`,{className:`bn-fg`,children:ITEMS.map((it,i)=>_jsx(`div`,{className:`bn-aur`,style:{animationDelay:i*-1+`s`},children:_jsxs(_components.a,{className:`bn-card`,href:it.h,onMouseMove:onMove,children:[_jsx(`div`,{className:`bn-num`,children:String(i+1).padStart(2,`0`)}),_jsx(`div`,{className:`bn-ct`,children:it.t}),_jsx(`div`,{className:`bn-cd`,children:it.d}),_jsx(`span`,{className:`bn-go`,children:`Learn more →`})]})},it.t))})]})]})};const BnCta=()=>{const _components={a:`a`,..._provideComponents()};return _jsxs(`div`,{className:`not-prose bn-cta`,children:[_jsx(`style`,{children:`\n .bn-cta{background:radial-gradient(700px 300px at 50% 100%,rgba(22,163,74,.3),transparent 70%),#05080a;color:#e7f5ec;padding:100px 24px 110px;text-align:center;border-top:1px solid rgba(134,239,172,.08)}\n .bn-ch2{font-size:clamp(28px,4.5vw,46px);font-weight:800;letter-spacing:-.02em;margin:0}\n .bn-cp{color:rgba(231,245,236,.65);font-size:16px;margin:18px auto 0;max-width:560px;line-height:1.7}\n .bn-os{display:flex;justify-content:center;flex-wrap:wrap;gap:10px;margin-top:28px}\n .bn-os span{font-size:13px;padding:6px 14px;border-radius:999px;border:1px solid rgba(231,245,236,.15);color:rgba(231,245,236,.75)}\n .bn-cb{display:inline-block;margin-top:36px;padding:15px 34px;border-radius:14px;background:#16A34A;color:#fff;font-weight:600;text-decoration:none;box-shadow:0 0 0 0 rgba(34,197,94,.6);animation:bnRing 2.4s infinite;transition:background .25s}\n .bn-cb:hover{background:#22c55e}\n @keyframes bnRing{0%{box-shadow:0 0 0 0 rgba(34,197,94,.55)}70%{box-shadow:0 0 0 18px rgba(34,197,94,0)}100%{box-shadow:0 0 0 0 rgba(34,197,94,0)}}\n `}),_jsx(`h2`,{className:`bn-ch2`,children:`Start writing your first book now`}),_jsx(`p`,{className:`bn-cp`,children:`The desktop version is great for starting to write right away; the source version is for development and self-hosting. Models use your own API configuration.`}),_jsxs(`div`,{className:`bn-os`,children:[_jsx(`span`,{children:`Windows`}),_jsx(`span`,{children:`macOS · Intel`}),_jsx(`span`,{children:`macOS · Apple Silicon`}),_jsx(`span`,{children:`Linux`})]}),_jsx(_components.a,{className:`bn-cb`,href:`/en/installation`,children:`Download \u0026 Install →`})]})};const BnTyping=()=>{const STEPS=[{k:`Idea`,t:`I have a story idea I want to write`},{k:`Direction`,t:`Generate optional book-level directions and title sets`},{k:`World`,t:`World skeleton, rules, forces, and locations`},{k:`Characters`,t:`Character candidates and lineup drafts`},{k:`Chapters`,t:`Chapter briefs, scene cards, and goals`},{k:`Draft`,t:`Generate draft text according to chapter tasks`}];const[step,setStep]=useState(0);const[chars,setChars]=useState(0);useEffect(()=>{const cur=STEPS[step].t;if(chars\u003ccur.length){const t=setTimeout(()=>setChars(c=>c+1),70);return()=>clearTimeout(t)}const t=setTimeout(()=>{if(step\u003cSTEPS.length-1){setStep(step+1);setChars(0)}else{setStep(0);setChars(0)}},step===STEPS.length-1?3200:700);return()=>clearTimeout(t)},[step,chars]);const writing=step===STEPS.length-1;const bars=[96,88,92,74,90,82,60];return _jsxs(`div`,{className:`not-prose bn-ty`,children:[_jsx(`style`,{children:`\n .bn-ty{background:#05080a;color:#e7f5ec;padding:70px 24px 90px}\n .bn-tin{max-width:1120px;margin:0 auto;display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:48px;align-items:center}\n .bn-tk{font-size:13px;letter-spacing:.3em;color:#4ade80}\n .bn-th{font-size:clamp(28px,4vw,40px);font-weight:700;margin:12px 0 14px}\n .bn-tp{color:rgba(231,245,236,.65);font-size:16px;line-height:1.75}\n .bn-win{border-radius:16px;border:1px solid rgba(134,239,172,.18);background:linear-gradient(180deg,#0b1210,#070b09);box-shadow:0 40px 90px -40px rgba(34,197,94,.5);overflow:hidden;min-width:0}\n .bn-bar{display:flex;gap:7px;align-items:center;padding:12px 16px;border-bottom:1px solid rgba(231,245,236,.06)}\n .bn-bar i{width:11px;height:11px;border-radius:50%;background:rgba(231,245,236,.15)}\n .bn-bar span{margin-left:10px;font-size:12px;color:rgba(231,245,236,.45)}\n .bn-body{padding:20px 22px;display:grid;gap:10px;min-height:330px;align-content:start}\n .bn-row{display:flex;gap:12px;align-items:baseline;font-size:14.5px;opacity:0;transform:translateY(6px);transition:all .4s}\n .bn-row.show{opacity:1;transform:none}\n .bn-lab{flex:0 0 74px;font-size:12px;color:#4ade80;border:1px solid rgba(74,222,128,.3);border-radius:6px;padding:2px 6px;text-align:center}\n .bn-txt{min-width:0;color:rgba(231,245,236,.85)}\n .bn-cur{display:inline-block;width:2px;height:1em;background:#4ade80;margin-left:2px;vertical-align:-2px;animation:bnBlink 1s steps(1) infinite}\n .bn-doc{margin-top:8px;padding:14px;border-radius:10px;background:rgba(22,163,74,.06);border:1px dashed rgba(74,222,128,.25)}\n .bn-dl{height:7px;border-radius:4px;background:rgba(231,245,236,.2);margin:9px 0;transform-origin:left;transition:transform .6s ease}\n `}),_jsxs(`div`,{className:`bn-tin`,children:[_jsxs(`div`,{children:[_jsx(`div`,{className:`bn-tk`,children:`FROM IDEA TO NOVEL`}),_jsx(`div`,{className:`bn-th`,children:`One spark of inspiration, unfolding all the way to text`}),_jsx(`div`,{className:`bn-tp`,children:`You only need to start with an idea. The workbench connects direction, world, characters, and chapters layer by layer, and finally writes text according to chapter tasks, leaving usable materials at every step.`})]}),_jsxs(`div`,{className:`bn-win`,\"aria-live\":`polite`,children:[_jsxs(`div`,{className:`bn-bar`,children:[_jsx(`i`,{}),_jsx(`i`,{}),_jsx(`i`,{}),_jsx(`span`,{children:`Biz Novel Studio · New Novel`})]}),_jsxs(`div`,{className:`bn-body`,children:[STEPS.map((s,i)=>_jsxs(`div`,{className:`bn-row`+(i\u003c=step?` show`:``),children:[_jsx(`span`,{className:`bn-lab`,children:s.k}),_jsxs(`span`,{className:`bn-txt`,children:[i\u003cstep?s.t:i===step?s.t.slice(0,chars):``,i===step\u0026\u0026_jsx(`span`,{className:`bn-cur`})]})]},s.k)),_jsx(`div`,{className:`bn-doc`,style:{opacity:writing?1:.25,transition:`opacity .5s`},children:bars.map((w,i)=>_jsx(`div`,{className:`bn-dl`,style:{width:w+`%`,transform:writing?`scaleX(1)`:`scaleX(0)`,transitionDelay:i*.35+`s`}},i))})]})]})]})]})};const BnIntro=()=>{const IDEAS=[`On the day everyone awakened their system, mine was 'System Customer Service': every system in the world had bugs and had to line up for after-sales support from me.`,`The cultivation world started competing for civil service exams. I became the only one in the entire sect to pass, relying on a real exam paper from five hundred years ago.`,`At the end of the world, everyone had a lifespan balance floating above their head. Only mine was negative: I was spending my future life.`,`I transmigrated into the villain's cannon-fodder ex-wife, only to discover that the bullet comments were visible: every reader in the book was showering me with gifts.`];const[IDEA]=useState(()=>IDEAS[Math.floor(Math.random()*IDEAS.length)]);const STAGES=[`Starting Idea`,`Director Initial Setup`,`World \u0026 Style`,`Model \u0026 Production Prep`,`Direction \u0026 Auto Prep`];const[ph,setPh]=useState(0);const[k,setK]=useState(0);const[s,setS]=useState(0);const[gone,setGone]=useState(true);useEffect(()=>{if(typeof window!==`undefined`\u0026\u0026window.matchMedia\u0026\u0026window.matchMedia(`(prefers-reduced-motion: reduce)`).matches)return;const KEY=`bn-intro-day`;const today=new Date().toDateString();try{if(window.localStorage.getItem(KEY)===today)return;window.localStorage.setItem(KEY,today)}catch(e){}setGone(false);const ts=[];const end=500+IDEA.length*45;for(let i=1;i\u003c=IDEA.length;i++)ts.push(setTimeout(()=>setK(i),500+i*45));ts.push(setTimeout(()=>setPh(1),end+250));ts.push(setTimeout(()=>setPh(2),end+850));for(let i=1;i\u003c=STAGES.length;i++)ts.push(setTimeout(()=>setS(i),end+950+i*360));ts.push(setTimeout(()=>setPh(3),end+3300));ts.push(setTimeout(()=>setGone(true),end+4900));return()=>ts.forEach(clearTimeout)},[]);if(gone)return null;const skip=()=>{setPh(3);setTimeout(()=>setGone(true),1500)};return _jsxs(`div`,{className:`not-prose bi-wrap bi-p`+ph,children:[_jsx(`style`,{children:`\n .bi-wrap{position:fixed;inset:0;z-index:9999;pointer-events:auto;isolation:isolate}\n .bi-p3{pointer-events:none}\n .bi-doors{position:absolute;inset:0;z-index:1;perspective:1800px;overflow:hidden}\n .bi-door{position:absolute;top:0;bottom:0;width:50%;background:#05080a;transition:transform 1.4s cubic-bezier(.65,0,.25,1),opacity .5s ease .9s;will-change:transform}\n .bi-l{left:0;transform-origin:left center;box-shadow:inset -40px 0 60px -40px rgba(74,222,128,.25)}\n .bi-r{right:0;transform-origin:right center;box-shadow:inset 40px 0 60px -40px rgba(74,222,128,.25)}\n .bi-p3 .bi-l{transform:translateX(-102%) rotateY(28deg);opacity:0}\n .bi-p3 .bi-r{transform:translateX(102%) rotateY(-28deg);opacity:0}\n .bi-spine{position:absolute;left:50%;top:0;bottom:0;width:1px;background:linear-gradient(transparent,#4ade80,transparent);opacity:0;transition:opacity .6s}\n .bi-p2 .bi-spine{opacity:.7}\n .bi-p3 .bi-spine{opacity:0}\n .bi-c{position:absolute;z-index:3;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;color:#e7f5ec;transition:opacity .4s,transform .6s}\n .bi-p3 .bi-c{opacity:0;transform:scale(.96)}\n .bi-eb{font-size:12px;letter-spacing:.35em;color:#4ade80;margin-bottom:14px;animation:biUp .5s both}\n .bi-h{font-size:clamp(24px,3.6vw,32px);font-weight:600;text-align:center;animation:biUp .5s .05s both}\n .bi-sub{margin-top:10px;font-size:14px;color:rgba(231,245,236,.55);text-align:center;animation:biUp .5s .1s both}\n .bi-card{margin-top:26px;width:min(640px,100%);border-radius:10px;background:rgba(255,255,255,.035);padding:16px;box-shadow:0 0 0 2px rgba(74,222,128,.28),0 30px 80px -30px rgba(34,197,94,.45);animation:biUp .55s .15s both}\n .bi-ta{min-height:96px;font-size:clamp(15px,1.8vw,18px);line-height:1.8;padding:2px 4px}\n .bi-ph{color:rgba(231,245,236,.3)}\n .bi-cur{display:inline-block;width:2px;height:1.1em;background:#4ade80;margin-left:2px;vertical-align:-3px;animation:biBlink .8s steps(1) infinite}\n .bi-hint{font-size:12px;color:rgba(231,245,236,.4);padding:4px 4px 12px}\n .bi-pref{border-top:1px solid rgba(231,245,236,.08);padding-top:12px}\n .bi-pl{font-size:12px;color:rgba(231,245,236,.45);margin-bottom:8px}\n .bi-chips{display:grid;grid-template-columns:1fr 1fr;gap:8px}\n .bi-chip{display:flex;justify-content:space-between;gap:8px;padding:8px 12px;border-radius:6px;font-size:13px;background:rgba(0,0,0,.25);box-shadow:0 0 0 1px rgba(231,245,236,.1);transition:all .4s;white-space:nowrap;overflow:hidden}\n .bi-chip em{font-style:normal;font-size:11px;color:#4ade80;opacity:0;transition:opacity .4s}\n .bi-p1 .bi-chip,.bi-p2 .bi-chip,.bi-p3 .bi-chip{box-shadow:0 0 0 1px rgba(74,222,128,.45)}\n .bi-p1 .bi-chip em,.bi-p2 .bi-chip em,.bi-p3 .bi-chip em{opacity:1}\n .bi-act{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding-top:14px}\n .bi-ghost{font-size:13px;color:rgba(231,245,236,.5)}\n .bi-outline{font-size:13px;padding:6px 12px;border-radius:6px;box-shadow:0 0 0 1px rgba(231,245,236,.15);margin-right:12px}\n .bi-go{font-size:13px;color:rgba(231,245,236,.55);padding:6px 10px;border-radius:6px;transition:all .25s}\n .bi-p2 .bi-go,.bi-p3 .bi-go{color:#fff;background:rgba(22,163,74,.25);box-shadow:0 0 0 1px #4ade80;transform:scale(.97)}\n .bi-btn{font-size:13px;padding:7px 14px;border-radius:6px;background:#16A34A;color:#fff;margin-left:6px}\n .bi-st{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:20px;width:min(640px,100%);min-height:34px}\n .bi-s{display:flex;align-items:center;gap:6px;font-size:12px;padding:6px 10px;border-radius:6px;color:rgba(231,245,236,.3);box-shadow:0 0 0 1px rgba(231,245,236,.08);transition:all .35s}\n .bi-s b{width:16px;height:16px;border-radius:50%;font-size:10px;display:inline-flex;align-items:center;justify-content:center;box-shadow:0 0 0 1.5px currentColor;font-weight:600}\n .bi-s.on{color:#86efac;box-shadow:0 0 0 1px rgba(74,222,128,.5);background:rgba(22,163,74,.12)}\n .bi-s.on b{background:#16A34A;color:#fff;box-shadow:none}\n .bi-skip{position:absolute;z-index:4;right:22px;bottom:22px;background:none;border:1px solid rgba(231,245,236,.2);color:rgba(231,245,236,.55);font-size:12px;padding:6px 14px;border-radius:999px;cursor:pointer}\n .bi-skip:hover{color:#fff;border-color:#4ade80}\n @keyframes biBlink{50%{opacity:0}}\n @keyframes biUp{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}\n @media (max-width:560px){.bi-chips{grid-template-columns:1fr}.bi-outline,.bi-ghost{display:none}}\n `}),_jsxs(`div`,{className:`bi-doors`,children:[_jsx(`div`,{className:`bi-door bi-l`}),_jsx(`div`,{className:`bi-door bi-r`})]}),_jsx(`div`,{className:`bi-spine`}),_jsxs(`div`,{className:`bi-c`,children:[_jsx(`div`,{className:`bi-eb`,children:`AI Auto Director Creation`}),_jsx(`div`,{className:`bi-h`,children:`Start your whole book with one sentence`}),_jsx(`div`,{className:`bi-sub`,children:`Write the story you want to see, and AI will first help you organize it into selectable book-level directions.`}),_jsxs(`div`,{className:`bi-card`,children:[_jsxs(`div`,{className:`bi-ta`,children:[k===0?_jsx(`span`,{className:`bi-ph`,children:`Tell us the story you want to write...`}):IDEA.slice(0,k),ph\u003c2\u0026\u0026_jsx(`span`,{className:`bi-cur`})]}),_jsx(`div`,{className:`bi-hint`,children:`Your input is saved locally and will remain after refreshing or reopening.`}),_jsxs(`div`,{className:`bi-pref`,children:[_jsx(`div`,{className:`bi-pl`,children:`Creative Preferences (Optional)`}),_jsxs(`div`,{className:`bi-chips`,children:[_jsxs(`div`,{className:`bi-chip`,children:[_jsx(`span`,{children:`Story Type: AI Auto Match`}),_jsx(`em`,{children:`AI Match`})]}),_jsxs(`div`,{className:`bi-chip`,children:[_jsx(`span`,{children:`Progression Mode: AI Auto Match`}),_jsx(`em`,{children:`AI Match`})]})]})]}),_jsxs(`div`,{className:`bi-act`,children:[_jsxs(`div`,{children:[_jsx(`span`,{className:`bi-outline`,children:`✦ Open Story Star Map`}),_jsx(`span`,{className:`bi-ghost`,children:`Give me some ideas directly`})]}),_jsxs(`div`,{children:[_jsx(`span`,{className:`bi-go`,children:ph>=2?`Generating...`:`Generate directions with default settings`}),_jsx(`span`,{className:`bi-btn`,children:`Continue refining settings →`})]})]})]}),_jsx(`div`,{className:`bi-st`,children:ph>=2\u0026\u0026STAGES.map((t,i)=>_jsxs(`div`,{className:`bi-s`+(i\u003cs?` on`:``),children:[_jsx(`b`,{children:i\u003cs?`✓`:i+1}),t]},t))})]}),ph\u003c3\u0026\u0026_jsx(`button`,{className:`bi-skip`,onClick:skip,children:`Skip`})]})};const BnChat=()=>{const SCRIPT=[{who:`me`,t:`I want to write a story about a down-and-out repairman in a wasteland city who fixes an ancient mech`},{who:`ai`,stage:0,t:`3 sets of book-level directions and titles generated from your inspiration. Pick one to continue?`},{who:`me`,t:`The second one, keep going`},{who:`ai`,stage:1,t:`World skeleton generated: rules, forces, locations, and conflict tension.`},{who:`ai`,stage:2,t:`Character candidates and lineup drafts generated.`},{who:`ai`,stage:3,t:`Batch 1 chapter briefs and scene cards are ready.`},{who:`ai`,stage:4,t:`Chapter 1 draft completed.`},{who:`ai`,stage:5,t:`Quality review complete. Character and foreshadowing states synced.`}];const TASKS=[`Direction Candidates`,`World Building`,`Character Generation`,`Chapter Detailing`,`Draft Generation`,`Quality Review`];const[n,setN]=useState(0);const[typing,setTyping]=useState(false);useEffect(()=>{if(n>=SCRIPT.length){const t=setTimeout(()=>setN(0),4200);return()=>clearTimeout(t)}if(SCRIPT[n].who===`ai`){setTyping(true);const t=setTimeout(()=>{setTyping(false);setN(n+1)},1300);return()=>clearTimeout(t)}const t=setTimeout(()=>setN(n+1),n===0?800:1100);return()=>clearTimeout(t)},[n]);const shown=SCRIPT.slice(0,n);const done=shown.reduce((m,s)=>s.stage!=null?Math.max(m,s.stage):m,-1);const lastAi=shown.filter(s=>s.who===`ai`).slice(-1)[0];const unread=shown.filter(s=>s.who===`ai`).length;return _jsxs(`div`,{className:`not-prose bn-chat`,children:[_jsx(`style`,{children:`\n .bn-chat{background:#05080a;color:#e7f5ec;padding:70px 24px 90px}\n .bc-in{max-width:1120px;margin:0 auto;display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:48px;align-items:center}\n .bc-k{font-size:13px;letter-spacing:.3em;color:#4ade80}\n .bc-h{font-size:clamp(28px,4vw,40px);font-weight:700;margin:12px 0 14px}\n .bc-p{color:rgba(231,245,236,.65);font-size:16px;line-height:1.75}\n .bc-note{margin-top:14px;font-size:13px;color:rgba(231,245,236,.4)}\n .bc-app{display:grid;grid-template-columns:190px minmax(0,1fr);height:440px;border-radius:18px;border:1px solid rgba(134,239,172,.18);background:linear-gradient(180deg,#0b1210,#070b09);box-shadow:0 40px 90px -40px rgba(34,197,94,.55);overflow:hidden;min-width:0}\n .bc-side{border-right:1px solid rgba(231,245,236,.06);padding:14px 10px;display:flex;flex-direction:column;gap:6px;min-width:0}\n .bc-conv{display:flex;gap:10px;align-items:center;padding:10px;border-radius:12px;background:rgba(22,163,74,.12);border:1px solid rgba(74,222,128,.25);margin-bottom:10px;min-width:0}\n .bc-av{flex:0 0 32px;height:32px;border-radius:50%;background:radial-gradient(circle at 30% 30%,#4ade80,#14532d);display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;color:#fff}\n .bc-cv{min-width:0;flex:1}\n .bc-cn{font-size:13px;font-weight:600;display:flex;justify-content:space-between;gap:6px}\n .bc-cl{font-size:11.5px;color:rgba(231,245,236,.5);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}\n .bc-badge{min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:#16A34A;color:#fff;font-size:11px;display:inline-flex;align-items:center;justify-content:center;transition:transform .3s}\n .bc-tl{font-size:11px;letter-spacing:.2em;color:rgba(231,245,236,.35);padding:4px 6px}\n .bc-task{display:flex;align-items:center;gap:8px;font-size:13px;padding:7px 8px;border-radius:8px;color:rgba(231,245,236,.4);transition:all .4s}\n .bc-task.ok{color:#86efac}\n .bc-task.run{color:#fff;background:rgba(255,255,255,.04)}\n .bc-ic{width:16px;height:16px;border-radius:50%;border:1.5px solid currentColor;display:inline-flex;align-items:center;justify-content:center;font-size:10px;flex:0 0 16px}\n .bc-task.ok .bc-ic{background:#16A34A;border-color:#16A34A;color:#fff}\n .bc-task.run .bc-ic{border-color:#4ade80;border-top-color:transparent;animation:bcSpin 1s linear infinite}\n .bc-main{display:flex;flex-direction:column;min-width:0}\n .bc-top{padding:12px 16px;border-bottom:1px solid rgba(231,245,236,.06);font-size:13px;display:flex;justify-content:space-between;gap:8px}\n .bc-top span{color:rgba(231,245,236,.45);font-size:12px}\n .bc-body{flex:1;overflow:hidden;display:flex;flex-direction:column;justify-content:flex-end;gap:10px;padding:16px}\n .bc-msg{max-width:82%;padding:10px 13px;border-radius:14px;font-size:13.5px;line-height:1.6;animation:bcIn .45s cubic-bezier(.2,.8,.2,1)}\n .bc-msg.me{align-self:flex-end;background:#16A34A;color:#fff;border-bottom-right-radius:4px}\n .bc-msg.ai{align-self:flex-start;background:rgba(255,255,255,.05);border:1px solid rgba(134,239,172,.15);border-bottom-left-radius:4px}\n .bc-who{display:block;font-size:11px;color:#4ade80;margin-bottom:3px}\n .bc-dots{align-self:flex-start;display:flex;gap:4px;padding:12px 14px;border-radius:14px;background:rgba(255,255,255,.05);animation:bcIn .3s}\n .bc-dots i{width:6px;height:6px;border-radius:50%;background:#86efac;animation:bcDot 1s infinite}\n .bc-dots i:nth-child(2){animation-delay:.15s}\n .bc-dots i:nth-child(3){animation-delay:.3s}\n .bc-input{margin:0 16px 14px;padding:10px 14px;border-radius:12px;border:1px solid rgba(231,245,236,.08);font-size:12.5px;color:rgba(231,245,236,.35)}\n @keyframes bcIn{from{opacity:0;transform:translateY(12px) scale(.96)}to{opacity:1;transform:none}}\n @keyframes bcDot{0%,100%{opacity:.25;transform:translateY(0)}50%{opacity:1;transform:translateY(-3px)}}\n @keyframes bcSpin{to{transform:rotate(360deg)}}\n @media (max-width:640px){.bc-app{grid-template-columns:minmax(0,1fr)}.bc-side{display:none}}\n `}),_jsxs(`div`,{className:`bc-in`,children:[_jsxs(`div`,{children:[_jsx(`div`,{className:`bc-k`,children:`AUTO DIRECTOR · LIVE`}),_jsx(`div`,{className:`bc-h`,children:`Watch a book get pushed forward, like a chat`}),_jsx(`div`,{className:`bc-p`,children:`Speak your inspiration, and Auto Director advances direction, world, characters, chapters, and text in turn, reporting progress after each step, with tasks updating live on the left. You can pause to confirm or edit at any time.`}),_jsx(`div`,{className:`bc-note`,children:`Demo animation; actual content depends on your inspiration and chosen model.`})]}),_jsxs(`div`,{className:`bc-app`,\"aria-hidden\":`true`,children:[_jsxs(`div`,{className:`bc-side`,children:[_jsxs(`div`,{className:`bc-conv`,children:[_jsx(`span`,{className:`bc-av`,children:`导`}),_jsxs(`div`,{className:`bc-cv`,children:[_jsxs(`div`,{className:`bc-cn`,children:[`Auto Director`,unread>0\u0026\u0026_jsx(`span`,{className:`bc-badge`,children:unread},unread)]}),_jsx(`div`,{className:`bc-cl`,children:typing?`Advancing...`:lastAi?lastAi.t:`Waiting for your inspiration`})]})]}),_jsx(`div`,{className:`bc-tl`,children:`Tasks`}),TASKS.map((t,i)=>_jsxs(`div`,{className:`bc-task`+(i\u003c=done?` ok`:typing\u0026\u0026i===done+1?` run`:``),children:[_jsx(`span`,{className:`bc-ic`,children:i\u003c=done?`✓`:``}),t]},t))]}),_jsxs(`div`,{className:`bc-main`,children:[_jsxs(`div`,{className:`bc-top`,children:[`New Novel `,_jsx(`span`,{children:done>=5?`Chapter 1 Saved`:typing?`Advancing`:`Online`})]}),_jsxs(`div`,{className:`bc-body`,children:[shown.map((m,i)=>_jsxs(`div`,{className:`bc-msg `+m.who,children:[m.who===`ai`\u0026\u0026_jsxs(`span`,{className:`bc-who`,children:[`Auto Director · `,TASKS[m.stage]]}),m.t]},i)),typing\u0026\u0026_jsxs(`div`,{className:`bc-dots`,children:[_jsx(`i`,{}),_jsx(`i`,{}),_jsx(`i`,{})]})]}),_jsx(`div`,{className:`bc-input`,children:`Tell us the story you want to write...`})]})]})]})]})};const BnStarMap=()=>{const NODES=[{id:`book`,x:300,y:210,r:26,l:`Book`,main:true},{id:`world`,x:150,y:120,r:18,l:`World`,main:true},{id:`char`,x:450,y:120,r:18,l:`Characters`,main:true},{id:`chap`,x:300,y:360,r:18,l:`Chapters`,main:true},{id:`rule`,x:50,y:60,r:9,l:`Rules`},{id:`force`,x:70,y:200,r:9,l:`Forces`},{id:`place`,x:170,y:30,r:9,l:`Locations`},{id:`tension`,x:40,y:290,r:9,l:`Conflict Tension`},{id:`rel`,x:550,y:60,r:9,l:`Relations`},{id:`trait`,x:430,y:30,r:9,l:`Personality \u0026 Abilities`},{id:`state`,x:560,y:220,r:9,l:`Chapter State`},{id:`task`,x:170,y:400,r:9,l:`Chapter Tasks`},{id:`scene`,x:430,y:400,r:9,l:`Scene Cards`},{id:`fore`,x:560,y:340,r:9,l:`Foreshadowing`}];const EDGES=[[`book`,`world`],[`book`,`char`],[`book`,`chap`],[`world`,`rule`],[`world`,`force`],[`world`,`place`],[`world`,`tension`],[`char`,`rel`],[`char`,`trait`],[`char`,`state`],[`chap`,`task`],[`chap`,`scene`],[`chap`,`fore`],[`force`,`rel`],[`state`,`chap`],[`fore`,`char`],[`tension`,`task`]];const[hover,setHover]=useState(null);const pos=Object.fromEntries(NODES.map(n=>[n.id,n]));const lit=(a,b)=>hover\u0026\u0026(a===hover||b===hover);const near=id=>!hover||id===hover||EDGES.some(([a,b])=>a===hover\u0026\u0026b===id||b===hover\u0026\u0026a===id);return _jsxs(`div`,{className:`not-prose bn-sm`,children:[_jsx(`style`,{children:`\n .bn-sm{background:#05080a;color:#e7f5ec;padding:90px 24px}\n .bn-smi{max-width:1120px;margin:0 auto;display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:40px;align-items:center}\n .bn-smk{font-size:13px;letter-spacing:.3em;color:#4ade80}\n .bn-smh{font-size:clamp(28px,4vw,40px);font-weight:700;margin:12px 0 14px}\n .bn-smp{color:rgba(231,245,236,.65);font-size:16px;line-height:1.75}\n .bn-svg{width:100%;height:auto;overflow:visible}\n .bn-rot{transform-origin:300px 210px;animation:bnOrbit 80s linear infinite}\n .bn-svg:hover .bn-rot{animation-play-state:paused}\n .bn-e{stroke:rgba(134,239,172,.18);stroke-width:1;transition:all .3s}\n .bn-e.on{stroke:#4ade80;stroke-width:1.8}\n .bn-pulse{stroke:#86efac;stroke-width:2;stroke-dasharray:6 120;animation:bnDash 3.2s linear infinite;fill:none;opacity:.8}\n .bn-nd{cursor:pointer;transition:opacity .3s}\n .bn-nd text{font-size:13px;fill:#e7f5ec;text-anchor:middle;pointer-events:none}\n .bn-nd.main text{font-size:15px;font-weight:700}\n @keyframes bnOrbit{to{transform:rotate(360deg)}}\n @keyframes bnDash{from{stroke-dashoffset:126}to{stroke-dashoffset:0}}\n @keyframes bnGlow{50%{opacity:.35}}\n `}),_jsxs(`div`,{className:`bn-smi`,children:[_jsxs(`div`,{children:[_jsx(`div`,{className:`bn-smk`,children:`WORLD \u0026 CHARACTERS`}),_jsx(`div`,{className:`bn-smh`,children:`A book's world, all connected`}),_jsx(`div`,{className:`bn-smp`,children:`World rules, forces, locations, and conflict tension; character relationships and chapter states; chapter tasks, scene cards, and foreshadowing, all saved within the same book, providing material for every subsequent chapter. Hover over a node to see what it connects to.`})]}),_jsxs(`svg`,{className:`bn-svg`,viewBox:`0 0 600 430`,role:`img`,\"aria-label\":`Relationship star map of world, characters, and chapters`,children:[_jsx(`defs`,{children:_jsxs(`radialGradient`,{id:`bnNg`,children:[_jsx(`stop`,{offset:`0%`,stopColor:`#4ade80`}),_jsx(`stop`,{offset:`100%`,stopColor:`#14532d`})]})}),_jsxs(`g`,{className:`bn-rot`,children:[EDGES.map(([a,b],i)=>_jsxs(`g`,{children:[_jsx(`line`,{className:`bn-e`+(lit(a,b)?` on`:``),x1:pos[a].x,y1:pos[a].y,x2:pos[b].x,y2:pos[b].y}),i\u003c3\u0026\u0026_jsx(`line`,{className:`bn-pulse`,x1:pos[a].x,y1:pos[a].y,x2:pos[b].x,y2:pos[b].y,style:{animationDelay:i*-1+`s`}})]},i)),NODES.map(n=>_jsxs(`g`,{className:`bn-nd`+(n.main?` main`:``),style:{opacity:near(n.id)?1:.25},onMouseEnter:()=>setHover(n.id),onMouseLeave:()=>setHover(null),children:[_jsx(`circle`,{cx:n.x,cy:n.y,r:n.r+10,fill:`rgba(34,197,94,.12)`,style:{animation:`bnGlow 3s ease-in-out infinite`}}),_jsx(`circle`,{cx:n.x,cy:n.y,r:n.r,fill:n.main?`url(#bnNg)`:`#16A34A`,stroke:hover===n.id?`#bbf7d0`:`rgba(187,247,208,.4)`,strokeWidth:hover===n.id?2.5:1}),_jsx(`g`,{transform:`rotate(0 ${n.x} ${n.y})`,children:_jsx(`text`,{x:n.x,y:n.y+n.r+20,className:`bn-lbl`,style:{animation:`bnOrbit 80s linear infinite reverse`,transformOrigin:`${n.x}px ${n.y}px`,transformBox:`view-box`},children:n.l})})]},n.id))]})]})]})]})};const BnHome=({children})=>{const wrapRef=useRef(null);const busy=useRef(false);const[layers,setLayers]=useState([{id:0,theme:`ink`}]);const[fx,setFx]=useState(null);const current=layers[layers.length-1].theme;const kids=(Array.isArray(children)?children:[children]).filter(c=>c\u0026\u0026typeof c===`object`);const renderSet=t=>(t===`ink`?kids[0]:kids[1])||null;const toggle=e=>{if(busy.current||!wrapRef.current)return;const to=current===`ink`?`paper`:`ink`;const reduce=window.matchMedia\u0026\u0026window.matchMedia(`(prefers-reduced-motion: reduce)`).matches;if(reduce){setLayers([{id:Date.now(),theme:to}]);return}busy.current=true;const wr=wrapRef.current.getBoundingClientRect();const b=e.currentTarget.getBoundingClientRect();const cx=b.left+b.width/2;const cy=b.top+b.height/2;const vw=window.innerWidth;const vh=window.innerHeight;const r=Math.hypot(Math.max(cx,vw-cx),Math.max(cy,vh-cy))+120;const id=Date.now();const drops=Array.from({length:16},(_,i)=>{const a=i/16*Math.PI*2+Math.random()*.4;const d=120+Math.random()*260;return{dx:Math.cos(a)*d,dy:Math.sin(a)*d,s:6+Math.random()*18,delay:Math.random()*.15}});setLayers(L=>[...L,{id,theme:to}]);setFx({id,to,x:cx-wr.left,y:cy-wr.top,r,go:false,drops});requestAnimationFrame(()=>requestAnimationFrame(()=>setFx(f=>f?{...f,go:true}:f)));setTimeout(()=>{setLayers(L=>L.slice(-1));setFx(null);busy.current=false},1750)};const ease=`cubic-bezier(.76,0,.18,1)`;const dur=`1.6s`;const toPaper=fx\u0026\u0026fx.to===`paper`;const ringBg=toPaper?`radial-gradient(circle closest-side, transparent 84%, rgba(250,236,200,.85) 91%, rgba(180,56,42,.55) 94%, rgba(28,26,23,.0) 100%)`:`radial-gradient(circle closest-side, transparent 84%, rgba(74,222,128,.75) 91%, rgba(5,8,10,.95) 94.5%, rgba(5,8,10,0) 100%)`;return _jsxs(`div`,{ref:wrapRef,className:`not-prose bnh`,\"data-bn-theme\":current,children:[_jsx(`style`,{children:`\n .bnh{position:relative;overflow:hidden}\n .bnh-tg{position:fixed;right:22px;top:50%;z-index:60;transform:translateY(-50%);display:flex;flex-direction:column;align-items:center;gap:10px;background:none;border:0;padding:0;cursor:pointer;font-family:inherit}\n .bnh-orb{position:relative;width:58px;height:58px;border-radius:50%;overflow:hidden;transition:transform 1.2s cubic-bezier(.76,0,.18,1),box-shadow .4s}\n .bnh-orb::before,.bnh-orb::after{content:\"\";position:absolute;top:0;bottom:0;width:50%}\n .bnh-orb::before{left:0;background:#05080a}\n .bnh-orb::after{right:0;background:#f3ede1}\n .bnh-orb i{position:absolute;left:50%;top:50%;width:18px;height:18px;margin:-9px 0 0 -9px;border-radius:50%;z-index:2;transition:background .6s}\n .bnh-tg.ink .bnh-orb{box-shadow:0 0 0 2px rgba(134,239,172,.45),0 0 26px -2px rgba(34,197,94,.7)}\n .bnh-tg.paper .bnh-orb{box-shadow:0 0 0 2px rgba(28,26,23,.75),0 10px 26px -8px rgba(28,26,23,.6)}\n .bnh-tg.ink .bnh-orb i{background:#16A34A;box-shadow:0 0 12px #22c55e}\n .bnh-tg.paper .bnh-orb i{background:#b4382a}\n .bnh-tg:hover .bnh-orb{transform:scale(1.1) rotate(25deg)}\n .bnh-lab{writing-mode:vertical-rl;font-size:12px;letter-spacing:.4em;padding:10px 5px;border-radius:999px;transition:all .4s}\n .bnh-tg.ink .bnh-lab{color:#86efac;background:rgba(5,8,10,.7);border:1px solid rgba(134,239,172,.3)}\n .bnh-tg.paper .bnh-lab{color:#1c1a17;background:rgba(243,237,225,.85);border:1px solid rgba(28,26,23,.3);font-family:\"Noto Serif SC\",\"Songti SC\",serif}\n .bnh-ring{position:absolute;z-index:5;pointer-events:none;border-radius:50%;transform:translate(-50%,-50%);filter:blur(5px)}\n .bnh-drop{position:absolute;z-index:6;border-radius:50%;pointer-events:none;transform:translate(-50%,-50%) scale(.2);opacity:0;animation:bnhDrop 1.1s cubic-bezier(.2,.8,.2,1) forwards}\n .bnh-glyph{position:fixed;left:50%;top:50%;z-index:55;pointer-events:none;font-size:clamp(140px,22vw,300px);font-weight:900;line-height:1;transform:translate(-50%,-50%);animation:bnhGlyph 1.6s ease forwards}\n @keyframes bnhDrop{0%{opacity:.95;transform:translate(-50%,-50%) scale(.3)}100%{opacity:0;transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy))) scale(1)}}\n @keyframes bnhGlyph{0%{opacity:0;filter:blur(18px);transform:translate(-50%,-50%) scale(.7)}40%{opacity:.9;filter:blur(0)}100%{opacity:0;filter:blur(10px);transform:translate(-50%,-50%) scale(1.35)}}\n `}),layers.map(L=>{const entering=fx\u0026\u0026fx.id===L.id;const leaving=fx\u0026\u0026fx.id!==L.id;const style=entering?{position:`absolute`,top:0,left:0,right:0,zIndex:3,clipPath:`circle(${fx.go?fx.r:0}px at ${fx.x}px ${fx.y}px)`,transition:`clip-path ${dur} ${ease}`}:leaving?{position:`relative`,transformOrigin:`${fx.x}px ${fx.y}px`,transform:fx.go?`scale(.94)`:`none`,filter:fx.go?`brightness(.55) saturate(.5)`:`none`,transition:`transform ${dur} ${ease}, filter ${dur} ${ease}`}:{position:`relative`};return _jsx(`div`,{style,children:renderSet(L.theme)},L.id)}),fx\u0026\u0026_jsx(`div`,{className:`bnh-ring`,style:{left:fx.x,top:fx.y,width:fx.go?fx.r*2.12:0,height:fx.go?fx.r*2.12:0,background:ringBg,transition:`width ${dur} ${ease}, height ${dur} ${ease}`}}),fx\u0026\u0026fx.drops.map((d,i)=>_jsx(`span`,{className:`bnh-drop`,style:{left:fx.x,top:fx.y,width:d.s,height:d.s,animationDelay:d.delay+`s`,background:toPaper?i%4===0?`#b4382a`:`#1c1a17`:i%3===0?`#4ade80`:`#05080a`,boxShadow:toPaper?`none`:`0 0 10px rgba(74,222,128,.6)`,\"--dx\":d.dx+`px`,\"--dy\":d.dy+`px`}},i)),fx\u0026\u0026_jsx(`div`,{className:`bnh-glyph`,style:toPaper?{color:`#1c1a17`,fontFamily:`\"Noto Serif SC\",\"Songti SC\",serif`}:{color:`#4ade80`,textShadow:`0 0 40px rgba(34,197,94,.8)`},children:toPaper?`墨`:`夜`}),_jsxs(`button`,{type:`button`,className:`bnh-tg `+current,onClick:toggle,\"aria-label\":current===`ink`?`Switch to Ink Wash Theme`:`Switch to Ink Night Theme`,children:[_jsx(`span`,{className:`bnh-orb`,style:{transform:current===`paper`?`rotate(180deg)`:undefined},children:_jsx(`i`,{})}),_jsx(`span`,{className:`bnh-lab`,children:current===`ink`?`Switch Ink`:`Switch Night`})]})]})};const XzHero=()=>{const _components={a:`a`,..._provideComponents()};const PAPER=`url(\"data:image/svg+xml;utf8,\u003csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'>\u003cfilter id='n'>\u003cfeTurbulence type='fractalNoise' baseFrequency='.75' numOctaves='3' stitchTiles='stitch'/>\u003cfeColorMatrix values='0 0 0 0 .35 0 0 0 0 .28 0 0 0 0 .18 0 0 0 .09 0'/>\u003c/filter>\u003crect width='100%' height='100%' filter='url(%23n)'/>\u003c/svg>\")`;const colA=`From a Spark`.split(``);const colB=`Toward a Complete Novel`.split(``);const[drops,setDrops]=useState([]);const onDrop=e=>{const r=e.currentTarget.getBoundingClientRect();const id=Date.now()+Math.random();setDrops(d=>[...d.slice(-5),{id,x:e.clientX-r.left,y:e.clientY-r.top}]);setTimeout(()=>setDrops(d=>d.filter(x=>x.id!==id)),4e3)};return _jsxs(`div`,{className:`not-prose xz-hero`,style:{backgroundImage:PAPER},onClick:onDrop,children:[_jsx(`style`,{children:`\n .xz-hero{position:relative;overflow:hidden;background-color:#f3ede1;color:#1c1a17;padding:96px 24px 220px;font-family:\"Noto Serif SC\",\"Source Han Serif SC\",\"Songti SC\",\"STSong\",serif;cursor:crosshair}\n .xz-sun{position:absolute;right:12%;top:70px;width:150px;height:150px;border-radius:50%;background:radial-gradient(circle,rgba(180,56,42,.85),rgba(180,56,42,.55) 60%,rgba(180,56,42,0) 72%);filter:blur(1px);animation:xzSun 9s ease-in-out infinite;pointer-events:none}\n .xz-bloom{position:absolute;border-radius:50%;background:radial-gradient(circle,rgba(28,26,23,.5),rgba(28,26,23,.18) 45%,transparent 70%);filter:blur(6px);pointer-events:none;animation:xzBloom 9s ease-out infinite}\n .xz-drop{position:absolute;width:260px;height:260px;margin:-130px 0 0 -130px;border-radius:50%;background:radial-gradient(circle,rgba(28,26,23,.55),rgba(28,26,23,.2) 40%,transparent 70%);filter:blur(5px);pointer-events:none;animation:xzDrop 4s ease-out forwards}\n .xz-wrap{position:relative;z-index:2;max-width:1100px;margin:0 auto;display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:48px;align-items:center}\n .xz-left{order:1}\n .xz-title{order:2;display:flex;flex-direction:row-reverse;justify-content:center;gap:26px;height:min(560px,70vw)}\n .xz-col{writing-mode:vertical-rl;font-size:clamp(40px,6vw,72px);font-weight:900;letter-spacing:.12em;line-height:1}\n .xz-col.b{margin-top:90px}\n .xz-ch{display:inline-block;opacity:0;animation:xzInk 1.4s cubic-bezier(.2,.7,.2,1) forwards}\n .xz-col.b .xz-ch{color:#2b2722}\n .xz-col.b .xz-ch.hl{color:#b4382a}\n .xz-seal{display:inline-flex;align-items:center;justify-content:center;width:62px;height:62px;border:3px solid #b4382a;border-radius:6px;color:#b4382a;font-weight:900;font-size:17px;line-height:1.1;text-align:center;transform:rotate(-6deg);opacity:0;animation:xzStamp .6s 2.8s cubic-bezier(.3,1.6,.5,1) forwards;box-shadow:inset 0 0 0 2px rgba(180,56,42,.15)}\n .xz-k{font-size:14px;letter-spacing:.5em;color:rgba(28,26,23,.55)}\n .xz-name{font-size:clamp(26px,3.4vw,34px);font-weight:700;margin:14px 0 0;letter-spacing:.06em}\n .xz-rule{width:64px;height:2px;background:#1c1a17;margin:22px 0;opacity:.7}\n .xz-p{font-size:17px;line-height:2;color:rgba(28,26,23,.72);max-width:440px}\n .xz-btns{display:flex;flex-wrap:wrap;gap:14px;margin-top:34px;align-items:center}\n .xz-btn{position:relative;display:inline-block;padding:12px 26px;font-size:16px;letter-spacing:.2em;text-decoration:none;color:#1c1a17;border:1.5px solid #1c1a17;transition:all .35s;cursor:pointer;overflow:hidden}\n .xz-btn::before{content:\"\";position:absolute;inset:0;background:#1c1a17;transform:scaleX(0);transform-origin:left;transition:transform .45s cubic-bezier(.6,.1,.2,1);z-index:-1}\n .xz-btn:hover{color:#f3ede1}\n .xz-btn:hover::before{transform:scaleX(1)}\n .xz-btn{z-index:0}\n .xz-red{background:#b4382a;border-color:#b4382a;color:#f8f1e4}\n .xz-red::before{background:#1c1a17}\n .xz-hint{margin-top:26px;font-size:13px;color:rgba(28,26,23,.42);letter-spacing:.15em}\n .xz-mt{position:absolute;left:0;right:0;bottom:0;height:260px;pointer-events:none}\n .xz-mt svg{position:absolute;bottom:0;width:200%;height:100%}\n .xz-m1{animation:xzDrift 90s linear infinite;opacity:.35}\n .xz-m2{animation:xzDrift 60s linear infinite;opacity:.55}\n .xz-m3{animation:xzDrift 40s linear infinite;opacity:.85}\n .xz-mist{position:absolute;left:0;right:0;bottom:60px;height:120px;background:linear-gradient(transparent,rgba(243,237,225,.85),transparent);animation:xzMist 12s ease-in-out infinite}\n @keyframes xzInk{0%{opacity:0;filter:blur(10px);transform:scale(1.35)}60%{opacity:.9;filter:blur(1.5px)}100%{opacity:1;filter:blur(0);transform:scale(1)}}\n @keyframes xzStamp{0%{opacity:0;transform:rotate(-6deg) scale(1.8)}100%{opacity:1;transform:rotate(-6deg) scale(1)}}\n @keyframes xzBloom{0%{transform:scale(.2);opacity:0}15%{opacity:.6}100%{transform:scale(1.4);opacity:0}}\n @keyframes xzDrop{0%{transform:scale(.1);opacity:.9}100%{transform:scale(1.3);opacity:0}}\n @keyframes xzDrift{to{transform:translateX(-50%)}}\n @keyframes xzMist{50%{transform:translateX(4%);opacity:.6}}\n @keyframes xzSun{50%{transform:translateY(10px);opacity:.85}}\n `}),_jsx(`div`,{className:`xz-sun`}),_jsx(`div`,{className:`xz-bloom`,style:{left:`6%`,top:`18%`,width:240,height:240}}),_jsx(`div`,{className:`xz-bloom`,style:{left:`44%`,top:`8%`,width:180,height:180,animationDelay:`3s`}}),_jsx(`div`,{className:`xz-bloom`,style:{left:`70%`,top:`52%`,width:220,height:220,animationDelay:`6s`}}),drops.map(d=>_jsx(`div`,{className:`xz-drop`,style:{left:d.x,top:d.y}},d.id)),_jsxs(`div`,{className:`xz-wrap`,children:[_jsxs(`div`,{className:`xz-title`,\"aria-label\":`From a Spark of Inspiration, Toward a Complete Novel`,children:[_jsx(`div`,{className:`xz-col`,children:colA.map((c,i)=>_jsx(`span`,{className:`xz-ch`,style:{animationDelay:.2+i*.18+`s`},children:c},i))}),_jsxs(`div`,{className:`xz-col mint-b`,children:[colB.map((c,i)=>_jsx(`span`,{className:`xz-ch`+(i>=4?` hl`:``),style:{animationDelay:1.2+i*.18+`s`},children:c},i)),_jsx(`div`,{style:{marginTop:22},children:_jsxs(`span`,{className:`xz-seal`,style:{writingMode:`horizontal-tb`},children:[`Open`,_jsx(`br`,{}),`Source`]})})]})]}),_jsxs(`div`,{className:`xz-left`,children:[_jsx(`div`,{className:`xz-k`,children:`AI NOVEL STUDIO`}),_jsx(`div`,{className:`xz-name`,children:`Biz Novel Studio`}),_jsx(`div`,{className:`xz-rule`}),_jsx(`p`,{className:`xz-p`,children:`An open-source AI novel writing workbench. AI helps you plan worlds and characters, write chapter by chapter, review and save, giving long-form creation a path you can keep walking.`}),_jsxs(`div`,{className:`xz-btns`,children:[_jsx(_components.a,{className:`xz-btn xz-red`,href:`/en/quickstart`,children:`Get Started`}),_jsx(_components.a,{className:`xz-btn`,href:`/en/installation`,children:`Download Desktop`}),_jsx(`a`,{className:`xz-btn`,href:`https://github.com/ExplosiveCoderflome/AI-Novel-Writing-Assistant`,children:`GitHub`})]}),_jsx(`a`,{href:`https://github.com/ExplosiveCoderflome/AI-Novel-Writing-Assistant/stargazers`,onClick:e=>e.stopPropagation(),style:{display:`inline-block`,marginTop:22},\"aria-label\":`GitHub Stars`,children:_jsx(`img`,{src:`https://img.shields.io/github/stars/ExplosiveCoderflome/AI-Novel-Writing-Assistant?style=for-the-badge\u0026logo=github\u0026label=Star\u0026labelColor=1c1a17\u0026color=b4382a`,alt:`GitHub Stars`,style:{height:28,display:`block`}})}),_jsx(`div`,{className:`xz-hint`,children:`v0.8.1 · AGPL-3.0 · Click the paper to drop an ink blot`})]})]}),_jsxs(`div`,{className:`xz-mt`,\"aria-hidden\":`true`,children:[_jsx(`svg`,{className:`xz-m1`,viewBox:`0 0 2400 260`,preserveAspectRatio:`none`,children:_jsx(`path`,{fill:`#6d6a63`,d:`M0 260V120Q120 40 260 110T520 80Q640 20 780 100T1040 90Q1120 60 1200 120V260ZM1200 260V120Q1320 40 1460 110T1720 80Q1840 20 1980 100T2240 90Q2320 60 2400 120V260Z`})}),_jsx(`svg`,{className:`xz-m2`,viewBox:`0 0 2400 260`,preserveAspectRatio:`none`,children:_jsx(`path`,{fill:`#3d3a35`,d:`M0 260V170Q90 110 200 160T420 130Q520 70 640 150T900 140Q1040 100 1200 170V260ZM1200 260V170Q1290 110 1400 160T1620 130Q1720 70 1840 150T2100 140Q2240 100 2400 170V260Z`})}),_jsx(`div`,{className:`xz-mist`}),_jsx(`svg`,{className:`xz-m3`,viewBox:`0 0 2400 260`,preserveAspectRatio:`none`,children:_jsx(`path`,{fill:`#1c1a17`,d:`M0 260V215Q150 180 300 210T640 200Q800 170 960 205T1200 215V260ZM1200 260V215Q1350 180 1500 210T1840 200Q2000 170 2160 205T2400 215V260Z`})})]})]})};const XzScroll=()=>{const STEPS=[{k:`Idea`,t:`I have a story idea I want to write`},{k:`Direction`,t:`Generate optional book-level directions and title sets`},{k:`World`,t:`World skeleton rules forces and locations`},{k:`Characters`,t:`Character candidates and lineup drafts`},{k:`Chapters`,t:`Chapter briefs scene cards and goals`},{k:`Draft`,t:`Generate draft text according to chapter tasks`}];const[open,setOpen]=useState(false);const[step,setStep]=useState(-1);const[chars,setChars]=useState(0);useEffect(()=>{if(!open){const t=setTimeout(()=>{setOpen(true);setStep(0);setChars(0)},600);return()=>clearTimeout(t)}if(step\u003c0)return;const cur=STEPS[step].t;if(chars\u003ccur.length){const t=setTimeout(()=>setChars(c=>c+1),90);return()=>clearTimeout(t)}const t=setTimeout(()=>{if(step\u003cSTEPS.length-1){setStep(step+1);setChars(0)}else{setOpen(false);setStep(-1)}},step===STEPS.length-1?3600:500);return()=>clearTimeout(t)},[open,step,chars]);return _jsxs(`div`,{className:`not-prose xz-sc`,children:[_jsx(`style`,{children:`\n .xz-sc{background:#f3ede1;color:#1c1a17;padding:80px 24px 100px;font-family:\"Noto Serif SC\",\"Source Han Serif SC\",\"Songti SC\",\"STSong\",serif}\n .xz-si{max-width:1100px;margin:0 auto}\n .xz-hd{display:flex;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;gap:16px;margin-bottom:40px}\n .xz-hk{font-size:13px;letter-spacing:.5em;color:#b4382a}\n .xz-hh{font-size:clamp(26px,3.8vw,38px);font-weight:800;letter-spacing:.08em;margin:10px 0 0}\n .xz-hp{max-width:420px;font-size:15px;line-height:1.9;color:rgba(28,26,23,.65)}\n .xz-roll{position:relative;padding:0 18px}\n .xz-rod{position:absolute;top:-10px;bottom:-10px;width:16px;border-radius:8px;background:linear-gradient(90deg,#5b3a24,#8a5a37 40%,#4a2e1c);box-shadow:0 6px 14px rgba(0,0,0,.25);z-index:2}\n .xz-rod.r{right:0}\n .xz-rod.l{transition:right 1.4s cubic-bezier(.6,.1,.2,1)}\n .xz-paper{position:relative;margin-left:auto;height:400px;background:#faf6ec;border-top:1px solid rgba(28,26,23,.08);border-bottom:1px solid rgba(28,26,23,.08);box-shadow:0 30px 60px -40px rgba(28,26,23,.5);overflow:hidden;transition:width 1.4s cubic-bezier(.6,.1,.2,1)}\n .xz-paper::before{content:\"\";position:absolute;inset:14px;border:1px solid rgba(180,56,42,.25);pointer-events:none}\n .xz-cols{position:absolute;inset:34px 30px;display:flex;flex-direction:row-reverse;gap:clamp(10px,3vw,40px);justify-content:flex-start}\n .xz-c{display:flex;flex-direction:column;align-items:center;gap:14px;opacity:0;transition:opacity .5s}\n .xz-c.show{opacity:1}\n .xz-lab{width:30px;height:30px;display:flex;align-items:center;justify-content:center;background:#b4382a;color:#faf6ec;font-size:14px;font-weight:700;border-radius:3px}\n .xz-v{writing-mode:vertical-rl;font-size:clamp(15px,1.8vw,19px);letter-spacing:.25em;line-height:1.6;color:#2b2722;min-height:10px}\n .xz-v .cur{display:inline-block;width:1em;height:2px;background:#b4382a;animation:xzBk 1s steps(1) infinite}\n .xz-v.done{color:rgba(28,26,23,.62)}\n .xz-v.last{color:#1c1a17;font-weight:700}\n @keyframes xzBk{50%{opacity:0}}\n `}),_jsxs(`div`,{className:`xz-si`,children:[_jsxs(`div`,{className:`xz-hd`,children:[_jsxs(`div`,{children:[_jsx(`div`,{className:`xz-hk`,children:`I · Unroll`}),_jsx(`div`,{className:`xz-hh`,children:`One spark of inspiration, slowly unfolding into a book`})]}),_jsx(`div`,{className:`xz-hp`,children:`You only need to start with an idea. The workbench connects direction, world, characters, and chapters layer by layer, and finally writes text according to chapter tasks, leaving usable materials at every step.`})]}),_jsxs(`div`,{className:`xz-roll`,children:[_jsx(`div`,{className:`xz-rod mint-r`}),_jsx(`div`,{className:`xz-rod l`,style:{right:open?`calc(100% - 16px)`:`0`}}),_jsx(`div`,{className:`xz-paper`,style:{width:open?`100%`:`0%`},children:_jsx(`div`,{className:`xz-cols`,\"aria-live\":`polite`,children:STEPS.map((s,i)=>_jsxs(`div`,{className:`xz-c`+(i\u003c=step?` show`:``),children:[_jsx(`span`,{className:`xz-lab`,children:s.k.slice(0,1)}),_jsxs(`div`,{className:`xz-v`+(i\u003cstep?` done`:``)+(i===STEPS.length-1\u0026\u0026i\u003c=step?` last`:``),children:[i\u003cstep?s.t:i===step?s.t.slice(0,chars):``,i===step\u0026\u0026_jsx(`span`,{className:`cur`})]})]},s.k))})})]})]})]})};const XzDirector=()=>{const NUM=[`一`,`二`,`三`,`四`,`五`,`六`,`七`,`八`,`九`,`十`,`十一`,`十二`];const STAGES=[`Direction Candidates`,`Project Creation`,`Story Macro`,`World Building`,`Character Generation`,`Volume Strategy`,`Beat Board`,`Chapter Detailing`,`Chapter Batch Ready`,`Draft Generation`,`Quality Review`,`Repair \u0026 Backfill`];const DETAILS=[`Generate optional book-level directions and title sets from inspiration.`,`Turn the confirmed direction into a novel project, writing candidate directions, titles, and run parameters.`,`Generate long-term conflict, progression loops, and mainline structure for the entire book.`,`Generate the world skeleton, rules, forces, and locations for this book.`,`Generate character candidates and lineup drafts.`,`Generate volume strategy, progression routes, and volume goals.`,`Break volume planning into executable chapter tasks.`,`Generate chapter briefs, scene cards, and goals.`,`Ready to start writing this batch of chapters.`,`Generate draft text according to chapter tasks.`,`Check whether the text meets task and style requirements.`,`Local editing, save text, and sync character and foreshadowing states.`];const[cur,setCur]=useState(0);const[paused,setPaused]=useState(false);useEffect(()=>{if(paused)return;const t=setInterval(()=>setCur(c=>(c+1)%STAGES.length),2e3);return()=>clearInterval(t)},[paused]);return _jsxs(`div`,{className:`not-prose xz-dr`,onMouseEnter:()=>setPaused(true),onMouseLeave:()=>setPaused(false),children:[_jsx(`style`,{children:`\n .xz-dr{background:#ece5d6;color:#1c1a17;padding:90px 24px;font-family:\"Noto Serif SC\",\"Source Han Serif SC\",\"Songti SC\",\"STSong\",serif}\n .xz-di{max-width:1100px;margin:0 auto}\n .xz-dk{font-size:13px;letter-spacing:.5em;color:#b4382a}\n .xz-dh{font-size:clamp(26px,3.8vw,38px);font-weight:800;letter-spacing:.08em;margin:10px 0 12px}\n .xz-dp{font-size:15px;line-height:1.9;color:rgba(28,26,23,.65);max-width:620px}\n .xz-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:18px 10px;margin-top:44px}\n .xz-st{background:none;border:0;padding:0;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:10px;font-family:inherit;color:inherit}\n .xz-st svg{width:78px;height:78px;overflow:visible}\n .xz-ring{fill:none;stroke:#1c1a17;stroke-linecap:round;stroke-width:5;opacity:.18;transition:opacity .4s}\n .xz-st.done .xz-ring{opacity:.45}\n .xz-st.on .xz-ring{opacity:1;stroke:#1c1a17;stroke-dasharray:.86 1;animation:xzEnso 1.2s cubic-bezier(.5,.1,.2,1) both}\n .xz-st:hover .xz-ring{opacity:.7}\n .xz-nm{font-size:20px;font-weight:800;fill:#1c1a17;text-anchor:middle;dominant-baseline:central}\n .xz-st.on .xz-nm{fill:#b4382a}\n .xz-sl{font-size:14px;letter-spacing:.08em;color:rgba(28,26,23,.6);transition:color .3s}\n .xz-st.on .xz-sl{color:#1c1a17;font-weight:700}\n .xz-note{margin-top:40px;display:flex;gap:22px;align-items:flex-start;padding:26px 30px;background:#faf6ec;border-left:4px solid #b4382a;box-shadow:0 20px 40px -30px rgba(28,26,23,.5)}\n .xz-note b{font-size:22px;letter-spacing:.1em}\n .xz-note p{margin:8px 0 0;font-size:16px;line-height:1.9;color:rgba(28,26,23,.75)}\n .xz-big{font-size:46px;font-weight:900;color:#b4382a;line-height:1;min-width:64px}\n @keyframes xzEnso{from{stroke-dashoffset:.86}to{stroke-dashoffset:0}}\n `}),_jsxs(`div`,{className:`xz-di`,children:[_jsx(`div`,{className:`xz-dk`,children:`II · Brushwork`}),_jsx(`div`,{className:`xz-dh`,children:`Auto Director, twelve steps to one book`}),_jsx(`div`,{className:`xz-dp`,children:`From direction candidates to repair and backfill, twelve stages form a complete long-form production line. You can let it run fully automatically, or pause at key stages for your confirmation.`}),_jsx(`div`,{className:`xz-grid`,children:STAGES.map((s,i)=>_jsxs(`button`,{type:`button`,className:`xz-st`+(i===cur?` on`:i\u003ccur?` done`:``),onClick:()=>{setCur(i);setPaused(true)},children:[_jsxs(`svg`,{viewBox:`0 0 80 80`,children:[_jsx(`circle`,{className:`xz-ring`,cx:`40`,cy:`40`,r:`32`,pathLength:`1`,transform:`rotate(-70 40 40)`},i===cur?`on`+cur:`off`),_jsx(`text`,{className:`xz-nm`,x:`40`,y:`41`,style:{fontSize:NUM[i].length>1?16:20},children:NUM[i]})]}),_jsx(`span`,{className:`xz-sl`,children:s})]},s))}),_jsxs(`div`,{className:`xz-note`,\"aria-live\":`polite`,children:[_jsx(`div`,{className:`xz-big`,children:NUM[cur]}),_jsxs(`div`,{children:[_jsx(`b`,{children:STAGES[cur]}),_jsx(`p`,{children:DETAILS[cur]})]})]})]})]})};const XzWeb=()=>{const NODES=[{id:`book`,x:300,y:215,r:30,l:`Book`,main:true},{id:`world`,x:140,y:120,r:20,l:`World`,main:true},{id:`char`,x:460,y:120,r:20,l:`Characters`,main:true},{id:`chap`,x:300,y:370,r:20,l:`Chapters`,main:true},{id:`rule`,x:40,y:50,r:7,l:`Rules`},{id:`force`,x:50,y:195,r:7,l:`Forces`},{id:`place`,x:180,y:25,r:7,l:`Locations`},{id:`tension`,x:60,y:300,r:7,l:`Conflict Tension`},{id:`rel`,x:560,y:55,r:7,l:`Relations`},{id:`trait`,x:420,y:25,r:7,l:`Personality \u0026 Abilities`},{id:`state`,x:560,y:225,r:7,l:`Chapter State`},{id:`task`,x:160,y:410,r:7,l:`Chapter Tasks`},{id:`scene`,x:440,y:410,r:7,l:`Scene Cards`},{id:`fore`,x:555,y:340,r:7,l:`Foreshadowing`}];const EDGES=[[`book`,`world`],[`book`,`char`],[`book`,`chap`],[`world`,`rule`],[`world`,`force`],[`world`,`place`],[`world`,`tension`],[`char`,`rel`],[`char`,`trait`],[`char`,`state`],[`chap`,`task`],[`chap`,`scene`],[`chap`,`fore`],[`force`,`rel`],[`state`,`chap`],[`fore`,`char`],[`tension`,`task`]];const[hover,setHover]=useState(null);const P=Object.fromEntries(NODES.map(n=>[n.id,n]));const curve=(a,b)=>{const mx=(a.x+b.x)/2,my=(a.y+b.y)/2;const dx=b.x-a.x,dy=b.y-a.y;return`M${a.x} ${a.y} Q${mx-dy*.18} ${my+dx*.18} ${b.x} ${b.y}`};const on=(a,b)=>hover\u0026\u0026(a===hover||b===hover);const near=id=>!hover||id===hover||EDGES.some(([a,b])=>a===hover\u0026\u0026b===id||b===hover\u0026\u0026a===id);return _jsxs(`div`,{className:`not-prose xz-wb`,children:[_jsx(`style`,{children:`\n .xz-wb{background:#f3ede1;color:#1c1a17;padding:90px 24px;font-family:\"Noto Serif SC\",\"Source Han Serif SC\",\"Songti SC\",\"STSong\",serif}\n .xz-wi{max-width:1100px;margin:0 auto;display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:40px;align-items:center}\n .xz-wk{font-size:13px;letter-spacing:.5em;color:#b4382a}\n .xz-wh{font-size:clamp(26px,3.8vw,38px);font-weight:800;letter-spacing:.08em;margin:10px 0 14px}\n .xz-wp{font-size:15px;line-height:1.9;color:rgba(28,26,23,.65)}\n .xz-svg{width:100%;height:auto;overflow:visible}\n .xz-ln{fill:none;stroke:#1c1a17;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1;animation:xzDraw 1.6s ease forwards;transition:stroke .3s,opacity .3s}\n .xz-ln.on{stroke:#b4382a;opacity:1!important}\n .xz-nd{cursor:pointer;transition:opacity .35s}\n .xz-nd text{font-size:14px;fill:#1c1a17;text-anchor:middle;letter-spacing:.08em;pointer-events:none}\n .xz-nd.main text{font-size:17px;font-weight:800;fill:#faf6ec}\n .xz-halo{animation:xzHalo 4s ease-in-out infinite}\n @keyframes xzDraw{to{stroke-dashoffset:0}}\n @keyframes xzHalo{50%{opacity:.25;transform:scale(1.15)}}\n `}),_jsxs(`div`,{className:`xz-wi`,children:[_jsxs(`div`,{children:[_jsx(`div`,{className:`xz-wk`,children:`III · Warp \u0026 Weft`}),_jsx(`div`,{className:`xz-wh`,children:`Within one book, everything is connected`}),_jsx(`div`,{className:`xz-wp`,children:`World rules, forces, locations, and conflict tension; character relationships and chapter states; chapter tasks, scene cards, and foreshadowing, all saved within the same book, providing material for every subsequent chapter. Hover over an ink dot to see which lines it pulls.`})]}),_jsxs(`svg`,{className:`xz-svg`,viewBox:`0 0 600 440`,role:`img`,\"aria-label\":`Relationship diagram of world, characters, and chapters`,children:[_jsxs(`defs`,{children:[_jsxs(`filter`,{id:`xzRough`,children:[_jsx(`feTurbulence`,{type:`fractalNoise`,baseFrequency:`.06`,numOctaves:`2`,seed:`3`}),_jsx(`feDisplacementMap`,{in:`SourceGraphic`,scale:`7`})]}),_jsxs(`radialGradient`,{id:`xzInkG`,children:[_jsx(`stop`,{offset:`0%`,stopColor:`#3a3631`}),_jsx(`stop`,{offset:`70%`,stopColor:`#1c1a17`}),_jsx(`stop`,{offset:`100%`,stopColor:`#1c1a17`,stopOpacity:`.7`})]})]}),EDGES.map(([a,b],i)=>_jsx(`path`,{d:curve(P[a],P[b]),pathLength:`1`,className:`xz-ln`+(on(a,b)?` on`:``),style:{strokeWidth:i\u003c3?3.2:1.3,opacity:hover\u0026\u0026!on(a,b)?.12:i\u003c3?.8:.4,animationDelay:i*.12+`s`}},i)),NODES.map(n=>_jsxs(`g`,{className:`xz-nd`+(n.main?` main`:``),style:{opacity:near(n.id)?1:.25},onMouseEnter:()=>setHover(n.id),onMouseLeave:()=>setHover(null),children:[n.main\u0026\u0026_jsx(`circle`,{className:`xz-halo`,cx:n.x,cy:n.y,r:n.r+12,fill:`rgba(28,26,23,.08)`,style:{transformOrigin:`${n.x}px ${n.y}px`}}),_jsx(`circle`,{cx:n.x,cy:n.y,r:n.main?n.r:n.r+6,fill:`transparent`}),_jsx(`circle`,{cx:n.x,cy:n.y,r:n.r,fill:hover===n.id?`#b4382a`:`url(#xzInkG)`,filter:`url(#xzRough)`}),_jsx(`text`,{x:n.x,y:n.main?n.y+6:n.y+26,children:n.l})]},n.id))]})]})]})};const XzFeatures=()=>{const _components={a:`a`,..._provideComponents()};const NUM=[`壹`,`贰`,`叁`,`肆`,`伍`,`陆`];const ITEMS=[{t:`Turn an Idea into a Book`,d:`Auto Director organizes genre, selling points, character goals, and candidate directions; you can also start from trending genres or a completed book breakdown.`,h:`/en/features/novels`},{t:`Write a Complete Short Story`,d:`From idea and direction selection into 3,000 to 30,000 word short-story production, continuous reading, editing, and exporting.`,h:`/en/features/short-story`},{t:`Keep Writing Subsequent Chapters`,d:`Advance around the authorized scope: near-term planning, chapter tasks, scenes, text, checking, and saving.`,h:`/en/features/auto-director`},{t:`Maintain Worlds and Characters`,d:`Save this book's world, characters, relationships, and chapter states; view world maps and character relationship diagrams.`,h:`/en/features/world-library`},{t:`Break Down Books to Learn from References`,d:`Break down structure, characters, and writing style, trace back to original evidence; results can be used for the Knowledge Base and style assets.`,h:`/en/features/book-analysis`},{t:`Choose Models for Different Tasks`,d:`Configure providers, connection tests, and model routing; select models separately for planning, text, review, and book breakdown.`,h:`/en/model-configuration`}];return _jsxs(`div`,{className:`not-prose xz-ft`,children:[_jsx(`style`,{children:`\n .xz-ft{background:#ece5d6;color:#1c1a17;padding:90px 24px;font-family:\"Noto Serif SC\",\"Source Han Serif SC\",\"Songti SC\",\"STSong\",serif}\n .xz-fi{max-width:1100px;margin:0 auto}\n .xz-fk{font-size:13px;letter-spacing:.5em;color:#b4382a}\n .xz-fh{font-size:clamp(26px,3.8vw,38px);font-weight:800;letter-spacing:.08em;margin:10px 0 40px}\n .xz-fg{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));border-top:1.5px solid #1c1a17;border-left:1px solid rgba(28,26,23,.2)}\n .xz-card{position:relative;display:block;padding:34px 30px 30px;min-height:210px;border-right:1px solid rgba(28,26,23,.2);border-bottom:1px solid rgba(28,26,23,.2);text-decoration:none;color:inherit;overflow:hidden;background:#f6f1e6}\n .xz-card::before{content:\"\";position:absolute;right:-60px;bottom:-60px;width:220px;height:220px;border-radius:50%;background:radial-gradient(circle,rgba(28,26,23,.95),rgba(28,26,23,.7) 50%,transparent 72%);filter:blur(4px);transform:scale(0);transition:transform .9s cubic-bezier(.3,.7,.2,1)}\n .xz-card:hover::before{transform:scale(4.2)}\n .xz-num{position:absolute;right:22px;top:8px;font-size:84px;font-weight:900;color:rgba(28,26,23,.07);transition:color .6s;line-height:1}\n .xz-card:hover .xz-num{color:rgba(250,246,236,.1)}\n .xz-ct{position:relative;font-size:21px;font-weight:800;letter-spacing:.06em;transition:color .5s}\n .xz-cd{position:relative;margin-top:14px;font-size:15px;line-height:1.9;color:rgba(28,26,23,.65);transition:color .5s;max-width:340px}\n .xz-card:hover .xz-ct{color:#faf6ec}\n .xz-card:hover .xz-cd{color:rgba(250,246,236,.75)}\n .xz-stamp{position:absolute;right:26px;bottom:24px;width:46px;height:46px;border:2.5px solid #b4382a;color:#b4382a;font-weight:900;font-size:20px;display:flex;align-items:center;justify-content:center;border-radius:4px;background:rgba(180,56,42,.06);opacity:0;transform:rotate(8deg) scale(1.8);transition:all .35s cubic-bezier(.3,1.6,.5,1)}\n .xz-card:hover .xz-stamp{opacity:1;transform:rotate(8deg) scale(1);transition-delay:.25s;background:#b4382a;color:#faf6ec}\n `}),_jsxs(`div`,{className:`xz-fi`,children:[_jsx(`div`,{className:`xz-fk`,children:`IV · Compilation`}),_jsx(`div`,{className:`xz-fh`,children:`What you can do now`}),_jsx(`div`,{className:`xz-fg`,children:ITEMS.map((it,i)=>_jsxs(_components.a,{className:`xz-card`,href:it.h,children:[_jsx(`span`,{className:`xz-num`,children:NUM[i]}),_jsx(`div`,{className:`xz-ct`,children:it.t}),_jsx(`div`,{className:`xz-cd`,children:it.d}),_jsx(`span`,{className:`xz-stamp`,children:`阅`})]},it.t))})]})]})};const XzCta=()=>{const _components={a:`a`,..._provideComponents()};return _jsxs(`div`,{className:`not-prose xz-cta`,children:[_jsx(`style`,{children:`\n .xz-cta{position:relative;overflow:hidden;background:#f3ede1;color:#1c1a17;padding:110px 24px 120px;text-align:center;font-family:\"Noto Serif SC\",\"Source Han Serif SC\",\"Songti SC\",\"STSong\",serif}\n .xz-cta::before{content:\"\";position:absolute;left:50%;top:50%;width:620px;height:620px;margin:-310px 0 0 -310px;border-radius:50%;border:26px solid rgba(28,26,23,.05);border-right-color:transparent;transform:rotate(20deg);animation:xzSlow 40s linear infinite}\n .xz-ck{position:relative;font-size:13px;letter-spacing:.5em;color:#b4382a}\n .xz-ch{position:relative;font-size:clamp(28px,4.6vw,48px);font-weight:900;letter-spacing:.12em;margin:16px 0 0}\n .xz-cp{position:relative;font-size:16px;line-height:1.9;color:rgba(28,26,23,.65);margin:18px auto 0;max-width:540px}\n .xz-os{position:relative;display:flex;justify-content:center;flex-wrap:wrap;gap:0;margin-top:30px}\n .xz-os span{font-size:14px;padding:4px 18px;letter-spacing:.06em;color:rgba(28,26,23,.75)}\n .xz-os span+span{border-left:1px solid rgba(28,26,23,.3)}\n .xz-go{position:relative;display:inline-flex;align-items:center;justify-content:center;margin-top:40px;width:120px;height:120px;background:#b4382a;color:#faf6ec;text-decoration:none;font-size:20px;font-weight:900;line-height:1.35;letter-spacing:.15em;border-radius:8px;transform:rotate(-4deg);box-shadow:0 18px 36px -16px rgba(180,56,42,.8);transition:transform .35s cubic-bezier(.3,1.6,.5,1)}\n .xz-go::after{content:\"\";position:absolute;inset:7px;border:1.5px solid rgba(250,246,236,.6);border-radius:4px}\n .xz-go:hover{transform:rotate(0) scale(1.06)}\n .xz-small{position:relative;margin-top:22px;font-size:13px;color:rgba(28,26,23,.45);letter-spacing:.2em}\n @keyframes xzSlow{to{transform:rotate(380deg)}}\n `}),_jsx(`div`,{className:`xz-ck`,children:`VI · Signature`}),_jsx(`h2`,{className:`xz-ch`,children:`Start writing your first book now`}),_jsx(`p`,{className:`xz-cp`,children:`The desktop version is great for starting to write right away; the source version is for development and self-hosting. Models use your own API configuration.`}),_jsxs(`div`,{className:`xz-os`,children:[_jsx(`span`,{children:`Windows`}),_jsx(`span`,{children:`macOS · Intel`}),_jsx(`span`,{children:`macOS · Apple Silicon`}),_jsx(`span`,{children:`Linux`})]}),_jsxs(_components.a,{className:`xz-go`,href:`/en/installation`,children:[`Download`,_jsx(`br`,{}),`Install`]}),_jsx(`div`,{className:`xz-small`,children:`Click the seal to go to Download \u0026 Install`})]})};const RepoPulse=({theme})=>{const _components={a:`a`,..._provideComponents()};const R=`ExplosiveCoderflome/AI-Novel-Writing-Assistant`;const G=`https://github.com/`+R;const ink=theme===`ink`;const body=`**Version Used**:\n\n**Installation Method** (Desktop / Source):\n\n**Selected Director \u0026 Mode**:\n\n**Steps to Reproduce**:\n1. \n\n**Expected Result**:\n\n**Actual Result**:\n\n**Relevant Logs or Screenshots**:\n`;const ideaBody=`**Problem to Solve**:\n\n**Desired Approach**:\n\n**Additional Notes**:\n`;const bugUrl=G+`/issues/new?title=`+encodeURIComponent(`[Bug] `)+`\u0026body=`+encodeURIComponent(body);const ideaUrl=G+`/issues/new?title=`+encodeURIComponent(`[Suggestion] `)+`\u0026body=`+encodeURIComponent(ideaBody);const lc=ink?`0b1210`:`1c1a17`;const cc=ink?`16A34A`:`b4382a`;const badge=(kind,label)=>`https://img.shields.io/github/`+kind+`/`+R+`?style=for-the-badge\u0026logo=github\u0026label=`+encodeURIComponent(label)+`\u0026labelColor=`+lc+`\u0026color=`+cc;const BADGES=[{src:badge(`stars`,`Star`),href:G+`/stargazers`,alt:`Star Count`},{src:badge(`forks`,`Fork`),href:G+`/forks`,alt:`Fork Count`},{src:badge(`issues`,`Open Issues`),href:G+`/issues`,alt:`Open Issues Count`},{src:badge(`last-commit`,`Latest Commit`),href:G+`/commits`,alt:`Latest Commit Time`}];const ACTIONS=[{k:ink?`BUG`:`疾`,t:`Report a Bug`,d:`A template is ready for you: version, director and mode, steps, and logs.`,h:bugUrl},{k:ink?`IDEA`:`策`,t:`Submit a Suggestion`,d:`New features, experience improvements, just write them down.`,h:ideaUrl},{k:ink?`LIST`:`览`,t:`View Existing Feedback`,d:`Search first; someone may have already raised it or it may already be resolved.`,h:G+`/issues`},{k:ink?`STAR`:`星`,t:`Give a Star`,d:`If the workbench helps you, a Star is the most direct support.`,h:G}];const chart=`https://api.star-history.com/svg?repos=`+R+`\u0026type=Date`+(ink?`\u0026theme=dark`:``);const p=ink?`bn-cm`:`xz-cm`;return _jsxs(`div`,{className:`not-prose `+p,children:[_jsx(`style`,{children:`\n .bn-cm{background:#05080a;color:#e7f5ec;padding:90px 24px;border-top:1px solid rgba(134,239,172,.08)}\n .xz-cm{background:#f3ede1;color:#1c1a17;padding:90px 24px;font-family:\"Noto Serif SC\",\"Source Han Serif SC\",\"Songti SC\",\"STSong\",serif}\n .cm-in{max-width:1120px;margin:0 auto}\n .cm-k{font-size:13px;letter-spacing:.3em}\n .bn-cm .cm-k{color:#4ade80}\n .xz-cm .cm-k{color:#b4382a;letter-spacing:.5em}\n .cm-h{font-size:clamp(28px,4vw,40px);font-weight:700;margin:12px 0 12px}\n .xz-cm .cm-h{font-weight:800;letter-spacing:.08em}\n .cm-p{font-size:16px;line-height:1.75;max-width:640px}\n .bn-cm .cm-p{color:rgba(231,245,236,.65)}\n .xz-cm .cm-p{color:rgba(28,26,23,.65);line-height:1.9}\n .cm-badges{display:flex;flex-wrap:wrap;gap:10px;margin-top:28px}\n .cm-badges a{display:block;transition:transform .25s}\n .cm-badges a:hover{transform:translateY(-2px)}\n .cm-badges img{height:28px;display:block}\n .cm-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:24px;margin-top:36px;align-items:stretch}\n .cm-chart{display:block;border-radius:16px;overflow:hidden;padding:14px;text-decoration:none}\n .bn-cm .cm-chart{border:1px solid rgba(134,239,172,.18);background:linear-gradient(180deg,#0b1210,#070b09)}\n .xz-cm .cm-chart{border:1px solid rgba(28,26,23,.2);background:#faf6ec;border-radius:2px}\n .cm-chart img{width:100%;height:auto;display:block}\n .cm-cap{font-size:12px;margin-top:8px;opacity:.55;text-align:right}\n .cm-acts{display:grid;grid-template-columns:1fr 1fr;gap:14px}\n .cm-a{display:flex;flex-direction:column;gap:8px;padding:20px;border-radius:14px;text-decoration:none;color:inherit;transition:all .25s}\n .bn-cm .cm-a{border:1px solid rgba(231,245,236,.1);background:rgba(255,255,255,.02)}\n .bn-cm .cm-a:hover{border-color:#22c55e;background:rgba(22,163,74,.12);transform:translateY(-3px);box-shadow:0 0 24px -8px rgba(34,197,94,.6)}\n .xz-cm .cm-a{border:1px solid rgba(28,26,23,.22);background:#faf6ec;border-radius:2px}\n .xz-cm .cm-a:hover{border-color:#b4382a;transform:translateY(-3px);box-shadow:0 16px 30px -20px rgba(28,26,23,.6)}\n .cm-ak{font-size:11px;letter-spacing:.2em;align-self:flex-start;padding:2px 8px;border-radius:6px}\n .bn-cm .cm-ak{color:#4ade80;border:1px solid rgba(74,222,128,.35)}\n .xz-cm .cm-ak{color:#faf6ec;background:#b4382a;font-size:14px;font-weight:800;letter-spacing:0;border-radius:3px}\n .cm-at{font-size:17px;font-weight:700}\n .cm-ad{font-size:13.5px;line-height:1.7;opacity:.65}\n @media (max-width:520px){.cm-acts{grid-template-columns:1fr}}\n `}),_jsxs(`div`,{className:`cm-in`,children:[_jsx(`div`,{className:`cm-k`,children:ink?`COMMUNITY`:`V · Fellowship`}),_jsx(`div`,{className:`cm-h`,children:ink?`Project Pulse \u0026 Quick Feedback`:`Sparks pass on; every question answered`}),_jsx(`div`,{className:`cm-p`,children:`Star counts and trends are live from GitHub. If you encounter a problem or have an idea, submit an Issue directly below; include the version used, selected director and mode, steps to reproduce, and relevant logs, and it will be easier to pinpoint the issue.`}),_jsx(`div`,{className:`cm-badges`,children:BADGES.map(b=>_jsx(_components.a,{href:b.href,\"aria-label\":b.alt,children:_jsx(`img`,{src:b.src,alt:b.alt})},b.alt))}),_jsxs(`div`,{className:`cm-grid`,children:[_jsxs(_components.a,{className:`cm-chart`,href:`https://star-history.com/#`+R+`\u0026Date`,\"aria-label\":`Star Growth Trend`,children:[_jsx(`img`,{src:chart,alt:`Star Growth Trend Chart`,loading:`lazy`}),_jsx(`div`,{className:`cm-cap`,children:`Star Growth Trend · star-history.com`})]}),_jsx(`div`,{className:`cm-acts`,children:ACTIONS.map(a=>_jsxs(_components.a,{className:`cm-a`,href:a.h,target:`_blank`,rel:`noopener noreferrer`,children:[_jsx(`span`,{className:`cm-ak`,children:a.k}),_jsxs(`span`,{className:`cm-at`,children:[a.t,` →`]}),_jsx(`span`,{className:`cm-ad`,children:a.d})]},a.t))})]})]})]})};function _createMdxContent(props){const{_MdxComponentBoundary}={..._provideComponents(),...props.components};if(!_MdxComponentBoundary)_missingMdxReference(`_MdxComponentBoundary`,true);return _jsxs(_Fragment,{children:[_jsx(_MdxComponentBoundary,{name:`BnIntro`,children:_jsx(BnIntro,{})}),`\n`,_jsx(_MdxComponentBoundary,{name:`BnHome`,children:_jsxs(BnHome,{children:[_jsxs(`div`,{children:[_jsx(_MdxComponentBoundary,{name:`BnHero`,children:_jsx(BnHero,{})}),_jsx(_MdxComponentBoundary,{name:`BnTyping`,children:_jsx(BnTyping,{})}),_jsx(_MdxComponentBoundary,{name:`BnDirector`,children:_jsx(BnDirector,{})}),_jsx(_MdxComponentBoundary,{name:`BnStarMap`,children:_jsx(BnStarMap,{})}),_jsx(_MdxComponentBoundary,{name:`BnFeatures`,children:_jsx(BnFeatures,{})}),_jsx(_MdxComponentBoundary,{name:`RepoPulse`,children:_jsx(RepoPulse,{theme:`ink`})}),_jsx(_MdxComponentBoundary,{name:`BnCta`,children:_jsx(BnCta,{})})]}),_jsxs(`div`,{children:[_jsx(_MdxComponentBoundary,{name:`XzHero`,children:_jsx(XzHero,{})}),_jsx(_MdxComponentBoundary,{name:`XzScroll`,children:_jsx(XzScroll,{})}),_jsx(_MdxComponentBoundary,{name:`XzDirector`,children:_jsx(XzDirector,{})}),_jsx(_MdxComponentBoundary,{name:`XzWeb`,children:_jsx(XzWeb,{})}),_jsx(_MdxComponentBoundary,{name:`XzFeatures`,children:_jsx(XzFeatures,{})}),_jsx(_MdxComponentBoundary,{name:`RepoPulse`,children:_jsx(RepoPulse,{theme:`paper`})}),_jsx(_MdxComponentBoundary,{name:`XzCta`,children:_jsx(XzCta,{})})]})]})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{BnHero,BnDirector,BnFeatures,BnCta,BnTyping,BnIntro,BnChat,BnStarMap,BnHome,XzHero,XzScroll,XzDirector,XzWeb,XzFeatures,XzCta,RepoPulse,default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Biz Novel Studio","sidebarTitle":"Home","description":"Open-source AI novel writing workbench: from a single spark of inspiration to a complete novel","mode":"custom","keywords":["AI novel","AI novel writing","AI novel writing workbench","open source","long novel","short story","Biz Novel Studio","AI-Novel-Writing-Assistant"],"href":"/en/index"}}},"mdxSourceWithNoJs":null,"noJsSplices":[[145,82456,"null;const BnDirector=()=>null;const BnFeatures=()=>null;const BnCta=()=>null;const BnTyping=()=>null;const BnIntro=()=>null;const BnChat=()=>null;const BnStarMap=()=>null;const BnHome=()=>null;const XzHero=()=>null;const XzScroll=()=>null;const XzDirector=()=>null;const XzWeb=()=>null;const XzFeatures=()=>null;const XzCta=()=>null;const RepoPulse=()=>null;f"]]},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"subdomain":"ai-novel-writing-assistant","siteName":"Biz Novel Studio","title":"Biz Novel Studio - Biz Novel Studio","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"zh-Hans":{"href":"/","matchLevel":1},"en":{"href":"/en","matchLevel":0}}},"lastModified":"2026-11-13T14:54:28.090Z","originalFileLocation":"en/index.mdx","locale":"en"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Open-source AI novel writing workbench: from a single spark of inspiration to a complete novel\">\u003cmeta data-mint-head name=\"keywords\" content=\"AI 小说,AI 写小说,AI 小说创作,长篇小说生成,短篇小说,小说写作助手,开源,Biz Novel Studio,AI-Novel-Writing-Assistant,AI Novel Writing Assistant,AI novel writing assistant\">\u003cmeta data-mint-head name=\"application-name\" content=\"Biz Novel Studio\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/ai-novel-writing-assistant/UBPqqM50SFmqeKPJ/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/ai-novel-writing-assistant/UBPqqM50SFmqeKPJ/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/ai-novel-writing-assistant/UBPqqM50SFmqeKPJ/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/ai-novel-writing-assistant/UBPqqM50SFmqeKPJ/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/ai-novel-writing-assistant/UBPqqM50SFmqeKPJ/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/ai-novel-writing-assistant/UBPqqM50SFmqeKPJ/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/ai-novel-writing-assistant/UBPqqM50SFmqeKPJ/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/ai-novel-writing-assistant/UBPqqM50SFmqeKPJ/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/ai-novel-writing-assistant/UBPqqM50SFmqeKPJ/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Biz Novel Studio - Biz Novel Studio\">\u003cmeta data-mint-head property=\"og:description\" content=\"Open-source AI novel writing workbench: from a single spark of inspiration to a complete novel\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Biz Novel Studio\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://ai-novel-writing-assistant.mintlify.app/en\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://ai-novel-writing-assistant.mintlify.site/_mintlify/api/og/v2?division=Get+started\u0026amp;title=Biz+Novel+Studio\u0026amp;description=Open-source+AI+novel+writing+workbench%3A+from+a+single+spark+of+inspiration+to+a+complete+novel\u0026amp;theme=700e639a038127da6db8f4d5\u0026amp;signature=4d0d26946abf2c6d87bff667bb95e0f3527823e1f199d7994b368d6b5cdc369b\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Biz Novel Studio - Biz Novel Studio\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Open-source AI novel writing workbench: from a single spark of inspiration to a complete novel\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://ai-novel-writing-assistant.mintlify.site/_mintlify/api/og/v2?division=Get+started\u0026amp;title=Biz+Novel+Studio\u0026amp;description=Open-source+AI+novel+writing+workbench%3A+from+a+single+spark+of+inspiration+to+a+complete+novel\u0026amp;theme=700e639a038127da6db8f4d5\u0026amp;signature=4d0d26946abf2c6d87bff667bb95e0f3527823e1f199d7994b368d6b5cdc369b\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/ai-novel-writing-assistant/UBPqqM50SFmqeKPJ/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Biz Novel Studio\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#16A34A\">\u003cmeta data-mint-head name=\"og:locale\" content=\"zh_CN\">\u003cmeta data-mint-head name=\"author\" content=\"ExplosiveCoderflome\">\u003cmeta data-mint-head name=\"language\" content=\"zh-CN\">\u003cmeta data-mint-head name=\"theme-color\" content=\"#05080a\">\u003cmeta data-mint-head name=\"application-name\" content=\"Biz Novel Studio\">\u003clink data-mint-head rel=\"canonical\" href=\"https://ai-novel-writing-assistant.mintlify.app/en\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/en.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://ai-novel-writing-assistant.mintlify.app/en\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"zh-Hans\" href=\"https://ai-novel-writing-assistant.mintlify.app\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://ai-novel-writing-assistant.mintlify.app\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://ai-novel-writing-assistant.mintlify.app/#organization\",\"name\":\"Biz Novel Studio\",\"url\":\"https://ai-novel-writing-assistant.mintlify.app\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/ai-novel-writing-assistant/EPaSP-_4jKaBdGvV/images/logo.svg?fit=max\u0026auto=format\u0026n=EPaSP-_4jKaBdGvV\u0026q=85\u0026s=46d743075cfdc9207d8e72dddacb3816\"}},{\"@type\":\"WebSite\",\"@id\":\"https://ai-novel-writing-assistant.mintlify.app#website\",\"name\":\"Biz Novel Studio\",\"url\":\"https://ai-novel-writing-assistant.mintlify.app\",\"publisher\":{\"@id\":\"https://ai-novel-writing-assistant.mintlify.app/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://ai-novel-writing-assistant.mintlify.app/en#webpage\",\"url\":\"https://ai-novel-writing-assistant.mintlify.app/en\",\"name\":\"Biz Novel Studio\",\"description\":\"Open-source AI novel writing workbench: from a single spark of inspiration to a complete novel\",\"dateModified\":\"2026-11-13T14:54:28.090Z\",\"isPartOf\":{\"@id\":\"https://ai-novel-writing-assistant.mintlify.app#website\"},\"breadcrumb\":{\"@id\":\"https://ai-novel-writing-assistant.mintlify.app/en#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://ai-novel-writing-assistant.mintlify.app/en#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Biz Novel Studio\",\"item\":\"https://ai-novel-writing-assistant.mintlify.app\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Biz Novel Studio\",\"item\":\"https://ai-novel-writing-assistant.mintlify.app/en\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://ai-novel-writing-assistant.mintlify.app/en#article\",\"headline\":\"Biz Novel Studio\",\"name\":\"Biz Novel Studio\",\"description\":\"Open-source AI novel writing workbench: from a single spark of inspiration to a complete novel\",\"url\":\"https://ai-novel-writing-assistant.mintlify.app/en\",\"mainEntityOfPage\":{\"@id\":\"https://ai-novel-writing-assistant.mintlify.app/en#webpage\"},\"dateModified\":\"2026-11-13T14:54:28.090Z\",\"keywords\":\"AI novel, AI novel writing, AI novel writing workbench, open source, long novel, short story, Biz Novel Studio, AI-Novel-Writing-Assistant\",\"publisher\":{\"@id\":\"https://ai-novel-writing-assistant.mintlify.app/#organization\"},\"isPartOf\":{\"@id\":\"https://ai-novel-writing-assistant.mintlify.app#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Biz Novel Studio\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Biz Novel Studio\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/en.md","siteName":"Biz Novel Studio","nav":{"global":null,"languages":[{"language":"zh-Hans","default":true,"pages":[{"title":"zh-Hans","href":"/"}]},{"language":"en","groups":[{"group":"Get started","pages":[{"title":"Biz Novel Studio","sidebarTitle":"Home","mode":"custom","href":"/en"},{"title":"Biz Novel Studio · AI Novel Writing Workbench","description":"From a single spark of inspiration to a complete novel","href":"/en/introduction"},{"title":"Installation","href":"/en/installation"},{"title":"Onboarding","href":"/en/onboarding"},{"title":"Quick Start","href":"/en/quickstart"},{"title":"From Inspiration to Chapter: Creation Flow Overview","sidebarTitle":"Creation Flow Overview","icon":"diagram-project","href":"/en/creation-flow"},{"title":"Hands-on: Writing the First 10 Chapters","sidebarTitle":"Hands-on: First 10 Chapters","icon":"graduation-cap","href":"/en/first-ten-chapters"},{"title":"Model Configuration","href":"/en/model-configuration"},{"title":"System Settings","icon":"sliders","href":"/en/system-settings"}]},{"group":"Playbooks","pages":[{"title":"Your First Novel Walkthrough","sidebarTitle":"Your First Novel Walkthrough","icon":"route","href":"/en/guides/first-novel-walkthrough"},{"title":"Recovery by Phase","sidebarTitle":"Recovery by Phase","icon":"life-ring","href":"/en/guides/recovery-by-phase"}]},{"group":"Long and short fiction","pages":[{"title":"Novels \u0026 Starting a Book","icon":"book-open","href":"/en/features/novels"},{"title":"Title Workshop","sidebarTitle":"Title Workshop","icon":"heading","href":"/en/features/title-workshop"},{"title":"Outline Workbench","sidebarTitle":"Outline Workbench","icon":"list-tree","href":"/en/features/outline-workbench"},{"title":"Auto Director V1/V2","icon":"wand-magic-sparkles","href":"/en/features/auto-director"},{"title":"Director Follow-up","sidebarTitle":"Director Follow-up","icon":"clapperboard","href":"/en/features/director-follow-up"},{"title":"Short Story Creation","icon":"feather","href":"/en/features/short-story"},{"title":"AI Usage and Token Caching","icon":"chart-bar","href":"/en/features/token-usage"},{"title":"Run History","sidebarTitle":"Run History","icon":"list-check","href":"/en/features/task-center"}]},{"group":"Worlds, characters and style","pages":[{"title":"World Library","icon":"globe","href":"/en/features/world-library"},{"title":"Genre Library","sidebarTitle":"Genre Library","icon":"layer-group","href":"/en/features/genre-library"},{"title":"Progression Modes","sidebarTitle":"Progression Modes","icon":"forward","href":"/en/features/progression-modes"},{"title":"Character Library","icon":"users","href":"/en/features/character-library"},{"title":"Style Engine","icon":"pen-nib","href":"/en/features/style-engine"},{"title":"Anti-AI Rules","icon":"ban","href":"/en/features/anti-ai-rules"},{"title":"Prompt Management","sidebarTitle":"Prompt Management","icon":"terminal","href":"/en/features/prompt-management"}]},{"group":"Research and assistance","pages":[{"title":"Book Breakdown Workbench","sidebarTitle":"Book Breakdown Workbench","icon":"book-open","href":"/en/features/book-analysis"},{"title":"Trending Genre Radar","sidebarTitle":"Trending Genre Radar","icon":"satellite-dish","href":"/en/features/market-radar"},{"title":"Knowledge Base and RAG","sidebarTitle":"Knowledge Base and RAG","icon":"database","href":"/en/features/knowledge-base"},{"title":"Creative Hub","sidebarTitle":"Creative Hub","icon":"compass","href":"/en/features/creative-hub"}]},{"group":"Adaptations","pages":[{"title":"Comic Workbench","icon":"images","href":"/en/features/comic-workspace"},{"title":"Short Drama Workbench","icon":"film","href":"/en/features/short-drama-workspace"}]},{"group":"How it works","pages":[{"title":"Creative Production Pipeline","sidebarTitle":"Creative Production Pipeline","icon":"diagram-project","href":"/en/guides/production-pipeline"},{"title":"Chapter Execution","sidebarTitle":"Chapter Execution","icon":"arrows-spin","href":"/en/guides/chapter-execution"}]},{"group":"Developers","pages":[{"title":"Architecture \u0026 Source Code","icon":"sitemap","href":"/en/developers/architecture"},{"title":"Deployment Guide","sidebarTitle":"Deployment Guide","icon":"server","href":"/en/developers/deployment"},{"title":"Environment Variables","icon":"gear","href":"/en/developers/environment-variables"},{"title":"Contributing","icon":"code-pull-request","href":"/en/developers/contributing"}]},{"group":"Help","pages":[{"title":"Glossary","icon":"book","href":"/en/glossary"},{"title":"Frequently Asked Questions","href":"/en/faq"},{"title":"Troubleshooting","icon":"screwdriver-wrench","href":"/en/troubleshooting"},{"title":"Changelog","sidebarTitle":"Changelog","icon":"clock-rotate-left","href":"/en/changelog"},{"title":"Roadmap","sidebarTitle":"Roadmap","icon":"map","href":"/en/roadmap"}]}]}]},"basePath":"","title":"Biz Novel Studio - Biz Novel Studio","buildId":"dpl_5tKr6cUUeuVJdEZ9JAEY3h4soMJ8","deploymentId":"dpl_5tKr6cUUeuVJdEZ9JAEY3h4soMJ8","dynamics":[],"chunks":[]}