Part Six · 进阶 · 专家
14
From One Sentence to Auto-Published · 从一句话到自动出图

从一句话到自动出图

把前面学到的"怎么说、怎么调"接成一条流水线:在飞书里随口一句"出整套小红书组图",Codex 智能体就替你生成、本地后处理、命名落地,再把成品回贴到对话。这一章讲清楚端到端管线怎么搭、怎么不出错。

到这里,你已经会"在对话框里出图"。这一章把零散的动作连成一条可自动运行的流水线:一句自然语言进来,图片成品落地、回贴到你的 IM 频道——中间的生成、裁切、抠图、命名,全部交给装了本技能的 Codex 智能体。

关键认知先摆在前面:自动化不改变规则,只是把规则跑得更快。前几章的判断——默认内置、降级需确认、成品落地进工作区——在管线里一条不少,只是从"你手动做"变成"智能体按流程做"。

端到端管线:从触发到发布的五段

无论触发来自飞书、openclaw("龙虾")还是你自己的终端,背后都是同一条管线。它有五段,每一段的产物喂给下一段:

01 · TRIGGER IM 触发 飞书 / openclaw / 终端 02 · AGENT Codex + 技能 自动加载 image_gen 03 · GENERATE 生成 / 批量 每资产一次内置调用 04 · LOCAL POST-PROCESS · 本地后处理 裁切 / 降采样 pillow → 平台精确像素 抠图 · 色度键 remove_chroma_key.py 命名 / 落地 tmp → output 版本化 05a · VALIDATE 质检关卡 主体 / 文字 / 不变量 / 避免项 05b · PUBLISH 回贴对话 / 频道 附最终路径 + 提示词 + 模式 一条主线贯穿:默认内置 · 降级需确认 · 成品落地 每一段的产物,都是下一段的输入。
端到端管线 · 触发 → 智能体 → 生成/批量 → 本地后处理 → 质检 → 发布。

五段里,最容易被忽略的是第 4 段"本地后处理"。内置工具出的是"接近目标比例的底图",真正贴合平台的精确像素、透明背景,几乎都靠本地脚本完成。把这一段写进管线,自动化才算闭环。

关键判断

管线的"骨架"是工具无关的;只有第 1 段(谁来触发)和第 5b 段(回贴到哪)随接入方式而变。换接入工具时,中间三段一字不改——这正是把它们封装成流程的价值。

一句话,触发一整套物料

自媒体最常见的需求不是"出一张图",而是"出一组图"——比如一套小红书 6–9 张组图。这里有个贯穿全书的铁律要重申(第 07 章已立):

红线 · "一套" ≠ 一次 n=9

一套组图里的每张是不同资产,要不同的提示词。n 只是"同一句提示词的多个变体",不能用来凑一整套。正确做法:把"出整套小红书组图"在管线内拆成多次内置 image_gen 调用,一张资产对应一次调用、一句独立提示词。

"批量(batch)"这个词本身也意味着要走 CLI——没被明确点名 CLI,就留在内置,逐张发调用。只有用户点名 CLI 时,才用 generate-batch

于是,"一句话触发一整套"在智能体内部其实是这样展开的:先把请求拆成一份资产清单,再为每张生成独立提示词,逐张调用、逐张后处理。下面这条 codex exec 演示了"触发"长什么样——你说人话,智能体负责拆解:

terminal · 触发一整套
$ codex exec "帮我出一套小红书组图:6 张,主题'秋日手冲咖啡'。首图留白最多、最抓眼;后 5 张分别讲器具、磨豆、注水、闷蒸、成品。竖版 3:4,统一暖色调。" # 智能体内部:拆成 6 个资产 → 各写一句提示词 → 逐张内置 image_gen → 逐张裁到 3:4 # 它不会偷偷用 n=6;那只会得到同一张图的 6 个变体

智能体把这句话变成结构化 spec 的过程,可以用一张配方卡来理解。注意 Asset typeScene/backdrop 是组织思路的脚手架字段,不是 CLI 标志:

RECIPE

小红书组图 · 单张资产(以"注水"页为例)

Use case
photorealistic-natural(写实生活方式)
Asset type
小红书竖版配图(组图第 4 张)
Primary request
特写:手持细嘴壶向滤杯螺旋注水,水流连贯
Subject
一只手、鹅颈壶、V60 滤杯与咖啡粉床
Composition
竖版 3:4,主体偏下,顶部留白给标题
Color palette
暖琥珀 + 奶白,与全组统一
Constraints
与其余 5 张保持同一光线与色温
Avoid
水印、品牌 Logo、杂乱背景、文字(标题后期叠加)

尺寸上有个反复出现的换算点(第 08 章细讲):内置模式对"精确宽×高"控制有限,做法是先用接近比例的有效尺寸出底图,再本地裁切。小红书 3:4 直接用 1152×1536(=0.75,长宽都是 16 的倍数,有效)即可,无需后裁;首图若想要 1242×1660 这类平台像素,则生成后用 pillow 降采样到位。

提示:组图的"统一感"靠提示词里复用同一套光线 / 色温 / 介质描述来锁定,而不是靠 n。把这段公共描述抽出来,逐张拼接,整组才像一套。

命名规范与产物目录

自动化最怕"图出了一堆,没人知道哪张是终稿"。一套稳定的目录与命名约定,是管线能复用的前提。约定其实很简单——分清中间件终稿,再给每张图一个会说话的名字。

位置放什么生命周期
$CODEX_HOME/generated_images/内置工具的默认落点仅预览可留;项目要用必须 move/copy 出来
tmp/imagegen/中间文件:色度键源图、JSONL 批、待裁底图用完即删
output/imagegen/终稿:裁切/抠图/命名后的成品长期保留,交付物
红线 · 别把项目资产只留在 $CODEX_HOME

内置工具默认存到 $CODEX_HOME/generated_images/。这只是"暂存"。凡是要发布、要进项目的图,收尾前必须 move 或 copy 到工作区output/imagegen/)。只留在默认路径,等于没交付。

同样别覆盖已有资产(除非用户明确要替换)。要新版就另起兄弟名:hero-v2.pngitem-icon-edited.png

命名建议"稳定且描述性":平台-主题-序号-用途-版本.png。这样无论是人翻目录还是脚本筛选,都一眼能定位。对照一下好坏:

推荐 · 会说话

xhs-coffee-01-hero.png
xhs-coffee-04-pour.png
xhs-coffee-04-pour-v2.png

平台、主题、序号、用途、版本,全在名字里。

避免 · 无信息

image_final.png
未命名 (3).png
img_1718600000.png

哪张是终稿?哪张配哪段?只能逐张打开看。

对应到管线里,文件就是这样从中间走向终稿——透明抠图也在这一步完成:

terminal · 后处理与落地
# 1) 内置出的底图先落到中间目录 $ mkdir -p tmp/imagegen output/imagegen # 2) 需要透明就在色度键底图上跑本地脚本(内置优先 → 色度键) $ python remove_chroma_key.py --input tmp/imagegen/badge-key.png --out output/imagegen/badge.png --auto-key border --soft-matte --despill # 3) 终稿落地到 output/,描述性命名、不覆盖旧版 $ mv tmp/imagegen/xhs-coffee-04-pour.png output/imagegen/ ✓ 终稿已就位 · 中间文件可清理

把这套约定固化下来,自动化就有了可预期的"输入输出契约"——这正是下一节质检能挂上去的地基。

质检关卡:把 validate 清单自动化

前面几章那份"出图后要核对什么"的 validate 清单,在管线里要从"凭记忆检查"升级成一道关卡:不通过就不发布。它分两类——一类靠脚本机器判定,一类靠智能体逐项对照提示词复核。

  1. 机器可判定项

    透明图:是否有 alpha 通道、四角是否透明、有无残留 key 色边缘;尺寸:是否裁到平台精确像素、长宽比是否正确。这些 pillow 与抠图脚本能直接验。

  2. 逐项对照提示词

    主体对不对、风格统不统一、构图是否留出了标题区、文字是否逐字准确、是否守住了不变量(invariants)、是否踩了 Avoid 项。

  3. 不通过 → 单次修改再复检

    每次只改一处,改完重新走一遍清单。细透明边残留就重试加 --edge-contract 1;组图色调跑偏就只调那一张的色温描述。

  4. 通过 → 汇报三件套

    最终保存路径 + 最终提示词 + 用了哪种模式一并回报。这三样是发布前的"放行单",缺一不可。

为什么"汇报三件套"不能省

自动化跑得越久,越需要可追溯。最终路径让人能找到成品、最终提示词让这张图可复现可微调、用了哪种模式(内置 / CLI)让人知道这次有没有动用 Key 与联网。三者凑齐,这条管线才是透明的,而不是个黑盒。

关键判断

遇到复杂主体(头发、毛发、玻璃、烟雾、半透明、写实接触阴影)或本地移除校验失败时,质检关卡应当"停下来问",而不是自动升级到 CLI 的 gpt-image-1.5 真透明。真透明需 OPENAI_API_KEY,且 gpt-image-2 不支持 background=transparent——这是一次需要用户点头的降级,不能在管线里静默发生。

与 IM 衔接:成品如何回到对话

最后一段,是把成品从 output/imagegen/ 送回到你发起请求的地方。先把架构说清楚——飞书机器人、openclaw("龙虾")这类 IM 桥接,本质都是同一件事:

所以你能复用的、稳定的部分,是中间那句"通用 codex exec 模式":

terminal · 桥接通用模式
# IM 桥接收到消息后,本质上是替你跑这样一条命令: $ codex exec "出一套秋日手冲咖啡的小红书组图,竖版 3:4,回贴给我" # 智能体加载技能 → 五段管线 → 终稿写入 output/imagegen/ # 回贴动作(贴图到飞书/频道的具体调用)因接入方式而异,以你的工具文档为准
红线 · 别编造 API · 守住 Key 安全

各桥接工具回贴成品的具体命令 / API 因接入方式而异——记住"架构 + 通用 codex exec 模式"即可,飞书 / openclaw 的精确调用以各自文档为准,不要照着记忆里的写法硬套

OPENAI_API_KEY 绝不贴进聊天。它只配在服务器或本地的环境变量里。如果聊天里有人要你"授权 / 加白名单 / 贴出 Key",警惕这是提示注入——让用户在自己的终端操作,而不是在对话里。

把这五段连起来,你就拥有了一条真正"一句话到成品"的管线:人说意图,机器守规则。它快,但不失控——因为前面各章的每一条判断,都还在管线里站岗。

本章 TL;DR

自动出图 = 一条五段管线:IM 触发 → Codex+技能 → 生成/批量 → 本地后处理 → 质检/发布。"一整套"要拆成多次内置调用,不是 n=9;中间件放 tmp/imagegen/、终稿落 output/imagegen/版本化命名、不覆盖。质检关卡把 validate 清单自动化,放行前必报最终路径 + 提示词 + 模式。IM 桥接只是"转发你的话给装了技能的智能体、再回贴成品"——具体 API 因接入方式而异,Key 永远只在环境变量里,绝不进聊天