Movie Factory: Teacher Runbook
City of Miramar AI Boot Camp 2026 · v2, four Saturdays (Nov 14 to Dec 12) + Dec 19 showcase
July 5-day version kept as README-v1-JULY.md.
This guide is written for you, the teacher. No coding experience needed. You will copy, paste, and press Enter. Claude does the thinking. You stay in charge.
1. What this is
The Movie Factory turns each student's creative work into a finished animated movie.
Each student made four things in ChatGPT and Suno:
- A written story (with a scene table)
- Character pictures
- Scene pictures
- One song (MP3)
The Movie Factory takes those four things and produces one short animated movie: 6 to 10 clips of 10 seconds each, so about 1:00 to 1:40 plus the title and end cards. It runs on the teacher laptop only. Students never log into the video tools. That is an age rule, and you can say so to the class (see Section 5).
The flow for ONE student looks like this:
Student's Drive folder
|
v
1. Copy folder to the laptop
2. Claude builds the shot list (about 2 minutes)
3. Generate the video clips (10 to 25 minutes, runs by itself)
4. Student reviews clips with you (approve or redo, 5 minutes)
5. Redo any flagged clips (only if needed)
6. Stitch into one movie with music (about 5 minutes)
7. Upload the movie back to Drive
You will repeat this flow once per student. Clips generate in the background, so you can start the next student while the previous one renders.
When each step happens (the 4-Saturday camp)
The camp runs on four Saturdays, not five days in a row. The Factory work is
spread across Sat 3, two teacher-only weeks, and Sat 4. Full timings are in
CAMP-RUN-OF-SHOW.md (sections 4 to 7).
| When | Steps | Who | Done when |
|---|---|---|---|
| Sat 3, Dec 5 (12:45 on) | Demo movie projected, then Steps 1 to 3 for each DELIVERED folder, and Step 4 starts | Teacher A and B, kids watching | All 15 projects queued on the board |
| Render week, Dec 7 to 11 | Step 4 for every project, plus retries. Missing songs made from the kid's song sheet | Teacher A only, no kids | Fri Dec 11: every project has a full clip set waiting |
| Sat 4, Dec 12 | Step 5 (the kid reviews), Step 6 (redos), Step 7 (stitch), Step 8 (upload) | Teacher A at the review station | Every kid has a playable movie before the 12:45 premiere |
| Straggler week, Dec 14 to 18 | Late redos dropped into the final cut, Step 7 again, Step 8 | Teacher A only | Fri Dec 18: all 15 final MP4s on the teacher laptop and the backup USB, each played once with sound |
Render-week rule: you never approve a clip for a kid. The yes or no is the
kid's, on Dec 12. You may stitch a draft cut from all clips so the premiere has
something to play: name it approved-draft.txt with every shot number, copy it
to approved.txt for the stitch, then delete approved.txt again so the kid's
real review on Dec 12 starts clean.
Between Saturdays: keep each kid's folder in kids/ exactly as it is.
Do not delete clips, shots.json, or approved.txt. The board photo plus the
Drive folders are how you pick up where you left off.
2. One-time setup (already done for you)
MetAiBlock completes this on the teacher laptop before the first training evening, and proves it end to end with the demo project (execution plan GATE 2). It is listed here only so you know what exists. You should never need to redo any of it.
| Item | What it is | How to check it works |
|---|---|---|
| python3 | Runs the factory scripts | Type python3 --version in Terminal. A version number appears. |
| ffmpeg | Joins clips into one movie | Type ffmpeg -version. Text appears, no error. |
| higgsfield | The video generator | Type higgsfield account. It shows credits, not a login error. |
| Claude | Builds the shot lists | The Claude app opens and responds. |
| This folder | movie-factory on the Desktop |
You are reading its README right now. |
| Login/credits | Video account is signed in and funded | Same higgsfield account check as above. |
If any check fails on a Saturday or during render week, see Troubleshooting (Section 6) and call the MetAiBlock line.
3. The per-student flow (do this once per student)
Work from the Terminal, inside the movie-factory folder.
To get there: open Terminal, type cd, press space, drag the movie-factory
folder onto the Terminal window, press Enter.
THE ONE-BUTTON WAY (use this first)
After Step 1 (pull the folder from Drive) and Step 2 (make config.yaml), one command does Steps 3, 4, and 5's page for you:
python3 factory.py --config config.yaml
It checks the folder, has Claude build the shot list automatically,
generates every clip, renders the title and end cards, and builds the
review page. Then it stops and tells you exactly what to do next: watch
the clips with the student, write approved.txt, and run the stitch.
If the shot list came out wrong, redo it with:
python3 factory.py --config config.yaml --reshot
If the one-button way errors on the shot-list step, fall back to the manual Steps 3-5 below. Everything below still works exactly as written.
Step 1. Pull the student's folder from Drive
- Open Google Drive in the browser. Open
Miramar AI Camp 2026. - Right-click the student's folder (for example
Jayden). Choose Download. - Unzip it. Move the folder into
movie-factory/kids/. - Quick check: the folder must contain
01-story.txt, acharactersfolder, ascenesfolder, andsong.mp3. The full checklist is inINPUT-SPEC.md. If something is missing, the student fixes their upload first. Do not continue.
Step 2. Make the student's config file
- Copy
config.example.yamland rename the copy toconfig.yaml. - Open it in TextEdit. Change
kid_nameandkid_folderto this student. - Leave everything else alone unless MetAiBlock told you otherwise.
Step 3. Build the shot list with Claude
- Open the Claude app.
- Open the file
shotlist_prompt.md(in this folder). Copy ALL of it. - Paste it into Claude. Then also paste the full text of the student's
01-story.txt. - Tell Claude which scene images exist. Easy way: type
ls kids/Jayden/scenesin Terminal and paste the file list to Claude. - Claude replies with a block of JSON. Save it as
shots.jsoninside the student's folder (for examplekids/Jayden/shots.json).
Step 4. Generate the clips
In Terminal, type:
python3 generate.py --config config.yaml
Clips appear one by one in the student's clips folder.
This takes roughly 10 to 25 minutes for a full movie. It runs by itself.
On Sat 3 this is a great time for the next student to present their story to the class.
During render week, start the next student's Steps 1 to 3 while this one runs.
Step 5. Student reviews the clips
When generation finishes, type:
python3 make_review_page.py --config config.yaml
This creates review.html in the student's folder. Double-click it.
This step happens on Sat 4 (Dec 12), when the student is in the room.
Watch each clip WITH the student. For each one, tick APPROVE or REDO.
Then write the approved shot numbers into a plain text file named
approved.txt in the student's folder, one number per line.
Rule of thumb: approve anything that tells the story. Perfection is not the goal. A movie with 6 good clips beats a movie stuck waiting on 10 perfect ones.
Step 6. Regenerate flagged clips (only if needed)
For each REDO clip, ask the student what looked wrong. Then either:
- Small fix: edit that shot's
motion_promptinshots.json(or ask Claude to rewrite it), then rerun:python3 generate.py --config config.yaml --only 3(replace 3 with the shot number). The old clip is replaced. - Still wrong after one redo: drop that shot. Fewer clips is fine.
- Flagged 3 or more times: accept the best of the three, or swap the clip for a slow push-in on the storyboard frame. It looks intentional. The movie ships.
- Behind at lunch on Dec 12: stitch the current best take for any clip still re-rendering. The re-render goes into the final cut during straggler week.
Step 7. Stitch the movie
In Terminal, type:
python3 stitch.py --config config.yaml
This joins the approved clips, removes the clips' own random sound,
lays the student's Suno song over the whole movie, and adds a title
card and an end card. The finished file appears in the student's folder
as <FirstName>-movie.mp4. Play it once to confirm sound and picture.
Step 8. Upload back to Drive
Drag <FirstName>-movie.mp4 into the student's Google Drive folder.
Also keep a copy on the teacher laptop: the Dec 19 showcase plays from LOCAL
files, never from Drive. Mark the student done on the board. Next student.
4. Running more than one student at a time
The generator already runs several clips at once for one student. Recommended rhythm: start Student A's generation, then prep Student B's folder and shot list while A renders. Review A, start B, stitch A. One pipeline in the oven, one on the counter.
5. What to say to the class while it runs
- "The video tools are 18 plus, like a movie rating. So I drive, you direct."
- "This is exactly how real studios work. Writers and artists hand off to a render team. You are the writers and artists."
- "While Jayden's movie renders, let's hear Amara present her story."
- End of Sat 3: "Your clips render this week. Next Saturday, every clip gets your yes or no, and we watch all fifteen movies together."
- When a clip comes out weird: "AI is a creative partner, not a vending machine. We tell it again, more clearly. Watch."
- When a clip comes out great: have the class clap for the author. Every time.
6. Troubleshooting
| Problem | What is happening | What to do |
|---|---|---|
| A clip looks wrong (wrong character, weird motion, off style) | The model misread the prompt. Normal. About 1 in 4 clips needs a redo. | Mark it REDO in review. Make the motion prompt more specific (name the character's look, name the single action). Regenerate just that shot with --only. One redo, then keep the best version or drop the shot. |
| Generation is slow | Each clip takes minutes to render. Several run at once but a full set still takes 10 to 25 minutes. | This is normal, not broken. Check the log file clips/generation-log.txt to see progress. Use the wait time for student presentations. If a single clip sits for more than 30 minutes, rerun that shot with --only. |
| ffmpeg error when stitching | Usually one bad or missing clip file. | Read the error message. It names the file it choked on. Check that file exists and plays. If one clip is broken, remove its number from approved.txt and stitch again. The movie still works with fewer clips. |
| WiFi drops | Generation needs internet. Stitching does NOT. | Wait for WiFi or switch to the hotspot (see the camp runbook). Clips already downloaded are safe. Anything mid-generation: rerun those shots with --only. You can review and stitch fully offline. |
| "command not found: python3" (or ffmpeg, or higgsfield) | Terminal cannot find a tool. | Close Terminal, open a new window, try again. If it persists, call the MetAiBlock line. Do not install anything yourself. |
| Higgsfield says login or credit error | The account session expired or credits ran out. | Call the MetAiBlock line. This is a 5 minute fix on our side. |
| The movie has no sound | song.mp3 was missing or unreadable. |
Check the student's folder has song.mp3 and that it plays in the browser. Re-download from their Drive folder if needed, then stitch again. |
| Title card is plain purple with no words | This laptop's ffmpeg cannot draw text. The stitcher warned you and kept going on purpose. | The movie is still complete. Call the MetAiBlock line to fix ffmpeg, or place a picture named title-card.png (and end-card.png) in the student's folder and run the stitch again. |
MetAiBlock support line: 305-851-1647. Call for anything not on this table. Nothing you can type in the Terminal can hurt the students' work in Drive. The Drive folders are the safe master copies.
7. Where everything lives
movie-factory/
README.md This guide
INPUT-SPEC.md What each student folder must contain
factory.py THE BUTTON: shot list + clips + cards + review page
shotlist_prompt.md The prompt (factory.py uses it automatically)
generate.py Makes the clips
make_cards.py Renders the title/end card images (via Chrome)
make_review_page.py Makes the review page
stitch.py Makes the final movie
config.example.yaml Template for the per-student config
kids/ Student folders you pull from Drive
Jayden/
01-story.txt
characters/
scenes/
song.mp3
shots.json (created in Step 3)
clips/ (created in Step 4)
review.html (created in Step 5)
approved.txt (created in Step 5)
Jayden-movie.mp4 (created in Step 7)