首页 / 正文

发一条视频,比发四格图省事:GPT Image 2 生成分镜 + Codex 自动写脚本,一套打完收工

Mooko
发布于 2026-05-01 · 5分钟阅读
3548 浏览
0 点赞 暴击点赞!

发视频比发四格图更“容易”?我用 GPT Image 2 + Codex 跑了一套生产线

你有没有这种崩溃:

  • 四格图画到第 3 格,人物脸已经变成“远房亲戚”了 😅
  • 每格都要重新构图、重新排字
  • 发出去还不一定被推荐

反过来,短视频(哪怕就是“图像关键帧 + 字幕 + BGM”)更像流水线:

  • 只要几张关键帧就能动起来
  • 转场、字幕、节奏一加,完成度立刻上去
  • 平台也更爱推(至少我自己账号的体感是这样)

这篇给你一套能直接照抄的方案:

  • GPT Image 2:出稳定的分镜关键帧
  • Codex:自动写生成脚本 + 合成视频脚本
  • FFmpeg:把帧合成视频、加字幕、加音频

目标很明确:你每天能早下班一小时,而不是在 PS 里抠到凌晨。


你要准备什么

工具清单

  • OpenAI API Key
  • Node.js 或 Python(下面给 Node 版本,复制就能跑)
  • FFmpeg(本地装一下就行)

成品是什么样

  • 5~9 张关键帧(1:1 或 9:16)
  • 每张帧有一致角色 + 一致场景风格
  • 合成一个 6~12 秒短视频(可加 BGM、字幕)

关键思路:别死磕“四格”,用“分镜”碾压它

四格图难在“每一格都必须完美”。

短视频分镜不一样:

  • 帧与帧之间允许有一点变化
  • 转场一做,观众反而觉得“更有动感”
  • 你可以用字幕把信息补齐

所以策略是:用最少的画面成本,拿到更高的内容完成度


流程长这样(你照着跑就行)

1)先写一个“分镜表”(很短,别写小说)

建议 6 帧起步:

  • 1:建立场景
  • 2:角色出现
  • 3:冲突/问题
  • 4:误会/反转
  • 5:解决方案
  • 6:收尾梗/金句

示例(你可以直接替换主题):

主题:打工人用 AI 做日报
角色:同一个年轻上班族,圆框眼镜,浅色衬衫
风格:日系清爽插画,干净背景

镜头1:工位,电脑弹出“今晚前交日报”
镜头2:主角抱头崩溃,桌上咖啡摇摇欲坠
镜头3:主角打开 AI 工具,屏幕出现“生成日报”按钮
镜头4:屏幕飞速输出,主角表情从痛苦变成震惊
镜头5:主角把日报发出去,主管竖大拇指
镜头6:主角背包下班,字幕:明天也别熬夜了

分镜写到这个程度就够了。别贪多。


2)用“角色锚点”锁住一致性(这一步决定你成片像不像专业号)

你要在每一帧提示词里固定这些信息:

  • 角色特征(发型、衣服、配饰)
  • 画风(插画 / 3D / 写实)
  • 镜头语言(中景、近景、俯拍)
  • 色彩(干净、低饱和、暖色)

我常用的“角色锚点模板”👇

同一角色:25岁亚洲年轻男性,圆框眼镜,短黑发偏分,浅蓝衬衫,灰色工牌,干净清爽,表情自然
统一画风:日系扁平插画,线条干净,低饱和配色,柔和阴影
统一场景:现代办公工位,白色桌面,笔记本电脑,窗外白天城市背景虚化
镜头:电影感构图,中景为主,景深轻微

你会发现:四格图拼命想一致,经常翻车。

分镜帧只要“70%一致”,视频里观众很难挑刺。


3)提示词直接给你:GPT Image 2 分镜生成版

把“角色锚点 + 单帧剧情”拼起来就行。

镜头 1 提示词示例:

日系扁平插画,线条干净,低饱和配色,柔和阴影。
同一角色:25岁亚洲年轻男性,圆框眼镜,短黑发偏分,浅蓝衬衫,灰色工牌。
统一场景:现代办公工位,白色桌面,笔记本电脑,窗外白天城市背景虚化。
镜头:中景,电影感构图。
剧情:电脑屏幕弹出提示“今晚前交日报”,主角盯着屏幕,表情紧张。
画面干净,主体突出,留出顶部字幕空间。

镜头 2~6同理,把剧情句换掉。

小技巧:每帧都加一句“留出字幕空间”。你后期会谢我。


代码开源版:Codex 负责把脏活累活全写完

你可以让 Codex 生成一份脚本,做三件事:

  • 读取分镜表
  • 调用 GPT Image 2 批量出图
  • 用 FFmpeg 合成视频(加字幕/加音乐)

下面我直接给一个可跑的 Node.js 示例(你把 OPENAI_API_KEY 配上即可)。

说明:不同 SDK 版本接口名可能略有差异,你照这个结构写,改起来很快。

1)安装依赖

npm i openai

2)生成关键帧(frames)

// generate_frames.mjs
import fs from "fs";
import path from "path";
import OpenAI from "openai";

const client = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });

const outDir = "./frames";
if (!fs.existsSync(outDir)) fs.mkdirSync(outDir);

const characterAnchor = `
同一角色:25岁亚洲年轻男性,圆框眼镜,短黑发偏分,浅蓝衬衫,灰色工牌,干净清爽,表情自然。
统一画风:日系扁平插画,线条干净,低饱和配色,柔和阴影。
统一场景:现代办公工位,白色桌面,笔记本电脑,窗外白天城市背景虚化。
镜头:电影感构图,中景为主,景深轻微。
`;

const storyboard = [
  "电脑屏幕弹出提示‘今晚前交日报’,主角盯着屏幕,表情紧张,画面留出顶部字幕空间。",
  "主角抱头崩溃,桌上咖啡快要打翻,画面留出顶部字幕空间。",
  "主角打开 AI 工具,屏幕出现‘生成日报’按钮,画面留出顶部字幕空间。",
  "屏幕飞速输出内容,主角从痛苦变成震惊,画面留出顶部字幕空间。",
  "主角把日报发出去,主管在旁边竖大拇指,画面留出顶部字幕空间。",
  "主角背包下班走出办公室,轻松表情,画面留出顶部字幕空间。"
];

for (let i = 0; i < storyboard.length; i++) {
  const prompt = `${characterAnchor}\n剧情:${storyboard[i]}\n画面干净,主体突出,无水印,无乱码文字。`;

  const res = await client.images.generate({
    model: "gpt-image-2",
    prompt,
    size: "1024x1024" // 做 9:16 也行:后期裁切或用扩图
  });

  const b64 = res.data[0].b64_json;
  const file = path.join(outDir, String(i + 1).padStart(2, "0") + ".png");
  fs.writeFileSync(file, Buffer.from(b64, "base64"));
  console.log("saved", file);
}

运行:

node generate_frames.mjs

你会得到 frames/01.png ... 06.png


合成视频:FFmpeg 一句搞定(再也别手动拖剪辑软件了)

方案 A:最简单的“图片轮播视频”

每张图 1.2 秒,6 张图就是 7.2 秒:

ffmpeg -y \
  -framerate 1/1.2 \
  -i frames/%02d.png \
  -c:v libx264 -pix_fmt yuv420p \
  out.mp4

方案 B:加字幕(建议把字幕写到文件里)

建一个 captions.srt

1
00:00:00,000 --> 00:00:01,200
今晚前交日报?

2
00:00:01,200 --> 00:00:02,400
我人都麻了

3
00:00:02,400 --> 00:00:03,600
打开 AI:生成日报

4
00:00:03,600 --> 00:00:04,800
输出速度离谱

5
00:00:04,800 --> 00:00:06,000
主管:可以啊

6
00:00:06,000 --> 00:00:07,200
下班!

合成字幕:

ffmpeg -y \
  -framerate 1/1.2 \
  -i frames/%02d.png \
  -vf "subtitles=captions.srt" \
  -c:v libx264 -pix_fmt yuv420p \
  out_sub.mp4

想更好看?给字幕加描边、阴影、位置,这些都能在 FFmpeg 或 ASS 字幕里搞。


让 Codex 变成你的“短视频工头”:一条指令让它生成整套工程

你可以把下面这段话丢给 Codex,当作需求文档:

帮我生成一个 Node.js 小项目:
1) 读取 storyboard.json(包含角色锚点、6段分镜、每段字幕)
2) 调用 OpenAI 的 gpt-image-2 生成 1024x1024 PNG,保存到 frames/%02d.png
3) 自动生成 captions.srt
4) 自动调用 ffmpeg 合成 out.mp4(每张图 1.2 秒)并叠加字幕
要求:
- 提供 package.json、可运行命令
- 代码里把 API Key 从环境变量读取
- 输出目录不存在则自动创建

你会发现:真正省时间的是这步。

你不需要当“脚本工程师”。你只要当导演。


避坑清单(都是我踩过的坑)

  • 字幕空间不留:生成图把画面塞满,后期字幕只能糊脸。
  • 每帧提示词写太自由:角色锚点没固定,脸分分钟崩。
  • 画面出现乱码字:提示词里加“无水印,无乱码文字”,还能减少翻车。
  • 帧数太多:新手别一上来做 20 帧。6~9 帧更容易做完、发出去。
  • 一味追求“完全一致”:视频容错比四格高,别把自己逼死。

你可以直接套用的“选题模板”(发出去更像一个系列)

  • 《把 XX 交给 AI 以后,我下班早了》
  • 《XX 崩溃瞬间 vs AI 介入后》
  • 《领导一句话,我用 AI 5 秒搞定》
  • 《同事以为我通宵,其实我用脚本》

配上这套分镜流水线,你就能稳定日更。


你要我帮你把它变成“可一键运行”的仓库吗?

你把这三样发我就行:

  • 账号内容方向(职场/学习/带货/情感/知识科普)
  • 角色设定一句话(比如“戴眼镜的打工人”)
  • 想做 6 帧还是 9 帧

我给你一份标准化目录结构(含 storyboard.json 示例、脚本、FFmpeg 命令),你直接改文案就能批量出片。

OpenClaw
OpenClaw
木瓜AI支持养龙虾啦
木瓜AI龙虾专供API,限时领取免费tokens
可在 OpenClaw接入全球顶尖AI大模型
立即领取