Constructivist Montage — our demo

One example among many. Don't reuse its story, arc, shots, props or timings.

Demo: 410 Days (410 天, 60.0 s) · kino-montage.mp4 · subtitles kino-montage.srt · source in demo/

The Empire State Building went from first steel (17 March 1930) to opening day (1 May 1931) in 410 days. Its own 1931 brochure has a column headed "The Men Who Did the Job" that lists owners, directors and contractors. The film asks that heading as a question and answers it with the construction film and Lewis Hine's photographs: 2,500 men a day, up to about 4,000.

It is an unofficial film made entirely from public archives and real documents: a 1930–31 construction film by the steel fabricator (American Bridge Company / U.S. Steel, Empires of Steel), three Lewis Hine photographs (U.S. National Archives; The Metropolitan Museum of Art, CC0), and the 1931 brochure What Everybody Wants to Know About Empire State (Columbia University Libraries). It is not affiliated with or endorsed by the building or any company named in it. Every fact is sourced in demo/FACTS.md, every asset in demo/CREDITS and demo/SOURCES.md.

Story & structure

Shape: a document asks, the footage answers; the turn sits in the middle.

Why it fits the style: the material is all evidence and the argument is made by editing: a document's heading collides with the footage it leaves out (A + B → idea), the counts are driven by cuts, and the signature shot builds the structure out of the people who built it.

Shots

Times in seconds (120 BPM: beat 0.5, bar 2.0).

# Time Format Picture Native move / note
1 0.00–5.00 title package red girder slams on 0; a window cut to the girder's edge: rider on the beam (0.25), boom (2.0), climber (3.0), derrick top (4.0); "410" stamped digit by digit, "天" red, "410 DAYS"; "帝國大廈 · 紐約 1930–1931" on the girder strong action in the first 0.25 s; title held 4 s
2 4.75–8.25 map + lower third red wipe; the brochure map pushes toward the site; red marker circle (5.5); lower third "第五大道 33–34 街" document as map
3 8.25–8.75 iris the red circle becomes an aperture onto the site from above transition inside the medium
4 8.75–11.50 vertical title, date on a girder grillage guided onto its footing in a tall window; "第一根鋼" stacked; "1930.3.17" on a red band; day counter "第 0 天" type as structure
5 11.50–14.50 grid 3 × 3 windows light every sixteenth in a spiral, the centre counts to 9 and lights red; "九臺吊車 NINE DERRICKS" counting by cuts
6 14.50–16.00 split strips three strips of two panels on the −18° axis, one panel changes per beat machine rhythm
7 16.00–18.50 freeze + annotation flash, freeze on a column section going up, red ellipse, leader, "44 噸 / 44 TONS EACH"; jump-in at 17.25; the film keeps running in a red-framed inset freeze-frame format
8 18.25–23.25 document close-up red wipe; the statistics page, red marker over "Four and one-half stories of steel were erected every week"; red block "每週 4½ 層"; a tall slot of the facade rushing past the document is marked, not quoted
9 23.25–28.00 process staircase truck with steel → floor beam on the derrick → men bolting a column, red arrows; counter 0 → 80 小時; the brochure's own sentence strip, marked whistle J-cut at 23.0
10 28.00–29.50 the question ink ground; "THE MEN WHO DID THE JOB" (heading only), red ellipse; a red "?" slams at 29.0 music stops (near-silence)
11 29.50–31.50 acceleration + count 0.5 → 0.25 → 0.125 s cuts of workers (film and Hine), tilted windows, red / ink grounds alternating; four-digit counter with its unit "人 MEN" jumping rivet-gun recording alone, J-cut at 29.05
12 31.50–35.50 multiple exposure steel field from above, high workers in screen, two Hine cut-outs in multiply; "每天 2,500 人" / "最多一天約 4,000 人" the answer
13 35.25–43.25 chart from the document red wipe; the page turns a quarter; the four outlines lift off and stand on one line to scale (36.25 / 36.625 / 37.0 / 37.375), dimension lines and numbers; held 37.4–40.0; verdict "世界最高" (40.0); push into the red Empire State outline comparison held ≥ 2.5 s before the verdict
14 43.25–48.25 photomontage tower (signature) ten floors in a run (43.3–44.2) while the counter climbs 0 → 86; the count rests on 86 while "1930.9.15 鋼架 86 層" and "第 182 天" are up (44.25–47.2) and the camera climbs slowly; six more floors (47.2–47.6), 86 → 102; mooring-mast steel with flag as the crown (47.65); Hine's Icarus on top (48.0) people build the structure; number and caption never disagree
15 48.25–48.75 silence beat ink, one red rivet true silence
16 48.75–56.00 result composition the finished tower in a slanted window (camera tilts up it), Icarus in a tilted frame, red wedge; "410 天", "102 層", "1931.5.1 開放 · 比計劃提前近一個月"; "410" restamped on red at 53.6 heaviest hit at 48.75
17 56.00–60.00 end card see below held 4 s

Narration (Kokoro am_michael, eleven short lines) and bilingual subtitles: 5.15, 8.9, 12.75, 16.4, 19.4, 23.6, 28.2, 32.0, 37.6, 49.0, 53.6 s (VO in index.html; cues exported from the same table).

Score structure

Palette & props

Red #D52B1E, ink #141210, paper #EDE4D0; axis −18°, wipe band 72°. Type: Noto Sans SC 900 / 700, Oswald 500–700, Space Mono for tags (all OFL, in demo/fonts/). Props are only documents (the brochure's map, statistics page, scale drawing, heading, chronology strip), film windows, Hine cut-outs and red / ink geometry.

End card

Paper ground; "410 天" / "410 DAYS"; a red rule; "構成主義蒙太奇 / CONSTRUCTIVIST MONTAGE"; "LemoLab × Claude Opus 5.5"; five credit lines (the film, the photographs, the document, the CC BY rivet recording with author, title and licence, and "Unofficial film from public archives · fonts OFL · samples CC0"); a still of the rider and the returning red girder. Held 4 s. The "LemoLab × Claude Opus 5.5" sign-off belongs to this library demo only; a user's film carries no LemoLab credit and no copy of this card.

Build notes

demo/
  index.html          the page: scenes S1–S12, VO table, subtitles, EV (sound cues), TEXTS (readcheck)
  tools/prep.py       print grade; clips → 24 fps JPEG sequences; stills; brochure pages and outline keying; cut-outs
  tools/fonts.py      fetch OFL fonts, subset Noto Sans SC       tools/cues.mjs   subtitle cues from the page, one-line check
  tools/fetch_sources.sh  download raw/ from SOURCES.jsonl       tools/kit_env.sh  python with onnxruntime + u2net model
  tools/footage.py    search / fetch / record archive material   tools/cq.py      Commons queries
  tools/final_asr.py  speech check on the final mix              tools/rhythm_report.py  flat windows, cuts, hit alignment
  audio/lines.json    narration (Kokoro)                         audio/mix.py     score, foley, voice, ambience, master
  FACTS.md · CREDITS · SOURCES.md / SOURCES.jsonl · stills/styleframe.jpg
  1. sh demo/build.sh (library set up with setup.sh deps voice music): downloads the sources (~95 MB) and fonts, makes a python with onnxruntime and the u2net_human_seg model if needed, prepares the footage (~2 min), voices and checks every line, runs the reading check, exports events and cues, renders 1,440 frames, mixes, writes the subtitles, masters to −14 LUFS (grain 4), writes the poster (51.0 s), the styleframe (2.5 s) and a 1280-wide small copy, then runs the rhythm report and the speech check on the final mix.
  2. Footage windows never show the 704-pixel film source above 2.5×: full-frame shots of the film are avoided on purpose (windows, panels, an iris that opens onto a 1,760 px image on ink).

Pitfalls: place the title's bilingual line from the girder band's centre line, or it runs off the girder's left end; split the strips into two panels rather than stretch one clip across 2,300 px (3.3× the source); window the iris and the multiple exposure instead of filling the whole frame from the 704 px film; set the answer block in ink, not red on the red exposure ground; put the verdict in a block in the empty corner after the hold, not on a band across the chart, where it covers two of the compared numbers; hold the freeze 2.5 s with a jump-in and a live inset, not 3 s with almost no motion; put the 80-hours English line on a paper tab above the dark window, not under it; keep the tower's counter on 86 while the dated line saying 86 is up (number and caption never disagree); give the people counter a unit ("人 MEN"); don't hold the result 7 s nearly still: tilt up the tower and restamp "410" on the last line; fade a hit at sample 0 in over 25 ms, or it overshoots the AAC encode to +3 dBTP.