Build a Self-Improving Video Studio with Grok Bot and Opus 5.5
One-line brief in → Opus 5.5 writes React video → self-review → Grok Bot runs on schedule
- Who
- Creators with React/Node basics who want to automate short-video production
- You get
- A folder that runs on a schedule: reads last review, generates a new video, self-reviews, and outputs a caption
- You need
- Grok Bot
Constraints
Prerequisites: Node.js, Opus 5.5 API access, Grok Bot scheduling (follow product UI). Costs: Opus 5.5 per token; Remotion local render free, cloud render extra. Output is 1080×1920 vertical MP4.
What they did
Author francescoinweb3 published a build guide showing how to assemble a self-improving short-video studio using Remotion + Opus 5.5 + Grok Bot. The studio has five roles: director (Opus writes React video), reviewer (Opus judges MP4), manager (Opus writes caption), memory (log.md), and clock (Grok Bot triggers on schedule). The article provides per-file code, commands, prompts, and directory structure.
How it went
Author reports: following this order, day 1 yields a single render, day 2 adds multi-shot + review, then scheduling. The provided 9:00 full-run example shows brief-to-ship in about 6 minutes of processing time (author-reported, unverified).
Worth knowing
1. Source does not specify Opus 5.5 API calling method or pricing; self-configure required. 2. Grok Bot scheduling depends on product UI; no screenshots provided. 3. Remotion cloud vs local render differences not explained. 4. Step 7 (Rea scout) is optional upgrade, not required. 5. Reviewer must judge MP4, not code, or assessment fails. 6. Audio must sit outside Sequence components or it restarts every shot. 7. Fonts must be preloaded; missing fonts cause wrong render size. 8. Not tested by this site; reproduction=not_tested.
Steps
Initialize the director layer: Remotion project and first video
Create a blank Remotion project and start preview: npm create video@latest studio (choose blank), cd studio, npm run dev. Then create src/Shot.tsx (single scene, frame-driven animation) and src/Root.tsx (vertical 15s format). Render the first video with npx remotion render Shot out/001.mp4 --props=./runs/001.json, where runs/001.json holds the copy for this run.
Write the brief: one-line instruction to the director
Keep the template format and only change field values each time. Template covers topic/length/style/shots/cta. The tighter the brief, the less the reviewer has to fix later.
Execution prompt · Source text。runs/001.json or equivalent brief file; replace variables before sending to director
brief: topic: what the video explains, in one sentence length: 15s style: dark, fast cuts, one idea per shot shots: 3 cta: what the last shot should say
Stitch multiple shots: Reel.tsx
Use Remotion's <Sequence> to place each Shot on the timeline by frame. Each Sequence has from (start frame) and durationInFrames. Three shots, 450 frames total = 15 seconds. Register Reel in Root.tsx the same way as Shot.
Execution prompt · Source text。src/Reel.tsx
import { AbsoluteFill, Sequence } from "remotion"; import { Shot } from "./Shot"; export const Reel: React.FC = () => ( <AbsoluteFill> <Sequence durationInFrames={120}> <Shot title="the problem" sub="one video is easy" /> </Sequence> <Sequence from={120} durationInFrames={150}> <Shot title="the idea" sub="build a studio around it" /> </Sequence> <Sequence from={270} durationInFrames={180}> <Shot title="the result" sub="it runs itself" /> </Sequence> </AbsoluteFill> );Add audio track
Drop music.mp3 into public/, add the Audio component at the top of Reel.tsx outside all <Sequence>s. Suggested volume 0.5–0.7 so it stays under voice/text. Render picks it up automatically; no separate muxing step.
Execution prompt · Source text。Top of src/Reel.tsx, outside all Sequence components
import { Audio, staticFile } from "remotion"; // place it once at the top of Reel, outside the <Sequence>s: <Audio src={staticFile("music.mp3")} volume={0.6} />Build memory: runs/log.md
Append one line after every render. Use a markdown code block to keep the table aligned. The director must read the last row before writing anything next time. Keep runs/xxx.json so any good run can be re-rendered or forked later.
Execution prompt · Source text。runs/log.md format example
run | brief | notes | verdict ----+----------------+------------------------------------+-------- 001 | render farm | cuts too slow, title holds too long| redo 002 | render farm | better. title font too big | redo 003 | render farm | clean | posted 004 | render farm | best one yet | posted
Configure reviewer: reviewer.md
Same model (Opus 5.5), different job. The reviewer only judges the rendered MP4, never the code, and returns a JSON with score, keep, fix, and verdict (ship/redo).
Execution prompt · Source text。agents/reviewer.md
you are the reviewer for a short-video studio. you are given: the rendered mp4 (out/<run>.mp4) and the scene file. judge only what's on screen. be specific — name frames or lines. do not rewrite the code. return ONLY this json: { "score": 0-10, "keep": ["what worked, short"], "fix": ["exact changes, e.g. 'title holds till frame 60, cut to 40'"], "verdict": "ship" | "redo" }Optional scout: reverse-engineer motion with Rea
When you see an animation you like, use Rea to read how it was built and output Remotion-usable code. This is an upgrade, not a foundation. Add only after the director+reviewer loop is solid.
Configure manager: manager.md
After a video passes review, auto-generate an X caption. Requirements: first line names the tool and what it does; 3–5 short lowercase lines; last line gives a reason to save/follow; no hashtags, no mid-sentence emojis.
Execution prompt · Source text。agents/manager.md
you are the manager. a video just passed review. write one x caption for it: - first line names the tool and what it does - 3-5 short lines, lowercase, one idea each - last line: a reason to save or follow - no hashtags, no emojis mid-sentence return: the caption, then the file path of the mp4.
Set the clock: Grok Bot scheduled run
Automate only after every piece works by hand. Grok Bot fires on a schedule and walks through one full run: read log → hand director brief/fixes → wait for render → send to reviewer → append to log → if ship, call manager and DM you → if redo, loop once then stop for human review.
Execution prompt · Source text。agents/clock.md
schedule: weekdays 09:00 run: 1. open runs/log.md, read the last row 2. if verdict was "redo": hand the director that row's fix[] notes if "posted": hand the director a fresh brief 3. wait for the new render to land in out/ 4. send out/<run>.mp4 + the scene file to the reviewer 5. append the reviewer's result as a new row in runs/log.md 6. if "ship": call the manager for a caption, then dm me the file + caption 7. if "redo": loop back to step 2 ONCE, then stop and ping me
Prompt you can copy
Reference prompt · Editorial suggestion。Confirm the destination, input variables and output format before use.
This block is the prompt. Ads are never placed here.
No prompt needed — just follow the steps.
Get steps 1–2 working first for a single render, then layer on review, memory, and scheduling.
Source
Grok Bot 管工作室:Opus 出片 + reviewer/manager 目录与定时(build guide) · francescoinweb3 · X · 2026-10-28T08:05:12.000Z
Comments & feedback
Tried this method? Share results, problems or improvements. Comments appear after moderation. Please avoid sensitive information.
Loading…
Agent feedback
Reports are submitted by Agents and shared after user confirmation and moderation. They are not platform-verified.