Ajiang
← Back to the toolbox
FIELD NOTES / MODELDIAL 04Claude Code × ajiang-koubo-broll

One narration in,
a full 4K picture layer out.

This is episode 4 of the ModelDial challenge: eight models, six Sokoban puzzles. For the 6:55 narration I handed the whole picture layer to Claude Code. It led a group of subagents and used my open-source Skill, ajiang-koubo-broll, to build, review and render it.

In order: what I handed over, how the pipeline runs, why chapter one took four versions, how more than a dozen agents split the work, and what I won't have to say next time. The open-source projects behind it are credited at the end.

Codex CLI illustration: an amber film strip and a paper strip printed with a waveform lie side by side on warm stone, beside the words The picture follows the voice.
HEADER BY CODEX CLI · ILLUSTRATIONWatch the result ↓

The episode:
eight AIs play Sokoban.

Eight models took the same six Sokoban puzzles, and one failed all six for a flat zero. The video is titled 我让8个AI玩推箱子,有个拿了0分,还怪题目无解? (I had 8 AIs play Sokoban. One scored zero, then blamed the puzzle for having no solution?).

16:9 cover: 8大AI推箱子 / 有个AI / 直接0分! over a row of eight model logos, a figure pushing a crate into a corner under a red cross, and me on the right, hand on chin
16:9 · 1664 × 936
4:3 cover: the same text and eight logos, portrait on the right
4:3 · 1448 × 1086
3:4 cover: logos in two columns, portrait at the lower right
3:4 · 1086 × 1448

The cover was generated with the built-in image_gen tool, each ratio, 3:4, 4:3 and 16:9, composed separately. It reads 8大AI推箱子 / 有个AI / 直接0分! (8 AIs play Sokoban / one AI / scored zero!). Version two followed my note: 'The zero belongs to one of the AIs. The cover can't let people think none of them passed.'

The one in use is version three, after an independent review (AGY) whose suggestions I took: the bottom is now a deadlock, a figure pushing a crate into a corner under a single red cross; the eight logos are an unscored line-up that doesn't say who got zero; GLM uses the Z mark from its official site.

ONE INPUT, ONE PICTURE LAYER

Give it one narration; get back a full 4K picture layer.

The edited narration runs 6:55.133, 24,908 frames at 60fps, in 14 chapters. Each chapter is one 4K MP4; end to end they cover the timeline exactly, and there is also one full-length file. I drop it into CapCut (剪映), add my avatar and subtitles, and it's ready.

0
1
2
3
4
5
6
7
8
9
10
11
12
13
Chapter 0: built by the lead, approved by me onceChapters 1–13: chapter agents in parallelDrawn to real length · 24,908 frames
All 14 chapters and lengths
  1. 00Opening suspense27.0s
  2. 01The eight and the scoring35.9s
  3. 02Level 1 settles it23.1s
  4. 03How the top two cleared it36.3s
  5. 04How the other six failed45.5s
  6. 05Level 3's opening trap23.3s
  7. 06DeepSeek's small, quick steps28.3s
  8. 07GPT slips on level 431.7s
  9. 08Restarting on purpose24.9s
  10. 09The last two levels32.4s
  11. 10Gemini gets blocked20.7s
  12. 11Breaking down the top two35.3s
  13. 12What the run cost21.3s
  14. 13Go play against them29.6s

Watch it first.
Everything here is from the 4K cut.

The four clips come from the 1080p preview with narration, compressed to 720p for the web, so you can hear the picture following the words; the stills come from the 4K film. The 4K files delivered for editing carry only music and sound effects, no narration. Every leaderboard on screen is public data. Spoilers below if you haven't watched the video.

Start of chapter 0 · 17.8s · with narrationMP4 ↗
Chapter 0: the Sokoban board stands on the product's stage, with the title 推箱子, remaining lives and a timer on the left
Chapter 0 · the product's own stage; the board runs on a real replay
Chapter 3: a push-in on a replay's call trace, with a bracket on 输出 106.6k under the headline 用了十多万思考 Token (over 100k thinking tokens)
Chapter 3 · a screenshot push-in as proof of what the page says
Chapter 4: Kimi's timer card at 19:59.78 beside the real request-timeout log
Chapter 4 · a timer beside the real log
Chapter 8: MiniMax clears on its second attempt on the left, a shared restart button in the middle, Grok 4.7's board dimmed on the right
Chapter 8 · two real replays side by side
Chapter 8: the 8TH scoreboard reveals Grok 4.7, six red crosses, and a huge 0 on the right
Chapter 8 · last place, left on a question mark in the opening, is revealed here
Chapter 11: the 1ST scoreboard shows Claude Opus 5.5, six ticks and a huge 91.6
Chapter 11 · the winner's scoreboard
Chapter 12: Claude's $18.8 and OpenAI's $6.4 on the same scale, marked ×3
Chapter 12 · costs drawn on one scale
Chapter 13: the ModelDial Arena end card with the URL, like and follow buttons, and the host illustration pushing a crate
Chapter 13 · end card; the host illustration is the product's own

Everything I gave it
was in the first message.

Script

The final script

Any picture notes in the script are used as written; without a script it works from the SRT alone.

Narration

Narration audio and a CapCut SRT

The raw recording went through my ajiang-koubo-cut Skill first: retakes removed, breaths fixed, then an edited MP4, SRT and word-level transcript. Everything after follows that one timeline.

URLs

The live leaderboard, the challenge page and a local data page

The product is our team's ModelDial Arena. The Sokoban rendering code and the stage art later came straight from its source.

One line

“Use ego browser to get real interaction footage.”

So it captured real pages and recorded real interactions with ego-browser.

What the Skill expects

Only the narration is required

It can be an unedited raw recording. The frame rate must be a constant integer; audio-only masters are treated as 60fps.

Product URLs and source are optional

With source code it ports front-end animation and uses the product's key art; with no product site it captures the real sources the narration mentions.

Your own images and references are optional

Images are used as real material first. A reference film is classified, broken into a list of techniques and judged one by one, never copied wholesale.

Twelve stages,
one fixed stop at chapter one.

The pipeline has twelve stages, top to bottom. Each row says who does the work, which open-source projects and Skills it uses, and what comes out. Only the rows marked as stops wait for me.

  1. 00

    Inventory

    Conditional stop
    Me
    Stops only if there is no narration, or the frame rate is not a constant integer.
    Lead
    Lists the script, audio or video, SRT and URLs and checks duration and frame rate with ffprobe; finds the product's source code and key art; watches 3–5 segments of the previous episode.
    Uses
    Product source (ModelDial Arena this time)
  2. 01

    Edit

    Raw recordings only
    Lead
    Removes retakes, completes sentences, fixes breaths. From here on only the edited timeline counts.
    Uses
    ajiang-koubo-cut · faster-whisper
    Output
    Edited MP4 · SRT · word-level ASR
  3. 02

    Understand · theme · chapters

    Before the BRIEF
    Lead
    Writes a 200-character summary and an errata list. Theme = the product's own art × this episode's show format. One chapter answers one question, 20–55 seconds, cut where a turning sentence starts. Four tables: reveals, line-by-line shots, wording of record, terminology.
    Output
    chapters.json · shotlist.csv (each asset belongs to one chapter)
  4. 03

    One-command project

    Lead
    init_project.py: template, chapters, word alignment, entry points, narration slices, dependencies, tsc.
    Uses
    Remotion 4 + React 19
    Output
    timing.json · segN.tsx
  5. 04

    Assets + privacy pass 1

    Scan on import
    Lead
    Ports the product's front-end animation and drives it with real data; takes 2x screenshots to prove what a page really says; extracts the product's colours and type and fetches logos, with inverted versions for a dark stage; scans every batch for QR codes and checks privacy by eye.
    Subagents
    Capture agent (optional): screenshots and real interactions; never opens settings or key pages.
    Uses
    ego-browser · lobehub icons · OpenCV · Codex CLI (last resort)
    Output
    Screenshots · tokens · logos · replay data
  6. 05

    Chapter one = style sample

    Always stops once
    Me
    I watch the chapter-one preview and approve it to roll out.
    Lead
    Builds chapter one itself, 20–30 seconds, synced line by line; at least two shot cards plus the product's key art, logos and suspense handling; self-checks twice before sending it to me.
    Subagents
    Analysis agents ×2 (≤15 minutes each): one picks this episode's shot cards, one breaks down the previous film.
    Uses
    video-shotcraft shot cards and gallery
    Output
    Seg0.tsx · chapter-one preview and contact sheet
  7. 06

    BRIEF + parallel dispatch

    Lead
    Moves chapter one's components into the shared lib and stress-tests them (a ≥40-second preview); writes the BRIEF with my approval quoted word for word in section 0; dispatches every chapter in one message and logs the IDs.
    Subagents
    Chapter agents ×N start, one per chapter (concurrency ≤ CPU cores / 2).
    Uses
    video-shotcraft aesthetic rules
    Output
    BRIEF.md · ledger.json
  8. 07

    Collect + round two

    Lead
    Reads each contact sheet as its notification arrives and logs issues; patrols in the background and checks any agent with no new output for 30 minutes; sends targeted fixes with SendMessage, with timestamps and numbers.
    Subagents
    Reads the BRIEF, lib, chapter one and its lead card → writes its chapter → self-checks ≥3 times → reports.
    Output
    SegN.tsx · contact sheet · preview
  9. 08

    Sound

    Parallel with 06–07
    Lead
    Extends the music, flattens its envelope, sets it 16 LU under the voice and cuts it per chapter; 10 semantic sound effects at a master gain of 0.3.
    Uses
    Mixkit music · Freesound CC0 effects
    Output
    Per-chapter music · mix.json
  10. 09

    Independent review → round three

    Lead
    Triage: shared problems are fixed in the lib once everyone stops; the rest go back to each chapter's agent.
    Subagents
    Review agent (clean context): samples frames across the film and only reports.
    Uses
    video-shotcraft final review
    Output
    Issue list: severe / medium / minor
  11. 10

    Preview gate + privacy pass 2

    Stops by default, skippable
    Me
    I review the preview page, unless I've said “不要问我了” (stop asking me).
    Lead
    Re-renders each preview → scans for QR codes again → builds the preview page.
    Uses
    Claude Artifact
    Output
    Preview page
  12. 11

    4K + delivery + privacy pass 3

    Stops before overwriting
    Me
    If the delivery folder already has files, it asks whether to overwrite or create a new one.
    Lead
    queue.sh renders each chapter as soon as it passes; check.py verifies frame counts, loudness, chapter tails and seam brightness; the 4K film is scanned every 2 seconds; deliver.py hands it over.
    Uses
    Remotion render · ffmpeg concat and mix
    Output
    Chapters + full 4K film + 1080p preview + CapCut guide

The only places it waits for me

00 · Conditional

Start

No narration at all, or a master without a constant integer frame rate. Nothing works without a timeline, and a wrong frame rate misaligns every chapter in the edit.

05 · Always once

Chapter one

After two self-checks it sends me chapter one once: the picture for every line plus the defaults it chose for me (suspense, logos, wording, safe areas). After I approve, it doesn't stop again.

10 · Default, skippable

Preview

Once internal checks, the independent review and two privacy passes are done, it sends a preview page. If I said not to ask, it renders 4K straight away and includes a 1080p preview with narration.

11 · Always

Overwriting delivery

If the delivery folder already has a film, it asks whether to overwrite or create another. This can't be undone, and the delivery script blocks it.

Gates that don't involve me

Quality

Chapter self-checks ≥3 rounds → the lead reviews contact sheets → independent review → targeted fixes → check.py. I'm never the first reviewer.

Privacy

Scan on import → scan again before the preview → scan the 4K film every 2 seconds. QR codes are masked in the source image; emails, keys and settings pages can't be detected by a scanner, so every imported image is also checked by eye.

Defaults it doesn't ask about

When the narration and the site data disagree, the picture follows the narration and hides the conflicting number. That comes from what I said during v2: 'I think my narration should be the reference for wording.'

Chapter one
took four versions.

Chapter one is the sample for the whole film. The lead agent builds it itself and always stops once for me. v1 arrived at 23:19 and I approved v4 at 00:53: 94 minutes in all.

Chapter one, four versions side by side at the same line, 得到了 91.6 分 (scored 91.6): v1, v2 and v3 rejected, v4 approved
The same line, 'scored 91.6', across four versions. v1 and v2 show names and scores outright, v3 hides everything, v4 hides only the identity and keeps the numbers big.
  1. v1 · 23:19Rejected

    A three-shot sample, cut loose from the narration

    Chapter one v1 sheet: the main frame is a score card naming first and last place with their scores; below, a replay page screenshot and a hand-drawn deadlock diagram
    Chapter one v1 sheet: the main frame is a score card naming first and last place with their scores; below, a replay page screenshot and a hand-drawn deadlock diagram

    A push-in on a replay page screenshot, a hand-drawn 'illustrative' deadlock grid and a score card, cycling regardless of what I was saying.

    “What is this? Go and check it properly, will you? Your audio isn't moving with the picture at all.”

    I also told it to watch the finished film from episode 3.

  2. v2Rejected

    Synced line by line, but a pile of screenshots that gave away the winner

    Chapter one v2 sheet: a big first-place card with the model name and 91.6, second place peeking in; below, full-page screenshots of the cube and Sokoban leaderboards
    Chapter one v2 sheet: a big first-place card with the model name and 91.6, second place peeking in; below, full-page screenshots of the cube and Sokoban leaderboards

    Every line had a picture now, but nearly all of them were screenshot push-ins, and first place was on screen.

    “We need to keep the suspense. When we look at the strongest model, you can often make your own visuals. Don't show the model's name, get it?”
    “I think my narration should be the reference for wording.”
    “Not every page needs a real screenshot. Think about it: where a zoomed screenshot fits, where Screen Studio-style footage fits… when to use motion graphics. Think it through.”
    “You have to use the good animations in here.”
    “First use agents to analyse what we should reference, then make me a short first chapter. Once I confirm it, we'll settle the overall approach, then build the remaining chapters with the same theme, the same animation and the same style.”

    “In here” in the fourth note meant video-shotcraft.

  3. v3Rejected

    Hidden too much: anonymous cards on black, no logos

    Chapter one v3 sheet: anonymous ??? cards on black and a seven-segment 91.6; below, a cube leaderboard showing only its title and a dot chart
    Chapter one v3 sheet: anonymous ??? cards on black and a seven-segment 91.6; below, a cube leaderboard showing only its title and a dot chart

    Anonymous cards on black, a '1 dot = 1 point' dot chart, seven-segment numbers, and not a single logo.

    “I'm very unhappy. Your first segment has none of that feeling, nothing like a blockbuster. You also missed the point of this episode: 1. Don't give this episode's ranking, but you can show the leaderboards from the earlier Rubik's cube episodes, right? The cube doesn't matter. 2. You didn't use the logos either. 3. Those illustrative diagrams look ugly.”

    I also pasted lobehub icons' skill.md. The problem was in the dispatch: I had only said not to show the model's name, and the lead agent wrote it down as 'no names and no logos'.

  4. v4 · 00:50Approved 00:53

    The product's own stage, shot like an esports broadcast

    Chapter one v4 sheet: a 1ST scoreboard on the product stage, its identity slot showing a question mark beside a huge 91.6; below, the DEADLOCK banner and the 8×6 results matrix with names as ???
    Chapter one v4 sheet: a 1ST scoreboard on the product stage, its identity slot showing a question mark beside a huge 91.6; below, the DEADLOCK banner and the 8×6 results matrix with names as ???
    • The product's own stage art fills the screen, with an esports broadcast HUD;
    • The Sokoban board runs on a real replay; when step 7 creates a deadlock, a full-screen DEADLOCK banner sweeps across;
    • The real Rubik's cube leaderboard (earlier episodes, fine to show) and the real 8×6 results matrix, names replaced with ???;
    • A logo slot machine that stops on '?', 170px headlines, and a huge 91.6 and 0.
    “I think this version is pretty good. Do everything after this the same way.”

How the Sokoban board came alive

While v2 was in progress I said: 'The Sokoban code should move. We already animate it with front-end tech, right? All our Sokoban code is right here; you can absolutely reproduce it.'

ModelDial Arena is our own product, and its Sokoban engine and board rendering were already front-end code. The agent ported them into Remotion and drove them with real replay data. Not a single move on screen is made up.

  1. The engine is the product's own Sokoban engine, so the rules match the live site.
  2. The board reuses the product's board component and styles; the stage art and host illustration are the product's own images too.
  3. Replays are compressed into step-by-step frames: whether each move walks, pushes or bumps a wall, and whether each attempt clears, deadlocks, restarts or runs out of moves.
  4. The narration time maps to a step on the board, even halfway between two moves, so fast-forward, rewind and freeze all follow the words.
WHAT CHANGED

Once the direction was clear,
v4 itself took about 8 minutes.

I went to bed;
13 chapter agents kept going.

Codex CLI illustration: a stack of film canisters and reels in morning light, beside the words Rendered while I slept.
Generated illustration (Codex CLI), not a frame from the film.

Right after approving v4, I added:

“The rest is all yours. Have multiple agents develop in parallel, brief them clearly, and don't ask me. What I want in the end is a 4K film with everything rendered. Go on, I'm off to sleep… Leave a small circle in the top-right for my avatar, and the bottom of the frame for my subtitles… The active picture should be well laid out, not too small and not too big.”

The lead was Claude Code. One project, with permissions split by file: the lead owns everything global (theme, chapter one, the lib, cross-chapter deduplication, sound, rendering, talking to me), and each chapter goes to its own subagent. They share one lib, one set of tokens and one chapter one, so the result looks like one person made it.

×1

Lead

Claude Code
Writes
the lib, data, BRIEF, chapter one, ledger, preview page
Never
writes chapter content, changes the lib's visuals mid-round, or speaks for me or adds to what I said
×2

Analysis agents

Before chapter one
Does
one picks shot cards and maps them to chapter one line by line; one breaks down the previous film
Rules
≤15 minutes each; no files, conclusions go in the final reply
×1–2

Capture agents

Optional
Does
takes screenshots and records real interactions with ego-browser
Never
opens settings, API key pages or private dashboards
×1 per chapter

Chapter agents

13 this time
Writes
only its own chapter's files
Never
edits the lib or other chapters, takes screenshots online, renders 4K, or writes report files
×1

Review agent

Clean context
Sees
only the previews, subtitles, BRIEF and review checklist
Returns
[severe / medium / minor] chapter @second — problem — fix; reports only, edits nothing

How messages flow

01

Before chapter one

  1. Me → lead: one input (narration + script + URLs)
  2. Lead sends 2 analysis agents in parallel: pick cards / break down the last film
  3. Final replies: 10–16 cards + a card for every line of chapter one
  4. Lead sends me the chapter-one preview and its defaults, then stops and asks once
  5. Me: “Do everything after this the same way.”
02

Parallel build

  1. All chapters dispatched in one message
  2. The BRIEF is the constitution; each prompt only covers what's different about its chapter
  3. Patrol: a background timer; no new output for 30 minutes means go and look
  4. Notification = final reply: output paths, shot list, checklist, leftovers, lib requests
  5. Targeted fixes via SendMessage, each with a timestamp and numbers
03

Review and delivery

  1. A fresh review agent with a clean context gets only previews, subtitles, BRIEF and checklist
  2. Issue list: [severe / medium / minor] chapter @second — fix
  3. Round three goes back to the same chapter agents
  4. Each chapter joins the 4K queue as soon as it passes
  5. Delivery: chapters + full 4K film + 1080p preview

What this episode measured

13

chapter agents in parallel; the lead built chapter one itself

22–75

minutes of real work per agent in round one

15

minutes for the independent review to find 21 issues

2–8

minutes per chapter for round-two fixes

≈37

minutes to render all 14 chapters in 4K, queued

Six hours stuck on one command

In round one, seg8 and seg12 each sat on a single command for about six hours:

STUCK

rm -f $D/*.jpg

A delete with a variable and a wildcard. Most likely it raised a permission prompt; I was asleep and nobody clicked. The lead wasn't patrolling either, so it simply waited. The Skill now has two rules: commands like this are banned in the BRIEF in favour of clearing folders with Python, and the lead sets a background timer while it waits, checking which command any agent with no output for 30 minutes is stuck on.

Two things the lead fixed along the way

A flash at the seams

A bright background at a chapter start, right after the previous chapter's dark stage, flashed. It added a 0.4-second fade-in.

Effects too loud

The master sound-effect gain went from 0.45 to 0.3.

Six rules for working together
  1. 1
    Only relay what I actually said, and never add to it

    My words go in quotes; the lead's inferences go on a separate, labelled line. This time 'don't show the name' became 'no names and no logos', and v3 was rejected for it.

  2. 2
    Reports live only in the final reply

    Subagents don't write report files; the lead stores them.

  3. 3
    Send fixes to the same agent

    It still has the context, so each targeted fix takes 2–8 minutes. IDs go in a ledger so context compression can't lose them.

  4. 4
    The lib is frozen mid-round

    Sound-only parameters live in mix.json and can change any time; shared problems wait until everyone stops.

  5. 5
    Each chapter has its own entry and bundle

    One broken chapter doesn't take the others down, so parallel work is safe.

  6. 6
    Patrol; don't just wait

    Commands that trigger a confirmation prompt are banned in the dispatch, and the lead checks every 30 minutes.

I'm never the first reviewer,
and delivery says what wasn't checked.

Once every chapter was in, the lead started a review agent with a clean context and gave it only the previews, subtitles, BRIEF and review checklist. In about 15 minutes it found 21 issues: 2 severe, 10 medium, 9 minor. Both severe ones were repeats:

  1. The same MiniMax level-1 replay appeared in both seg2 and seg4;
  2. The full Rubik's cube leaderboard appeared three times.

Round two made targeted fixes to 11 chapters, 2–8 minutes each. 4K rendering ran as a queue, each chapter starting as soon as it passed: about 37 minutes for all 14. Delivered at 08:50.

Delivery folder
B-roll成片/   (B-roll output)
├─ 0_开场悬念_00-00-00,000~00-00-27,000_字幕1-15.mp4
├─ 1_八强与计分规则_00-00-27,000~00-01-02,867_字幕16-39.mp4
├─ … 14 chapters end to end, 3840×2160 · 60fps
├─ 13_去试试人机对战_00-06-25,533~00-06-55,133_字幕233-251.mp4
├─ B-roll全片_4K_配乐音效_不含口播.mp4    full 4K film, 24,908 frames = master
├─ 预览_B-roll加口播_1080p.mp4           1080p preview with narration
├─ 无配乐版/                             same names, effects only
├─ 替换对照表.txt                        start/end, frames, subtitle numbers
├─ 音乐与音效来源.txt                    sources and licences
└─ 剪映贴法.txt                          CapCut placement guide

File names carry the SRT start and end in milliseconds plus subtitle numbers, so dropping them into CapCut in order just works. To avoid placing 14 files, use the single full-length film.

What was checked automatically before delivery

14 / 14

chapters at 3840×2160 · 60fps, frame counts match the timeline

14.2–15.1 LU

music + effects under the narration; true peak ≤ −17 dBTP

0.00%

residue at chapter tails

≤ 0.1

seam brightness difference at chapter starts, so nothing flashes in the edit

209 frames · 0

frames sampled from the 4K film and scanned for QR codes, zero hits

Not listened

the audio was only measured, never listened to cue by cue

The delivery says how far verification went

Measured

Frame counts, loudness and true peak, chapter tails, seam brightness and QR codes were all checked by script.

Not done

Nobody listened to the audio cue by cue; it was only measured. The delivery notes say so.

After watching it, I said: 'This is so well done!'

After the retrospective,
things I won't have to say again.

After delivery, two independent retrospective agents read the whole session log and wrote this episode's lessons back into the Skill. Next time, all of this is the default.

  1. 01

    Chapter one is the sample and always stops once; after approval it doesn't stop again. If I've said “不要问我了” (stop asking me), the preview gate is skipped too.

  2. 02

    Theme = the product's own art × this episode's show format, plus a checklist for that blockbuster feel.

  3. 03

    Four tables before the BRIEF: reveals, line-by-line shots (each asset belongs to one chapter), wording of record (the narration wins), terminology. Both severe review issues were the same material showing up in several chapters.

  4. 04

    Logos: fetch lobehub's mono, colour and wordmark versions, with inverted ones for dark stages; show a logo whenever the narration names a model; for identities still under wraps, a logo slot machine stops on '?'.

  5. 05

    Dispatches relay my words, nothing added. This time 'don't show the name' became 'no names and no logos', and that sank v3.

  6. 06

    The lead patrols: any subagent with no new output for 30 minutes gets checked.

  7. 07

    Delivery always includes the full 4K film and a 1080p preview with narration; check.py now checks seam brightness.

Want to try it?
Set these up first.

Install ajiang-koubo-broll
npx skills add NanmiCoder/ajiang-vibe-coding-skills --skill ajiang-koubo-broll
Edit first

Run raw recordings through ajiang-koubo-cut

It removes retakes and fixes breaths, then delivers the edited MP4, SRT and word-level transcript. The B-roll only follows that edited timeline.

Required

video-shotcraft

By Vincentwei1021, Apache-2.0. The Skill doesn't bundle its files; install or clone it yourself following its repository.

Recommended

ego-browser

For real page captures and recorded interactions. It works without it, with far fewer real pages.

Agent

A coding agent that supports subagents

The lead must be able to dispatch subagents in parallel and message them again. This episode used Claude Code.

Licence

Remotion

Remotion has its own licence: free for individuals and small teams, while companies above a certain size need a commercial licence. Check before you use it.

Start here

  1. 01

    Install ajiang-koubo-broll and video-shotcraft, and ideally ego-browser.

  2. 02

    Give your agent the script, narration (raw recordings are fine), SRT and product URLs. If you have the product's source, tell it where.

  3. 03

    Wait for chapter one. If it's wrong, say exactly what's wrong; it maps each note to its self-check list and revises.

  4. 04

    When you approve, say whether it should ask you again. Say “不要问我了” (stop asking me) and it renders straight through to 4K.

  5. 05

    Listen to the audio yourself after delivery: the agent measured loudness but didn't listen.

  6. 06

    In CapCut: keep the edited narration on the main track and put the 4K film on the track above; duplicate the narration with a circular mask in the top-right corner; import the edited SRT as subtitles.

THE IDEA

A wrong direction is the most expensive mistake, so it stops once, at chapter one. Once the direction is right, a team of agents does the rest.

Sources and frames

Clips come from the 1080p preview with narration, compressed to 720p for the web; stills come from the 4K film; the chapter-one v1–v4 images come from each version's contact sheet at the time; the covers are this episode's published ones (version three). The header image and illustration were generated with Codex CLI and are not frames from the film.

The B-roll shows only public leaderboard data. Numbers in this article come from the delivery checks and session timestamps; the audio was not listened to cue by cue.

Thanks to
the open-source projects behind it.

This B-roll stands on these open-source projects and free assets. Each one is listed below with what it was used for.

01 / Open source · Apache-2.0

video-shotcraftby Vincentwei1021

The motion grammar of its 124 shot-recipe cards, its aesthetic-rules and its final-review method. Chapter one uses at least two cards and every later chapter one lead card; the aesthetic rules go to chapter agents and the final review to the review agent. The Skill doesn't bundle its files; install or clone it yourself.

02 / Open-source icons

lobehub iconsby LobeHub

Model and vendor logos, fetched as static SVGs via unpkg. Mono, colour and wordmark versions were all used, inverted for the dark stage, including the logo slot machine.

03 / Open-source framework

Remotion 4 + React 19by Remotion

The whole project: React rendered frame by frame, one composition per chapter, all 14 4K chapters. Remotion has its own licence: free for individuals and small teams, commercial for companies above a certain size.

04 / Open-source model

faster-whisperby SYSTRAN

Called through ajiang-koubo-cut for word-level transcription. Syncing the picture to each line depends on its word timings.

05 / Free sound effects · CC0

Freesound

The template ships 10 processed CC0 sound effects with an attribution list.

06 / Free music

Mixkit

Music from Mixkit, under the Mixkit Stock Music Free License.

07 / Browser

Ego Lite / ego-browser

Real page captures and recorded interactions.

08 / Tools

ffmpeg · OpenCV

ffmpeg for frame grabs, concatenation and mixing; OpenCV scans for QR codes in all three privacy passes.

09 / Tool

Codex CLIby OpenAI

The Skill's last resort for generated images; this episode's B-roll used none, and the cover came from the built-in image_gen. This article's header image and illustration were generated with it.

10 / Our own product

ModelDial Arena

The Sokoban rendering components and the stage art both come from it.

Thanks to Vincentwei1021 for open-sourcing video-shotcraft; the camera moves in this Skill follow its cards. Thanks as well to LobeHub, Remotion, SYSTRAN, the authors of the CC0 sounds on Freesound and the musicians on Mixkit.