AI表情包生成工作流



n8n AI表情包生成教程:从角色设计到动画表情包
本教程将详细指导您如何导入、配置并运行一个n8n工作流,该工作流能够全自动生成AI表情包,从角色创建到最终的GIF动画,输出符合微信表情包标准的高质量内容。
1. 工作流概览
这个n8n工作流是一个完整的AI表情包生成流程,它能自动创建角色图片,智能生成表情提示词,批量生成表情包图片,并最终转换为优化的GIF动画。
主要流程: 角色信息配置 → 角色图片生成 → AI生成表情提示词 → 批量生成表情图片 → 视频动画生成 → GIF转换优化
2. 导入 n8n 工作流
首先,将提供的JSON文件导入到您的n8n实例中。
- 打开您的n8n应用程序或云实例。
- 在n8n界面的左侧导航栏,点击"工作流"(Workflows)。
- 选择"从文件导入"(Import from File)选项。
- 选择您下载的工作流文件,并确认导入。
导入成功后,您会看到一个名为"表情包工作流"的新工作流。
3. 必需的API服务配置
在开始之前,您需要准备以下API密钥并在n8n中配置相应的凭证:
3.1 Fal.ai API配置
- 用途: 图像生成和背景处理
- 获取方式: 访问 fal.ai 注册并获取API密钥
- 凭证类型: HTTP Header Auth
- 配置名称:
Fal Auth account
3.2 火山引擎API配置
- 用途: 视频动画生成
- 获取方式: 访问火山引擎官网注册并获取API密钥
- 凭证类型: HTTP Bearer Auth
- 配置名称:
火山引擎
3.3 Groq API配置
- 用途: AI文本生成(表情提示词)
- 获取方式: 访问 groq.com 注册并获取API密钥
- 凭证类型: Groq API
- 配置名称:
Groq account
4. 节点逐一配置
接下来,我们将逐一配置工作流中的每个关键节点。
4.1 触发器 (Schedule Trigger)
这是工作流的起始点,用于手动触发或定时执行。
- 目的: 控制工作流何时执行
- 配置步骤:
- 双击"触发器"节点
- 选择触发模式:手动触发或定时执行
- 保存节点设置
4.2 角色信息 (Set Node)
这是整个工作流的核心配置节点,定义角色外观和要生成的表情类型。
- 目的: 设置角色基础信息和表情生成参数
- 关键配置:
复制以下配置到Set节点的赋值区域:
prompt: chibi husky puppy, half-body, wearing NBA referee uniform, black and white striped shirt, cartoon style, cute husky with blue eyes, fluffy fur, whistle hanging around neck, looking front, emotionless expression, serious and cold facial expression, no smile, piercing eyes, soft shading, clean lineart, white background, minimal shadows, emoji-style, consistent character design
file: character.png
folder: dog_emoji
root_path: /Users/tangjing/Desktop/projects/docker_share/n8n_files
fileName: character
emoji_prompt: 请为以下篮球犯规手势生成每个图像的详细描述(prompt),用于图像生成模型: 打手犯规(Hand Check),阻挡犯规(Blocking),走步违例(Traveling),带球撞人(Charging),拉人犯规(Holding),推人犯规(Pushing),拉球衣犯规(Grabbing Jersey),技术犯规(Technical Foul),六犯离场(Fouled Out),并且还要描述出对应表情
⚠️ 重要: 请将 root_path
修改为您的本地路径
4.3 角色是不是存在 (Execute Command)
检查角色图片是否已存在,避免重复生成。
- 目的: 检测角色图片文件是否存在
- 配置:
- alwaysOutputData: true
复制此命令到Command字段:
if [ -f "{{ $json.root_path }}/{{ $json.folder }}/{{ $json.file }}" ]; then
echo true
else
echo false
fi
4.4 生成角色图片 (HTTP Request)
使用Fal.ai API生成高质量的角色图片。
- 目的: 生成符合描述的角色基础图片
- 凭证: 使用配置的
Fal Auth account
- HTTP配置:
- 方法: POST
- URL:
https://queue.fal.run/fal-ai/flux-pro/kontext/max/text-to-image
请求体 (JSON Body):
{
"prompt": "{{ $('角色信息').item.json.prompt }}",
"guidance_scale": 3.5,
"image_size": {
"width": 240,
"height": 240
},
"num_images": 1,
"output_format": "png",
"safety_tolerance": "2",
"aspect_ratio": "1:1"
}
4.5 生成对应数量的表情 (LangChain AI Agent)
使用AI智能生成多个表情包的提示词。
- 目的: 根据角色信息智能生成表情包描述
- 模型: 连接到 Groq Chat Model
- 配置:
- Prompt Type: Define
- Text:
{{ $('角色信息').item.json.emoji_prompt }}
- Has Output Parser: true
系统消息 (System Message):
Character Information:
{{ $('角色信息').item.json.prompt }}
Visual Elements:
A manga-style exclamation mark should appear on screen, followed by the character's action
No whistle-blowing actions allowed
Background:
Must be described using prompts, cannot be white background
Suggested background prompts:
"Vibrant gradient background from deep purple to electric blue"
"Dynamic geometric pattern background with neon colors"
"Soft pastel sky background with floating clouds"
"Urban cityscape silhouette at sunset"
"Abstract swirling energy background with glowing particles"
Animation Timing:
All actions must be completed within 1 second
After 1 second, the animation loops and repeats the same sequence
4.6 输入表情提示词 (Structured Output Parser)
将AI生成的文本转换为结构化的JSON格式。
- 目的: 解析AI生成的表情描述为标准格式
- JSON Schema示例:
[{
"prompt": "AAAAAA",
"folder":"xxxx",
"file":"aaaa"
}]
4.7 生成更多表情图片 (HTTP Request)
批量生成每个表情的静态图片。
- 目的: 为每个表情提示词生成对应图片
- HTTP配置:
- 方法: POST
- URL:
https://queue.fal.run/fal-ai/flux-pro/kontext
请求体:
{
"prompt": "{{ $json.prompt.replaceAll(\"\\\"\",\"'\") }}",
"guidance_scale": 3.5,
"num_images": 1,
"output_format": "jpeg",
"safety_tolerance": "2",
"aspect_ratio":"1:1",
"image_url": "data:image/png;base64,{{ $('将图片转成base64').item.json.data }}"
}
4.8 生成video (HTTP Request)
使用火山引擎API将静态图片转换为动画视频。
- 目的: 生成表情包的动画视频
- 凭证: 使用
火山引擎
Bearer Token - HTTP配置:
- 方法: POST
- URL:
https://ark.cn-beijing.volces.com/api/v3/contents/generations/tasks
请求体:
{
"model": "doubao-seedance-1-0-pro-250528",
"content": [
{
"type": "text",
"text": "{{ $('Loop Over Items').item.json.prompt.replaceAll(\"\\\"\",\"'\") }} --ratio 1:1 --dur 3 --rs 480p --fps 8 --wm false --cf true"
},
{
"type": "image_url",
"image_url": {
"url": "{{ $json.images[0].url }}"
}
}
]
}
4.9 压缩gif (Execute Command)
将生成的视频转换为优化的GIF文件,确保符合平台要求。
- 目的: 生成符合标准的GIF表情包(240x240,<500KB)
- 配置:
- alwaysOutputData: true
完整压缩命令:
# 修复版本 - 不使用timeout命令
set -e # 遇到错误立即退出
OUTPUT_DIR="{{ $('创建表情包本地路径').item.json.stdout }}"
echo "开始处理,输出目录: $OUTPUT_DIR"
# 检查frame文件是否存在
FRAME_COUNT=$(ls "$OUTPUT_DIR"/frame_*.png 2>/dev/null | wc -l)
echo "找到 $FRAME_COUNT 个frame文件"
if [ $FRAME_COUNT -eq 0 ]; then
echo "错误:没有找到frame文件"
exit 1
fi
# 第一步:PNG压缩
echo "步骤1: 压缩PNG文件..."
pngquant --quality=60-75 --speed=4 --force --ext=.png --verbose "$OUTPUT_DIR"/frame_*.png
echo "PNG压缩完成"
# 第二步:生成调色板
echo "步骤2: 生成调色板..."
ffmpeg -y -nostdin -i "$OUTPUT_DIR/frame_%02d.png" \
-vf "fps=6,palettegen=max_colors=64" \
"$OUTPUT_DIR/palette.png" -v error
echo "调色板生成完成"
# 第三步:生成GIF
echo "步骤3: 生成GIF..."
ffmpeg -y -nostdin -i "$OUTPUT_DIR/frame_%02d.png" \
-i "$OUTPUT_DIR/palette.png" \
-lavfi "paletteuse=dither=bayer:bayer_scale=2" \
"$OUTPUT_DIR/emoji.gif" -v error
echo "GIF生成完成"
# 检查结果
if [ -f "$OUTPUT_DIR/emoji.gif" ]; then
GIF_SIZE=$(stat -f%z "$OUTPUT_DIR/emoji.gif" 2>/dev/null || stat -c%s "$OUTPUT_DIR/emoji.gif" 2>/dev/null)
echo "成功!GIF文件大小: $((GIF_SIZE/1024))KB"
else
echo "错误:GIF文件未生成"
exit 1
fi
# 清理临时文件
rm -f "$OUTPUT_DIR/palette.png"
echo "处理完成"
5. 系统要求
确保您的系统已安装以下工具:
- FFmpeg: 用于视频和图像处理
- pngquant: 用于PNG图像压缩
- 基本的Shell命令支持
6. 自定义表情包主题
您可以通过修改"角色信息"节点来生成不同主题的表情包:
商务风格示例:
emoji_prompt: 请生成以下商务场景的表情包:开心工作、加班疲惫、开会讨论、项目完成、周末放松、升职加薪、工作压力、团队合作,并描述出对应的专业表情
日常生活示例:
emoji_prompt: 请生成以下日常情绪表情包:开心、难过、生气、惊讶、思考、睡觉、吃饭、运动,每个都要有生动的表情描述
7. 激活并运行工作流
配置完成后:
- 在工作流编辑器右上角打开激活开关
- 点击"触发器"节点,然后点击"执行工作流"进行测试
- 工作流将按照配置的流程自动执行
8. 检查结果
工作流执行成功后,您可以在指定的本地路径中找到:
- 角色基础图片: character.png
- 表情包GIF文件: emoji.gif (每个表情一个文件)
- 尺寸规格: 240x240像素
- 文件大小: 小于500KB,符合微信表情包要求
9. 故障排除
常见问题:
-
API限制错误
- 检查所有API密钥是否正确配置
- 确认账户余额充足
-
文件路径错误
- 确保
root_path
路径存在且有写入权限 - 使用绝对路径
- 确保
-
GIF文件过大
- 调整压缩参数中的quality值
- 减少帧数或降低分辨率
通过遵循上述步骤,您将能够成功设置并运行这个AI表情包生成工作流,实现完全自动化的表情包创作!