Skill: whisky-12/ernie-image-art-name (version 0.1.1)

--- name: ernie-image-art-name description: "名字转艺术字签名 Skill，使用百度星河社区 ERNIE-Image API 将姓名或文字生成为艺术字/签名图片。This skill should be used when users want to generate artistic text/name images, calligraphy art, cartoon signature, cute line-art signature, watercolor pencil signature, stylized name designs, or text-to-art-typography tasks. 触发词：艺术字、名字艺术字、书法字、艺术字体、文字设计、名字图片、姓名生成图片、把名字变成艺术字、文字转图片、ERNIE-Image 生图、文生图名字、可爱签名、卡通签名、单线签名、彩铅签名、ins风签名。" version: 1.1.0 author: whisky-12 tags: - image-generation - ernie-image - art-typography - cartoon-signature - chinese - baidu-aistudio --- # 名字转艺术字 Skill ## 功能概述 使用百度星河社区 ERNIE-Image（文心图像大模型）API，将用户提供的姓名或文字生成为高质量的艺术字/签名图片。支持 **12 种风格**，涵盖经典艺术字、可爱单线卡通签名、软萌彩铅风卡通签名三大类。 ## 前置条件 需要百度星河社区 Access Token：前往 https://aistudio.baidu.com/account/accessToken 获取。 ## 执行流程 ### Step 1：确认 Access Token 优先检查是否已配置，按以下顺序： 1. 用户本次提供的 Token（命令行 `--token`） 2. 环境变量 `AISTUDIO_ACCESS_TOKEN` 3. 配置文件 `config.json`（位于 skill 安装目录下） **若 Token 未配置**，引导用户通过以下命令保存（只需一次）： ```bash python3 scripts/generate_art_name.py --set-token YOUR_TOKEN ``` Token 获取地址：https://aistudio.baidu.com/account/accessToken ### Step 2：确认输入参数 向用户确认： - **名字/文字**：要生成的内容（必填） - **风格**：从预设风格中选择（默认中国风） - 【经典风格】中国风、烫金、霓虹、卡通、石刻、玫瑰、极简、火焰、冰晶、自定义 - 【卡通签名】单线卡通（7 种模板随机）、彩铅卡通（4 种模板随机） - **输出目录**（可选，默认 `./art_names`） 若用户描述不够具体，主动询问风格偏好；若用户提到"可爱签名""ins 风""花体字""单线"等关键词，优先推荐卡通签名风格。 ### Step 3：执行生成 调用核心脚本（路径相对于 skill 安装目录）： ```bash python3 scripts/generate_art_name.py \ --name "用户名字" \ --style 风格名称 \ --output 输出目录 ``` **常用参数：** | 参数 | 说明 | |---|---| | `--name` / `-n` | 要生成的名字或文字（必填） | | `--style` / `-s` | 风格：中国风/烫金/霓虹/卡通/石刻/玫瑰/极简/火焰/冰晶/单线卡通/彩铅卡通/自定义 | | `--prompt` / `-p` | 自定义描述，配合 `--style 自定义` 使用 | | `--output` / `-o` | 图片保存目录 | | `--token` / `-t` | 临时指定 Access Token | | `--model` / `-m` | 模型选择（默认 ERNIE-Image-Turbo） | | `--set-token` | 将 Token 保存到配置文件（只需一次） | | `--list-styles` | 查看所有可用风格 | | `--show-config` | 查看当前配置 | **卡通签名风格提示：** - `单线卡通` 和 `彩铅卡通` 每次调用会从多个模板中随机选取，多次生成可获得不同效果 - 这两类风格适合英文名/拼音，中文名效果可能偏弱 ### Step 4：展示结果 脚本成功执行后，生成的图片会保存到本地。使用 `open_result_view` 展示图片，并询问是否需要调整风格重新生成。 ## 错误处理 | 错误 | 解决方案 | |---|---| | Token 无效 / 401 | 引导用户重新获取 Token 并用 `--set-token` 保存 | | 网络超时 | 重试，或将 timeout 延长至 180 秒 | | 内容审核拦截 | 调整 Prompt 表达方式，避免敏感词 | | 模型不可用 | 切换为 `ERNIE-Image` 或 `Stable-Diffusion-XL` | ## 参考文档 详见 `references/api_docs.md`：包含完整 API 参数说明、Prompt 写作技巧和代码示例。 ## 配置管理 配置文件 `config.json` 位于 skill 安装目录下，格式如下： ```json { "access_token": "在这里填写你的 Access Token", "model": "ERNIE-Image-Turbo", "output_dir": "./art_names" } ``` 可直接编辑此文件，或用 `--set-token` 命令更新 Token。

path: README.md
content: # ernie-image-art-name

> 名字转艺术字签名 Skill —— 使用百度星河社区 ERNIE-Image API，将姓名或任意文字生成为高质量艺术字/签名图片。

## ✨ 功能亮点

- **12 种预设风格**：经典艺术字 10 种 + 可爱单线卡通签名 + 软萌彩铅风卡通签名
- **多模板随机**：卡通签名类每次从多个精选 Prompt 模板中随机选取，多次生成效果不重复
- **精准中文文字渲染**：ERNIE-Image 在中文文字渲染方面处于行业领先水平
- **零依赖**：核心脚本仅用 Python 标准库，无需安装任何第三方包
- **灵活配置**：支持命令行参数、环境变量、配置文件三种 Token 传入方式

## 🚀 快速上手

### 1. 获取 Access Token

前往 [星河社区个人中心](https://aistudio.baidu.com/account/accessToken) 获取 Token，然后保存：

```bash
python3 scripts/generate_art_name.py --set-token YOUR_TOKEN
```

### 2. 生成艺术字/签名

直接和 AI 说：

> 帮我把"张伟"生成一张中国风艺术字图片
> 帮我用"Alice"生成一张可爱单线卡通签名

或使用命令行：

```bash
# 经典中国风
python3 scripts/generate_art_name.py --name "张伟"

# 可爱单线卡通签名（适合英文名/拼音，随机模板）
python3 scripts/generate_art_name.py --name "Alice" --style 单线卡通

# 软萌彩铅风卡通签名
python3 scripts/generate_art_name.py --name "Alice" --style 彩铅卡通

# 完全自定义描述
python3 scripts/generate_art_name.py --name "张伟" --style 自定义 --prompt "蒸汽朋克风格，齿轮装饰，深棕色背景"

# 查看所有风格
python3 scripts/generate_art_name.py --list-styles
```

## 🎨 支持风格

### 经典艺术字风格

| 风格 | 描述 |
|---|---|
| 中国风 | 毛笔书法，水墨金色，古典大气 |
| 烫金 | 金属质感，浮雕效果，豪华精致 |
| 霓虹 | 霓虹灯管，赛博朋克，发光效果 |
| 卡通 | 圆润字体，彩虹渐变，活泼可爱 |
| 石刻 | 篆刻浮雕，青铜质感，古朴沧桑 |
| 玫瑰 | 花卉装饰，浪漫粉色，优雅精致 |
| 极简 | 黑白几何，现代设计，高端简洁 |
| 火焰 | 燃烧效果，橙红火焰，动感强烈 |
| 冰晶 | 霜冻效果，蓝白透明，雪花装饰 |
| 自定义 | 配合 `--prompt` 完全自定义描述 |

### 卡通签名风格（v1.1.0 新增）

| 风格 | 描述 | 模板数 |
|---|---|---|
| 单线卡通 | 极简黑色单线手绘，ins 风可爱简笔画，无填充，花体英文签名与卡通元素融合（星星/兔子/小熊/蝴蝶等），纯白背景 | 7 种 |
| 彩铅卡通 | 软萌彩铅手绘风，黑色花体字搭配迷你卡通元素，点缀低饱和马卡龙色（粉/黄/蓝），治愈系 ins 风 | 4 种 |

> 💡 **提示**：卡通签名风格每次调用从多个模板随机选取，多次生成可获得不同效果。此类风格更适合**英文名或拼音**，中文名字效果可能偏弱。

## ⚙️ 参数说明

| 参数 | 简写 | 说明 |
|---|---|---|
| `--name` | `-n` | 要生成的名字或文字（必填） |
| `--style` | `-s` | 预设风格名称，默认：中国风 |
| `--prompt` | `-p` | 自定义风格描述（`--style 自定义` 时生效） |
| `--output` | `-o` | 图片保存目录，默认 `./art_names` |
| `--token` | `-t` | 临时指定 Access Token |
| `--model` | `-m` | 模型：ERNIE-Image / ERNIE-Image-Turbo / Stable-Diffusion-XL |
| `--set-token` | — | 将 Token 永久保存到配置文件 |
| `--list-styles` | — | 列出所有可用风格 |
| `--show-config` | — | 显示当前配置 |

## 🔑 Token 配置优先级

1. 命令行 `--token YOUR_TOKEN`
2. 环境变量 `export AISTUDIO_ACCESS_TOKEN=YOUR_TOKEN`
3. 配置文件 `config.json`（skill 目录下）

## 📋 依赖说明

- Python 3.6+（仅标准库，无需 pip install）
- 百度星河社区账号（免费，100万 Tokens 免费额度）

## 📄 License

MIT


path: scripts/generate_art_name.py
content: #!/usr/bin/env python3
"""
名字转艺术字生成脚本
使用百度星河社区 ERNIE-Image API 生成艺术字图片

用法:
    python3 generate_art_name.py --name "李赞" --style 中国风
    python3 generate_art_name.py --name "Alice" --style 单线卡通
    python3 generate_art_name.py --name "Alice" --style 彩铅卡通 --output ./output
    python3 generate_art_name.py --name "李赞" --token YOUR_ACCESS_TOKEN

配置优先级:
    1. 命令行参数 --token
    2. 环境变量 AISTUDIO_ACCESS_TOKEN
    3. 配置文件 config.json（skill 安装目录下）
"""

import argparse
import base64
import json
import os
import random
import sys
import time
from pathlib import Path

# ──────────────────────────────────────────────────────────────────────────────
# 配置
# ──────────────────────────────────────────────────────────────────────────────

CONFIG_FILE = Path(__file__).parent.parent / "config.json"
DEFAULT_CONFIG = {
    "access_token": "",
    "model": "ERNIE-Image-Turbo",
    "output_dir": "./art_names"
}

API_BASE_URL = "https://aistudio.baidu.com/llm/lmapi/v3"

# ──────────────────────────────────────────────────────────────────────────────
# 风格预设库
# ──────────────────────────────────────────────────────────────────────────────

# 普通风格：单条 prompt 模板（{name} 将被替换为实际名字）
STYLE_PRESETS = {
    "中国风": "中国传统书法艺术字，毛笔字体，水墨风格，金色或红色文字，古典纹样背景，大气磅礴",
    "烫金": "豪华烫金艺术字，金属质感，深色背景，立体浮雕效果，精致华丽",
    "霓虹": "霓虹灯管艺术字，发光效果，赛博朋克风格，深夜城市背景，色彩鲜艳",
    "卡通": "可爱卡通字体，圆润边角，彩虹渐变色，白色背景，活泼有趣",
    "石刻": "古代石刻篆刻艺术字，浮雕质感，古朴沧桑，青铜或石灰岩质感",
    "玫瑰": "玫瑰花卉装饰艺术字，浪漫粉色，花瓣环绕，优雅精致",
    "极简": "现代简约艺术字，黑白灰色调，几何字体，高端设计感",
    "火焰": "火焰燃烧效果艺术字，橙红色火焰，动感强烈，深色背景",
    "冰晶": "冰晶霜冻艺术字，蓝白色调，晶莹剔透，雪花冰花装饰",
    "自定义": ""  # 用户自行输入 prompt
}

# 多模板风格：每次从模板列表随机选取一条，{name} 替换为名字
MULTI_TEMPLATE_STYLES = {
    "单线卡通": [
        '极简黑色单线手绘，ins风可爱简笔画，无填充轮廓线稿，主体为手写花体英文签名"{name}"，与一个软萌卡通元素自然融合，线条流畅干净，搭配少量小星星装饰，纯白背景，无多余元素，构图简洁，适合作为签名图案，高清线稿，无杂色，干净利落',
        '极简黑色单线条手绘，ins风简笔画，无填充，花体英文签名"{name}"与星星、月亮元素融合，线条飘逸流畅，搭配细碎星光装饰，纯白背景，干净极简，可爱温柔，高清线稿，适合签名设计',
        '极简黑色单线手绘，可爱简笔画，无填充，花体英文签名"{name}"与软萌兔子形象融合，兔子抱着星星，线条圆润流畅，搭配小星星装饰，纯白背景，治愈可爱，高清线稿，签名设计',
        '极简黑色单线条手绘，ins风可爱简笔画，无填充，花体英文签名"{name}"与带笑脸的星球融合，星球上趴着一只软萌小熊，线条干净，搭配星光装饰，纯白背景，温柔治愈，高清线稿',
        '极简黑色单线手绘，可爱简笔画，无填充，花体英文签名"{name}"与软萌小刺猬形象融合，线条流畅圆润，搭配星星月亮装饰，纯白背景，治愈风，高清线稿，适合签名/纹身设计',
        '极简黑色单线条手绘，ins风简笔画，无填充，花体英文签名"{name}"与蝴蝶元素融合，蝴蝶线条轻盈，搭配小太阳和星光装饰，纯白背景，清新温柔，高清线稿，签名设计',
        '极简黑色单线手绘，可爱简笔画，无填充，花体英文签名"{name}"与软萌云朵融合，云朵带着笑脸，搭配星星装饰，线条圆润，纯白背景，治愈可爱，高清线稿',
    ],
    "彩铅卡通": [
        '软萌彩铅手绘风，可爱卡通艺术签名设计，主体为流畅的黑色手写花体字"{name}"，搭配同画风的迷你卡通小元素（如小动物脸、小花、云朵、星星），元素融入签名笔画中，点缀低饱和度马卡龙色（粉色、黄色、蓝色），线条圆润软乎乎，带轻微彩铅质感，纯白背景，干净无多余装饰，治愈系ins风，高清线稿，色彩柔和，构图简洁可爱',
        '软萌彩铅手绘，可爱卡通签名，黑色流畅花体字"{name}"，笔画中融入一只迷你的Q版猫咪/小猪/兔子脸，脸颊带粉粉腮红，线条圆润软萌，点缀低饱和粉/黄/蓝马卡龙色小装饰，纯白背景，治愈ins风，色彩柔和，高清干净，适合签名设计',
        '软萌彩铅手绘风，可爱艺术签名，黑色手写花体字"{name}"，搭配简约手绘小花/郁金香/星星元素，自然融入签名笔画中，点缀低饱和粉/黄/蓝色彩，线条圆润柔和，带轻微彩铅肌理，纯白背景，清新治愈，高清干净，无多余元素',
        '软萌彩铅手绘，治愈风签名设计，黑色流畅花体字"{name}"，搭配迷你手绘云朵/爱心/月亮元素，融入签名笔画中，点缀低饱和蓝/粉色，线条软乎乎带轻微彩铅质感，纯白背景，ins可爱风，高清线稿，色彩柔和，构图简洁',
    ],
}


# ──────────────────────────────────────────────────────────────────────────────
# 工具函数
# ──────────────────────────────────────────────────────────────────────────────

def load_config() -> dict:
    """加载配置文件，若不存在则创建默认配置"""
    if CONFIG_FILE.exists():
        try:
            with open(CONFIG_FILE, "r", encoding="utf-8") as f:
                cfg = json.load(f)
            return {**DEFAULT_CONFIG, **cfg}
        except (json.JSONDecodeError, IOError):
            pass
    return DEFAULT_CONFIG.copy()


def save_config(cfg: dict):
    """保存配置到文件"""
    CONFIG_FILE.parent.mkdir(parents=True, exist_ok=True)
    with open(CONFIG_FILE, "w", encoding="utf-8") as f:
        json.dump(cfg, f, ensure_ascii=False, indent=2)
    print(f"✅ 配置已保存到 {CONFIG_FILE}")


def get_access_token(args_token: str, config: dict) -> str:
    """按优先级获取 Access Token"""
    # 1. 命令行参数
    if args_token:
        return args_token
    # 2. 环境变量
    env_token = os.environ.get("AISTUDIO_ACCESS_TOKEN", "")
    if env_token:
        return env_token
    # 3. 配置文件
    cfg_token = config.get("access_token", "")
    if cfg_token:
        return cfg_token
    return ""


def build_prompt(name: str, style: str, custom_prompt: str = "") -> str:
    """构建生成艺术字的 Prompt"""
    # 自定义风格
    if style == "自定义" and custom_prompt:
        return f'文字"{name}"，{custom_prompt}'

    # 多模板风格（随机选取一条）
    if style in MULTI_TEMPLATE_STYLES:
        template = random.choice(MULTI_TEMPLATE_STYLES[style])
        return template.replace("{name}", name)

    # 普通预设风格
    style_desc = STYLE_PRESETS.get(style, STYLE_PRESETS["中国风"])
    prompt = (
        f'将文字"{name}"设计成艺术字，{style_desc}，'
        f'文字清晰可辨，高分辨率，精细质感，专业设计感，正方形构图'
    )
    return prompt


def generate_image(prompt: str, access_token: str, model: str) -> bytes:
    """调用 ERNIE-Image API 生成图片，返回图片二进制数据"""
    import urllib.request

    payload = json.dumps({
        "model": model,
        "prompt": prompt,
        "response_format": "b64_json",
        "n": 1
    }).encode("utf-8")

    req = urllib.request.Request(
        url=f"{API_BASE_URL}/images/generations",
        data=payload,
        headers={
            "Authorization": f"Bearer {access_token}",
            "Content-Type": "application/json"
        },
        method="POST"
    )

    try:
        with urllib.request.urlopen(req, timeout=120) as resp:
            result = json.loads(resp.read().decode("utf-8"))
    except urllib.error.HTTPError as e:
        body = e.read().decode("utf-8")
        raise RuntimeError(f"API 请求失败 HTTP {e.code}: {body}")
    except urllib.error.URLError as e:
        raise RuntimeError(f"网络连接失败: {e.reason}")

    if "error" in result:
        raise RuntimeError(f"API 返回错误: {result['error']}")

    b64_data = result["data"][0]["b64_json"]
    return base64.b64decode(b64_data)


def save_image(img_bytes: bytes, output_dir: str, name: str, style: str) -> str:
    """保存图片到指定目录，返回保存路径"""
    out_path = Path(output_dir)
    out_path.mkdir(parents=True, exist_ok=True)
    timestamp = int(time.time())
    safe_name = name.replace("/", "_").replace("\\", "_")
    filename = f"{safe_name}_{style}_{timestamp}.png"
    filepath = out_path / filename
    with open(filepath, "wb") as f:
        f.write(img_bytes)
    return str(filepath)


# ──────────────────────────────────────────────────────────────────────────────
# 主入口
# ──────────────────────────────────────────────────────────────────────────────

def main():
    all_styles = list(STYLE_PRESETS.keys()) + list(MULTI_TEMPLATE_STYLES.keys())

    parser = argparse.ArgumentParser(
        description="名字转艺术字 - 使用百度 ERNIE-Image API",
        formatter_class=argparse.RawDescriptionHelpFormatter,
        epilog="""
示例:
  python3 generate_art_name.py --name "李赞" --style 中国风
  python3 generate_art_name.py --name "Alice" --style 单线卡通
  python3 generate_art_name.py --name "Alice" --style 彩铅卡通 --output ./签名
  python3 generate_art_name.py --name "李赞" --style 自定义 --prompt "蒸汽朋克风格，齿轮装饰"
  python3 generate_art_name.py --set-token YOUR_TOKEN   # 保存 Token 到配置文件
  python3 generate_art_name.py --list-styles             # 查看所有风格

可用风格:
  """ + "  ".join(all_styles)
    )

    parser.add_argument("--name", "-n", type=str, help="要转换为艺术字的名字或文字")
    parser.add_argument(
        "--style", "-s", type=str, default="中国风",
        choices=all_styles,
        help="艺术字风格，默认：中国风"
    )
    parser.add_argument("--prompt", "-p", type=str, default="",
                        help="自定义风格描述（--style 自定义 时生效）")
    parser.add_argument("--output", "-o", type=str, default="",
                        help="图片保存目录，默认使用配置文件中的 output_dir")
    parser.add_argument("--token", "-t", type=str, default="",
                        help="星河社区 Access Token（优先于配置文件）")
    parser.add_argument("--model", "-m", type=str, default="",
                        choices=["ERNIE-Image", "ERNIE-Image-Turbo", "Stable-Diffusion-XL"],
                        help="使用的模型，默认：ERNIE-Image-Turbo")
    parser.add_argument("--set-token", type=str, metavar="TOKEN",
                        help="将 Access Token 保存到配置文件")
    parser.add_argument("--list-styles", action="store_true",
                        help="列出所有可用风格")
    parser.add_argument("--show-config", action="store_true",
                        help="显示当前配置")

    args = parser.parse_args()

    config = load_config()

    # ── 特殊命令 ──────────────────────────────────────────────
    if args.list_styles:
        print("\n📋 可用艺术字风格：\n")
        print("【经典风格】")
        for style, desc in STYLE_PRESETS.items():
            if desc:
                print(f"  {style:8s}  {desc[:40]}...")
            else:
                print(f"  {style:8s}  （用 --prompt 自定义描述）")
        print("\n【卡通签名风格（每次随机选模板）】")
        for style, templates in MULTI_TEMPLATE_STYLES.items():
            print(f"  {style:8s}  {len(templates)} 种模板，随机生成")
            print(f"           示例：{templates[0][:50]}...")
        print()
        return

    if args.show_config:
        print(f"\n⚙️  当前配置（{CONFIG_FILE}）：\n")
        display_cfg = dict(config)
        if display_cfg.get("access_token"):
            display_cfg["access_token"] = display_cfg["access_token"][:8] + "****"
        print(json.dumps(display_cfg, ensure_ascii=False, indent=2))
        print()
        return

    if args.set_token:
        config["access_token"] = args.set_token
        save_config(config)
        print(f"✅ Access Token 已保存！前8位：{args.set_token[:8]}****")
        return

    # ── 参数校验 ──────────────────────────────────────────────
    if not args.name:
        parser.print_help()
        print("\n❌ 请使用 --name 指定要转换的名字")
        sys.exit(1)

    access_token = get_access_token(args.token, config)
    if not access_token:
        print("❌ 未找到 Access Token！请通过以下方式之一提供：")
        print("   1. 命令行：--token YOUR_TOKEN")
        print("   2. 环境变量：export AISTUDIO_ACCESS_TOKEN=YOUR_TOKEN")
        print("   3. 配置文件：python3 generate_art_name.py --set-token YOUR_TOKEN")
        print("\n   获取 Token：https://aistudio.baidu.com/account/accessToken")
        sys.exit(1)

    model = args.model or config.get("model", DEFAULT_CONFIG["model"])
    output_dir = args.output or config.get("output_dir", DEFAULT_CONFIG["output_dir"])

    # ── 生成艺术字 ───────────────────────────────────────────
    prompt = build_prompt(args.name, args.style, args.prompt)

    print(f"\n🎨 正在生成艺术字...")
    print(f"   名字：{args.name}")
    print(f"   风格：{args.style}")
    print(f"   模型：{model}")
    print(f"   Prompt：{prompt[:80]}{'...' if len(prompt) > 80 else ''}\n")

    try:
        img_bytes = generate_image(prompt, access_token, model)
        saved_path = save_image(img_bytes, output_dir, args.name, args.style)
        print(f"✅ 艺术字生成成功！")
        print(f"   保存路径：{saved_path}")
        print(f"   文件大小：{len(img_bytes) / 1024:.1f} KB\n")
    except RuntimeError as e:
        print(f"❌ 生成失败：{e}")
        sys.exit(1)


if __name__ == "__main__":
    main()


path: references/api_docs.md
content: # 百度星河社区 ERNIE-Image API 参考文档

## 接口基础信息

| 项目 | 值 |
|---|---|
| 基础域名 | `https://aistudio.baidu.com/llm/lmapi/v3` |
| 文生图接口 | `POST /images/generations` |
| 完整 URL | `https://aistudio.baidu.com/llm/lmapi/v3/images/generations` |
| 接口格式 | 兼容 OpenAI images.generate 格式 |

## 认证方式

在 HTTP Header 中传递 Bearer Token：

```
[REDACTED_SECRET]
```

**获取 Access Token 地址：** https://aistudio.baidu.com/account/accessToken

## 请求参数

### Request Body（JSON）

| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `model` | string | 是 | 模型名称，见下表 |
| `prompt` | string | 是 | 图像生成描述文本 |
| `response_format` | string | 否 | `url`（返回链接）或 `b64_json`（返回base64），默认 `url` |
| `n` | integer | 否 | 生成图片数量，默认 1 |

### 可用模型

| 模型名称 | 特点 |
|---|---|
| `ERNIE-Image` | 完整版，图像质量更高，生成较慢 |
| `ERNIE-Image-Turbo` | 快速版（推荐），仅8步推理，速度快 |
| `Stable-Diffusion-XL` | SDXL 模型，风格多样 |

## 响应格式

```json
{
  "created": 1714000000,
  "data": [
    {
      "url": "https://...",        // response_format=url 时返回
      "b64_json": "iVBORw0KGgo..."  // response_format=b64_json 时返回
    }
  ]
}
```

## 示例代码

### Python（纯标准库，无需第三方包）

```python
import urllib.request
import json
import base64

ACCESS_TOKEN = "your_access_token_here"

payload = json.dumps({
    "model": "ERNIE-Image-Turbo",
    "prompt": '将文字"张伟"设计成中国风书法艺术字，金色，红色背景',
    "response_format": "b64_json",
    "n": 1
}).encode("utf-8")

req = urllib.request.Request(
    url="https://aistudio.baidu.com/llm/lmapi/v3/images/generations",
    data=payload,
    headers={
        "Authorization": f"Bearer {ACCESS_TOKEN}",
        "Content-Type": "application/json"
    },
    method="POST"
)

with urllib.request.urlopen(req, timeout=120) as resp:
    result = json.loads(resp.read())

# 保存图片
with open("output.png", "wb") as f:
    f.write(base64.b64decode(result["data"][0]["b64_json"]))
```

### Python（使用 openai 包）

```python
from openai import OpenAI

client = OpenAI(
    [REDACTED_SECRET]",
    base_url="https://aistudio.baidu.com/llm/lmapi/v3"
)

result = client.images.generate(
    model="ERNIE-Image-Turbo",
    prompt='将文字"张伟"设计成中国风书法艺术字，金色，红色背景',
    response_format="b64_json"
)
```

## 配置文件格式

Skill 配置文件 `config.json` 位于 skill 安装目录根路径下（即 `SKILL.md` 同级目录）。

```json
{
  "access_token": "your_access_token_here",
  "model": "ERNIE-Image-Turbo",
  "output_dir": "./art_names"
}
```

通过脚本自动写入（推荐）：
```bash
python3 scripts/generate_art_name.py --set-token YOUR_TOKEN
```

## Prompt 写作技巧（艺术字）

好的艺术字 Prompt 应包含：
1. **明确标注文字内容**：用引号将名字括起来，如 `将文字"张三"设计成...`
2. **指定字体风格**：书法、印刷体、手写体等
3. **颜色描述**：主色调、渐变方向
4. **背景/氛围**：背景颜色或场景
5. **质量要求**：高分辨率、清晰可辨、精细质感

### 示例 Prompt

```
将文字"张伟"设计成中国传统书法艺术字，毛笔字体，水墨风格，金色文字，
红色背景，古典纹样装饰，大气磅礴，文字清晰可辨，高分辨率，正方形构图
```

## 注意事项

- Access Token 有效期：登录后长期有效，但 Token 泄露需立即重置
- 免费额度：每账户 100万 Tokens
- 超时设置：建议 timeout=120 秒（模型推理时间较长）
- 生成失败常见原因：Token 无效、Prompt 触发审核、网络超时


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (HIGH)