Example site: AI Era Immersive Site - source in examples/ai-era-immersive-site/
cinematic-site-builder is a Codex plugin for generating 1-3 page Lusion-like cinematic frontends. It packages the agent workflow, Vite/Three.js project template, scroll-driven runtime, scene preset library, starter configs, and validation scripts in one installable plugin.
Status: alpha / developer preview. The plugin is useful for generating and validating cinematic WebGL sites, but real-world subject realism still depends on the assets available for a brief. A generated landmark site may use a real .glb/.gltf, reconstructed 3D asset, HD/Canva 2.5D layers, or a procedural approximation; the final delivery should say which path was used.
Source code, configuration examples, scripts, and documentation are MIT-licensed unless otherwise noted. See LICENSE.
Third-party runtime dependencies and vendored files keep their own licenses. See THIRD_PARTY_LICENSES.md.
Media assets are not automatically covered by the MIT code license. The Wuhan/Yellow Crane Tower demo includes a Creative Commons Attribution-ShareAlike 3.0 photo from Wikimedia Commons; keep the attribution in ATTRIBUTION.md and the generated template's public/media/ATTRIBUTION.md.
The core architecture is:
content config -> fixed stage -> progress state machine -> layered renderers -> verifiable fallbackUse this plugin when the goal is not a normal section-based landing page, but a scroll-driven visual narrative where DOM copy, Canvas fallback, and WebGL/Three.js visuals all derive from one progress: 0 -> 1 state.
For real places, landmarks, products, vehicles, venues, and objects, the plugin uses a real-subject-3d-pipeline: real .glb / .gltf model first, reconstructed 3D asset second, HD/Canva 2.5D image-depth layers third, and procedural reconstruction only as the explicit fallback.
See INSTALL.md for the step-by-step local plugin configuration, generated-site workflow, and troubleshooting notes.
See GITHUB_PUBLISH.md for the first public GitHub repository setup, push commands, repository topics, and release notes.
Install or expose the plugin folder to Codex as a local plugin:
cinematic-site-builder/
.codex-plugin/plugin.json
skills/cinematic-site-builder/SKILL.md
assets/templates/vanilla-three-vite/
assets/starter-configs/For local development, point your Codex plugin configuration at the repository root:
{
"plugins": [
{
"name": "cinematic-site-builder",
"source": {
"source": "local",
"path": "/absolute/path/to/cinematic-site-builder"
}
}
]
}After installation, users can ask Codex:
Use cinematic-site-builder to create a Lusion-like 2-page animated site for an AI product.Codex should then use the bundled skill, scaffold a project, adapt site.config.js, compose presets, run validation, and inspect screenshots before final delivery.
From skills/cinematic-site-builder/, use Node when available:
node scripts/init-cinematic-site.mjs --name fluxframe-site --out <workspace> --starter lusion-labIf Node is blocked or unavailable, use the Python fallback:
python scripts/init-cinematic-site.py --name fluxframe-site --out <workspace> --starter lusion-labAvailable starters:
ai-productcreative-studioproduct-launchstudio-caselusion-labwuhan-landmark
Inside the generated project:
npm install
npm run validate:config
npm run test:logic
npm run build:smoke
npm run serve:smoke
npm run visual:smoke
npm run devWhen npm or Playwright is unavailable, use the plugin-side validator:
python scripts/validate-cinematic-site.py --project <generated-project>To attach user-provided images or videos to a generated project:
python scripts/import-cinematic-media.py --project <generated-project> --assets hero-loop.mp4 --chapter hero --as video
python scripts/import-cinematic-media.py --project <generated-project> --assets hero-poster.webp --chapter hero --as poster
python scripts/import-cinematic-media.py --project <generated-project> --assets screen-a.png screen-b.png --chapter media --as media --replaceFor plugin maintenance or release-quality checks, run:
python scripts/audit-cinematic-quality.py --plugin <plugin-root> --project <generated-project>This checks the plugin manifest, README, starter configs, template quality guardrails, generated project contract, and any available visual smoke artifacts.
From the repository root, the release audit is:
python skills/cinematic-site-builder/scripts/audit-cinematic-quality.py --plugin .The GitHub Actions workflow in .github/workflows/release-check.yml runs the plugin audit plus the template config/tests/build smoke checks.
Before calling a generated site ready, Codex should verify:
- WebGL path sets
body[data-render-mode="webgl"]. ai-era-spheregives every generated site an immediately visible, animated, mouse-zoomable 3D hero object.researched-3d-subjectturns searched real-world subjects into a primary interactive 3D hero; it usesscene.modelUrlfor real.glb/.gltfassets,scene.realismImages/scene.canvaAssetsfor high-resolution image rotator layers, and a procedural reconstruction fallback when no model is available.- Real-subject pages must include
scene.subjectPipelinewithid: "real-subject-3d-pipeline"and a selected strategy so the final delivery can state whether it used a real model, reconstructed 3D, HD/Canva 2.5D layers, or procedural fallback. - Public examples must keep
ATTRIBUTION.mdor an equivalent source/license record for every committed media or model asset. - Fallback path works with
?fallback=1. - Desktop screenshots are not blank and do not hide the active chapter copy.
- Mobile fallback keeps title, body, nav, and progress visible without clipping.
- The stage keeps the progress-driven
film-layerenabled for vignette, scanline, light sweep, and subtle color separation. - Runtime zoom supports primary-button vertical drag and
Shift + wheelfor pulling into the main 3D effect. - Real-world briefs must include source-backed
scene.subject.visualCues,scene.references, and a clear note when the render is an approximate reconstruction instead of a captured model. - Canva-exported or photo-edited assets should be 2x/4k PNG/WebP files under
public/media/canva/, referenced fromscene.realismImagesorscene.canvaAssets.exports, and verified in WebGL screenshots. Setscene.photoFollowModel: truewhen the first real photo/cutout should inherit the main subject's 3D rotation, pull-in distance, and pointer parallax. video-compositesupports realmp4/webmsources with poster fallback and WebGL shader treatment.depth-compositesupports real media paths inscene.mediaand ships with default public interface SVGs.- Chapter ranges, page count, scene presets, and package scripts pass validation.
- Plugin maintenance passes
audit-cinematic-quality.pybefore distribution. - The final answer reports validations that passed and any skipped checks with reasons.
The first-class delivery form is a Codex plugin. MCP can be added later for remote scene libraries, asset search, shader catalogs, or screenshot scoring, but the core workflow should remain local and installable so users can generate and iterate sites without operating an extra service.