skill:说一句「做张海报」,AI 就连效果图都画好了

作者:青云 发布时间: 2026-09-07 阅读量:6 评论数:0

从「一句话需求」到「可落地的海报效果图」,中间只隔了一个 Skill。

最近在做一个很有意思的小项目:为一个走 年轻、潮流、有网感 路线的轻食餐厅(品牌叫 zhan-creative)搭建一个 AI 营销物料助理

以前设计一张海报,流程大概是:想创意 → 写方案 → 找设计师/开生图工具 → 反复调 Prompt。而现在,我只对 AI 说一句:

「帮我生成一个电子日历海报」

它就能按品牌规范输出完整创意方案,并自动调用大模型画出效果图。这篇文章记录一下这个 Skill 是怎么设计的,以及过程中踩过的几个真实的坑。


一、项目长什么样

整个东西收敛成一个非常小的项目结构:

demo01/
├── .claude/
│   └── skills/
│       └── zhan-creative/        # 一个「技能」目录
│           ├── SKILL.md          # 技能说明书(品牌资产 + 工作流)
│           ├── references/       # 参考资料(可放范例/色板等)
│           ├── assets/           # 参考素材位
│           ├── scripts/
│           │   └── qwen_image_gen.py   # 调用图像生成模型的脚本
│           └── output/           # AI 生成的成品图

核心思想就一句话:把「设计师的脑子」和「画师的手」都封装进一个 Skill。以后无论是做海报、易拉宝、工装还是包装盒,调用同一个技能即可。


二、品牌资产,先写进「说明书」

做物料最怕的是风格跑偏。所以第一步,把品牌的核心视觉资产固化进 SKILL.md

## 品牌核心元素
- 品牌名:zhan-creative餐厅
- 风格:年轻、潮流、有网感
- IP形象:布偶猫
- 主色:薄荷绿 #5DDEB5
- Slogan:A FRESH, MODERN BITE / 健康轻食主义
- 风格:3D卡通、清新时尚,软陶奶油柔光质感

有了这份「地基」,AI 每次出方案都会自动对齐品牌调性——布偶猫 IP、薄荷绿主色、软陶奶油质感,不会天马行空跑偏。

三、任务拆成三步:创意 → Prompt → 出图

SKILL.md 里定义了固定工作流,保证每次输出的质量稳定:

## 你的任务
当用户说要做某种物料(海报、易拉宝、工装、包装盒等),你需要:
1. 严格按照固定格式输出完整物料设计创意方案;
2. 根据创意方案提炼完整绘图正向提示词,调用本地 python 脚本生成 AI 效果图;
3. 将脚本返回的本地图片文件路径展示给用户。

创意方案也有固定四段式:创意主题 / 视觉风格 / 画面构成 / 细节建议。这样既方便用户判断方向,也方便把方案「翻译」成绘图 Prompt。

关键的设计决策是:正向 Prompt 强制内置品牌基底,再追加当前物料的具体画面描述,例如:

3D卡通,软陶奶油柔光质感,布偶猫IP,薄荷绿 #5DDEB5,
清新治愈,高细节,商业物料。
【此处再拼接:画面布局、主体元素、配色、质感等物料专属描述】

负面提示词也做了统一约定,避免「模糊、畸形、错误文字」等常见翻车:

模糊,变形,低画质,水印,错误文字,畸形,多肢体,丑陋

四、真正「出图」的那段脚本

效果图是通过阿里云百炼(DashScope)的 qwen-image 模型生成的,脚本核心只有几十行:

from dashscope import ImageSynthesis
import dashscope
​
def generate_image(prompt, negative_prompt="", size="1024*1024",
                   n=1, output_dir="./skill_output"):
    dashscope.api_key = DASHSCOPE_API_KEY
    saved_files = []
​
    # qwen-image 单次仅支持生成 1 张,故循环 n 次、每次 n=1
    for idx in range(n):
        resp = ImageSynthesis.call(
            model="qwen-image",
            prompt=prompt,
            negative_prompt=negative_prompt,
            size=size,
            n=1,
        )
        if resp.status_code != 200:
            raise RuntimeError(f"API调用失败 {resp.status_code}: {resp.message}")
​
        for result in resp.output.results:
            img_bytes = requests.get(result.url, timeout=120).content
            save_path = Path(output_dir) / f"gen_qwen_image_gen_{idx}.png"
            save_path.write_bytes(img_bytes)
            saved_files.append(save_path)
    return saved_files

调用方式也非常简单,命令行即可:

python3 scripts/qwen_image_gen.py \
  --prompt "【拼接好的完整绘图 Prompt】" \
  --negative-prompt "模糊,变形,低画质,水印,错误文字,畸形,多肢体,丑陋" \
  --size "720*1280" \
  --n 2 \
  --out-dir ./output

尺寸规则也预置好了,按发布场景自动选择:

场景

尺寸

朋友圈方形海报

1024*1024

手机竖版 9:16

720*1280

社交海报 3:4

1440*1080


五、实战效果:一张「电子日历海报」

我让它做了一张 电子日历海报(竖版 9:16)。创意方向是:

「每天一口新鲜 · 布偶猫的轻食月历」——布偶猫当"日期管家"趴在月历上,陪你每天健康打卡。

AI 直接产出的两张效果图如下:

可以看到 3D 卡通的布偶猫、薄荷绿主色、软陶奶油质感都稳稳落在品牌调性里,吐司、牛油果、咖啡杯、小太阳这些轻食元素也散落得很自然。整条链路——创意方案 → Prompt → 成品图 → 本地路径返回——一次跑通。


六、避坑记录(都是真实踩过的)

写这套东西时踩了几个不算冷门的坑,值得记下来:

  1. 模型名不能想当然。 最初脚本写的是 qwen-image-2.0-pro,结果一调用就报 url error, please check url。排查后发现该账号下真正可用的模型名是 qwen-image遇到"看起来对但报 URL 错"时,先怀疑模型 ID 是否正确。

  2. n=2 会让任务「静默失败」。 以为传 n=2 就能出两张,结果 HTTP 200、任务却异步 FAILED,返回 num_images_per_prompt must be 1,文件列表为空。解决办法是循环调用 n 次、每次 n=1,既尊重模型限制,又保留了「一次要两张」的 CLI 语义。

  3. 装好的依赖没被用上。 一开始在系统 Python 里找不到 dashscope,反复 import 失败;后来发现依赖被装进了项目自带的 .venv(Python 3.11),而终端默认用的是 Homebrew 的 Python 3.13。跑脚本前先确认用的是同一个解释器。

  4. AI 画「字」仍然会翻车。 日历里的日期数字、星期文字偶尔会错乱(比如把星期写成怪字、日期出现重复/乱序)。文生图模型的文字渲染仍是短板。所以更稳的玩法是:把 AI 图当"底图素材",用 PS / Canva / 代码再叠一层真实、可编辑的文字层

  5. 密钥安全要留意。 脚本为了本地方便硬编码了 API Key,但绝不能把这类文件推到公开仓库。脚本头部也特意加了警示注释,只允许本地个人使用。


七、小结与后续

这个项目最大的价值,不是"能画图",而是把品牌审美 + 固定工作流 + 图像生成打包成了一个可复用的"技能原子"。之后无论做海报、外卖包装盒、工装还是菜单,都只需要一句话,AI 就能按同一套品牌语言稳定地产出。

后续可以做的方向还很多:

  • 把参考图(references / assets)喂给多模态模型做 风格一致性生图

  • 接入固定排版模板,解决 AI 文字乱码问题;

  • 把「创意方案」同步输出成小红书/公众号文案,一次生成多平台内容。

如果你也在做品牌相关的 AI 自动化,欢迎交流~


技术栈:Claude Code Skill · 阿里云百炼 DashScope(qwen-image)· Python

评论