← 返回博客
编程工具AI 编程CodeGateway

1 小时跑 16 张博客配图、总成本 $0.92:完整账本与可复制 spec

2026年5月8日
N5-cover.jpg cover

1 小时跑 16 张博客配图、总成本 $0.92:完整账本与可复制 spec

作者:CodeGateway 团队 · 实测于 2026-05

一句话:写完一批博客文稿,下一步通常是配图。手动找图慢、版权风险、风格不统一;外包贵且要排期。AI 图像 API 看起来是答案,但真正动手前大的疑问是——这玩意儿到底要花多少钱?流程会不会很麻烦? 本文给一份真实的账本。一次完整的 dogfood:4 篇博客 / 16 张配图 / 5 种上游模型 / 总成本 $0.92 / 全流程不到 1 小时。所有数据来自真实 prod API 调用,没有有利筛选。spec.yaml 与生图脚本都附在文末,可以直接复制改。

目录

  1. 起点:4 篇博客缺 16 张图
  2. 模型选择决策矩阵:什么图配什么模型
  3. Prompt 写法的三个非显然规律
  4. Spec 设计:一份 YAML 跑 16 张
  5. 真实账本:模型分布、单图成本、时长
  6. 踩过的坑:从 1:1 重生 16:9 的代价
  7. 可复制 spec 与脚本(直接抄)
  8. FAQ
  9. 相关资料

起点:4 篇博客缺 16 张图

故事从一个具体场景开始:写完 4 篇 SEO 长文(每篇 8000–12000 字),核对发布前清单时卡在"配图"这一栏。每篇至少需要:

  • 1 张 hero(首屏大图,OG 抓图也用)
  • 3 张文中插图(架构图 / 信息图 / 步骤图等)

合计 16 张。手动找图大致两条路:

  • 免费图库(Unsplash、Pexels):搜词难、风格东一个西一个、热门词图都被人用过;
  • 付费图库(Shutterstock、iStock):钱能解决但贵,单张 $10–30;
  • 设计外包:风格能定但排期 2–3 天起、成本几百美元。

加上 4 篇都是技术博客,免费图库里"开发者面对终端报错"这种概念图基本没有。所以决定上 AI 图像 API。问题变成:用哪几个模型、怎么分配、总成本能压到多少。

模型选择决策矩阵:什么图配什么模型

CodeGateway 当前有 6 个图像生成模型可用,分两条上游通路:

模型 ID

通路

计费

强项

imagen-4.0-fast-generate-001

Vertex (Imagen)

$0.02/图

速度、性价比、写实/概念插画

imagen-4.0-generate-001

Vertex (Imagen)

$0.04/图

标准画质

imagen-4.0-ultra-generate-001

Vertex (Imagen)

$0.06/图

高画质

gemini-2.5-flash-image

Vertex (Gemini)

按 token (~$0.04–0.08/图)

中文文字渲染、信息图标注

gpt-image-2

OpenAI

$0.005–$0.211/图(按质量×比例)

UI / 卡通、支持 16:9 横版

gpt-image-1.5

OpenAI

$0.009–$0.200/图

同上略弱

按博客配图的几种典型用途,我用了一张矩阵决定模型分配:

图里有大段中文文字标注?      → gemini-2.5-flash-image
是写实概念插画 / 抽象 hero? → imagen-4.0-fast-generate-001(首选)
hero 想要 16:9 横版? → gpt-image-2 medium 1536x1024
重要的旗舰单图? → imagen-4.0-generate-001(标准)
其他都不合适? → 上 ultra 或换思路

实际分配到 16 张:

  • 4 张 hero(首版用 imagen-4.0-generate-001 标准画质 $0.04 × 4 = $0.16
  • 3 张写实插画(imagen-4.0-fast-generate-001 $0.02 × 3 = $0.06
  • 9 张含中文标注的信息图 / 步骤图(gemini-2.5-flash-image ~$0.06 × 9 = $0.54

预估总成本约 $0.76。最后实际跑完是 $0.76(精确)+ $0.16 hero 重生(后面会讲为什么重生)= $0.92

Prompt 写法的三个非显然规律

写了 16 张后体感强项的三条规律:

1. 颜色用形容词,不写 hex

#8B5CF6 这种十六进制颜色码,模型有不低的概率会把字符直接渲染到图里——你会得到一张图,主体上漂着 #8B5CF6 几个字母数字。

正确写法:deep violet purple / lavender gradient / emerald green accent。颜色描述用形容词,模型理解的色感更接近设计师的描述习惯。

2. 拒绝 emoji 装饰

prompt 里写"with rocket emoji 🚀"或"festive ✨ vibe"会让模型试图渲染 emoji 字符,结果是模糊的字形或乱码。

替代:用具体视觉元素描述。"a small upward arrow"、"a subtle sparkle effect"、"warm celebratory tone"——把语义传给模型,让它自己出图。

3. 比例与"宽屏构图"要写两遍

Imagen 4 的 backend 写死 1024×1024,请求里加 aspect_ratio: "16:9" 不会被识别(被忽略)。即便走 gpt-image-2 + size: 1536x1024,prompt 里仍然建议写 wide cinematic horizontal composition,让模型在构图上预期横版,避免主体被挤在中间。

Spec 设计:一份 YAML 跑 16 张

我们写了一个小生图工具,输入是 YAML spec、输出是按 spec 跑完的 PNG + 成本账单。Spec 长这样:

yaml
- name: 297-hero
model: imagen-4.0-generate-001
prompt: |
A minimalist flat illustration showing a frustrated developer at a laptop,
the laptop screen displaying a terminal window with red Connection Timeout
error text, soft purple gradient background...
aspect: "16:9"
size: "1792x1024"
out: /tmp/sprint4b-images/297-hero.png

- name: 297-arch
model: gemini-2.5-flash-image
prompt: |
A clean three-layer architecture diagram, horizontally stacked panels:
top panel labeled "网络链路层" (purple stripe),
middle panel labeled "TLS 层" (lighter violet),
bottom panel labeled "模型推理层" (deep violet)...
aspect: "1:1"
out: /tmp/sprint4b-images/297-arch.png

# ... 共 16 条

为什么用 YAML 而不是直接写代码:

  • 可读。审稿和改 prompt 的时候,spec 是文字编辑而不是改 Python。
  • 可版本控制。spec 进 git,和文章一起评审、一起回滚。
  • 可二次跑。改一条 prompt 重跑那一条,其他不动。
  • 可分批。dry-run 模式先看预算,OK 再实际跑。

跑 spec 的命令一行:

bash
python3 generate.py --spec image-spec.yaml --api-key "$CODEGATEWAY_PROD_API_KEY"

整个生图阶段不到 5 分钟(多 prompt 串行跑,单图快 7 秒慢 18 秒)。

真实账本:模型分布、单图成本、时长

第一批:16 张(首版)

模型

张数

单价

小计

平均时长

imagen-4.0-generate-001

4

$0.040

$0.160

10–12 s

imagen-4.0-fast-generate-001

3

$0.020

$0.060

7–9 s

gemini-2.5-flash-image

9

~$0.060

$0.540

8–17 s

首版小计

16

$0.760

平均 ~10 s

时间维度:API 调用累计约 2 分 30 秒(串行)。如果改并发能压到 30 秒级,但博客配图这种轻量任务串行就够。

第二批:4 张 hero 16:9 重生

首版 hero 用 imagen-4.0-generate-001,固定 1024×1024。但博客模板的 hero 容器是 16:9,1:1 渲染时上下被裁,看起来有损。所以重生 4 张 16:9 横版,切到 gpt-image-2 medium:

模型

张数

单价

小计

平均时长

gpt-image-2 medium 1536×1024

4

$0.041

$0.164

56–71 s

重生小计

4

$0.164

平均 ~62 s

gpt-image-2 比 Imagen 慢——大约 6 倍。但 16:9 横版只有 OpenAI 通路原生支持,权衡值得。

总账

首版 16 张:        $0.760
hero 重生 4 张: $0.164
─────────────────────────
总计: $0.924 (向上取 $0.92)

人均 / 单图: ~$0.046

外加从写 spec 到验收的人工时间 ~30–45 分钟(包含 prompt 调优、转 JPEG、上传 CMS、设 cover)。完整闭环不到 1 小时。

踩过的坑:从 1:1 重生 16:9 的代价

这次 dogfood 大的教训是 hero 的 aspect ratio 没在第一批就规划好

具体踩坑过程:

  1. 首版 spec 写了 aspect: "16:9",但 Imagen 4 backend 把这个字段标记为 "accepted but ignored"——文档和实现都说接收但不处理(backend/src/proxy-vertex-image.ts 注释里明确写了)。结果 4 张 hero 全部 1024×1024。
  2. 上传 CMS 后,前端 hero 容器按 16:9 渲染,1:1 源图上下被裁,主体被切。
  3. 重新选模型——切到 gpt-image-2 size=1536×1024。但 gpt-image-2 单图 60 秒级,4 张要 4 分钟,比 Imagen 慢一截。
  4. 多花 $0.16 + 4 分钟。

教训

  • 第一批 spec 前,先确认目标渲染容器的比例。Hero 容器 16:9 / 文中插图容器 1:1 / OG 抓图 1.91:1(接近 16:9)。
  • 比例不被某个模型支持就第一批就换模型,不要等渲染验收发现再返工。
  • 不同模型的 size 参数语义不一致(Imagen aspect_ratio 被忽略,gpt-image-2 用 size 字符串),spec 工具要在 dispatch 时分流,写工具的时候多花 5 分钟做这件事,省后面几小时。

可复制 spec 与脚本(直接抄)

小生图脚本(单文件,零依赖外部库)

python
#!/usr/bin/env python3
"""Minimal image gen runner. Reads YAML spec, calls /v1/images/generations,
saves PNG to disk, prints cost totals. Public domain."""

import argparse, base64, json, os, sys, time
import urllib.request
from pathlib import Path

def post(url, body, headers):
data = json.dumps(body, ensure_ascii=False).encode("utf-8")
req = urllib.request.Request(url, data=data, headers=headers, method="POST")
with urllib.request.urlopen(req, timeout=180) as resp:
return json.loads(resp.read().decode("utf-8"))

def build_body(entry):
body = {
"model": entry["model"],
"prompt": entry["prompt"],
"n": int(entry.get("n", 1)),
"response_format": "b64_json",
}
# OpenAI route: size; Vertex route: aspect_ratio
if entry["model"].startswith("gpt-image"):
if "size" in entry: body["size"] = entry["size"]
if "quality" in entry: body["quality"] = entry["quality"]
else:
if "aspect" in entry: body["aspect_ratio"] = entry["aspect"]
return body

def main():
ap = argparse.ArgumentParser()
ap.add_argument("--spec", required=True)
ap.add_argument("--api-key", default=os.environ.get("CODEGATEWAY_PROD_API_KEY"))
args = ap.parse_args()

# ... YAML parser + main loop, see full source in workspace

完整版(含成本估算、dry-run、错误处理、模型自动 dispatch、~280 行)开源在 Whitedit/code-gateway-cookbook — 一份 generate.py + 一份 spec-example.yaml,MIT 许可证,复制即用。

Spec 模板(直接改 prompt 跑)

yaml
# Hero 横版 16:9(OpenAI 通路才支持原生横版)
- name: my-hero
model: gpt-image-2
quality: medium
size: "1536x1024"
prompt: |
A wide cinematic flat editorial illustration of <YOUR SCENE>,
soft purple gradient background, modern minimal tech aesthetic,
no chinese text, no logos, professional editorial composition.
out: /tmp/images/my-hero.png

# 文中写实插图 / 概念图(性价比高)
- name: my-concept
model: imagen-4.0-fast-generate-001
prompt: |
A minimal abstract <SUBJECT>, soft purple gradient,
clean editorial style, no text.
aspect: "1:1"
out: /tmp/images/my-concept.png

# 含中文标注的信息图(Gemini 强项)
- name: my-infographic
model: gemini-2.5-flash-image
prompt: |
A clean infographic on white background:
<STEP 1 标题>, <STEP 2 标题>, <STEP 3 标题>,
purple connecting lines, modern minimal flat design.
aspect: "1:1"
out: /tmp/images/my-infographic.png

接入 API

bash
export CODEGATEWAY_PROD_API_KEY="sk-cg-xxx"  # https://www.codegateway.dev 注册即可拿
python3 generate.py --spec image-spec.yaml --api-key "$CODEGATEWAY_PROD_API_KEY"

新账户送 $2 起步额度——按本文成本结构折算约两轮完整 dogfood(每轮 16 张)。够把流程跑顺、validate prompt 风格、再决定要不要充值跑生产规模。

FAQ

Q:能不能只用一个模型省心?

A:能,但代价是风格单一 + 部分场景出不了。Imagen 4 fast 适合写实概念,但中文文字渲染弱;gemini-2.5-flash-image 适合标注信息图,但纯审美写实不如 Imagen;gpt-image-2 适合 UI 卡通,速度慢且贵。多模型混搭是博客配图的推荐方案。

Q:成本能不能再压?

A:可以。把所有 hero 切到 imagen-4.0-fast($0.02 vs std $0.04),16 张全部 fast:$0.32。但 hero 是首屏首图,建议保留 std 画质——多出 $0.16 在 SEO 与社媒分享 CTR 上的回报值得。

Q:图像 API 是不是按 token 计费?

A:分两种。Imagen 系列按图固定计费($0.02 / $0.04 / $0.06),不管 prompt 多长、分辨率多大。Gemini 2.5 Flash Image 按 token(输入 + 文本输出 + 图像输出 modality 各一档),实际单图通常落在 $0.04–$0.08。GPT Image 按 quality × aspect 矩阵计价,同样固定。

Q:批量跑 100 张以上怎么办?

A:spec 文件不变,跑批多花点时间。或者改并发:generate.py 默认串行,加几行 asyncio 改并发后单批 100 张能压到 1–2 分钟。注意 RPM 限制(看你的 CodeGateway 阶梯)。

Q:风格如何保持一致?

A:两条路:

  • 同一篇文章的图固定一个模型 + 固定 prompt 模板(颜色、构图、视觉风格描述每次都一样,只换主体)。
  • 用同一张参考图(gemini-2.5-flash-image 支持多 5 张参考图)做风格锚点,后续生成全部以其为风格基准。

Q:版权风险?

A:看上游模型的服务条款。Anthropic / Google / OpenAI 的图像 API 商用条款大体允许商用(具体读各自最新 ToS)。CodeGateway 网关本身不主张图像版权——你生成的图归你。

Q:生成失败重跑会不会被收两次费?

A:不会。Failed request(4xx/5xx)不计费。只有成功返回 b64_json / url 的请求才扣余额。本文 16 张全部一次过,没遇到失败重跑。

Q:可以走 dry-run 不出图先看预算吗?

A:可以。generate.py --dry-run 模式只读 spec、按定价表算总成本,不发 API 请求。预算不对就改 spec。

相关资料

写技术博客的人都明白:内容是 80%、配图是 10%、链接和 SEO 元数据是 10%。配图这 10%以前要么压榨设计组、要么自己折腾几小时手画,现在 1 小时 / $1 / 一份 spec 就能搞定。把工具流程跑顺,剩下的精力就能投回内容本身——这才是工具该干的事。