with one click
prompt-to-image
从上下文提取提示词,为用户生成并打开图片。
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
从上下文提取提示词,为用户生成并打开图片。
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
| name | prompt-to-image |
| description | 从上下文提取提示词,为用户生成并打开图片。 |
| argument-hint | [--model <gpt-image-2-all|gpt-image-2|gemini-3-pro-image-preview>] |
Flags:
--model — 指定生成图片的模型。可选值:gpt-image-2-all(默认优先路径)、gpt-image-2、gemini-3-pro-image-preview。省略时默认使用 gpt-image-2-all。经过实际验证的调用路径如下:
| 场景 | 推荐模型 | API 端点 | 原因 |
|---|---|---|---|
| 默认/用户未指定 | gpt-image-2-all | /v1/images/generations (dall-e-3 格式) | 已通过验证,约 50 秒返回,稳定性优于直接走 image-generation 端点的 gpt-image-2 |
用户明确要求 gpt-image-2 | gpt-image-2-all | /v1/images/generations (dall-e-3 格式) | 同模型家族兼容替代,gpt-image-2 直接调用反复出现 60 秒连接被关闭 |
| 用户明确要求 Gemini | gemini-3-pro-image-preview | /v1beta/models/{model}:generateContent | 按 Gemini 原生格式调用 |
重要约束:除非得到用户明确确认,不得擅自切换到其他异构模型(如 qwen-image-max、doubao-seedream、flux 等)。优先在同一模型家族内寻找兼容替代(如 gpt-image-2 → gpt-image-2-all)。可用模型清单见 References。
按照以下优先级自动提取提示词:
提示词来源(二选一,优先级从高到低):
提示词格式(三选一,优先级从高到低):
提取策略:
🚨 绝对禁止: 提示词禁止转写和简化!
必须处理:提取的提示词可能包含换行符、引号等特殊字符,直接嵌入 JSON 会导致解析错误(如 invalid character '\n' in string literal)。
转义方式:
# 将提示词中的换行符替换为空格,双引号转义
# 注意:这只是格式转义,提示词内容必须保持原样!
processed_prompt=$(echo "$raw_prompt" | tr '\n' ' ' | sed 's/"/\\"/g')
转义规则示例:
| 字符 | 处理方式 | 原因 |
|---|---|---|
换行符 \n | 替换为空格 | JSON string 中不允许未转义的换行 |
双引号 " | 转义为 \" | 避免提前结束 JSON string |
反斜杠 \ | 转义为 \\ | 避免转义序列被错误解析 |
模型检测:根据用户输入中的关键词确定模型和 API 调用方式。默认优先走 gpt-image-2-all 的 dall-e-3 端点。
| 关键词 | 模型名称 | API 类型 | 端点 |
|---|---|---|---|
| (默认,无关键词) | gpt-image-2-all | GPT Image (dall-e-3 格式) | /v1/images/generations |
gpt-image-2 | gpt-image-2-all | GPT Image (dall-e-3 格式) | /v1/images/generations |
gemini, gemini-3-pro, gemini-3 | gemini-3-pro-image-preview | Gemini | /v1beta/models/{model}:generateContent |
使用示例:
/prompt-to-image → 默认使用 gpt-image-2-all
/prompt-to-image 用 gpt-image-2 生成 → 实际使用 gpt-image-2-all(同家族兼容)
/prompt-to-image 用 gemini-3-pro 生成 → 使用 gemini-3-pro-image-preview
用户也可指定其他 Gemini 系列模型:"用 gemini-2.0-flash-exp 生成图片",但 必须先经用户确认,不得擅自切换。
关键: 读取密钥和调用 API 必须在同一个 shell 脚本/代码块中执行,否则 API 调用会找不到 $API_KEY 环境变量。
完整流程代码:
#!/bin/bash
# ============================================
# 步骤 1: 预处理提示词(已在上一步完成)
# ============================================
# 假设 $processed_prompt 已包含转义后的提示词
# ============================================
# 步骤 2: 在同一脚本中加载密钥并调用 API
# ============================================
# 安全地展开 ~ 路径(兼容所有 shell)
CONFIG_FILE="${HOME}/.config/prompt-to-image/.env"
# 检查文件是否存在
if [ ! -f "$CONFIG_FILE" ]; then
echo "❌ 配置文件不存在: $CONFIG_FILE"
echo "请创建配置文件并设置 API_KEY"
exit 1
fi
# 使用 source 加载环境变量(比 export + xargs 更可靠)
set -a
source "$CONFIG_FILE"
set +a
# 验证 API_KEY 是否加载成功
if [ -z "$API_KEY" ]; then
echo "❌ API_KEY 未设置或为空"
exit 1
fi
echo "✅ API 密钥已加载"
# ============================================
# 步骤 3: 根据模型选择 API 端点并调用(确保在同一脚本上下文中)
# ============================================
# MODEL_NAME 由步骤 3 确定,默认 "gpt-image-2"
DATE_DIR=$(date +%Y-%m-%d)
TIME_STAMP=$(date +%H-%M-%S.%3N)
OUTPUT_DIR="${HOME}/.prompt-to-image/${DATE_DIR}/grsapi.xyz/${MODEL_NAME}"
mkdir -p "$OUTPUT_DIR"
RESPONSE_FILE="${OUTPUT_DIR}/${TIME_STAMP}.json"
echo "🎨 正在调用 API 生成图片 (模型: ${MODEL_NAME})..."
if [[ "$MODEL_NAME" == "gemini-3-pro-image-preview" ]]; then
# Gemini API
curl -s --location --request POST \
"https://grsapi.xyz/v1beta/models/${MODEL_NAME}:generateContent" \
--header 'Content-Type: application/json' \
--header "Authorization: Bearer $API_KEY" \
--data-raw "{
\"contents\": [{
\"role\": \"user\",
\"parts\": [{\"text\": \"$processed_prompt\"}]
}],
\"generationConfig\": {
\"responseModalities\": [\"TEXT\", \"IMAGE\"]
}
}" > "$RESPONSE_FILE"
else
# GPT Image API (默认,使用 gpt-image-2-all 走 dall-e-3 端点)
curl -s --location --request POST \
"https://grsapi.xyz/v1/images/generations" \
--header 'Accept: application/json' \
--header "Authorization: Bearer $API_KEY" \
--header 'Content-Type: application/json' \
--data-raw "{
\"size\": \"1792x1024\",
\"prompt\": \"$processed_prompt\",
\"model\": \"gpt-image-2-all\",
\"n\": 1
}" > "$RESPONSE_FILE"
fi
echo "✅ API 调用完成,响应保存至: $RESPONSE_FILE"
配置文件格式 (~/.config/prompt-to-image/.env):
API_KEY=sk-your-api-key-here
⚠️ 路径安全提示:
"${HOME}/path" 替代 "~/path",确保在所有上下文(脚本、函数、引号内)都能正确展开~,因为在双引号内或某些 shell 函数中可能无法正确展开~,确保进行显式展开:"${path/#\~/$HOME}"⚠️ 密钥加载提示:
set -a; source "$CONFIG_FILE"; set +a 方式加载,比 export $(grep ... | xargs) 更可靠set -a 会自动导出所有变量,避免 xargs 处理特殊字符的问题$API_KEY 在同一 shell 上下文中可用重要:
-s (silent) 参数确保输出纯净 JSON,不包含 curl 进度信息创建目录结构并保存完整响应:
${HOME}/.prompt-to-image/
└── <YYYY-MM-DD>/
└── grsapi.xyz/
└── <model-name>/
├── <hh:mm:ss.sss>.json (完整 API 响应)
└── image_xxx.jpg (提取的图片)
时间戳格式:
2026-02-2415-30-45.123 (小时-分钟-秒.毫秒)路径安全: 在脚本中使用 ${HOME} 而非 ~,确保路径在所有上下文中正确解析
保存后必须验证 JSON 有效性:
python3 -c "import json; json.load(open('<response>.json'))" && echo "JSON valid"
如果验证失败,说明响应可能损坏,应检查文件内容而非直接重新调用 API。
使用 scripts/extract_images.py 从响应中提取图片。脚本自动检测响应格式(Gemini inlineData 或 GPT Image URL/base64):
python3 scripts/extract_images.py <response.json> <output_dir>
问题背景: 文件写入和打开之间存在时间差,可能导致图片查看器加载失败。这在以下场景尤为明显:
泛化解决方案 - 使用 wait_for_file.sh 脚本:
# 定义安全的输出目录路径(使用 ${HOME} 而非 ~)
OUTPUT_DIR="${HOME}/.prompt-to-image/$(date +%Y-%m-%d)/grsapi.xyz/${MODEL_NAME}"
mkdir -p "$OUTPUT_DIR"
# 提取图片后,等待文件完全就绪
python3 scripts/extract_images.py "$JSON_FILE" "$OUTPUT_DIR"
# 获取最新生成的图片路径
IMAGE_FILE=$(ls -t "$OUTPUT_DIR"/image_*.jpg "$OUTPUT_DIR"/image_*.png 2>/dev/null | head -1)
# 等待文件写入完成(检测文件大小稳定 + 系统同步)
# wait_for_file.sh 会自动处理路径中的 ~ 字符
scripts/wait_for_file.sh "$IMAGE_FILE" 10 # 10秒超时
检测机制(跨平台泛化):
sync 命令刷新文件系统缓存备选方案(如果 wait_for_file.sh 不可用):
# 简单延迟方案(不够精确但通用)
sleep 0.5
sync # 强制刷新文件系统缓存
文件同步完成后,使用以下命令打开:
# 优先检查并使用 code
if command -v code &> /dev/null; then
code <图片路径>
else
open <图片所在目录>
fi
向用户返回 Markdown 格式的图片链接,并确认已自动打开:

✅ 图片已自动打开
注意: Markdown 中 ${HOME} 不会自动展开,实际使用时应替换为完整路径或使用 shell 展开后的值
${HOME}/.config/prompt-to-image/.env 文件并设置 API_KEY${HOME} 而非 ~,特别是在双引号内的字符串中$API_KEY 环境变量在 API 调用时可用gpt-image-2-all。若用户指定 gpt-image-2,可在同家族内 fallback 到 gpt-image-2-all。严禁因"某个模型可能更好"而擅自切换到 qwen-image-max、doubao-seedream、flux、grok 等异构模型;任何跨家族切换必须先得到用户明确确认-s 静默模式: curl 必须加 -s 参数,确保输出纯净 JSON${HOME} 替代 ~,确保路径在所有 shell 上下文中正确展开从 API 响应中提取图片并保存为文件。支持 Gemini 和 GPT Image 两种响应格式,自动检测并处理。
用法:
python3 scripts/extract_images.py <response.json> <output_dir>
功能:
candidates[].content.parts[].inlineData 中的 base64 数据data[].url(下载图片)或 data[].b64_json(解码 base64).jpg、.png 等文件os.fsync() 确保数据刷写到磁盘泛化的文件写入完成检测脚本,解决文件写入与读取之间的时间差问题。
用法:
scripts/wait_for_file.sh <文件路径> [超时秒数]
检测机制(跨平台泛化):
sync 命令刷新文件系统缓存适用场景:
路径展开:
该脚本会自动处理路径中的 ~ 字符,将其展开为 ${HOME}:
# 脚本内部实现
FILE_PATH="${FILE_PATH/#\~/$HOME}"
因此你可以安全地传入包含 ~ 的路径,或直接使用 ${HOME}。
返回值:
0 - 文件就绪1 - 超时或错误references/2026-06-11-grsapi-image-models.md — grsapi.xyz 图像生成模型速查表,包含 46 个图像模型的 ID、支持端点、标签和描述。references/2026-06-11-grsapi-models.json — /v1/models 完整原始响应(493 个模型)。使用约束:References 仅用于查询和用户确认后的模型选择。未经用户明确同意,不得擅自切换模型。默认优先路径始终是
gpt-image-2-all。
从用户给出的文档片段中,提取"进阶必知"的深层知识,当用户提到"太简单了,给我几条秘密","面试必备的那种","八股文进阶"时触发
项目版本发布流程指导,帮助用户完成版本规划、Changelog 管理、版本号升级、Git 标签创建和 npm 首次发布准备。Use when: (1) 用户需要发布新版本 (2) 需要创建版本发布流程 (3) 需要管理版本号和 Changelog (4) 需要自动化版本发布 (5) 需要检查 release 分支同步 (6) 首次 npm 发布准备
通常在 web-search 没有办法解决用户需求时,调用此技能,创造或生成全新图片。
初始化项目 Agents.md
从网址提取知识点并归档到笔记系统的工作流。当用户说"distill"、"把这个归档到笔记"、"整理到 maps"、"保存到知识库"或类似请求时触发。支持从 URL distill 知识点、调研笔记系统结构、制定归档计划、等待用户确认后执行归档和提交。
使用 Evaluator-optimizer 模式进行系统性多轮网络搜索,采用结构化 Ask 流程在搜索前澄清研究目标。基于 YC Office Hours 的提问方法论,确保搜索方向清晰、结果可验证。当用户需要深入调查复杂主题、验证假设或全面收集信息时使用。