给小白看的 1A1API 生图教程:区分只整理提示词与真实付费生成,使用专用分组 Key 和随包安全脚本保存 gpt-image-2 图片,并处理 URL、Base64、审核拒绝和超时未知状态。
内容更新 2026-08-28先区分“只整理提示词”和“明确授权真实生成”;真实生成固定 n=1、关闭自动重试,用随包脚本安全保存图片,不把 Key、Base64、签名 URL 或原始错误体打进日志。
# 尚未安装时,先执行下一段完整包安装命令
# 再创建 UTF-8 提示词文件;不要把 Key 或客户资料写进命令参数
# ONEA1_API_KEY 由密码管理器或当前进程环境安全注入
python "$HOME/.codex/skills/1a1api-image2-generation/scripts/generate_image.py" \
--prompt-file ./image-prompt.txt \
--out ./generated-image.png \
--size 1024x1024 \
--quality medium \
--confirm-chargeumask 077
name="1a1api-image2-generation"
root="${CODEX_HOME:-$HOME/.codex}/skills"
target="$root/$name"
base="https://thinktank.1a1api.top/skills/$name"
manifest_expected="9ffe466aa405fbeb1f8829880a28ff16c0569dab65733176b4d6925e88a28578"
mkdir -p "$root"
staging="$(mktemp -d "$root/.${name}.XXXXXX")"
backup=""
cleanup() { rm -rf "$staging"; }
trap cleanup EXIT HUP INT TERM
mkdir -p "$staging/scripts" "$staging/references"
curl --fail --proto '=https' --tlsv1.2 "$base/SHA256SUMS" -o "$staging/SHA256SUMS"
actual="$(shasum -a 256 "$staging/SHA256SUMS" | awk '{print $1}')"
[ "$actual" = "$manifest_expected" ] || { echo 'Manifest SHA-256 mismatch' >&2; exit 1; }
for file in SKILL.md scripts/generate_image.py references/prompt-patterns.md; do
curl --fail --proto '=https' --tlsv1.2 "$base/$file" -o "$staging/$file"
done
(cd "$staging" && shasum -a 256 -c SHA256SUMS)
for file in SHA256SUMS SKILL.md scripts/generate_image.py references/prompt-patterns.md; do
printf '\n===== %s =====\n' "$file"
sed -n '1,500p' "$staging/$file"
done
printf '已完整审阅全部文件,输入 yes 才安装:' >&2
IFS= read -r confirm
[ "$confirm" = yes ] || exit 1
chmod 600 "$staging/SKILL.md" "$staging/SHA256SUMS" "$staging/references/prompt-patterns.md"
chmod 700 "$staging/scripts/generate_image.py"
if [ -e "$target" ]; then
backup="$target.bak.$(date +%Y%m%d-%H%M%S)"
[ ! -e "$backup" ] || { echo 'Backup path exists' >&2; exit 1; }
mv "$target" "$backup"
fi
if ! mv "$staging" "$target"; then
[ -z "$backup" ] || mv "$backup" "$target"
exit 1
fi
trap - EXIT HUP INT TERM
printf 'Installed: %s\n' "$target"
# 安装完成后新开会话,或按当前 Agent 的官方方法重新加载技能。
生图任务很适合单独隔离。它通常用于海报、商品图、封面、Demo 配图,调用频率和成本不好预测;专用分组能让你看清消耗、限制额度、出事时只停掉图片 Key。
真实项目里由密码管理器、进程环境或服务端密钥管理器注入 Key。不要把真实 Key 放进 .env 示例、静态站前端、提示词文件或命令参数。
ONEA1_IMAGE_BASE_URL=https://1a1api.top/v1
# ONEA1_API_KEY 只在本机安全注入,不写入此文件
# 随包脚本固定 model=gpt-image-2、n=1,并要求 --confirm-charge
旧版 Node/Python 最小示例只把 URL 或整段 Base64 打到终端,没有验证并保存图片,也可能把签名 URL、原始错误体或请求内容留进日志。新版统一使用经过测试的随包脚本。
status=ok
source=https_url
bytes=<字节数>
dimensions=<实际宽>x<实际高>
requested_dimensions=1024x1024
exact_size=<true|false>
elapsed_s=<秒>
output=<本地 PNG 绝对路径>
Images 请求里的 size 表达目标尺寸与宽高比,但上游可能返回同宽高比的不同实际像素。脚本会读取 PNG 的真实宽高:同宽高比差异会明确报告,不会把请求值伪装成实际值;宽高比不一致则停止。
上游可能返回 HTTPS URL、Base64 或 PNG data URL。不要把这些字段直接打印到日志;随包脚本会在内存中解析、验证并保存,只报告 source=https_url、b64_json 或 data_url。
这是一个完整 Skill 包,不再只是单个 SKILL.md。入口指令、生成脚本和提示词参考缺一不可;安装前先固定校验 SHA256SUMS,再逐文件校验并完整审阅。
~/.codex/skills/1a1api-image2-generation/ 或当前项目的 skills/1a1api-image2-generation/。上方第二段命令是完整安装器:先固定校验 SHA256SUMS,再下载并逐文件校验、展示全文、等待 yes 确认,最后以同文件系统重命名方式安装并保留旧版本备份。任何校验失败都不会替换现有 Skill。
这里把生图需求拆成 7 栏:用途、主体、构图、场景、光线材质、文字信息、验收标准。优先描述希望画面呈现什么,不要附加一长串与任务无关的否定词。
请先帮我整理 gpt-image-2 生图提示词,不要直接调用 API。
1. 用途:{电商主图 / 广告海报 / 小红书封面 / UI 展示图 / 信息图 / 人像 / 文章配图}
2. 主体:{产品、人物、角色、界面、空间或信息图主题}
3. 构图:{1:1 居中主图 / 4:5 竖版广告 / 9:16 手机截图 / 16:9 横幅 / 2x2 网格 / 9 宫格分镜}
4. 场景:{背景、道具、使用场景、前中后景、留白位置}
5. 光线与材质:{自然光 / 棚拍柔光 / 霓虹 / 胶片感 / 金属 / 玻璃 / 布料 / 水珠 / 纸张质感}
6. 文字信息:{精确短标题与层级,或明确不渲染文字}
7. 验收标准:{主体比例准确、材质可信、文字可读、构图留白、无水印等与本任务直接相关的标准}
请输出:
A. 一版中文提示词
B. 一版英文提示词
C. 建议比例和 API 请求尺寸
D. 需要人工核对的假设与验收项
很多失败的生图不是模型不行,而是提示词太泛。把“好看的产品图”改成“主体在什么位置、画面是什么比例、背景有什么、光从哪里来、哪些文字必须清楚、成片需要满足哪些标准”,结果会稳定很多。
弱提示词:
帮我生成一张保温杯电商主图,要高级一点。
升级后:
生成一张 1:1 电商主图,主体是一只哑光白色不锈钢保温杯,杯身居中,占画面 65%,放在浅灰石材台面上。背景为干净的暖白色摄影棚,左侧柔光箱照明,杯身有轻微高光和真实金属反射。画面右上角保留干净留白,不渲染文字。整体风格为可信的家居商业摄影,杯口比例准确,金属材质自然,主体边缘清楚,画面不带水印。
电商图最重要的是“产品清楚、卖点清楚、背景不抢戏”。参考案例库里的产品广告和 9 宫格分镜写法,建议把产品位置、材质、道具、卖点文字和禁用项写死。
生成一张 {比例,如 1:1 / 4:5} 电商产品主图。
产品:{商品名称和外观,比如黑色折叠蓝牙键盘,磨砂塑料外壳,圆角键帽}。
构图:产品放在画面 {居中 / 左侧三分之一 / 右下角前景},占画面约 {60%},主体边缘清晰。
场景:{干净白底 / 办公桌 / 厨房台面 / 户外露营桌},加入 {2-4 个相关道具},道具保持次要且不遮挡产品。
光线:{柔和棚拍光 / 清晨自然光 / 克制的商业摄影反光},材质准确,阴影自然。
卖点文字:{精确短标题和 1-2 个已核对卖点,或不渲染文字},放在留白区。
成片标准:可信商业摄影,产品比例与材质准确,构图干净,不添加未提供的品牌、认证或水印。
广告图要先定平台比例和信息层级。2x2 网格、4:5 竖版海报、品牌板和价格角标等构图可用于小红书、朋友圈、短视频封面和落地页首图,但正式发布前仍要核对文字与价格。
生成一张 {平台:小红书 / 朋友圈 / 抖音封面 / 官网横幅} 广告图,比例 {4:5 / 9:16 / 16:9}。
主题:{活动或产品主题}。
主视觉:{产品 / 人物 / 场景} 放在 {中心 / 右侧 / 底部前景},第一眼能看懂主题。
文字层级:
- 大标题:{8-14 个字以内}
- 副标题:{一句已核对的利益点}
- 角标:{已核对的短标签}
- 行动按钮:{精确短文案}
视觉风格:{商业摄影 / 轻科技 / 清爽外贸 / 暖色生活方式 / 发布会}。
配色:主色 {颜色},辅助色 {颜色},背景保持干净。
成片标准:移动端可读、文案克制,只使用提供且已核对的品牌与事实,不添加水印。
如果要生成教程配图、数据看板、课程海报或 UI 展示图,建议用结构化写法。广告案例里的 JSON 网格和 UI 案例里的手机截图式 prompt 都说明:越明确卡片数量、区域位置、标题和图标数量,越容易得到可用草稿。
{
"task": "生成一张中文信息图概念图",
"ratio": "16:9 或 9:16",
"theme": "1A1API 生图工作流",
"layout": {
"structure": "顶部标题 + 中间 4 张步骤卡片 + 底部状态栏",
"sections": [
{ "position": "top", "text": "Image 2.0 生图流程", "style": "大标题,清晰可读" },
{ "position": "middle-left", "title": "1 创建分组", "visual": "key icon" },
{ "position": "middle-center-left", "title": "2 写提示词", "visual": "prompt document" },
{ "position": "middle-center-right", "title": "3 明确授权", "visual": "confirmation control" },
{ "position": "middle-right", "title": "4 人工审核", "visual": "checklist" }
]
},
"visual_style": "白底,深绿与蓝色点缀,细边框,统一间距,简洁图标",
"acceptance": "标签简短清楚,卡片对齐,内容不拥挤,不添加实时数据或随机品牌"
}
人像类不要只写“美女、帅哥、真实”。更稳的写法是:镜头、姿态、服装、光线、环境、肤质、景深、负面约束一起写。公开商用时要避免冒用真人身份、明星肖像和敏感场景。
生成一张 {比例} 的生活方式人像图。
人物:原创成年人物,{年龄段、职业感、穿着、表情、动作}。
镜头:{35mm 胶片感 / 50mm 人像 / 近景 / 半身 / 全身}。
场景:{办公室 / 咖啡馆 / 展会 / 户外街道 / 工作台},背景有少量真实生活细节但保持次要。
光线:{窗边自然光 / 柔和棚拍 / 傍晚逆光 / 夜晚霓虹},肤质与织物纹理自然。
用途:{品牌海报 / 客户案例配图 / 课程封面 / Agent 角色设定}。
成片标准:人物身份原创,姿态和手部自然,画面不带水印;文字只在提供精确短文案时渲染。