import streamlit as st from lib.gpt_providers.text_generation.main_text_generation import llm_text_gen def input_section(): st.markdown("""

🎭 Emotional Copywriting Generator

Create compelling copy that resonates with your audience's emotions and drives action.

""", unsafe_allow_html=True) # Educational content about emotional copywriting with st.expander("📚 What is Emotional Copywriting?", expanded=False): st.markdown(""" ### Understanding Emotional Copywriting Emotional copywriting is a powerful marketing technique that connects with your audience on a deeper level by: - **Triggering specific emotions** (joy, fear, urgency, trust, etc.) - **Creating personal connections** with your audience - **Addressing pain points** and offering solutions - **Building trust and credibility** - **Creating a sense of belonging** or exclusivity ### Why Emotional Copywriting Works Research shows that people make purchasing decisions based on emotions first, then justify with logic. By tapping into the right emotions, you can: - Increase engagement and response rates - Build stronger brand loyalty - Drive more conversions - Create memorable brand experiences ### Common Emotional Triggers - **Fear of Missing Out (FOMO)**: Limited time offers, exclusive access - **Trust**: Testimonials, guarantees, social proof - **Joy/Happiness**: Benefits, positive outcomes, aspirational messaging - **Urgency**: Time-sensitive offers, countdown timers - **Belonging**: Community, exclusivity, shared values """) # Main input form with st.expander("✍️ Create Your Emotional Copy", expanded=True): col1, col2 = st.columns([1, 1]) with col1: brand_name = st.text_input('**Brand/Company Name**', help="Enter the name of your brand or company.") target_audience = st.text_input('**Target Audience**', help="Who is your ideal customer? (e.g., 'busy moms', 'tech-savvy millennials')") emotional_trigger = st.selectbox( '**Primary Emotional Trigger**', options=['Trust', 'Fear of Missing Out', 'Joy/Happiness', 'Urgency', 'Belonging', 'Exclusivity'], help="Select the primary emotion you want to evoke in your audience." ) with col2: description = st.text_input('**Brand Description** (In 5-6 words)', help="Describe your product or service briefly.") unique_selling_point = st.text_input('**Unique Selling Point**', help="What makes your product/service different from competitors?") call_to_action = st.text_input('**Desired Call to Action**', help="What action do you want your audience to take? (e.g., 'Sign up now', 'Buy today')") trust_elements = st.text_area('**Trust Elements**', help="Build trust and credibility by showcasing testimonials, guarantees, or endorsements.", placeholder="Testimonials from satisfied customers...\nOur guarantee that...\nIndustry certifications...") tone_style = st.selectbox( '**Copy Tone & Style**', options=['Professional', 'Conversational', 'Humorous', 'Authoritative', 'Empathetic', 'Aspirational'], help="Select the tone and style for your copy." ) if st.button('**Generate Emotional Copy**', type="primary"): if not brand_name or not description or not trust_elements: st.error("⚠️ Please fill in all required fields (Brand Name, Description, and Trust Elements)!") else: with st.spinner("✨ Crafting emotionally compelling copy..."): emotional_copy = generate_emotional_copy( brand_name, description, trust_elements, target_audience, emotional_trigger, unique_selling_point, call_to_action, tone_style ) if emotional_copy: st.markdown("""

🎯 Your Emotional Copy

""", unsafe_allow_html=True) # Display the copy with a nice format st.markdown(emotional_copy) # Add copy button st.markdown("""
""", unsafe_allow_html=True) # Add tips for using the copy - using a container instead of an expander st.markdown("""

💡 Tips for Using Your Emotional Copy

""", unsafe_allow_html=True) st.markdown(""" ### How to Use Your Emotional Copy Effectively 1. **Test different versions**: A/B test your copy to see which emotional triggers resonate most with your audience 2. **Pair with visuals**: Combine your copy with images that reinforce the emotional message 3. **Consider the context**: Adapt the copy based on where it will appear (social media, email, website, etc.) 4. **Measure results**: Track engagement metrics to see how your emotional copy performs 5. **Refine over time**: Continuously improve your copy based on audience feedback and performance data """) else: st.error("💥 **Failed to generate Emotional Copy. Please try again!**") def generate_emotional_copy(brand_name, description, trust_elements, target_audience, emotional_trigger, unique_selling_point, call_to_action, tone_style): system_prompt = """You are an expert emotional copywriter with years of experience in creating compelling marketing copy that resonates with audiences on a deep emotional level. Your specialty is crafting copy that triggers specific emotions and drives action while maintaining authenticity and credibility.""" prompt = f"""Create 3 different emotional marketing campaigns for {brand_name}, which is a {description}. TARGET AUDIENCE: {target_audience} PRIMARY EMOTIONAL TRIGGER: {emotional_trigger} UNIQUE SELLING POINT: {unique_selling_point} DESIRED CALL TO ACTION: {call_to_action} TONE & STYLE: {tone_style} TRUST ELEMENTS: {trust_elements} For each campaign: 1. Create a compelling headline that captures attention 2. Write 2-3 paragraphs of body copy that builds emotional connection 3. End with a strong call to action 4. Explain which emotional triggers you used and why they're effective for this audience Format each campaign clearly with "CAMPAIGN 1:", "CAMPAIGN 2:", etc. as headers. Make the copy authentic, specific to the brand, and focused on the target audience's needs and desires. """ try: return llm_text_gen(prompt, system_prompt=system_prompt) except Exception as e: st.error(f"Error generating copy: {str(e)}") return None