diff --git a/.trae/skills/image-tools/SKILL.md b/.trae/skills/image-tools/SKILL.md index 1c8944b..01e1d52 100644 --- a/.trae/skills/image-tools/SKILL.md +++ b/.trae/skills/image-tools/SKILL.md @@ -1,41 +1,58 @@ --- -## 豆包 Seedream(字节跳动/火山引擎) +基于火山引擎 Ark API 的 Doubao Seedream 模型,支持文生图、图生图、多图融合、图片编辑。官方文档:[Seedream 4.0-5.0 教程](https://www.volcengine.com/docs/82379/1548482) -使用火山引擎 Ark API 的 Doubao Seedream 模型,支持文生图、图生图、多图融合、图片编辑。 - -### 前提条件 +## 前提条件 - `curl.exe`(Windows内置) - Ark API Key: `ark-119a37ed-f123-42fc-aea6-b38d47d47fc0-f7ddf` - API端点: `https://ark.cn-beijing.volces.com/api/v3/images/generations` -### 模式一览 +## 模式一览 | 模式 | `image`参数 | 用途 | |---|---|---| | 文生图 | 省略或`[]` | 从文字描述生成图片 | -| 图生图 | `["url1"]` | 基于参考图生成新图,可通过prompt控制保留原图产品外观 | -| 多图融合 | `["url1","url2",...]` | 最多10张参考图融合,prompt中用"图1/图2"指代 | -| 图片编辑 | `["url1"]` + 编辑提示词 | 移除/替换元素、换背景等 | +| 图生图 | `["url1"]` | 基于参考图生成新图,通过prompt控制保留原图产品外观 | +| 多图融合 | `["url1","url2",...]` | 最多14张参考图融合,prompt中用"图1/图2"指代 | -默认模型: `doubao-seedream-5-0-260128` +默认模型: `doubao-seedream-5-0-260128`(5.0,支持4K、png输出、联网搜索) -### 图生图说明 +## 图生图核心技巧 -Seedream 的 `image` 参数传入的是**参考图**,模型会根据 prompt 重新生成图片,**不能100%像素级保留原图**。但通过精确的 prompt 可在一定程度上保持产品形态: -- 好的做法:`"保留图1中U盘产品的外观和形态不变,仅更换背景为白色,添加科技光效"` -- 不好的做法:`"U盘插在电脑上"`(描述太笼统,产品外观会偏离原图) +Seedream 的 `image` 参数传入的是**参考图**,模型会根据 prompt 重新生成图片。通过精确的 prompt 可以较好地保持产品形态,但**不能做到像素级100%一致**。 +**产品外观保持模板**(来自官方文档验证有效): +> `"严格保持图1中U盘产品的整体外观、形状、颜色、尺寸比例和所有可见细节完全不变。在此前提下,仅更换背景和场景:将产品放置在XXX场景中..."` -### 文生图(Windows PowerShell) +关键:**先锁定"完全不变",再用"在此前提下,仅更换..."描述新场景**。 + +## Prompt 结构(官方推荐) + +遵循 **主体 + 行为 + 环境 + 风格** 结构,建议不超过300个汉字: + +- **主体**: 产品是什么(用"图1"指代参考图) +- **行为**: 产品在做什么/处于什么状态 +- **环境**: 背景、场景描述 +- **风格**: 光照、色彩、构图、氛围 + +## 文字渲染技巧 + +Seedream 5.0 文字渲染精度 99%+。关键写法: + +- **双引号包裹**:双引号内文字有特殊渲染优先级,`标题"NAS U盘"` 远优于 `标题NAS U盘` +- **指定字体形态**:明确"白色加粗无衬线大号字体"、"黑色加粗印刷体",避免模糊描述 +- **清晰度约束**:加"所有文字笔画清晰醒目、无乱码无模糊" +- **控制文字量**:避免过多小字;功能标签用稍大字号并逐一指定位置,如 `画面底部水平排列四个标签,白色中号粗体分别显示"秒变NAS""远程访问""自动备份""私有云盘"` + +## 文生图(Windows PowerShell) ```powershell $tmpFile = "$env:TEMP\request.json" $prompt = "YOUR_PROMPT_HERE" $json = @" -{"model":"doubao-seedream-5-0-260128","prompt":"$prompt","size":"2k","sequential_image_generation":"disabled","response_format":"url","stream":false,"watermark":false} +{"model":"doubao-seedream-5-0-260128","prompt":"$prompt","size":"2K","sequential_image_generation":"disabled","response_format":"url","stream":false,"watermark":false} "@ $sw = [System.IO.StreamWriter]::new($tmpFile, $false, (New-Object System.Text.UTF8Encoding $false)) $sw.Write($json); $sw.Close() @@ -51,7 +68,7 @@ curl.exe -s -o $outputPath $imageUrl Write-Output $outputPath ``` -### 图生图/图片编辑(本地文件输入,Windows PowerShell) +## 图生图(本地文件输入,Windows PowerShell) ```powershell $imgBytes = [System.IO.File]::ReadAllBytes((Resolve-Path "path\to\input.png")) @@ -61,13 +78,14 @@ $tmpFile = "$env:TEMP\request.json" $sw = [System.IO.StreamWriter]::new($tmpFile, $false, (New-Object System.Text.UTF8Encoding $false)) $sw.WriteLine('{') $sw.WriteLine(' "model": "doubao-seedream-5-0-260128",') -$sw.WriteLine(' "prompt": "保留图1中产品的外观和形态不变,更换背景为白色",') +$sw.WriteLine(' "prompt": "严格保持图1中产品的外观和形态完全不变,在此前提下仅更换背景为白色",') $sw.WriteLine(' "image": ["data:image/png;base64,' + $imgBase64 + '"],') -$sw.WriteLine(' "size": "2048x2048",') -$sw.WriteLine(' "sequential_image_generation": "disabled",') +$sw.WriteLine(' "size": "2K",') +$sw.WriteLine(' "output_format": "png",') $sw.WriteLine(' "response_format": "url",') $sw.WriteLine(' "stream": false,') -$sw.WriteLine(' "watermark": false') +$sw.WriteLine(' "watermark": false,') +$sw.WriteLine(' "optimize_prompt_options": { "mode": "standard" }') $sw.WriteLine('}') $sw.Close() @@ -82,102 +100,72 @@ curl.exe -s -o $outputPath $imageUrl Write-Output $outputPath ``` -> **注意**:当 prompt 中包含中文引号等特殊字符时,不要用 PowerShell 的 `@"..."@` here-string 拼接 JSON,应改用 `StreamWriter.WriteLine()` 逐行写入,避免解析错误。 +> 当 prompt 中包含中文引号等特殊字符时,不要用 `@"..."@` here-string 拼接 JSON,改用 `StreamWriter.WriteLine()` 逐行写入。 -### 多图融合 +## 多图融合 ```json { "model": "doubao-seedream-5-0-260128", "prompt": "把图1的人物穿上图2的衣服,站在图3的场景中", "image": ["url1", "url2", "url3"], - "size": "2k", - "sequential_image_generation": "disabled", + "size": "2K", + "output_format": "png", "response_format": "url", "stream": false, "watermark": false } ``` -### 批量生成(最多15张) - -```json -{ - "model": "doubao-seedream-5-0-260128", - "prompt": "一个女孩和她的布偶牛在过山车上,分别呈现早晨、中午、傍晚的场景", - "sequential_image_generation": "auto", - "sequential_image_generation_options": { "max_images": 3 }, - "size": "2k", - "response_format": "url", - "stream": false, - "watermark": false -} -``` - -### Seedream 参数参考 +## Seedream 参数参考 | 参数 | 类型 | 必填 | 说明 | |---|---|---|---| -| `model` | string | 是 | `doubao-seedream-5-0-260128`(默认,5.0)、`doubao-seedream-4-5-251128`(4.5)、`doubao-seedream-4-0-250828`(4.0) | -| `prompt` | string | 是 | 文本提示词,最多~300中文字或~600英文词 | -| `image` | string[] | 否 | 参考图片URL或Base64(`data:image/jpeg;base64,...`),最多10张;prompt中用"图1/图2"指代顺序 | -| `size` | string | 否 | `2k`(默认)、`3k`(仅5.0)、`4k`(4.5/4.0) 或 `WIDTHxHEIGHT`(如`2048x2048`) | +| `model` | string | 是 | `doubao-seedream-5-0-260128`(5.0,推荐)、`doubao-seedream-5-0-lite-260128`(5.0 Lite)、`doubao-seedream-4-5-251128`(4.5)、`doubao-seedream-4-0-250828`(4.0) | +| `prompt` | string | 是 | 文本提示词,最多约300汉字或600英文词。建议按「主体+行为+环境+风格」结构组织 | +| `image` | string[] | 否 | 参考图片URL或Base64,**最多14张**;prompt中用"图1/图2"指代。输入+输出总数 ≤ 15 | +| `size` | string | 否 | `2K`(默认)、`3K`(仅5.0)、`4K`(5.0/4.5/4.0)。推荐用别名(官方文档验证效果更好) | | `response_format` | string | 否 | `url`(下载链接,24h有效)或 `b64_json` | -| `output_format` | string | 否 | `jpeg`(默认)或 `png`(仅5.0支持) | -| `sequential_image_generation` | string | 否 | `disabled`(默认,单图)或 `auto`(模型决定批量数) | -| `sequential_image_generation_options` | object | 否 | `{ "max_images": N }` N为1-15,仅auto模式 | +| `output_format` | string | 否 | `png`(仅5.0支持)或 `jpeg`(默认) | +| `optimize_prompt_options` | object | 否 | `{ "mode": "standard" }` 开启提示词优化,提升生图质量(5.0/4.5仅支持standard) | +| `sequential_image_generation` | string | 否 | `disabled`(单图)或 `auto`(组图) | +| `sequential_image_generation_options` | object | 否 | `{ "max_images": N }` N为1-15 | | `stream` | boolean | 否 | `false`(等待全部)或 `true`(逐张返回) | -| `watermark` | boolean | 否 | 添加"AI Generated"水印,默认`true`(建议设`false`) | +| `watermark` | boolean | 否 | 默认`true`,**建议设`false`** | | `tools` | array | 否 | `[{ "type": "web_search" }]` 联网搜索(仅5.0) | -### Seedream 尺寸指南 +## 尺寸指南 -| 别名 | 近似分辨率 | 适用场景 | -|---|---|---| -| `2k` | ~2048px | **默认** — 质量与速度平衡 | -| `3k` | ~3072px | 高质量,产品图(仅5.0) | -| `4k` | ~4096px | 最终生产质量(4.5/4.0) | -| `WIDTHxHEIGHT` | 自定义 | 如`2048x2048`、`2048x1024` | +| 别名 | 5.0 | 4.5 | 4.0 | 适用场景 | +|---|---|---|---|---| +| `2K` | 2048px | 2048px | 2048px | 默认,质量与速度平衡 | +| `3K` | 3072px | — | — | 高质量产品图 | +| `4K` | 4096px | 4096px | 4096px | 最终生产级质量 | -**像素约束**: -- 方式1(别名):用`2k`/`3k`等,prompt中描述宽高比 -- 方式2(精确像素):总像素范围 [3686400, 16777216],宽高比 [1/16, 16],每个维度 [1280, 4096] -- 两种方式不可混用 +推荐用别名(如`2K`)而非像素值,模型会自行判断最优分辨率。两种方式不可混用。 -### Seedream 提示词技巧 +## 提示词技巧 -- **描述场景**: 主体、动作、环境、氛围 -- **指定风格**: "电影大片感"、"水彩画风"、"赛博朋克"、"oc渲染"、"超现实主义" -- **质量关键词**: "光线追踪"、"景深"、"极致的光影"、"动态模糊" -- **编辑指令**: "保留图1中产品外观不变,把背景换成海滩"、"移除画面中的人物" -- **多图指代**: 多图输入时用"图1""图2"明确指代,如"保留图1的U盘,放到图2的笔记本上" -- **中文提示词原生支持** — 无需翻译为英文 +- **场景描述**: 主体、动作、环境、氛围 +- **风格词**: "电商商品主图风格"、"电影大片感"、"oc渲染"、"超现实主义" +- **质量词**: "柔和自然光布光"、"光线追踪"、"景深" +- **图生图**: 开头用"严格保持图1中产品的整体外观...完全不变。在此前提下,仅..."锁定产品形态 +- **文字**: 用双引号包裹所有文字内容如`标题"NAS U盘"`,逐一指定位置和字号,加清晰度约束 +- **中文原生支持** — 无需翻译 -### 文字渲染技巧(重要) - -Seedream 对文字渲染有特殊优化,但需要正确的提示词写法: - -- **必须用双引号包裹文字内容**:Seedream 对双引号内的文字有特殊渲染优先级,准确率远高于不加引号 - - ✅ 正确:`标题文字"NAS U盘"`,`标签显示"自动内网穿透"` - - ❌ 错误:`标题文字NAS U盘`,`标签显示自动内网穿透` -- **强制清晰度约束**:加"笔画清晰醒目、无乱码无模糊"等约束条件 -- **指定字体样式**:明确"黑色加粗印刷体"、"白色大号粗体"等,避免模糊描述 -- **避免过多小字**:小字号文字像素占比太低,极易模糊出错;尽量只生成少量大号标题文字 -- **商用场景建议**:对文字精度要求高时,采用"AI生成无文字底图 + 手动/程序叠加文字"的工作流 - -### Windows注意事项 +## Windows注意事项 | 问题 | 解决方案 | |---|---| -| PowerShell 5.1给JSON加UTF-8 BOM | **不要**用`Set-Content`或`[System.Text.Encoding]::UTF8`,用`[System.IO.StreamWriter]::new($path, $false, (New-Object System.Text.UTF8Encoding $false))` | -| PowerShell破坏curl中的`"` | **始终**写JSON到临时文件,用`-d "@$tmpFile"` | -| prompt含中文引号/特殊字符 | 用`StreamWriter.WriteLine()`逐行写JSON,不要用`@"..."@` here-string | -| curl别名冲突 | 用`curl.exe`而非`curl` | -| 续行符 | 用反引号`` ` `` | +| JSON UTF-8 BOM | 用 `[System.IO.StreamWriter]::new($path, $false, (New-Object System.Text.UTF8Encoding $false))` | +| curl引号问题 | 写JSON到临时文件,用 `-d "@$tmpFile"` | +| 中文引号/特殊字符 | 用 `StreamWriter.WriteLine()` 逐行写,不要用 here-string | +| curl别名冲突 | 用 `curl.exe` 而非 `curl` | +| 续行符 | 用反引号 `` ` `` | -### Seedream 错误处理 +## 错误处理 -- **401**: API Key无效 — 检查Authorization头 -- **400**: 请求错误 — 检查提示词长度、图片格式、尺寸值(像素不低于3686400) -- **429**: 限流 — 等待后重试 -- **500**: 服务器错误 — 稍后重试 +- **401**: API Key无效 +- **400**: 检查提示词长度、图片格式、尺寸值(像素不低于3686400) +- **429**: 限流,等待后重试 +- **500**: 服务器错误,稍后重试 diff --git a/产品/NAS U盘/产品名称.md b/产品/NAS U盘/产品名称.md index 4ea5087..068a0fd 100644 --- a/产品/NAS U盘/产品名称.md +++ b/产品/NAS U盘/产品名称.md @@ -1 +1,5 @@ -智能存储NAS相册备份无线传输共享视频影视播放手机电脑互联 \ No newline at end of file +智能存储NAS相册备份无线传输共享视频影视播放手机电脑互联 + +规格: +局域网使用版:56元 +终身免费远程访问版:88元 \ No newline at end of file diff --git a/产品/NAS U盘/详情/NAS U盘主图 copy.png b/产品/NAS U盘/详情/NAS U盘主图 copy.png new file mode 100644 index 0000000..4ea234b Binary files /dev/null and b/产品/NAS U盘/详情/NAS U盘主图 copy.png differ diff --git a/产品/NAS U盘/详情/NAS U盘主图.png b/产品/NAS U盘/详情/NAS U盘主图.png index ddce082..4ea234b 100644 Binary files a/产品/NAS U盘/详情/NAS U盘主图.png and b/产品/NAS U盘/详情/NAS U盘主图.png differ diff --git a/产品/NAS U盘/详情/使用场景图.png b/产品/NAS U盘/详情/使用场景图.png new file mode 100644 index 0000000..6c1b669 Binary files /dev/null and b/产品/NAS U盘/详情/使用场景图.png differ diff --git a/产品/NAS U盘/详情/对比图.png b/产品/NAS U盘/详情/对比图.png new file mode 100644 index 0000000..6b36e41 Binary files /dev/null and b/产品/NAS U盘/详情/对比图.png differ diff --git a/产品/NAS U盘/详情/对比图_远程访问.png b/产品/NAS U盘/详情/对比图_远程访问.png new file mode 100644 index 0000000..72261c2 Binary files /dev/null and b/产品/NAS U盘/详情/对比图_远程访问.png differ