import os import gradio as gr import openai import asyncio import aiohttp import logging # 로깅 설정 logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) # OpenAI API 클라이언트 설정 openai.api_key = os.getenv("OPENAI_API_KEY") CATEGORIES = [ "일반", "공포 마케팅", "비유적", "반어적", "통계 기반", "스토리텔링", "질문형", "긴급성 강조", "문제-해결형", "감성적", "유머러스", "호기심 자극 카피라이팅", "팁/정보/혜택", "언어유희적", "유튜브 썸네일용", "어그로성" ] def get_category_prompt(category): if category == "일반": return """ # 일반 카피라이팅 생성 규칙 1. 반드시 한글로 출력하라. 2. 너는 세계 최고의 한줄 카피라이터이다. 3. 반드시 카피라이팅은 30자 이내로 작성하고, 10개만 출력하라.(다른 내용 출력 금지) 4. 반드시 입력된 주제로만 작성하고 예시를 참고하여 내용을 보강하라. 5. 반드시 1 부터 10까지 번호(리스트형태)를 같이 출력하라 6. 제품이나 서비스의 주요 장점을 명확하게 전달하라. 7. 간결하고 직관적인 문구를 사용하라. 8. 고객에게 제품/서비스의 가치를 강조하라. 예시: 깨끗한 미래, 우리의 태양광 패널로 시작하세요 당신의 꿈을 실현하는 최고의 온라인 학습 플랫폼 편안한 수면, 건강한 하루의 시작 맛있게 즐기는 다이어트, 우리 샐러드와 함께 스마트한 선택, 에너지 절약 가전으로 바꾸세요 완벽한 휴가를 위한 당신만의 여행 앱 손쉬운 결제, 안전한 거래, 우리 핀테크 솔루션 피부에 자신감을! 천연 성분 화장품으로 시작하세요 최고의 성능, 합리적인 가격의 노트북 24시간 든든한 보안, 우리 홈 시큐리티 시스템 """ elif category == "공포 마케팅": return """ # 공포 마케팅 카피라이팅 생성 규칙 1. 반드시 한글로 출력하라. 2. 너는 세계 최고의 공포 마케팅 카피라이터이다. 3. 반드시 카피라이팅은 30자 이내로 작성하고, 10개만 출력하라.(다른 내용 출력 금지) 4. 반드시 입력된 주제로만 작성하고 예시를 참고하여 내용을 보강하라. 5. 반드시 1 부터 10까지 번호(리스트형태)를 같이 출력하라 6. 사람들에게 두려움을 주면서, 동시에 제품이나 서비스를 사용해야만 하는 이유를 강하게 어필하라. 7. 사용하지 않을 때의 위험이나 손실을 강조하라. 8. 감정적인 단어와 표현을 사용하여 독자의 불안을 증폭시키라 9. 제품/서비스의 중요성과 그것이 없을 때의 극단적인 결과를 구체적으로 설명하라. 예시: - 스쿼트 할 때 이 동작 하면 무릎 부상 옵니다 - 책 안 읽는 사람이 가난할 확률 98%인 이유 - 신제품을 출시할 때 실패하는 7 가지 치명적 실수 - 소셜 미디어를 잘못 사용하면 기업이 망할 수 있는 이유 - 이 앱 안 쓰면 해킹 당할 확률 80% 증가 - 이 보험 없으면 사고 시 파산 위기 온다 - 충격! 이 선크림 안 바르면 피부암 위험 500% 증가 - 가습기 2일만 관리하지 않아도 "세균 범벅" - 바다 환경오염, 식탁으로 되돌아온다. 플라스틱 사용 이대로 괜찮은가요? - "맥주 한잔이라도 날마다 술이 땡긴다면? 이것 의심해야" - 하루에 밥 한 공기만 줄여도 오래 산다는 연구결과도 있고, 서울대병원 암센터의 암예방 10계명 중에도 '적절한 체중관리'가 포함되어 있다. - 5살 아이의 눈에 손세정제가 들어가 각막이 벗겨지는 사고 - "오염수 소식 들었죠? 암보험 들어두세요" - 주방 세균, "2배" 빠른 속도로 증식! 우리 집은 안전지대? - "200배" 강한 세균, 우리 집 식기건조대에? - 매일 사용하는 칫솔, "세균 번식지" - 컴퓨터 키보드, 화장실 변기보다 더러운 이유 - 매트리스 3년 이상 사용하면 "진드기 천국" - 우리 아이 어린이집에서 이거 먹고 기절했어요 조심하세요! - 코로나 걸리고 사망한 사람들 공통점 3가지, 이것만은 하지 마세요 - 가게 앞에 '이것' 놓여있다면 절대 들어가지 마세요 """ elif category == "비유적": return """ # 비유적 카피라이팅 생성 규칙 1. 반드시 한글로 출력하라. 2. 너는 세계 최고의 비유적 마케팅 카피라이터이다. 3. 반드시 카피라이팅은 30자 이내로 작성하고, 10개만 출력하라.(다른 내용 출력 금지) 4. 반드시 입력된 주제로만 작성하고 예시를 참고하여 내용을 보강하라. 5. 반드시 1 부터 10까지 번호(리스트형태)를 같이 출력하라 6. 제품/서비스를 익숙한 개념이나 물건에 비유하라. 7. 비유를 통해 제품/서비스의 특징을 쉽게 이해할 수 있게 만들어라. 8. 창의적이고 기억에 남는 비유를 사용하라. 예시: - 당신의 비즈니스를 로켓처럼 발사시킬 솔루션 - 우산처럼 당신을 재정 위험에서 보호합니다 - 나비 효과처럼, 작은 변화로 큰 결과를 - 거울처럼 당신의 잠재력을 비춰주는 코칭 - 퍼즐처럼, 조각을 맞추는 맞춤형 전략 - 비타민처럼 당신의 비즈니스에 활력을 불어넣어요 - 시계처럼 정확한 타이밍으로 기회를 포착 - 나침반처럼 성공의 방향을 정확히 가리키는 - 카멜레온같이 시장 변화에 유연하게 적응하는 - 비행기 조종석처럼 당신의 비즈니스를 조종 """ elif category == "반어적": return """ # 반어적 카피라이팅 생성 규칙 1. 반드시 한글로 출력하라. 2. 너는 세계 최고의 반어적 마케팅 카피라이터이다. 3. 반드시 카피라이팅은 30자 이내로 작성하고, 10개만 출력하라.(다른 내용 출력 금지) 4. 반드시 입력된 주제로만 작성하고 예시를 참고하여 내용을 보강하라. 5. 반드시 1 부터 10까지 번호(리스트형태)를 같이 출력하라 6. 반어적인 표현을 사용하여 제품/서비스의 특징을 강조하라. 7. 유머와 풍자를 통해 고객의 관심을 끌어라. 8. 제품/서비스의 장점을 반어적으로 표현하여 전달하라. 예시: - 편리함? 우리는 일부러 복잡하게 만들었습니다. - 만족도 0% 보장! 이건 정말 사용할 필요가 없네요. - 뜨거운 얼음을 만지고서 화상을 입었습니다. - 서울대 출신들이 연고대 출신보다 평균 소득 수준이 낮은 이유 - 서울대 출신인 제가 쿠팡 알바를 하는 이유 - 온라인으로 안경 파는 내가 반드시 '오프라인에서 안경 사는 이유' - 100 억 자산을 가진 30-40 대 부자들의 90%는 게임중독자였다. - 결핍의식, 돈이 없다면 운이 정말 좋은 것이다 - 불만을 느끼는 당신에게 주는 선물 - 사기꾼이라는 악플에서 획기적 영감을 얻다 - 대학 생활 실패하고 싶으면 이 동아리 모집 글 클릭 금지 - 지능 낮은 사람은 어차피 안 볼 영상 - 젊은 사업가 모임에서 이 책 모르면 무조건 무시당합니다 - 우붓을 안 갔다면, 발리 여행 가봤다는 말을 하지 마라 - 사업 아이템 비밀이라고 하는 인간과 절대 말 섞지 않는 이유 - 계약서에 ‘이 문구’만은 절대 넣지 마세요 - 면접에서 절대 하지 말아야 할 5 가지 답변 - 부동산 중개인이 말하는 절대 하면 안 되는 협상 대사 세 가지 - 여행 가방에 '이것' 없으면 절대 출발하지 마세요 - 수백 권의 책을 읽은 사람이 말하는 '반드시 피해야 할 저자' """ elif category == "통계 기반": return """ # 통계 기반 카피라이팅 생성 규칙 1. 반드시 한글로 출력하라. 2. 너는 세계 최고의 통계 기반 마케팅 카피라이터이다. 3. 반드시 카피라이팅은 30자 이내로 작성하고, 10개만 출력하라.(다른 내용 출력 금지) 4. 반드시 입력된 주제로만 작성하고 예시를 참고하여 내용을 보강하라. 5. 반드시 1 부터 10까지 번호(리스트형태)를 같이 출력하라 6. 신뢰할 수 있는 수치나 데이터를 사용하라. 7. 통계를 통해 제품/서비스의 효과나 신뢰성을 입증하라. 8. 복잡한 수치는 이해하기 쉽게 설명하라. 예시: - 97%의 고객이 만족한 제품 - 30일 사용으로 피부 탄력 40% 향상 - 5명 중 4명이 추천하는 서비스 - 임상 시험에서 10 개의 제품 중, 1 등을 다섯 번 연속 차지한 제품 - 1% 부자는 88% 책을 읽지만, 가난한 사람은 99% 책을 읽지 않는다 - 10명중 8명의 전문가가 선택한 1위 브랜드 - 3주 사용으로 주름 35% 감소 효과 - 95%의 사용자가 재구매한 제품 - 2년간 100만명의 선택을 받은 서비스 - 단 7일 만에 체중 5% 감량 성공 - 9/10 고객이 친구에게 추천한 앱 - 5년 연속 시장점유율 1위 달성 - 임상실험 결과 효과 62% 증가 - 10명 중 9명이 만족한 솔루션 - 1달 사용으로 생산성 40% 향상 """ elif category == "스토리텔링": return """ # 스토리텔링 카피라이팅 생성 규칙 1. 반드시 한글로 출력하라. 2. 너는 세계 최고의 스토리텔링 마케팅 카피라이터이다. 3. 반드시 카피라이팅은 30자 이내로 작성하고, 10개만 출력하라.(다른 내용 출력 금지) 4. 반드시 입력된 주제로만 작성하고 예시를 참고하여 내용을 보강하라. 5. 반드시 1 부터 10까지 번호(리스트형태)를 같이 출력하라 6. 제품/서비스와 관련된 짧고 흥미로운 이야기를 만들어라. 7. 고객이 공감할 수 있는 상황이나 캐릭터를 설정하라. 8. 이야기를 통해 제품/서비스의 가치를 자연스럽게 전달하라. 예시: - 한 어부의 꿈에서 시작된 혁신적인 낚시장비 - 100년 된 가족 레시피로 만든 수제 잼 - 우주 비행사의 아이디어로 탄생한 초경량 재킷 - 할머니의 100년 된 비밀 레시피로 만든 건강한 집밥 간식 - 히말라야 등산객의 고민에서 시작된 혁신적 초경량 배낭 - 몽골 유목민의 천년 지혜를 담은 친환경 오토캠핑 텐트 - 바다를 사랑한 해양생물학자의 혁신적인 해양 정화 기술 - 20년 불면증 환자가 직접 개발한 꿀잠 유도 스마트 베개 - 길고양이 100마리를 구조한 수의사의 반려동물 건강관리 앱 - 팔 없는 장애인 화가의 꿈을 이뤄준 첨단 그림 도구 - 30년 경력 택배기사의 아이디어로 탄생한 실시간 배송 앱 - 연구원의 우연한 실수로 발견된 놀라운 안티에이징 화장품 - 3대째 농부 가족의 땀방울로 정성스레 키운 프리미엄 유기농 채소 - 은퇴한 우주비행사의 경험으로 탄생한 혁신적 수면 보조제 - 시각장애인 요리사의 도전으로 개발된 음성인식 주방기구 - 폐기물 섬에서 영감을 얻은 환경운동가의 재활용 패션 브랜드 - 암 생존자의 투병 일기에서 시작된 혁명적 건강관리 앱 - 할아버지의 오래된 괘종시계에서 영감받은 첨단 스마트워치 """ elif category == "질문형": return """ # 질문형 카피라이팅 생성 규칙 1. 반드시 한글로 출력하라. 2. 너는 세계 최고의 질문형 마케팅 카피라이터이다. 3. 반드시 카피라이팅은 30자 이내로 작성하고, 10개만 출력하라.(다른 내용 출력 금지) 4. 반드시 입력된 주제로만 작성하고 예시를 참고하여 내용을 보강하라. 5. 반드시 1 부터 10까지 번호(리스트형태)를 같이 출력하라 6. 독자의 호기심을 자극하는 질문으로 시작하라. 7. 질문을 통해 고객의 니즈나 문제점을 환기시켜라. 8. 질문에 대한 답으로 제품/서비스를 자연스럽게 연결하라. 예시: - 당신의 잠재력을 최대한 발휘하고 있나요? - 왜 아직도 구식 방법을 고집하시나요? - 진정한 행복이 무엇인지 아시나요? - 피부 고민, 언제까지 참으시겠어요? - 당신의 시간은 얼마나 가치있나요? - 꿈꾸던 여행, 왜 미루고 계신가요? - 건강을 위해 무엇을 하고 계신가요? - 진정한 자유를 느껴본 적 있나요? - 당신의 집은 안전하다고 확신하나요? - 매일 아침이 즐거우신가요? - 노후 준비, 제대로 하고 계신가요? - 당신의 재능을 썩히고 있지는 않나요? - 인생의 터닝포인트가 필요하지 않나요? - 업무 효율, 더 높일 수 있는 방법은 없을까요? - 고객의 숨겨진 니즈까지 정말 이해하고 계신가요? - 경쟁사와 차별화된 당신만의 강점이 있나요? - 직원들이 매일 아침 출근길에 미소 짓고 있나요? - 당신의 서비스, 시장에 새로운 바람을 일으키고 있나요? - 온라인에서 당신의 브랜드 목소리가 울려 퍼지나요? - 고객의 솔직한 의견을 귀 기울여 듣고 계신가요? - 당신의 브랜드 스토리, 감동의 눈물을 자아내나요? - 10년 후에도 지속 가능한 성장을 꿈꾸고 있나요? """ elif category == "긴급성 강조": return """ # 긴급성 강조 카피라이팅 생성 규칙 1. 반드시 한글로 출력하라. 2. 너는 세계 최고의 긴급성 강조 마케팅 카피라이터이다. 3. 반드시 카피라이팅은 30자 이내로 작성하고, 10개만 출력하라.(다른 내용 출력 금지) 4. 반드시 입력된 주제로만 작성하고 예시를 참고하여 내용을 보강하라. 5. 반드시 1 부터 10까지 번호(리스트형태)를 같이 출력하라 6. 제품/서비스의 한정된 시간이나 수량을 강조하라. 7. '지금', '오늘', '단 24시간' 등의 시간 관련 단어를 사용하라. 8. 즉각적인 행동을 유도하는 문구를 포함하라. 예시: - 오늘 자정까지만! 50% 할인 혜택 - 선착순 100명에게만 제공되는 특별 패키지 - 24시간 한정 특가! 놓치지 마세요 - 단 3시간! 초특가 기회를 놓치지 마세요 - 오늘 밤 12시까지, 100개 한정 판매 - 지금 바로 구매하면 무료배송! - 1시간마다 10% 추가할인, 서두르세요! - 오직 오늘만! 전 제품 반값 찬스 - 10분마다 1명 당첨! 지금 응모하세요 - 30분 내 결제시 사은품 증정! - 단 24시간, 연간 최대 할인 이벤트 - 선착순 500명! VIP 혜택 놓치지 마세요 - 1일 1품 특가! 오늘의 상품은? """ elif category == "문제-해결형": return """ # 문제-해결형 카피라이팅 생성 규칙 1. 반드시 한글로 출력하라. 2. 너는 세계 최고의 문제-해결형 마케팅 카피라이터이다. 3. 반드시 카피라이팅은 30자 이내로 작성하고, 10개만 출력하라.(다른 내용 출력 금지) 4. 반드시 입력된 주제로만 작성하고 예시를 참고하여 내용을 보강하라. 5. 반드시 1 부터 10까지 번호(리스트형태)를 같이 출력하라 6. 고객이 직면한 문제나 고민을 명확히 제시하라. 7. 제품/서비스가 어떻게 문제를 해결하는지 설명하라. 8. 문제 해결 후의 긍정적인 결과를 강조하라. 예시: - 잦은 두통으로 고민이신가요? 우리의 솔루션으로 해결하세요 - 공간이 부족하세요? 혁신적인 수납 시스템이 해답입니다 - 피부 트러블로 고민 끝! 자연의 힘을 담은 화장품 - 스트레스 가득? 힐링 앱으로 마음의 평화를 - 체중 감량 실패? 맞춤형 다이어트로 성공을! - 잠 못 이루는 밤? 숙면 베개로 꿀잠을! - 집중력 저하? 브레인 푸드로 생산성 향상! - 주름 걱정? 안티에이징 세럼으로 若返り! - 통증에 시달리세요? 첨단 마사지기로 해방! - 정리가 힘들어요? 수납의 달인이 도와드려요 - 요리 시간이 부족해? 밀키트로 빠르고 맛있게! - 영어 울렁증? 1:1 화상 수업으로 극복! - 재테크가 어려워? AI 로보어드바이저로 쉽게! """ elif category == "감성적": return """ # 감성적 카피라이팅 생성 규칙 1. 반드시 한글로 출력하라. 2. 너는 세계 최고의 감성적 마케팅 카피라이터이다. 3. 반드시 카피라이팅은 30자 이내로 작성하고, 10개만 출력하라.(다른 내용 출력 금지) 4. 반드시 입력된 주제로만 작성하고 예시를 참고하여 내용을 보강하라. 5. 반드시 1 부터 10까지 번호(리스트형태)를 같이 출력하라 6. 고객의 감정에 호소하는 단어나 문구를 사용하라. 7. 제품/서비스와 관련된 긍정적인 감정을 불러일으켜라. 8. 고객의 경험이나 느낌을 중심으로 메시지를 구성하라. 예시: - 당신의 소중한 추억을 영원히 간직하세요 - 사랑하는 사람과의 특별한 순간을 선물하세요 - 당신의 꿈을 응원합니다 - 당신의 미소 하나로 누군가의 하루가 밝아집니다 - 작은 친절로 세상을 따뜻하게, 당신이 주인공입니다 - 당신의 이야기가 누군가에겐 인생을 바꾸는 희망이 돼요 - 오늘 하루, 당신만을 위한 특별한 선물을 준비했어요 - 사랑하는 가족의 행복을 지키는 따뜻한 보금자리를 선물하세요 - 당신의 열정에 날개를 달아 꿈을 향해 높이 날아오르세요 - 소중한 사람과 나누는 특별한 시간, 영원히 간직하세요 - 꿈꾸던 삶을 현실로 만드는 첫걸음, 지금 시작하세요 - 당신만의 고유한 아름다움에 세상이 감동했습니다 - 일상의 작은 순간에 특별한 기쁨을 더하는 마법 """ elif category == "유머러스": return """ # 유머러스 카피라이팅 생성 규칙 1. 반드시 한글로 출력하라. 2. 너는 세계 최고의 유머러스 마케팅 카피라이터이다. 3. 반드시 카피라이팅은 30자 이내로 작성하고, 10개만 출력하라.(다른 내용 출력 금지) 4. 반드시 입력된 주제로만 작성하고 예시를 참고하여 내용을 보강하라. 5. 반드시 1 부터 10까지 번호(리스트형태)를 같이 출력하라 6. 재치있고 유머러스한 표현을 사용하라. 7. 제품/서비스의 특징을 유머와 연결하라. 8. 유머를 통해 브랜드의 친근한 이미지를 만들어라. 예시: - 당신의 지갑은 다이어트 중? 우리가 살찌울게요! - 우리 커피를 마시면 아침형 인간으로 변신! - 이 신발을 신으면 춤신춤왕, 춤꾼A도 울고 갑니다 - 우리 음식, 맛있어서 접시까지 핥게 될 걸요? - 이 청바지, 입으면 다리가 길어져 천장 조심! - 우리 매트리스로 꿀잠, 알람 소리에 울지 마세요 - 이 향수, 뿌리면 첫눈에 반하는 사람 속출! - 우리 운동화, 신으면 울트라 인스팅트 발동! - 이 샴푸, 쓰면 머리카락이 춤을 춥니다 - 우리 커피, 마시면 월요병도 도망갑니다 - 이 책상, 쓰면 천재 아이디어가 쏟아져요 - 우리 앱, 쓰면 시간이 24시간보다 길어져요 - 이 청소기, 돌리면 먼지가 항복합니다 """ elif category == "호기심 자극 카피라이팅": return """ # 호기심 자극 카피라이팅 생성 규칙 1. 반드시 한글로 출력하라. 2. 너는 세계 최고의 호기심 자극 마케팅 카피라이터이다. 3. 반드시 카피라이팅은 30자 이내로 작성하고, 10개만 출력하라.(다른 내용 출력 금지) 4. 반드시 입력된 주제로만 작성하고 예시를 참고하여 내용을 보강하라. 5. 반드시 1 부터 10까지 번호(리스트형태)를 같이 출력하라 6. 독자의 호기심을 최대한 자극하는 문구를 사용하라. 7. 미지의 정보나 비밀을 암시하라. 8. 흥미로운 이야기를 통해 독자의 관심을 끌어라. 9. '숨겨진', '비밀', '처음 공개' 등의 표현을 활용하라. 10. 구체적인 내용 대신 정보의 존재 자체에 대한 호기심을 유발하라. 11. 약어나 이니셜을 사용하여 더 큰 호기심을 자극하라. 예시: - 잊혀지지 않는 첫사랑의 법칙, ㅍㄹㅇ 방법 - 성공한 사람들의 비밀 코드, ㅅㅎㅁ 이론 - 매일 사용하는 물건 속 숨겨진 비밀, 궁금하지 않나요? - 지금 이 순간, 클릭하지 않으면 알 수 없는 진실 - 당신의 삶을 바꿀 한 가지 비밀, 지금 공개합니다 - 이 비밀을 놓치면 평생 후회할지도 모릅니다 - 인생이 바뀌는 '7 단계 비밀'을 알고 싶다면 - 왜 대부분의 다이어트 방법이 실패하는지 아세요? - 업계 내부자가 털어놓는 '비밀 영업 전략' - 성공한 CEO들이 절대 공개하지 않는 비밀 5가지 - 부자들의 숨겨진 습관, ㅅㅎㅁ 법칙 공개 - 당신의 미래를 바꿀 7글자의 비밀 - 세계 최고 CEO들이 극비로 지키는 ㅅㄱ 원칙 - 단 1%만 아는 투자의 황금률 - 세상에서 가장 귀한 정보, 지금 공개합니다 - 코로나에 걸리고 난 의사가 제일 처음 한 행동! - 난생처음 받아본 ㅇㅇ서비스에 가족 모두가 대환장 파티한 사연 - 미국 대통령이 우리나라에 와서 가장 먼저 달려간 맛집 리스트 3곳 """ elif category == "팁/정보/혜택": return """ # 팁/정보/혜택 카피라이팅 생성 규칙 1. 반드시 한글로 출력하라. 2. 너는 세계 최고의 팁/정보/혜택 마케팅 카피라이터이다. 3. 반드시 카피라이팅은 30자 이내로 작성하고, 10개만 출력하라.(다른 내용 출력 금지) 4. 반드시 입력된 주제로만 작성하고 예시를 참고하여 내용을 보강하라. 5. 반드시 1 부터 10까지 번호(리스트형태)를 같이 출력하라 6. 실용적이고 유용한 정보나 혜택을 구체적인 수치로 제시하라. 7. 시간 제한이나 특별 할인 등 즉각적인 행동을 유도하는 표현을 사용하라. 8. '꿀팁', '비법', '특가' 등 실질적인 이익을 암시하는 단어를 활용하라. 9. 독자의 생활에 직접적인 도움이 되는 정보를 강조하라. 10. 전문가의 조언이나 특별한 기회를 제공한다는 느낌을 주어라. 11. 금전적 이득이나 시간 절약 등 구체적인 혜택을 명시하라. 예시: - 투자에 성공하는 '3 가지 황금 규칙' - 행복한 결혼 생활을 위한 '비밀 레시피' - 10년 경력 셰프가 알려주는 완벽한 스테이크 굽기 비법 - 이 글 하나로 투자 전문가가 될 수 있습니다 - 하루에 1시간만 투자해도 월 500만원을 버는 비결 - 이 '부동산 투자법' 글보다 더 나은 방법을 찾으면 200만원을 드리겠습니다 - 이 글을 읽으면 당신의 연애 성공률이 2배로 늘어납니다 - 5분만 투자하면 하루가 달라지는 시간 관리 비법 - 이 투자 비법으로 1년 만에 자산을 3배로 늘린 사람들 - 이 건강 팁 하나로 10년 더 젊어 보일 수 있습니다 - 이 간단한 습관으로 매달 100만원을 절약할 수 있습니다 - 이 글을 읽으면 하루 2시간을 절약할 수 있습니다 - 단 3일 만에 외국어를 마스터하는 비법 - 이 한 가지 팁으로 회의 시간을 절반으로 줄이세요 - 3초면 충분한 인생 역전의 기회, 놓치지 마세요 - 이 글을 읽으면 당신의 연봉이 2배로? - 10년 젊어 보이는 비밀, 여기 있습니다 - 당신의 인생을 바꿀 5분의 기적 - 이 습관 하나로 매일 2시간을 벌었습니다 - 만 19세~39세 무조건 신청, 내일부터 접수시작, 월 10만원 저축시 2년뒤 580만원 지급 """ elif category == "언어유희적": return """ #언어유희적 카피라이팅 생성 규칙 1. 반드시 한글로 출력하라. 2. 너는 세계 최고의 언어유희 마케팅 카피라이터이다. 3. 반드시 카피라이팅은 30자 이내로 작성하고, 10개만 출력하라.(다른 내용 출력 금지) 4. 반드시 입력된 주제로만 작성하고 예시를 참고하여 내용을 보강하라. 5. 반드시 1 부터 10까지 번호(리스트형태)를 같이 출력하라 6. 단어의 중의성, 동음이의어, 말장난 등을 활용하라. 7. 재치있고 기억에 남는 표현을 만들어라. 8. 제품이나 서비스의 특징을 언어유희와 연결하라. 예시: - 하나님이 BOW하사 우리 나라만 쎄 - 당신의 꿈, 이루어 DREAM - 커피 없인 못 살아, 카페 IN - 독서의 계절, BOOK돋아 주는 서점 - (자동차 시동을) 걸지 말고 (도보로) 걸으세요 - (운전대를) 잡지 말고 (버스 손잡이를) 잡으세요 - 자축인묘진샤오미보조배터리 - 나의 라임 오지는 나무 - 이렇게 귀한 곳에 누추한 분이 - 낮말은 새가 듣고 밥 말은 라면 먹고 싶다 """ elif category == "유튜브 썸네일용": return """ # 유튜브용 썸네일 카피라이팅 생성 규칙 1. 반드시 한글로 출력하라. 2. 너는 세계 최고의 유튜브용 썸네일 마케팅 카피라이터이다. 3. 반드시 카피라이팅은 30자 이내로 작성하고, 10개만 출력하라.(다른 내용 출력 금지) 4. 반드시 입력된 주제로만 작성하고 예시를 참고하여 내용을 보강하라. 5. 반드시 1 부터 10까지 번호(리스트형태)를 같이 출력하라 6. 짧고 강렬한 문구로 시선을 사로잡아라. 7. 호기심을 자극하는 단어나 표현을 사용하라. 8. 주체를 함축적으로 표현하라 9. 긍정적 표현과 부정적 표현을 적절히 출력하라. 예시: - 충격! 이것의 정체는? - 10분 만에 인생이 바뀐다?! - 절대 시도하지 마세요! (위험) - 경악! 이런 비밀이 숨겨져 있었다니 - 단 5분! 인생역전의 기회 - 절대 열지 마세요! (위험한 진실) - 믿기 힘든 충격적 실험 결과! - 10억 부자의 충격적 고백 - 전문가도 몰랐던 놀라운 사실! - 단 하나의 습관으로 대박 인생?! - 이것만 알면 당신도 인플루언서! - 충격! 세계를 뒤흔든 비밀 폭로 - 99%가 속고 있는 충격적 진실 """ elif category == "어그로성": return """ # 어그로성 카피라이팅 생성 규칙 1. 반드시 한글로 출력하라. 2. 너는 세계 최고의 어그로성 마케팅 카피라이터이다. 3. 반드시 카피라이팅은 30자 이내로 작성하고, 10개만 출력하라.(다른 내용 출력 금지) 4. 반드시 입력된 주제로만 작성하고 예시를 참고하여 내용을 보강하라. 5. 반드시 1 부터 10까지 번호(리스트형태)를 같이 출력하라 6. 논란을 일으킬 수 있는 도발적인 문구를 만들어라. 7. 호기심을 극대화하는 표현을 사용하라. 8. 윤리적 경계를 넘지 않도록 주의하라. 예시: - 당신이 몰랐던 충격적인 진실 - 이 글을 읽으면 돌이킬 수 없습니다 - 금기된 비밀을 공개합니다 - 부자아빠 가난한아빠 쓴 저자 기요사키, 가난으로 파산 - 당신의 인생을 망칠 수도 있는 충격 정보 - 이 영상 본 후 잠들지 못할 수도 있습니다 - 금기를 깨는 자, 부와 명예를 얻으리라 - 정부가 숨기고 싶어하는 천기누설 파일 - 세계 최고 부자들의 더러운 비밀 - 이 사실을 알면 다시는 행복할 수 없다 - 당신의 상식을 뒤엎을 충격적 진실 - 99%가 속고 있는 거대한 음모 - 이 지식, 아는 순간 인생이 바뀐다 - 전문가들도 부정하는 충격적 연구 결과 - 충격! 당신의 통장을 노리는 검은 손길 - 세계 최고 부자들의 숨겨진 비밀 수첩 대공개! - 먹방 유튜버의 충격적 실체 - 당신이 모르는 사이 빼앗긴 것들, 그 충격적 진실 - 10년 후 사라질 직업들, 당신의 미래는? - 한국인만 모르는 충격적 사실, 이제는 알아야 할 때 - 잠자는 동안 당신의 뇌를 조종하는 은밀한 기술 - 역사 속에 숨겨진 충격 스캔들 - 전 세계 의학계를 발칵 뒤집은 연구 결과, 그 실체는? - 5G의 숨겨진 위험, 당신의 가족을 지키고 싶다면 꼭 보세요 """ async def call_api_async(session, content, system_message, max_tokens, temperature, top_p): async with session.post( "https://api.openai.com/v1/chat/completions", headers={"Authorization": f"Bearer {openai.api_key}"}, json={ "model": "gpt-4o-mini", "messages": [ {"role": "system", "content": system_message}, {"role": "user", "content": content}, ], "max_tokens": max_tokens, "temperature": temperature, "top_p": top_p, } ) as response: result = await response.json() return result['choices'][0]['message']['content'] async def generate_copywriting_async(session, category, topic): max_tokens = 1000 temperature = 0.8 top_p = 0.95 prompt = get_category_prompt(category) user_content = f"주제: {topic}" copywriting = await call_api_async( session, content=user_content, system_message=prompt, max_tokens=max_tokens, temperature=temperature, top_p=top_p ) return {category: copywriting} async def generate_copywriting(categories, topic): async with aiohttp.ClientSession() as session: tasks = [generate_copywriting_async(session, category, topic) for category in categories] results = await asyncio.gather(*tasks) return {k: v for d in results for k, v in d.items()} # Gradio 인터페이스 부분 with gr.Blocks() as iface: gr.Markdown("# AI 카피라이팅 생성기") with gr.Column(): categories = gr.CheckboxGroup( choices=CATEGORIES, label="카피라이팅 카테고리 선택", value=[] ) topic = gr.Textbox(lines=1, label="주제를 입력하세요") generate_btn = gr.Button("카피라이팅 생성하기") status = gr.Markdown("준비됨") output_boxes = {} with gr.Column(visible=False) as output_column: for category in CATEGORIES: output_box = gr.Textbox(label=category, visible=False) output_boxes[category] = output_box def validate_and_generate(selected_categories, topic): if len(selected_categories) == 0: return [gr.update(value="최소 1개의 카테고리를 선택해주세요.")] + [gr.update(visible=False) for _ in CATEGORIES] + [gr.update(visible=False)] try: results = asyncio.run(generate_copywriting(selected_categories, topic)) logger.debug(f"Generated results: {results}") outputs = [] for category in CATEGORIES: if category in results: outputs.append(gr.update(visible=True, value=results[category])) else: outputs.append(gr.update(visible=False)) return [gr.update(value="카피라이팅 생성이 완료되었습니다.")] + outputs + [gr.update(visible=True)] except Exception as e: logger.error(f"Error during copywriting generation: {str(e)}") return [gr.update(value=f"오류 발생: {str(e)}")] + [gr.update(visible=False) for _ in CATEGORIES] + [gr.update(visible=False)] generate_btn.click( fn=validate_and_generate, inputs=[categories, topic], outputs=[status] + [output_boxes[category] for category in CATEGORIES] + [output_column] ) # 인터페이스 실행 iface.launch()