---
name: question-scan
description: Turn one decision into numbered dimensions, scan them in order, then resolve with a readable decision balloon. Creates editable HTML/GSAP/HyperFrames video projects.
version: 1.0.2
category: video
delivery: download-only
---

# Question Scan

Use for a compact explanation where inspecting each dimension makes a follow-up decision meaningful. This is a parameterized diagram renderer, not automatic research or arbitrary film generation.

Read `references/directing.md` and `references/input.md`. Author accurate, distinct labels; do not manufacture savings, visitor statistics, or other factual claims. Keep one coherent decision per film. Defaults are 1920×1080, 30 fps, 7.2 seconds, silent.

1. Write a JSON object with `prompt`, `facets` (1–6 short strings), and `decision`. Follow the character budgets in the input reference.
2. Generate an editable project:
   ```sh
   node scripts/create.mjs --data /absolute/input.json --out /absolute/project --style linen-gold
   ```
3. Inspect and encode using Node.js 22+, local Chromium, FFmpeg, and HyperFrames 0.8.30 (first install may require network):
   ```sh
   npx --yes hyperframes@0.8.30 inspect /absolute/project --json
   npx --yes hyperframes@0.8.30 render /absolute/project --output /absolute/video.mp4 --fps 30 --quality high --strict
   ```
4. Review the actual MP4 at 1× and native resolution. Sample the moving outline every 0.1 seconds through its traversals; inspect before/after the final balloon. Check text bounds, final reading hold, image alpha edges, and reverse seeking. Build/render success is not visual acceptance.

Styles: `linen-gold`, `forest-mint`, `clay-coral`, `slate-silver` (cool slate and silver). All keep identical timing. Dark styles have sparse vertical paper grain. Semantic `--overrides colors.json` keys: `bg`, `ink`, `muted`, `accent`, `rule`, values `#RRGGBB`. Ink/background contrast must be ≥7; muted/background ≥4.5. Accent is reserved in this shot.

Chinese is detected automatically and uses bundled Smiley Sans, with Noto Sans SC fallback. Use `--zh-font noto-sans-sc` for a plainer face, or `--font /absolute/font.woff2` for a licensed local override. The custom file is copied into the project. Verify its glyph coverage yourself.

A geometric raster character is bundled under CC0;  Replace it with `--images /absolute/images.json`, containing `{"thinking-character":"./licensed-character.png"}`. Relative paths resolve beside that JSON. PNG, JPEG, WebP bytes are validated; missing replacements fail. Preserve photographic/raster imagery as imagery. New media generation is a separate, cost-authorized task. Do not replace an unavailable image with a CSS mock and call it equivalent.

The generated `index.html`, `content.json`, `build.json`, assets, and HyperFrames metadata form the editable project. Its timeline is `window.__timelines['question-scan']`; `window.seek(seconds)` clamps to [0,7.2]. Open `index.html?play` for one native-speed HTML playthrough. No presenter video or audio is required for this effect. This scene does not consume presenter media.

See `references/runtime.md` for reused resources and limitations. Do not ship topic-specific finished media in the generic package. No external account, API key, or paid generation is needed.

A geometric illustration is bundled. To replace it, pass `--images /absolute/images.json` containing `{"thinking-character":"/absolute/illustration.png"}`.

Human CLI diagnostics default to English. Add `--lang zh-CN` (`zh` is an alias) for Chinese diagnostics; unsupported locales use English. JSON keys, tool flags and paths remain stable.
