first commit

This commit is contained in:
jeremygan2021
2026-03-04 19:24:05 +08:00
commit f5117a90d1
28 changed files with 1647 additions and 0 deletions

View File

@@ -0,0 +1,128 @@
#!/bin/bash
# 活动海报提示词生成器 - 使用豆包大模型生成
# 获取脚本所在目录的绝对路径
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
SKILL_DIR="$(dirname "$SCRIPT_DIR")"
ASSETS_DIR="$SKILL_DIR/assets"
# 加载环境变量
if [ -f "$SCRIPT_DIR/.env" ]; then
source "$SCRIPT_DIR/.env"
elif [ -f "$SKILL_DIR/.env" ]; then
source "$SKILL_DIR/.env"
fi
# 默认值
DOUBAO_API_KEY="${DOUBAO_API_KEY:-db1f8b60-0ffc-473c-98da-40daa3a95df8}"
# 使用豆包大模型生成海报提示词
generate_prompt_with_ai() {
local event_content="$1"
echo "🤖 正在使用豆包大模型生成海报提示词..."
# 构建prompt让AI根据活动内容生成适合的图片提示词
local system_prompt="你是一个专业的活动海报设计提示词专家。根据用户提供的活动文案内容生成适合用于AI绘画生成海报的中文提示词。要求1. 生成的提示词要准确反映活动的主题、氛围和特点 2. 提示词应该是有画面结构,内容文字,用逗号分隔 3. 提示词要包含:活动场景、人物、物品、氛围、风格、构图和海报文字等关键词 4. 适合用于AI图像生成豆包/Nanobanana等模型并且文字部分用双引号包起来 5. 建议风格电影大片感、视觉冲击力、oc渲染光线追踪、动态模糊、景深、质感真实。请直接输出提示词不要其他解释。"
# 将活动内容进行URL编码
local user_prompt_encoded=$(python3 -c "import urllib.parse; print(urllib.parse.quote('''请根据以下活动文案内容生成适合生成活动海报的AI绘画提示词。$event_content。请生成1. 适合豆包API写实风格的提示词 2. 适合Nanobanana API创意风格的提示词。格式豆包提示词[提示词] 创意提示词:[提示词]'''))")
# 使用简化的请求
local json_data="{\"model\":\"doubao-seed-2-0-pro-260215\",\"messages\":[{\"role\":\"system\",\"content\":\"$system_prompt\"},{\"role\":\"user\",\"content\":\"$user_prompt_encoded\"}],\"max_tokens\":1000}"
# 调用豆包API
response=$(curl -s -X POST "https://ark.cn-beijing.volces.com/api/v3/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DOUBAO_API_KEY" \
--data-binary "$json_data")
# 保存原始响应用于调试
echo "$response" > /tmp/ai_prompt_response.json
# 解析响应
python3 << 'PYEOF'
import json
import re
try:
with open('/tmp/ai_prompt_response.json', 'r') as f:
data = json.load(f)
if 'error' in data:
print('ERROR: ' + data['error'].get('message', 'Unknown error'))
# 使用默认提示词
print('DOUBAO_PROMPT=Chinese New Year celebration, red lanterns, traditional festival, festive atmosphere, Chinese style')
print('NANO_PROMPT=Chinese New Year, modern design, flat style, vibrant colors, Memphis style')
else:
content = data['choices'][0]['message']['content']
# 提取豆包提示词
doubao_match = re.search(r'豆包提示词[:]\s*([^\n]+)', content)
if doubao_match:
doubao_prompt = doubao_match.group(1).strip()
else:
parts = content.split('创意提示词')
if len(parts) > 0:
doubao_prompt = parts[0].replace('豆包提示词', '').replace('[提示词]', '').strip()
else:
doubao_prompt = content.strip()
# 提取创意提示词
nano_match = re.search(r'创意提示词[:]\s*([^\n]+)', content)
if nano_match:
nano_prompt = nano_match.group(1).strip()
else:
parts = content.split('豆包提示词')
if len(parts) > 1:
nano_prompt = parts[1].replace('创意提示词', '').replace('[提示词]', '').strip()
else:
nano_prompt = ''
print('DOUBAO_PROMPT=' + doubao_prompt)
print('NANO_PROMPT=' + nano_prompt)
except Exception as e:
print('ERROR: ' + str(e))
print('DOUBAO_PROMPT=Chinese New Year celebration, red lanterns, traditional festival, festive atmosphere, Chinese style')
print('NANO_PROMPT=Chinese New Year, modern design, flat style, vibrant colors, Memphis style')
PYEOF
}
# 生成豆包提示词的3个变体
generate_doubao_variations() {
local base_prompt="$1"
# 变体1强调氛围夜景
local var1="$base_prompt, cinematic lighting, night scene, lanterns glowing, festive atmosphere, dramatic"
# 变体2强调人物活动
local var2="$base_prompt, happy crowd, people celebrating, lively atmosphere, traditional costumes, dynamic composition"
# 变体3强调元素特写
local var3="$base_prompt, close-up view, detailed, main subject focus, premium quality, 8k"
echo "$var1"
echo "$var2"
echo "$var3"
}
# 根据参数调用对应函数
case "$1" in
ai)
generate_prompt_with_ai "$2"
;;
variations)
generate_doubao_variations "$2"
;;
*)
echo "======================================"
echo "🤖 AI海报提示词生成器"
echo "======================================"
echo ""
echo "用法: $0 ai <活动文案内容>"
echo ""
echo "示例: "
echo ' $0 ai "活动名称:春节游园会"'
;;
esac