Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -36,13 +36,13 @@ def analyze_concepts(month):
|
|
36 |
monthly_data = {
|
37 |
"1월": {
|
38 |
"holidays": ["신정", "설날"],
|
39 |
-
"special_days": ["
|
40 |
"seasonal_terms": ["소한", "대한", "입춘"],
|
41 |
-
"trends": ["
|
42 |
"seasons": ["겨울", "신년", "새로운 시작"],
|
43 |
"colors": ["#FF6B6B", "#4ECDC4", "#45B7D1"],
|
44 |
"mood": "희망적이고 새로운 시작",
|
45 |
-
"female_appeal": ["
|
46 |
},
|
47 |
"2월": {
|
48 |
"holidays": ["밸런타인데이"],
|
@@ -165,14 +165,14 @@ def analyze_concepts(month):
|
|
165 |
if data.get("special_days"):
|
166 |
special = data["special_days"][0]
|
167 |
concepts.append({
|
168 |
-
"name": f"{special}
|
169 |
"theme": f"{special}를 테마로 한 20-40대 여성 맞춤 이벤트",
|
170 |
"score": 8.8,
|
171 |
"reason": f"20-40대 여성이 공감할 수 있는 {special} 테마로 높은 참여도 예상",
|
172 |
-
"target": "20-40대 여성,
|
173 |
"colors": data.get("colors", ["#FF69B4"]),
|
174 |
"keywords": [special] + data.get("female_appeal", [])[:2],
|
175 |
-
"participation_factor": "
|
176 |
"is_recommended": True
|
177 |
})
|
178 |
|
@@ -195,13 +195,13 @@ def analyze_concepts(month):
|
|
195 |
if data.get("seasonal_terms"):
|
196 |
term = data["seasonal_terms"][0]
|
197 |
concepts.append({
|
198 |
-
"name": f"{term} 모던
|
199 |
-
"theme": f"절기 {term}을 현대적으로 해석한
|
200 |
"score": 7.5,
|
201 |
-
"reason": f"전통 절기를 현대 여성
|
202 |
-
"target": "전연령 여성, 감성적
|
203 |
"colors": data.get("colors", ["#8FBC8F"]),
|
204 |
-
"keywords": data.get("seasonal_terms", [])[:2] + ["모던", "
|
205 |
"participation_factor": "전통의 현대적 재해석, 감성적 어필",
|
206 |
"is_recommended": False
|
207 |
})
|
@@ -210,21 +210,21 @@ def analyze_concepts(month):
|
|
210 |
if data.get("seasons"):
|
211 |
season = data["seasons"][0]
|
212 |
concepts.append({
|
213 |
-
"name": f"{season} 감성
|
214 |
-
"theme": f"{season} 계절을 만끽하는 여성
|
215 |
"score": 8.0,
|
216 |
"reason": f"{season} 계절감과 여성 감성을 결합한 자연스러운 참여 유도",
|
217 |
"target": "20-40대 감성 중시 여성, 계절감 추구층",
|
218 |
"colors": data.get("colors", ["#98FB98"]),
|
219 |
"keywords": data.get("seasons", []) + data.get("female_appeal", [])[:2],
|
220 |
-
"participation_factor": "계절 감성, 여성
|
221 |
"is_recommended": True
|
222 |
})
|
223 |
|
224 |
# 컨셉 5: 셀프케어/힐링 기반
|
225 |
concepts.append({
|
226 |
"name": f"{month} 셀프케어 위크",
|
227 |
-
"theme": "나를 위한 특별한 시간, 셀프케어
|
228 |
"score": 8.3,
|
229 |
"reason": "20-40대 여성의 핵심 관심사인 셀프케어로 강한 어필",
|
230 |
"target": "20-40대 여성, 셀프케어 관심층",
|
@@ -286,7 +286,7 @@ def analyze_concepts(month):
|
|
286 |
result += f"높은 참여도를 보일 것으로 예상됩니다."
|
287 |
|
288 |
return result, concept_names "계절 공감대, 일상 연관성"
|
289 |
-
|
290 |
|
291 |
# 컨셉 5: 스페셜 데이 기반
|
292 |
if data.get("special_days"):
|
@@ -341,83 +341,248 @@ def analyze_concepts(month):
|
|
341 |
|
342 |
return result, concept_names
|
343 |
|
344 |
-
def
|
345 |
-
"""
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
"
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
361 |
}
|
362 |
|
363 |
month_key = month.replace('월', '월')
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
373 |
},
|
374 |
"셀프러브": {
|
375 |
-
"sub1": "💕
|
376 |
-
"main": "
|
377 |
-
"sub2": "오늘부터
|
378 |
-
"hashtags": ["#셀프러브", "#나를위한시간", "
|
|
|
379 |
},
|
380 |
"봄맞이": {
|
381 |
-
"sub1": "🌸 봄이
|
382 |
-
"main": "
|
383 |
-
"sub2": "
|
384 |
-
"hashtags": ["#봄맞이", "
|
|
|
385 |
},
|
386 |
"바캉스": {
|
387 |
-
"sub1": "🏖️
|
388 |
-
"main": "바캉스는 '바'로 '캉'스럽게 쉬는 거야!",
|
389 |
-
"sub2": "
|
390 |
-
"hashtags": ["#바캉스", "
|
|
|
391 |
},
|
392 |
"가을감성": {
|
393 |
-
"sub1": "🍂
|
394 |
-
"main": "
|
395 |
-
"sub2": "이
|
396 |
-
"hashtags": ["#가을감성", "
|
|
|
397 |
},
|
398 |
"크리스마스": {
|
399 |
-
"sub1": "🎄
|
400 |
-
"main": "
|
401 |
-
"sub2": "
|
402 |
-
"hashtags": ["
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
403 |
}
|
404 |
}
|
405 |
|
406 |
# 컨셉명에서 키워드 추출하여 적절한 카피 선택
|
407 |
selected_copy = None
|
408 |
-
for keyword, copy_data in
|
409 |
-
if any(k in concept_name for k in keyword.split()):
|
410 |
selected_copy = copy_data
|
411 |
break
|
412 |
|
413 |
-
# 기본 카피
|
414 |
if not selected_copy:
|
415 |
-
|
416 |
-
|
417 |
-
"main": f"{concept_name}로 만드는 나만의 스토리",
|
418 |
-
"sub2": f"{vibe_data['keywords'][0]}의 계절, 함께 만들어가요 💫",
|
419 |
-
"hashtags": vibe_data['hashtags']
|
420 |
-
}
|
421 |
|
422 |
return selected_copy
|
423 |
|
@@ -444,6 +609,9 @@ def generate_notice(concept, event_type, event_period, prize_benefits):
|
|
444 |
# 트렌디한 카피 생성
|
445 |
copy_data = generate_trendy_copy(concept, month, period_text)
|
446 |
|
|
|
|
|
|
|
447 |
# 당첨 혜택이 입력되지 않았으면 기본값 사용
|
448 |
if not prize_benefits or prize_benefits.strip() == "":
|
449 |
default_benefits = """✨ 1등 (1명): 스타벅스 5만원 기프트카드
|
@@ -469,6 +637,8 @@ def generate_notice(concept, event_type, event_period, prize_benefits):
|
|
469 |
|
470 |
{hashtags_text}
|
471 |
|
|
|
|
|
472 |
========================
|
473 |
✨ EVENT
|
474 |
특별한 {concept}을 준비했어요!
|
@@ -476,6 +646,8 @@ def generate_notice(concept, event_type, event_period, prize_benefits):
|
|
476 |
|
477 |
이번 이벤트는 단순한 참여가 아닌,
|
478 |
우리만의 특별한 추억을 만들어가는 시간이에요 ✨
|
|
|
|
|
479 |
========================
|
480 |
|
481 |
🎯 참여 방법
|
@@ -507,7 +679,7 @@ def generate_notice(concept, event_type, event_period, prize_benefits):
|
|
507 |
|
508 |
{hashtags_text}
|
509 |
|
510 |
-
💝 많은 참여 부탁드려요! 감사합니다
|
511 |
|
512 |
return notice
|
513 |
|
@@ -638,4 +810,4 @@ def create_interface():
|
|
638 |
|
639 |
if __name__ == "__main__":
|
640 |
demo = create_interface()
|
641 |
-
demo.launch()
|
|
|
36 |
monthly_data = {
|
37 |
"1월": {
|
38 |
"holidays": ["신정", "설날"],
|
39 |
+
"special_days": ["미니멀 챌린지", "새해 리셋", "플래너 스타트"],
|
40 |
"seasonal_terms": ["소한", "대한", "입춘"],
|
41 |
+
"trends": ["미니멀", "자기계발", "플래너", "정리정돈", "헬스케어", "독서"],
|
42 |
"seasons": ["겨울", "신년", "새로운 시작"],
|
43 |
"colors": ["#FF6B6B", "#4ECDC4", "#45B7D1"],
|
44 |
"mood": "희망적이고 새로운 시작",
|
45 |
+
"female_appeal": ["미니멀", "자기계발", "셀프케어", "새해다짐"]
|
46 |
},
|
47 |
"2월": {
|
48 |
"holidays": ["밸런타인데이"],
|
|
|
165 |
if data.get("special_days"):
|
166 |
special = data["special_days"][0]
|
167 |
concepts.append({
|
168 |
+
"name": f"{special} 이벤트",
|
169 |
"theme": f"{special}를 테마로 한 20-40대 여성 맞춤 이벤트",
|
170 |
"score": 8.8,
|
171 |
"reason": f"20-40대 여성이 공감할 수 있는 {special} 테마로 높은 참여도 예상",
|
172 |
+
"target": "20-40대 여성, 트렌드 관심층",
|
173 |
"colors": data.get("colors", ["#FF69B4"]),
|
174 |
"keywords": [special] + data.get("female_appeal", [])[:2],
|
175 |
+
"participation_factor": "여성층 공감대, 특별함",
|
176 |
"is_recommended": True
|
177 |
})
|
178 |
|
|
|
195 |
if data.get("seasonal_terms"):
|
196 |
term = data["seasonal_terms"][0]
|
197 |
concepts.append({
|
198 |
+
"name": f"{term} 모던 감성",
|
199 |
+
"theme": f"절기 {term}을 현대적으로 해석한 감성 이벤트",
|
200 |
"score": 7.5,
|
201 |
+
"reason": f"전통 절기를 현대 여성 감성으로 재해석한 참신함",
|
202 |
+
"target": "전연령 여성, 감성적 취향층",
|
203 |
"colors": data.get("colors", ["#8FBC8F"]),
|
204 |
+
"keywords": data.get("seasonal_terms", [])[:2] + ["모던", "감성"],
|
205 |
"participation_factor": "전통의 현대적 재해석, 감성적 어필",
|
206 |
"is_recommended": False
|
207 |
})
|
|
|
210 |
if data.get("seasons"):
|
211 |
season = data["seasons"][0]
|
212 |
concepts.append({
|
213 |
+
"name": f"{season} 감성 모먼트",
|
214 |
+
"theme": f"{season} 계절을 만끽하는 여성 감성 이벤트",
|
215 |
"score": 8.0,
|
216 |
"reason": f"{season} 계절감과 여성 감성을 결합한 자연스러운 참여 유도",
|
217 |
"target": "20-40대 감성 중시 여성, 계절감 추구층",
|
218 |
"colors": data.get("colors", ["#98FB98"]),
|
219 |
"keywords": data.get("seasons", []) + data.get("female_appeal", [])[:2],
|
220 |
+
"participation_factor": "계절 감성, 여성 공감대",
|
221 |
"is_recommended": True
|
222 |
})
|
223 |
|
224 |
# 컨셉 5: 셀프케어/힐링 기반
|
225 |
concepts.append({
|
226 |
"name": f"{month} 셀프케어 위크",
|
227 |
+
"theme": "나를 위한 특별한 시간, 셀프케어 이벤트",
|
228 |
"score": 8.3,
|
229 |
"reason": "20-40대 여성의 핵심 관심사인 셀프케어로 강한 어필",
|
230 |
"target": "20-40대 여성, 셀프케어 관심층",
|
|
|
286 |
result += f"높은 참여도를 보일 것으로 예상됩니다."
|
287 |
|
288 |
return result, concept_names "계절 공감대, 일상 연관성"
|
289 |
+
})
|
290 |
|
291 |
# 컨셉 5: 스페셜 데이 기반
|
292 |
if data.get("special_days"):
|
|
|
341 |
|
342 |
return result, concept_names
|
343 |
|
344 |
+
def generate_design_recommendations(concept_name, month):
|
345 |
+
"""재미있고 참여율 높은 디자인 추천"""
|
346 |
+
|
347 |
+
design_styles = {
|
348 |
+
"미니멀": {
|
349 |
+
"style": "심플 미니멀 디자인",
|
350 |
+
"description": "깔끔한 선과 여백을 활용한 세련된 디자인",
|
351 |
+
"engagement": "차분하면서도 고급스러운 느낌으로 신뢰감 상승",
|
352 |
+
"colors": ["화이트", "베이지", "소프트 그레이"],
|
353 |
+
"elements": ["기하학적 도형", "타이포그래피 중심", "여백 활용"]
|
354 |
+
},
|
355 |
+
"네온사인": {
|
356 |
+
"style": "레트로 네온사인 스타일",
|
357 |
+
"description": "80년대 네온사인을 연상시키는 화려한 디자인",
|
358 |
+
"engagement": "강렬한 임팩트로 눈길 끌기 + 레트로 감성으로 MZ세대 어필",
|
359 |
+
"colors": ["네온 핑크", "사이버 블루", "일렉트릭 퍼플"],
|
360 |
+
"elements": ["글로우 이펙트", "그라데이션", "미래적 폰트"]
|
361 |
+
},
|
362 |
+
"손그림": {
|
363 |
+
"style": "손그림 일러스트 스타일",
|
364 |
+
"description": "따뜻하고 친근한 손그림 느낌의 일러스트",
|
365 |
+
"engagement": "친근함과 정성스러운 느낌으로 감정적 유대감 형성",
|
366 |
+
"colors": ["파스텔 톤", "자연색상", "부드러운 색감"],
|
367 |
+
"elements": ["손글씨 폰트", "낙서 느낌", "유기적 형태"]
|
368 |
+
},
|
369 |
+
"Y2K": {
|
370 |
+
"style": "Y2K 레트로 퓨처 스타일",
|
371 |
+
"description": "2000년대 초반 미래적 감성의 화려한 디자인",
|
372 |
+
"engagement": "노스탤지어 + 독특함으로 화제성 극대화",
|
373 |
+
"colors": ["홀로그램", "메탈릭", "그라데이션"],
|
374 |
+
"elements": ["3D 오브젝트", "크롬 효과", "기하학 패턴"]
|
375 |
+
},
|
376 |
+
"코어": {
|
377 |
+
"style": "○○코어 트렌드 스타일",
|
378 |
+
"description": "coquette, cottagecore 등 인스타 트렌드 반영",
|
379 |
+
"engagement": "인스타 감성으로 SNS 공유욕구 자극",
|
380 |
+
"colors": ["빈티지 톤", "무드 컬러", "감성 색상"],
|
381 |
+
"elements": ["빈티지 텍스처", "감성 오브젝트", "무드 사진"]
|
382 |
+
},
|
383 |
+
"게임UI": {
|
384 |
+
"style": "게임 인터페이스 스타일",
|
385 |
+
"description": "RPG나 모바일 게임의 UI를 모티브로 한 디자인",
|
386 |
+
"engagement": "게임화 요소로 참여 재미도 증가 + 젊은층 어필",
|
387 |
+
"colors": ["비비드 컬러", "골드 액센트", "다크 모드"],
|
388 |
+
"elements": ["체력바", "레벨업", "아이템 아이콘"]
|
389 |
+
}
|
390 |
+
}
|
391 |
+
|
392 |
+
# 월별 추천 디자인 (계절과 분위기에 맞게)
|
393 |
+
monthly_design = {
|
394 |
+
"1월": ["미니멀", "Y2K"], "2월": ["코어", "손그림"],
|
395 |
+
"3월": ["손그림", "코어"], "4월": ["손그림", "네온사인"],
|
396 |
+
"5월": ["코어", "손그림"], "6월": ["네온사인", "Y2K"],
|
397 |
+
"7월": ["Y2K", "네온사인"], "8��": ["Y2K", "게임UI"],
|
398 |
+
"9월": ["코어", "미니멀"], "10월": ["코어", "손그림"],
|
399 |
+
"11월": ["미니멀", "손그림"], "12월": ["네온사인", "게임UI"]
|
400 |
}
|
401 |
|
402 |
month_key = month.replace('월', '월')
|
403 |
+
recommended_designs = monthly_design.get(month_key, ["미니멀", "손그림"])
|
404 |
+
|
405 |
+
result = "## 🎨 추천 디자인 스타일\n\n"
|
406 |
+
|
407 |
+
for i, design_key in enumerate(recommended_designs, 1):
|
408 |
+
design = design_styles[design_key]
|
409 |
+
result += f"### {i}. {design['style']} 🌟\n"
|
410 |
+
result += f"**설명:** {design['description']}\n"
|
411 |
+
result += f"**참여도 효과:** {design['engagement']}\n"
|
412 |
+
result += f"**추천 색상:** {', '.join(design['colors'])}\n"
|
413 |
+
result += f"**핵심 요소:** {', '.join(design['elements'])}\n\n"
|
414 |
+
|
415 |
+
return result
|
416 |
+
def analyze_period_and_recommend_concept(event_period, month):
|
417 |
+
"""이벤트 기간과 월에 맞는 최적 컨셉 추천"""
|
418 |
+
|
419 |
+
import re
|
420 |
+
|
421 |
+
# 기간에서 특별한 날짜 추출
|
422 |
+
special_dates = {
|
423 |
+
"01.01": "신정", "02.14": "밸런타인데이", "03.14": "화이트데이",
|
424 |
+
"04.01": "만우절", "05.05": "어린이날", "06.06": "현충일",
|
425 |
+
"07.07": "칠석", "08.15": "광복절", "09.15": "추석예상",
|
426 |
+
"10.09": "한글날", "11.11": "빼빼로데이", "12.25": "크리스마스"
|
427 |
+
}
|
428 |
+
|
429 |
+
# 기간에서 월.일 패턴 찾기
|
430 |
+
date_matches = re.findall(r'(\d{1,2})\.(\d{1,2})', event_period) if event_period else []
|
431 |
+
|
432 |
+
period_special = None
|
433 |
+
if date_matches:
|
434 |
+
for month_num, day_num in date_matches:
|
435 |
+
date_key = f"{month_num.zfill(2)}.{day_num.zfill(2)}"
|
436 |
+
if date_key in special_dates:
|
437 |
+
period_special = special_dates[date_key]
|
438 |
+
break
|
439 |
+
|
440 |
+
# 월별 + 기간별 맞춤 추천
|
441 |
+
recommendations = {
|
442 |
+
"1월": {
|
443 |
+
"default": "미니멀 챌린지",
|
444 |
+
"special": {
|
445 |
+
"신정": "신년 다짐 챌린지",
|
446 |
+
"설날": "새해맞이 감사"
|
447 |
+
}
|
448 |
+
},
|
449 |
+
"2월": {
|
450 |
+
"default": "셀프러브 위크",
|
451 |
+
"special": {
|
452 |
+
"밸런타인데이": "갈렌타인데이 축제"
|
453 |
+
}
|
454 |
+
},
|
455 |
+
"3월": {
|
456 |
+
"default": "봄맞이 감성",
|
457 |
+
"special": {
|
458 |
+
"화이트데이": "화이트데이 스페셜"
|
459 |
+
}
|
460 |
+
},
|
461 |
+
"7월": {
|
462 |
+
"default": "여름 바캉스",
|
463 |
+
"special": {
|
464 |
+
"칠석": "칠석 로맨스"
|
465 |
+
}
|
466 |
+
},
|
467 |
+
"11월": {
|
468 |
+
"default": "가을 감성",
|
469 |
+
"special": {
|
470 |
+
"빼빼로데이": "빼빼로데이 페스티벌"
|
471 |
+
}
|
472 |
+
},
|
473 |
+
"12월": {
|
474 |
+
"default": "연말 감성",
|
475 |
+
"special": {
|
476 |
+
"크리스마스": "크리스마스 스페셜"
|
477 |
+
}
|
478 |
+
}
|
479 |
+
}
|
480 |
+
|
481 |
+
month_key = month.replace('월', '월') if month else "1월"
|
482 |
+
month_rec = recommendations.get(month_key, {"default": "특별한 순간", "special": {}})
|
483 |
+
|
484 |
+
if period_special and period_special in month_rec["special"]:
|
485 |
+
return month_rec["special"][period_special]
|
486 |
+
else:
|
487 |
+
return month_rec["default"]
|
488 |
+
"""최신 트렌드를 반영한 카피라이팅 생성 (예능/드라마/밈 활용)"""
|
489 |
+
|
490 |
+
# 2024-2025 최신 트렌드 반영
|
491 |
+
trendy_copies = {
|
492 |
+
"미니멀": {
|
493 |
+
"sub1": "🌟 '나는 정리를 못하는 여자'는 이제 그만!",
|
494 |
+
"main": "미니멀은 '미'니로 '말'하는 거야, 작게 말해도 큰 변화! ✨",
|
495 |
+
"sub2": "올해는 진짜 '갓생'을 살아보자구요! 💪",
|
496 |
+
"hashtags": ["#갓생살기", "#미니멀", "#정리의신", "#새해정리"],
|
497 |
+
"reference": "정리의 신, 갓생 트렌드"
|
498 |
+
},
|
499 |
+
"플래너": {
|
500 |
+
"sub1": "📅 '너 계획 있어?'라는 말에 당당하게!",
|
501 |
+
"main": "플래너는 '플랜'을 '어'떻게 세우'나'의 줄임말이야 📝",
|
502 |
+
"sub2": "2025년엔 진짜 계획적인 인간이 되어보자 🎯",
|
503 |
+
"hashtags": ["#플래너챌린지", "#계획적인생", "#목표달성", "#자기계발"],
|
504 |
+
"reference": "계획적 인생 트렌드"
|
505 |
},
|
506 |
"셀프러브": {
|
507 |
+
"sub1": "💕 '나 자신과 연애 중'이라고 말할 수 있나요?",
|
508 |
+
"main": "셀프러브는 '셀프'로 '러브'하는 거 맞아! 💖",
|
509 |
+
"sub2": "오늘부터 내가 내 최고의 연인이 되는 거야 ✨",
|
510 |
+
"hashtags": ["#셀프러브", "#나를위한시간", "#갈렌타인", "#솔로라이프"],
|
511 |
+
"reference": "갈렌타인데이, 셀프케어 문화"
|
512 |
},
|
513 |
"봄맞이": {
|
514 |
+
"sub1": "🌸 '봄이 오네 봄이 와~' 기분이 들죠?",
|
515 |
+
"main": "봄맞이는 '봄'을 '맞'이하는 게 아니라 '맞다'이! 🌱",
|
516 |
+
"sub2": "이번 봄엔 정말 '꽃길'만 걸어보자구요 💐",
|
517 |
+
"hashtags": ["#봄맞이", "#꽃길걷기", "#새시작", "#벚꽃엔딩"],
|
518 |
+
"reference": "봄 관련 트렌드, 꽃길 표현"
|
519 |
},
|
520 |
"바캉스": {
|
521 |
+
"sub1": "🏖️ '일상 탈출'이 필요한 순간이에요!",
|
522 |
+
"main": "바캉스는 '바'로 떠나서 '캉'스럽게 쉬는 거야! ☀️",
|
523 |
+
"sub2": "올여름엔 진짜 '힐링'이 뭔지 보여주겠어 🌊",
|
524 |
+
"hashtags": ["#바캉스", "#일상탈출", "#힐링여행", "#여름휴가"],
|
525 |
+
"reference": "일상탈출, 힐링 문화"
|
526 |
},
|
527 |
"가을감성": {
|
528 |
+
"sub1": "🍂 '가을엔 뭔가 감성이 충전되는 기분'",
|
529 |
+
"main": "가을감성은 '가'슴이 '을'마나 따뜻해지는 '감성'이야 🧡",
|
530 |
+
"sub2": "이 계절엔 모든 게 '에모'해져요 ☕",
|
531 |
+
"hashtags": ["#가을감성", "#에모모드", "#감성충전", "#코지라이프"],
|
532 |
+
"reference": "에모 트렌드, 감성 문화"
|
533 |
},
|
534 |
"크리스마스": {
|
535 |
+
"sub1": "🎄 '올해 크리스마스는 어떻게 보내지?'",
|
536 |
+
"main": "메리크리스마스? 메리하게 크리스마스! 🎅",
|
537 |
+
"sub2": "연말엔 모든 게 '띵작'이 되는 마법이 있어요 ✨",
|
538 |
+
"hashtags": ["#메리크리스마스", "#연말감성", "#띵작연말", "#홀리데이"],
|
539 |
+
"reference": "연말 분위기, 띵작 표현"
|
540 |
+
},
|
541 |
+
"독서": {
|
542 |
+
"sub1": "📚 '책 읽는 여자가 아름답다'는 말 있잖아요",
|
543 |
+
"main": "독서는 '독'특한 '서'사를 만나는 시간이야! 📖",
|
544 |
+
"sub2": "오늘부터 '북스타그램' 시작해볼까요? 📸",
|
545 |
+
"hashtags": ["#독서모드", "#북스타그램", "#책읽는여자", "#독서의계절"],
|
546 |
+
"reference": "북스타그램, 독서 문화"
|
547 |
+
},
|
548 |
+
"커피": {
|
549 |
+
"sub1": "☕ '오늘 카페인 얼마나 섭취했지?'",
|
550 |
+
"main": "카페는 '카'페인을 '페'어하게 즐기는 곳이야! ☕",
|
551 |
+
"sub2": "오늘도 '카페인 중독자'의 하루가 시작돼요 💪",
|
552 |
+
"hashtags": ["#카페투어", "#커피러버", "#카페인중독", "#감성카페"],
|
553 |
+
"reference": "카페 문화, 커피 애호가 트렌드"
|
554 |
+
}
|
555 |
+
}
|
556 |
+
|
557 |
+
# 계절별 기본 카피 (매칭되는 게 없을 때)
|
558 |
+
seasonal_copies = {
|
559 |
+
"1월": {
|
560 |
+
"sub1": "🌟 '새해 새마음'이라는 말이 괜히 있는 게 아니야",
|
561 |
+
"main": "2025년은 '이십이오'라고 읽으면 '이십이 오'케이! ✨",
|
562 |
+
"sub2": "올해는 정말 '레전드 한 해'가 될 거예요 🚀",
|
563 |
+
"hashtags": ["#새해새마음", "#2025레전드", "#갓생예약", "#새출발"],
|
564 |
+
"reference": "새해 다짐 문화"
|
565 |
+
},
|
566 |
+
"기본": {
|
567 |
+
"sub1": "✨ 이런 특별한 순간을 놓칠 수 없죠!",
|
568 |
+
"main": "지금 이 순간이 바로 '찐'이야! 💫",
|
569 |
+
"sub2": "함께라면 뭐든 '레전드'가 될 수 있어요 🎉",
|
570 |
+
"hashtags": ["#찐이야", "#레전드순간", "#함께해요", "#특별한시간"],
|
571 |
+
"reference": "MZ세대 표현"
|
572 |
}
|
573 |
}
|
574 |
|
575 |
# 컨셉명에서 키워드 추출하여 적절한 카피 선택
|
576 |
selected_copy = None
|
577 |
+
for keyword, copy_data in trendy_copies.items():
|
578 |
+
if any(k in concept_name for k in keyword.split()) or keyword in concept_name:
|
579 |
selected_copy = copy_data
|
580 |
break
|
581 |
|
582 |
+
# 월별 기본 카피 사용
|
583 |
if not selected_copy:
|
584 |
+
month_key = month.replace('월', '월')
|
585 |
+
selected_copy = seasonal_copies.get(month_key, seasonal_copies["기본"])
|
|
|
|
|
|
|
|
|
586 |
|
587 |
return selected_copy
|
588 |
|
|
|
609 |
# 트렌디한 카피 생성
|
610 |
copy_data = generate_trendy_copy(concept, month, period_text)
|
611 |
|
612 |
+
# 디자인 추천 생성
|
613 |
+
design_recommendations = generate_design_recommendations(concept, month)
|
614 |
+
|
615 |
# 당첨 혜택이 입력되지 않았으면 기본값 사용
|
616 |
if not prize_benefits or prize_benefits.strip() == "":
|
617 |
default_benefits = """✨ 1등 (1명): 스타벅스 5만원 기프트카드
|
|
|
637 |
|
638 |
{hashtags_text}
|
639 |
|
640 |
+
{design_recommendations}
|
641 |
+
|
642 |
========================
|
643 |
✨ EVENT
|
644 |
특별한 {concept}을 준비했어요!
|
|
|
646 |
|
647 |
이번 이벤트는 단순한 참여가 아닌,
|
648 |
우리만의 특별한 추억을 만들어가는 시간이에요 ✨
|
649 |
+
|
650 |
+
💡 **참고:** {copy_data.get('reference', '최신 트렌드')} 반영
|
651 |
========================
|
652 |
|
653 |
🎯 참여 방법
|
|
|
679 |
|
680 |
{hashtags_text}
|
681 |
|
682 |
+
💝 많은 참여 부탁드려요! 감사합니다 💝"""
|
683 |
|
684 |
return notice
|
685 |
|
|
|
810 |
|
811 |
if __name__ == "__main__":
|
812 |
demo = create_interface()
|
813 |
+
demo.launch()
|