grokimagine — SuperHeavy + real Chrome
Slash: /grokimagine
Video UI deep-dive: VIDEO.md
Also: reference.md · examples.md · QA-CHECKLIST.md
Hard rules
- Real Chrome only — Playwright
connectOverCDPto owned hub (browser-connectionv3+). - Never
cursor-ide-browserfor Grok Imagine. - Prefer SuperHeavy membership over xAI Imagine API; ask before API spend.
- Default batch ≤4 stills (standing); ask above that. Video parallel fire: submit on a tab, leave that
/post/tab generating, open a new Imagine home tab for the next job. Harvest later. Do not click New Generation / close the generating post tab (that cancels the job — posts then 404 back to/imagine). - After proven change: update this skill and vault.
- Agent films: UUID download + story-order concat — do not assume UI Stitch.
- One owned Chrome:
$env:CHROME_USER_DATAor~/Chrome/UserData, CDPhttp://127.0.0.1:9222, already-signed-in account. - Attach
contexts()[0]— neverchromium.launch()/ invent--user-data-dir. - Signed out or
#subscribepaywall → stop; human fixes in owned window. - Readable words on finals = Remotion/SVG/real UI capture — not AI typography plates.
- Don't leave idle duplicate Imagine homes — after a clip is generating, open a fresh home tab for the next fire; leave generating posts alone. Dedupe leftover empties with
_dedupe-tabs.mjs(never close/post/tabs still generating). - Engaging picture = Video, not Image+Ken Burns. Prefer I2V from full-body locks; Image is for locks/refs only.
- Harvest: require video
srctied to the post (or midframe QA). Never grab the largest sidebar/history video on/imaginehome — that is how perfume/nurse contamination happens. - Character series / extra beats: If the pack has
agent_url.txtor the user pastes/imagine/agent/{uuid}?conversation=…, generate only by continuing that Agent conversation (agent-continue.mjs/agent-short-film.mjs nudge). Never New Generation and never home Video I2V (generate-video.mjs) for extra story beats — that mints a new Imagine project and drifts faces.conversation=is the film identity (workspace UUID can be reused across films). Video 1.5 multi-ref is a separate one-off I2V path, not a substitute for an existing Agent canvas.
What to use when (YT / essay)
| Need | Mode | Notes |
|---|---|---|
| Suit / hero lock still | Image | ≤4; Quality; 16:9 or 9:16 |
| Engaging B-roll / action | Video I2V | Upload lock; 1080p; 10–15s; motion prompt |
| No lock yet | Video T2V | Weaker identity; still motion-first |
| Longer beat from a keeper | Post Extend | /imagine/post/{uuid} |
| Multi-panel short film | Agent start | New Generation → Agent only for a brand-new film |
| Extra beats on an existing character film | Agent continue | Same /imagine/agent/{uuid}?conversation= — never home Video |
Live UI contract (verified 2026-08-10)
Composer radiogroup aria-label="Generation mode": Image · Video · Agent.
Unselected radios often have empty text → click [role=radio][aria-label="…"].
Video controls: 480p/720p/1080p · 6s/10s/15s · Video audio · Aspect Ratio · Upload (image file input, multiple) · Submit
Post page: Make video · Extend · Upscale · Regenerate · Download · Expand video · Video quality (HD)
Helpers: scripts/ui-mode.mjs · Video guide: VIDEO.md · Probes: probe-imagine-video*.mjs
Modes (scripts)
| Mode | Script | Success |
|---|---|---|
| status | check-and-generate.mjs status |
Signed in, composer |
| image | generate-stills-clean.mjs |
Durable stills |
| video | generate-video.mjs |
T2V/I2V. Use GROK_FIRE_ONLY=1 to submit→close→next; harvest later |
| agent start | agent-short-film.mjs start |
Brand-new film only (clicks New Generation) |
| agent continue | agent-continue.mjs |
Existing /imagine/agent/{uuid}?conversation= + new UUIDs |
| export | export-agent-film.mjs |
UUID MP4s + frames QC (harvest wave) |
# Parallel fire one I2V shot (no wait for MP4)
$env:GROK_OUT = "<pack>\raw\...\videos"
$env:GROK_IMAGE = "<lock.png>"
$env:GROK_PROMPT = "..."
$env:GROK_VIDEO_RES = "1080p"
$env:GROK_VIDEO_DUR = "10s"
$env:GROK_VIDEO_AUDIO = "0"
$env:GROK_FIRE_ONLY = "1"
$env:GROK_CLOSE_TAB = "0" # prefer New Generation; closing sole tab can kill CDP hub
node "...\generate-video.mjs"
# Extra beats on an EXISTING character film (never home Video)
$env:GROK_AGENT_URL = "https://grok.com/imagine/agent/<uuid>?conversation=<id>"
$env:GROK_OUT = "<pack>\raw\agent_continue"
$env:GROK_NUDGE_FILE = "<pack>\prompts\agent_nudge.txt"
$env:GROK_EXPECT_PANELS = "2"
node "...\agent-continue.mjs"
Failure patterns
| Symptom | Cause | Fix |
|---|---|---|
| Still timeout / empty canvas | Submitted as Video while waiting for images | Force Image aria-radio |
| Boring essay picture | Image stills + slow playback | Use Video I2V 10s+ |
| Wrong identity | Macro lock / history grab | Full-body seed; UUID + midframe QA |
| Tab spray / CDP hang | Extra newPage / dual clients |
Dedupe; kill stale node |
Agent wait newUuidsSinceStart: 0 |
Sidebar history | Require new UUIDs after submit |
| Character faces drift across clips | Extra beats via home Video / New Generation | Continue the existing Agent ?conversation= |