image-to-prompt-skill
功能
从图片中提取视觉描述,生成可用于文生图的提示词。
使用场景
- 参考图分析:分析参考图片,生成风格一致的提示词
- 风格迁移:从现有图片提取风格特征,应用到新场景
- 提示词优化:对比生成图片与目标效果,优化提示词
- 资产复用:从历史项目图片中提取提示词,复用到新项目
输入
- 图片文件路径:本地图片文件(PNG、JPG、WEBP 等)
- 分析维度(可选):
full:完整分析(默认,包含所有元素)character:聚焦人物(外观、服装、表情、姿态)scene:聚焦场景(环境、光线、氛围、道具)composition:聚焦构图(景别、角度、运镜、色彩)
输出
- 提示词文件:
outputs/{剧本名}/reverse-prompts/{图片名}-prompt.md - 内容包含:
- 原图路径
- 分析维度
- 提示词(叙事描述式)
- 关键元素清单(人物、场景、构图、色彩、光影、氛围)
执行流程
- 读取图片:加载本地图片文件
- 编码图片:将图片编码为 base64 格式
- 调用 API:使用 gemini-3.1-pro-preview 模型分析图片
- 提取元素:根据分析维度提取关键视觉元素
- 生成提示词:将视觉元素转化为叙事描述式提示词
- 输出文件:保存提示词到指定路径
API 调用示例
from openai import OpenAI
import base64
import os
# 初始化客户端
client = OpenAI(
api_key="your-api-key",
base_url=os.environ["NANO_BANANA_BASE_URL"]
)
# 读取并编码图片
with open("image.jpg", "rb") as f:
image_data = base64.b64encode(f.read()).decode("utf-8")
# 调用 API
response = client.chat.completions.create(
model="gemini-3.1-pro-preview",
messages=[{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {
"url": f"data:image/jpeg;base64,{image_data}"
}
},
{
"type": "text",
"text": "请详细描述这张图片的视觉元素,包括人物、场景、构图、色彩、光影、氛围等,生成可用于文生图的提示词。"
}
]
}]
)
prompt = response.choices[0].message.content
print(prompt)
提示词生成原则
叙事描述式:使用完整句子描述,避免关键词堆叠
- ❌ 错误:
男性,黑色西装,严肃表情,办公室背景 - ✅ 正确:
一位身穿黑色西装的中年男性站在现代办公室中,表情严肃,目光锐利,背景是落地窗和城市天际线。
- ❌ 错误:
元素完整:覆盖 26 元素框架(参见
references/20-frame-description-elements.md)- 人物:外观、服装、表情、姿态、动作
- 场景:环境、道具、空间关系
- 构图:景别、角度、视角
- 色彩:主色调、色彩对比、色彩情绪
- 光影:光源、明暗对比、光影氛围
- 氛围:情绪基调、叙事意图
可复现性:描述足够精确,能够生成相似的图片
- 包含具体的细节(如"深蓝色西装"而非"西装")
- 包含空间关系(如"站在窗前"而非"站着")
- 包含情绪线索(如"严肃的表情"而非"表情")
风格一致:保持与项目整体风格一致
- 参考项目已有的角色和场景提示词
- 保持相同的描述风格和细节层次
可编辑性:提示词结构清晰,便于后续修改和优化
- 使用段落分隔不同元素
- 使用清晰的标记(如"人物:"、"场景:")
分析维度说明
full(完整分析)
提取所有视觉元素,生成完整的提示词。适用于:
- 需要完整复现图片的场景
- 参考图分析
- 风格迁移
输出示例:
## 提示词
一位身穿深蓝色西装的中年男性站在现代办公室的落地窗前,表情严肃,目光锐利。他的右手插在口袋里,左手自然垂放,身体微微侧向窗外。背景是城市天际线,高楼林立,天空呈现出黄昏时分的暖橙色调。办公室内部光线柔和,来自顶部的筒灯和窗外的自然光形成明暗对比,营造出一种冷静、专业的氛围。
## 关键元素
**人物**:
- 外观:中年男性,短发,五官立体
- 服装:深蓝色西装,白色衬衫,深色领带
- 表情:严肃,目光锐利
- 姿态:站立,右手插口袋,左手垂放,身体微侧
**场景**:
- 环境:现代办公室,落地窗,城市天际线
- 道具:无明显道具
- 空间关系:人物站在窗前,背景是城市
**构图**:
- 景别:中景
- 角度:平视
- 视角:正面偏侧
**色彩**:
- 主色调:深蓝、暖橙、灰白
- 色彩对比:冷暖对比(室内冷色 vs 窗外暖色)
- 色彩情绪:冷静、专业
**光影**:
- 光源:顶部筒灯 + 窗外自然光
- 明暗对比:中等对比
- 光影氛围:柔和、专业
**氛围**:
- 情绪基调:冷静、严肃、专业
- 叙事意图:展现人物的权威感和决断力
character(聚焦人物)
重点提取人物相关元素,适用于:
- 角色设定图生成
- 人物提示词优化
- 角色一致性参考
输出示例:
## 提示词
一位中年男性,短发,五官立体,表情严肃,目光锐利。他身穿深蓝色西装,内搭白色衬衫和深色领带,右手插在口袋里,左手自然垂放,身体微微侧向一侧,展现出冷静、专业的气质。
## 关键元素
**人物**:
- 外观:中年男性,短发,五官立体
- 服装:深蓝色西装,白色衬衫,深色领带
- 表情:严肃,目光锐利
- 姿态:站立,右手插口袋,左手垂放,身体微侧
- 气质:冷静、专业、权威
scene(聚焦场景)
重点提取场景相关元素,适用于:
- 场景设定图生成
- 环境提示词优化
- 场景一致性参考
输出示例:
## 提示词
现代办公室,落地窗前,背景是城市天际线,高楼林立。天空呈现出黄昏时分的暖橙色调,与室内的冷色调形成对比。办公室内部光线柔和,来自顶部的筒灯和窗外的自然光交织,营造出专业、冷静的氛围。
## 关键元素
**场景**:
- 环境:现代办公室,落地窗,城市天际线
- 道具:无明显道具
- 空间关系:室内空间,窗外城市景观
- 光线:顶部筒灯 + 窗外自然光
- 氛围:专业、冷静、现代
composition(聚焦构图)
重点提取构图相关元素,适用于:
- 分镜参考
- 镜头设计
- 构图优化
输出示例:
## 提示词
中景,平视角度,正面偏侧视角。人物位于画面中心偏右,背景是落地窗和城市天际线。色彩以深蓝、暖橙、灰白为主,形成冷暖对比。光线来自顶部和窗外,明暗对比适中,营造出专业、冷静的视觉氛围。
## 关键元素
**构图**:
- 景别:中景
- 角度:平视
- 视角:正面偏侧
- 人物位置:画面中心偏右
- 背景:落地窗 + 城市天际线
**色彩**:
- 主色调:深蓝、暖橙、灰白
- 色彩对比:冷暖对比
- 色彩情绪:冷静、专业
**光影**:
- 光源:顶部筒灯 + 窗外自然光
- 明暗对比:中等对比
- 光影氛围:柔和、专业
注意事项
- 图片格式:支持 PNG、JPG、JPEG、WEBP、GIF 等常见格式
- 图片大小:建议不超过 10MB,过大的图片可能导致 API 调用失败
- API 配置:必须在
.env或环境变量中配置NANO_BANANA_API_KEY和NANO_BANANA_BASE_URL - 敏感内容:避免分析包含敏感内容的图片
- 版权问题:确保图片来源合法,避免侵权
与其他 Agent 的协作
- art-designer:将反推的提示词集成到角色或场景提示词中
- image-generator:使用反推的提示词生成新图片,验证提示词质量
- storyboard-artist:参考反推的提示词优化分镜描述
- visual-storyteller:使用反推的提示词作为视觉化参考
参考文档
references/20-frame-description-elements.md:帧图描述 26 元素清单references/11a-seedance-prompt-methodology.md:Seedance 提示词方法论references/11b-image-motion-prompt.md:图像与动态提示词方法论