Viral Recipe Lab · Episode 03

How to make viral 3D reconstruction videos with AI

A brand-new channel posted one video and got almost three million views in six days. No camera, no image generator: every scene is 3D, written as code. We rebuilt the method on the same story, with our own research.

2.95Mviews in 6 days, 1 video
7 smedian shot, 4 in 10 move
145words per minute, calm
This video has audio in more languages: Settings (gear) → Audio track → your language Show ▾
The recipe card

The four ingredients

We measured the original frame by frame instead of guessing: every number below comes from the video itself or its channel.

Dossier

Before writing, an AI with web search builds a timeline where every fact is tagged confirmed (official or measured), reported (outlet citing unnamed sources) or claimed (a named person), with a source and a date.

Sourced script

Plain sentence = confirmed, outlet + reports = reported, person + says = claimed. Where sources disagree, the script says so. The suspect is never named; he is presumed innocent.

Clay 3D

White clay mannequins, a simple cabin and cockpit, one blue accent, labels pinned to figures, plus maps, altitude charts, instrument screens and quote cards. About 7 seconds per shot.

Speed

The original was published three days after the event. Fast is powerful, but the comments are full of corrections: date every claim and update in public.

The sample we made

flydubai FZ1073: the cold open, reconstructed

21 scenes written as code, 108 seconds. Facts as of 9 October 2026, every line tagged confirmed, reported or claimed; positions and some details are illustrative.

Sample image 1 Sample image 2 Sample image 3 Sample image 4 Sample image 5 Sample image 6
Step by step

From topic to finished video

  1. Build the dossier

    Paste file 1 into an AI that can search the web and name the event. Read the disputed list before you write a word.

  2. Write the script

    Paste file 2 in the same chat. Check every line against the dossier; in our sample, 5 lines needed fixing and 2 placeholders needed real sources.

  3. Make a scene

    Paste file 3 with one line of the script. Save the HTML file and open it in Chrome (or preview it in the chat).

  4. Adjust in plain words

    Slower camera, a different seat, a new label: ask, and open the file again.

  5. Record

    Press Record: the browser saves the scene as a video. Real time, so close other apps and keep the tab in front.

  6. Data scenes

    Maps, altitude charts and quote cards: same prompt, a flat 2D scene instead of 3D.

  7. Voice and music

    A calm voice at about 145 words per minute; a low, tense underscore with no drums.

  8. Assemble

    Voice on the timeline, one scene under each line, cut to the line, no transitions. Level 2: automate every step with Claude Code.

Free prompt files

Copy them or download them

Paste file 1 into an AI chat that can search the web and name the event. Paste file 2 in the same chat for the script, then file 3 with one script line to get a 3D scene.

File 1

Investigator dossier prompt

Turns an AI that can search the web into a research desk: timeline, people, wording ladder, disputed points, every fact tiered and sourced.

# System Prompt: Incident Investigator (source-graded dossier)
Paste everything below into an AI chat that can search the web (Claude, ChatGPT, Gemini, Perplexity).
Then send the incident: what, where, when.
---
You are a research desk for a documentary channel that reconstructs real events second by second.
Your job is NOT to write the story. Your job is to build a dossier that a scriptwriter can trust.
## Rules
- Search widely: official statements (authorities, airline/company, regulators, courts), wire agencies (AP,
  Reuters, AFP), quality outlets, specialist sites, and measured data (tracking, sensors, public records).
- Every fact gets a TIER:
  - CONFIRMED: an official statement or measured data.
  - REPORTED: an outlet citing unnamed sources.
  - CLAIMED: a named person says it (witness, official, politician).
- Every fact gets a SOURCE: outlet, title, date, link. No source = do not include it.
- Never invent. If you cannot find it, write "not found".
- People: do not name a suspect unless an authority has officially named them. Use roles ("the first officer").
- Quotes: max 15 words each, always attributed with date.
- Write times in UTC and local time.
## Output
1. TIMELINE table: time (UTC / local) | what happened | tier | source.
2. KEY FACTS: vehicle/place, people on board or present, numbers (with every version if sources differ).
3. PEOPLE: roles, what each did, their own short quotes.
4. OFFICIAL WORDING LADDER: how each authority describes it, mildest to strongest, with dates.
5. DISPUTED: every point where sources disagree, side by side.
6. NOT YET KNOWN: what has not been published (recordings, reports, charges).
7. LATEST STATUS: the newest official position and its date.
File 2

Reconstruction scriptwriter

Writes the narration from the dossier only, with the sourcing grammar and 8 sections. Leaves placeholders instead of inventing facts.

# System Prompt: Second-by-Second Reconstruction Scriptwriter
Paste this into the same chat after the dossier is done (or attach the dossier). Then say the length in minutes.
---
You write narration for a 3D reconstruction documentary. You may ONLY use facts from the dossier. The visuals
are clean white 3D scenes with labels, maps, data screens and quote cards, so every line must be easy to show.
## Voice
- Calm, precise, present tense for the event, past tense for context. Never sensational.
- About 145 words per minute (a little faster in the event itself, slower when explaining).
- Mix long setup sentences with 2-5 word punches ("The plane drops." "Nobody has died.").
## Sourcing grammar (this is the format)
- CONFIRMED facts: plain statements ("Tracking data shows the aircraft falling...").
- REPORTED facts: outlet + verb ("The Times of Israel reports...", "citing officials who were not named").
- CLAIMED facts: person + says ("The captain says...", "Passengers later said...").
- When sources disagree, say so in one line ("Accounts differ on who opened the door.").
- Say what is not known ("No recording has been released.").
- Never name a suspect an authority has not named. Say once, near the end: "Until a court decides, he is
  presumed innocent." Put strong labels ("terrorist", "hijacker") only in the mouth of the official who used them.
## Structure (share of runtime)
1. COLD OPEN (12%): start on hard numbers (altitude, place, people on board). One named ordinary person with a
   seat and a family. Instrument data vs what people felt. "The answer is behind this door." A short quote from
   the person who suffered most (you will reuse it as the last line). A list of 4-5 surprising details as a tease.
   Two open questions. Then a 3-sentence sourcing promise: what you built this from, where sources disagree.
2. THE SETUP (15%): date once, times, vehicle, headcount; plant 2-3 details the viewer must remember.
3. THE EVENT (12%): "Nobody outside saw this, so what follows is built from..."; the clock; short sentences.
4. THE RESCUE (13%): what the first people through the door say they saw; pay off the planted details.
5. FROM OUTSIDE (10%): how it looked to the world (codes, radar, officials).
6. LANDING (9%): plain release ("Nobody has died."), damage, then the question: why?
7. THE WHY (20%): the wording ladder, each claim with its source and date, what is still unknown.
8. LAST WORDS (9%): the survivor's own words, the people who helped, end on the opening quote.
## Output
A table, one row per sentence: | # | Line (narration) | Tier (C/R/CL/-) | Source | Scene idea |
Scene ideas use: AISLE (cabin, camera moving), COCKPIT, EXTERIOR (aircraft in the sky), MAP (route), CHART
(altitude/speed), SCREEN (instrument display with live numbers), QUOTE (card + source), CARD (big text), CUTAWAY
(cross-section with labels).
File 3

Scene to three.js

Turns one script line into a single HTML file: clay 3D scene, camera move, labels in the canvas, and a Record button that saves a video.

# Prompt: Turn a scene idea into a 3D reconstruction video (HTML + three.js)
Paste this with ONE row of your script table. The AI writes a single HTML file. Preview it in the chat (Claude
artifacts, ChatGPT canvas) or save it as scene.html and open it in Chrome. Press "Record" and the browser
downloads the scene as a video file. No 3D software, no installs.
---
Write ONE self-contained HTML file that renders this scene with three.js (import it as an ES module from
https://cdn.jsdelivr.net/npm/three@0.160.0/build/three.module.js). Canvas 1920x1080 (16:9), scaled to fit the window.
## Locked look (use it in every scene)
- Clay style: every object matte white/light grey (MeshStandardMaterial, roughness 0.9), soft shadows,
  a hemisphere light plus one sun light, light grey background and fog.
- People are simple mannequins: sphere head, capsule body, arms and legs. No faces, no details.
- ONE accent colour (soft blue #8fb0e8) only for the person or object this line is about.
- Text: a small "RECONSTRUCTION" tag top right; labels pinned to 3D objects (name + role); a caption bottom left
  (place + time); the word "illustration" where details are unknown. DRAW ALL TEXT INTO THE CANVAS (a second 2D
  canvas composited on top, or sprites), never as HTML elements, so it ends up in the recorded video.
## Camera and time
- ONE camera move per scene: slow push-in, dolly along a path, orbit, or reveal (pull back). Ease in and out.
- Everything is a function of a time t in seconds (no random values, no real clock), so the same t always gives
  the same frame.
## Record button
- Add a "Record" button (hidden while recording). It restarts the scene at t = 0, plays it once in real time
  (t = seconds since Record was pressed), captures the canvas with canvas.captureStream(30) + MediaRecorder
  at 12 Mbps, stops at the end and downloads the file. Use "video/mp4" if MediaRecorder.isTypeSupported says
  yes (easier to import in editors), otherwise "video/webm". Also a "Play" button for a preview.
  Keep the tab in front and close heavy apps while recording (the browser drops frames when the PC is busy).
## Build only what the line needs
Aircraft cabin = rows of simple seats + seated mannequins + curved wall with windows. Cockpit = panel with
screens, two seats, two control columns, a door behind. Exterior = fuselage cylinder, swept wings, tail fin.
Data screens / maps / charts = draw on a canvas texture or a flat 2D canvas and update the numbers with t.
## Output
The full HTML file only, then one line: the camera move and the duration in seconds.
Before you publish

Three mistakes that kill these videos

Mistake 1

Trusting first reports

Breaking news changes every day. Date every claim and update in public.

Mistake 2

Accusing people

Never name a suspect an authority hasn't named. Strong words stay with the officials who said them.

Mistake 3

Inventing details

3D makes guessing easy. If you don't know where someone sat, label it illustration.

What I used

Any tool works: Claude, ChatGPT or Gemini for the dossier, script and scenes; any text-to-speech voice; CapCut or any editor for the assembly.