起因
我自己日常在 grok 上用 Grok Imagine 出图、出短视频,主要是给 YouTube Shorts 做素材和给电商的 SKU 出测试图。
用着用着发现一个很尴尬的事:grok 的网页只能一条 prompt 一条 prompt 地提交,出图要等,出视频更要等,
而且每生成完一个还得手动右键「另存为」,文件名还都是 (1).mp4、(2).mp4 这种鬼东西。
我一晚上能写 80 条 prompt ,但真要把它们全跑完、再整理好,得我守着电脑两三个钟头。 这种活,机器干显然比人干合适。
思路
xAI 那个官方的 Grok Tasks 只能做「定时让 Grok 帮你跑一次问答然后邮件给你」, 完全不解决我这种「批量生成媒体文件」的场景。
所以路线只有一个:写个 Chrome 扩展,注入 content script ,接管 grok 的 UI ,自己点自己等自己存。 后来这个扩展我起名叫 Grok Automation,下面把几个有点意思的实现细节说一下。
实现里几个有点意思的点
-
DOM 变化用 MutationObserver 兜底 grok 的前端是 SPA ,按钮、loading 状态、生成完成的标记都是异步出现的。 一开始用
setTimeout轮询,跑 50 条以上就开始飘。后来全部改成 MutationObserver 监听特定容器,配合一个状态机,稳定性才上来。 -
智能延迟,不是固定 sleep 一开始我设的是「每条 prompt 之间 sleep 10 秒」,结果有些 prompt 5 秒就出完了在干等, 有些跑 30 秒还没好就被下一条挤掉。后来改成「等当前生成结束 + 一个小抖动」, 既不被限流也不浪费时间。
-
自动下载和命名 chrome.downloads API 可以指定
filename,所以我把每个 batch 命名成项目名, 图片 / 视频 / metadata 全部塞到Downloads/<project>/下,给后期剪辑同事是一个文件夹直接拖。 -
Concat 模式 Grok 的视频单条最长就那么几秒,我自己想要长一点的连续镜头, 就做了个「把前一段视频的最后一帧作为下一段的 frame 输入」的链式生成。 这个其实是 Grok Imagine 自己 frame-to-video 模式的一个自然组合,但手动操作太痛苦。
-
失败不中断队列 早期版本一个 prompt 触发 Grok 内部错误,整个队列就崩了。 现在是单条失败标记一下,继续往下跑,最后给一个 failed 列表,单独重跑就行。
目前覆盖的场景
五种 Grok Imagine 的输入模态全都做了批量:
- Text-to-Video
- Frame-to-Video
- Ingredients-to-Video (多张图合成一段视频,做角色一致性比较好用)
- Text-to-Image (支持 16:9 / 9:16 / 1:1 / 2:3 / 3:2 五个比例)
- Image-to-Image
一些坑 / 限制
- 网页改版:grok 改 DOM 我就得跟着改 selector ,这是无法避免的副作用, 上次他们改 video player 我加班改了一晚上。
- 限流:免费账号一天能跑的量是有上限的,扩展并不能绕过这个, 只能在限流之内把节奏调到最快。
- 只跑 grok:x 里嵌入的那个 Grok 不在范围内, 那边 DOM 完全是另一套,没必要重复造。
状态
- Chrome Web Store 审核中。
- 完全在本地浏览器跑,prompt 和生成的图 / 视频都不离开你这台机器,没有 server 端收集。
求拍砖
主要想问几件事:
- 你们在做批量生成的时候,最痛的环节是什么?是 prompt 管理、还是结果筛选、还是后期重命名? 下一步我想加 prompt 模板和变量替换,但不确定是不是真痛点。
- 有没有人遇到过 grok 改版导致自动化挂掉的情况,你们一般怎么做兼容性兜底?
- 现在 UI 是「贴一列 prompt 然后按 Start 」,有没有更优雅的交互范式可以参考?
落地页和扩展入口在这里,欢迎吐槽(包括落地页文案,我自己看好几遍都看吐了): 👉 https://grok-automation.com/chrome-extension/
谢谢老哥们。