# Collage Beat Desk > Turn one topic into a narrated paper-collage explainer. A free browser-side validator for the > beats.json the whole film is assembled from, plus five lanes: the narrative arc and beat map, > the file itself, the poster prompt, the motion prompt, and a file audit. URL: https://collage-beat-desk.skillsafe.ai/ ## What this is A web app for planning paper-collage explainer video. It does not generate images, video or audio, and it runs no assembly pipeline. It writes the beat map, the beats.json and the prompts you take to a generator yourself. Not affiliated with or endorsed by Alisa0808, Vox Media, or any collage artist named upstream. ## The free part The validator needs no account, spends no credits, and runs entirely in your browser. Paste a beats.json and it reports: - **Values outside a closed vocabulary** - the arc, hook, shot size, camera move, ending, aspect ratio, motion style and mode are all closed sets. A value outside one is a file the assembler cannot read. - **Banned camera moves.** Ten of them: orbit, arc, crane, boom, pedestal, dolly_zoom, roll, whip_pan, handheld, fast_zoom. Each reads as 3D and tears flat paper art. - **A hook that does not land in three seconds.** About 65% of viewers decide by then. Note the shot floor is also three seconds, so a hook shot is exactly 3.0s - the only value satisfying both. - **Adjacent beats sharing a camera move**, and the whole-film version of the same failure. This is the single biggest quality lever, and the upstream skill records its own miss: a sixty-second film whose twelve shots were all push-in. - **Shots outside the 3-6s band**, a shot past the ~7s hard ceiling, and a static poster held beyond 8s. - **Element motion that breaks rigid paper** - morph, warp, melt - and words the video model over-reacts to, which warp the baked headline first. - **Beat count and voice-over word count** against the 30s and 60s presets. The voice-over sets the real runtime. - **The headline showing more than once per beat**, and C-roll missing its anchor photo, subject kind, wardrobe lock or product description. - **Invalid JSON**, which it says first and stops on - nothing else is knowable until it parses. ## The narrative arc library | Arc | When to use | Beat shape | | --- | --- | --- | | `hook_payoff` | default for any single idea; safest | Hook -> Context -> Build -> Payoff -> Button | | `pas` | pain-aware ads, urgency | Problem -> Agitate -> Solve -> Proof -> CTA | | `bab` | when the after sells better than the pain | Before -> After -> Bridge -> CTA | | `aida` | cold-audience paid ads | Attention -> Interest -> Desire -> Action | | `storybrand` | brand or service, customer as hero | Hero wants -> Problem -> Guide -> Plan -> CTA -> Stakes | | `how_it_works` | product, process or system explainer | Hook -> What it is -> Step -> Step -> Benefit -> CTA | | `timeline` | history, evolution of, journeys | Start -> Event -> Event -> Turning point -> Present -> Takeaway | | `man_in_hole` | case study, comeback, transformation - highest rated | OK -> Fall -> Deepen -> Climb out -> Better than before | | `story_spine` | mission, brand or founder tales | Once -> Every day -> Until one day -> Because -> Until finally -> Ever since | | `origin` | founder, why we exist | World -> Spark -> Leap -> Struggle -> Breakthrough -> Today | | `myth_buster` | correct a misconception | Fact first -> The myth -> Expose fallacy -> What to believe -> CTA | | `listicle` | tips, tools, rankings - N ways to | Promise -> Item -> Item -> #1 -> Recap or CTA | | `three_act` | any narrative 60s piece | Setup -> Confrontation -> Resolution | | `story_circle` | character-driven UGC or brand | You -> Need -> Go -> Search -> Find -> Take -> Return -> Change | ## The flat-safe camera vocabulary | Move | Family | Job | | --- | --- | --- | | `static` | static | let a stat or quote land | | `push_in` | scale | tension, focus | | `pull_out` | scale | reveal, the big picture | | `pan` | translate | read a list or timeline | | `tilt` | translate | reveal scale, countdown | | `parallax` | layer | the living-paper signature | | `element` | element | introduce or emphasise one item | **Banned outright**: `orbit`, `arc`, `crane`, `boom`, `pedestal`, `dolly_zoom`, `roll`, `whip_pan`, `handheld`, `fast_zoom`. ## The firm presets | Duration | Beats | Beat length | Voice-over words | | --- | --- | --- | --- | | **30s** | 6-8 | ~4-5s | ~70-80 | | **60s** | 10-12 | ~5-6s | ~130-150 | Shots run 3-6s and never exceed about 7s. A static poster is never held beyond 8s. The hook lands within 3 seconds. ## The closed vocabularies ``` ARCS: hook_payoff pas bab aida storybrand how_it_works timeline man_in_hole story_spine origin myth_buster listicle three_act story_circle HOOKS: mistake_callout pain_point surprising_stat direct_question urgent_warning secret_reveal experiment_story pattern_interrupt outcome_tease SIZES: EST_WIDE WIDE MEDIUM CLOSE DETAIL MOVES: static push_in pull_out pan tilt parallax element BANNED: orbit arc crane boom pedestal dolly_zoom roll whip_pan handheld fast_zoom ENDINGS: hard_cut quick_cta loop_close ASPECTS: 16:9 9:16 1:1 3:4 ``` ## The five lanes | Lane | `task` | What it produces | | --- | --- | --- | | Arc and beat map | `arc` | The chosen arc with its runner-up, a beat map, the hook, the rhythm plan | | beats.json | `beats` | The config table and the complete validated file | | Poster prompt | `poster` | The poster plan, the image prompt naming the collage technique, defect guards | | Motion prompt | `motion` | The motion plan, the animation prompt, the flatness check | | File audit | `audit` | A verdict, evidence-bearing findings, the rhythm fix and a repaired file | ## Sources Lanes are derived from https://github.com/Alisa0808/vox-director (MIT): its SKILL.md workflow and beats schema, references/beat-layer.md (arcs, hook and pacing presets, shot patterns, anti-monotony) and references/prompt-guide.md (image and video prompt structures). ## API Full docs with worked examples in eight languages: https://collage-beat-desk.skillsafe.ai/api.html Base URL `https://api.skillsafe.ai/v1/app-api`. Bearer token from https://collage-beat-desk.skillsafe.ai/tokens.html. Every run body must carry a `task` field naming the lane; the body **is** the input object and must not be wrapped in `{"input": ...}`. `GET /me` and `POST /estimate` are free; `POST /run` and `POST /run-stream` are metered. ## Pricing Runs are metered and priced per model - `gpt-5.6-luna`, `gpt-5.6-terra` (default) or `gpt-5.6-sol`. `POST /estimate` returns the worst-case reservation for free before anything is spent. The validator and every lane worked example cost nothing.