aliceblue11 commited on
Commit
c41bcc7
·
verified ·
1 Parent(s): 4362e02

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +245 -73
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 generate_trendy_copy(concept_name, month, event_period):
345
- """트렌디한 카피라이팅 생성"""
346
-
347
- # 월별 트렌디한 키워드와 분위기
348
- monthly_vibes = {
349
- "1월": {"vibe": "새로운 시작", "keywords": ["리셋", "다짐", "새해"], "hashtags": ["#새해새출발", "#다이어트시작", "#셀프케어"]},
350
- "2월": {"vibe": "로맨틱", "keywords": ["사랑", "감성", "따뜻함"], "hashtags": ["#셀프러브", "#갈렌타인", "#감성충전"]},
351
- "3월": {"vibe": "설렘", "keywords": ["봄", "새출발", "꽃"], "hashtags": ["#봄맞이", "#새시작", "#벚꽃시즌"]},
352
- "4월": {"vibe": "생기발랄", "keywords": ["", "나들이", "피크닉"], "hashtags": ["#벚꽃놀이", "#봄나들이", "#감성사진"]},
353
- "5월": {"vibe": "감사", "keywords": ["힐링", "감사", "여유"], "hashtags": ["#힐링타임", "#감사한일상", "#나를위한시간"]},
354
- "6월": {"vibe": "시원함", "keywords": ["여름", "쿨링", "다이어트"], "hashtags": ["#여름준비", "#쿨링케어", "#바디프로필"]},
355
- "7월": {"vibe": "자유로움", "keywords": ["바캉스", "휴가", "힐링"], "hashtags": ["#바캉스룩", "#여행스타그램", "#힐링여행"]},
356
- "8월": {"vibe": "열정", "keywords": ["추억", "여행", "자유"], "hashtags": ["#여름추억", "#휴가끝", "#감성여행"]},
357
- "9월": {"vibe": "감성", "keywords": ["가을", "감성", "카페"], "hashtags": ["#가을감성", "#카페투어", "#독서모드"]},
358
- "10월": {"vibe": "여유", "keywords": ["단풍", "카페", "감성"], "hashtags": ["#가을단풍", "#감성카페", "#독서의계절"]},
359
- "11월": {"vibe": "포근함", "keywords": ["따뜻함", "코지", "준비"], "hashtags": ["#코지라이프", "#겨울준비", "#따뜻한일상"]},
360
- "12월": {"vibe": "축제", "keywords": ["크리스마스", "연말", "마무리"], "hashtags": ["#크리스마스무드", "#연말정산", "#따뜻한겨울"]}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
361
  }
362
 
363
  month_key = month.replace('월', '월')
364
- vibe_data = monthly_vibes.get(month_key, {"vibe": "특별한", "keywords": ["이벤트"], "hashtags": ["#특별한순간"]})
365
-
366
- # 언어유희와 트렌드를 반영한 카피 생성
367
- copies = {
368
- "다이어트 시작": {
369
- "sub1": "🌟 새해, 새로운 나를 만나는 시간",
370
- "main": "다이어트는 '다이'아몬드처럼 빛나는 '어트'랙티브한 나!",
371
- "sub2": "올해는 정말 다를거야 💪✨",
372
- "hashtags": ["#다이어트시작", "#새해새몸", "#건강한변화", "#셀프케어"]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
373
  },
374
  "셀프러브": {
375
- "sub1": "💕 나를 사랑하는 가장 완벽�� 방법",
376
- "main": "Self-Love는 셀프 러브가 아니라 '설프 러브'야!",
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": "Merry Christmas? 메리하게 크리스마스!",
401
- "sub2": "소중한 사람들과 따뜻한 연말 보내요 ❄️",
402
- "hashtags": ["#크리스마스무드", "#따뜻한겨울", "#연말감성", "#소중한순간"]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
403
  }
404
  }
405
 
406
  # 컨셉명에서 키워드 추출하여 적절한 카피 선택
407
  selected_copy = None
408
- for keyword, copy_data in copies.items():
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
- selected_copy = {
416
- "sub1": f"✨ {vibe_data['vibe']}한 순간을 위한 특별 초대",
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()