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

⭐ STAR Copywriting Generator

Create compelling marketing copy using the proven STAR (Situation-Task-Action-Result) framework.

""", unsafe_allow_html=True) # Educational content about STAR copywriting with st.expander("📚 What is STAR Copywriting?", expanded=False): st.markdown(""" ### Understanding the STAR Copywriting Framework The STAR framework is a powerful storytelling structure that creates compelling narratives: - **Situation**: Set the context and background for the problem or need - **Task**: Describe the specific challenge or objective that needs to be addressed - **Action**: Explain the specific actions taken to address the challenge - **Result**: Highlight the positive outcomes and benefits achieved ### Why STAR Copywriting Works The STAR framework works because it: - Creates a complete narrative arc that engages readers - Demonstrates problem-solving capabilities - Shows concrete results and benefits - Builds credibility through specific examples - Makes abstract benefits tangible through storytelling ### When to Use STAR Copywriting The STAR framework is particularly effective for: - Case studies and success stories - Product or service demonstrations - Customer testimonials - Company achievements and milestones - Problem-solution marketing - Portfolio showcases """) # Main input form with st.expander("✍️ Create Your STAR Copy", expanded=True): col1, col2 = st.columns([1, 1]) with col1: brand_name = st.text_input('**🏢 Brand/Company Name**', placeholder="e.g., Alwrity", help="Enter the name of your brand or company.") target_audience = st.text_input('**👥 Target Audience**', placeholder="e.g., Small business owners, Tech professionals", help="Who is your ideal customer? Be specific about demographics and psychographics.") situation = st.text_area('**🌍 Situation (Context)**', placeholder="In a busy city, Late Delivery, Unsafe Activities, Unprofessional Service..", help="Describe the background context or problem that needs to be addressed.") action = st.text_area('**⚡ Action (Solution)**', placeholder="New strategy, launched campaign, better service, New product...", help="Describe the specific actions taken to address the challenge or objective.") with col2: description = st.text_input('**📝 Brand Description** (In 2-3 words)', placeholder="e.g., AI writing tools", help="Describe your product or service briefly.") unique_selling_point = st.text_input('**💎 Unique Selling Point**', placeholder="e.g., 10x faster content creation", help="What makes your product/service different from competitors?") task = st.text_area('**🎯 Task (Challenge)**', placeholder="Increase website traffic by 30%, improve customer satisfaction, Safe Travels...", help="Describe the specific challenge or objective that needs to be addressed.") result = st.text_area('**✨ Result (Outcome)**', placeholder="Improved customer engagement, sales revenue, Happy customers, Improved Service X...", help="Highlight the positive outcomes and benefits achieved from the actions taken.") 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 STAR Copy**', type="primary"): if not brand_name or not description or not situation or not task or not action or not result: st.error("⚠️ Please fill in all required fields (Brand Name, Description, Situation, Task, Action, and Result)!") else: with st.spinner("✨ Crafting compelling STAR copy..."): star_copy = generate_star_copy( brand_name, description, situation, task, action, result, target_audience, unique_selling_point, tone_style ) if star_copy: st.markdown("""

⭐ Your STAR Copy

""", unsafe_allow_html=True) # Display the copy with a nice format st.markdown(star_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 STAR Copy

""", unsafe_allow_html=True) st.markdown(""" ### How to Use Your STAR Copy Effectively 1. **Test different versions**: A/B test your copy to see which version resonates most with your audience 2. **Pair with visuals**: Combine your copy with images that illustrate each stage of the STAR framework 3. **Consider the platform**: Adapt your copy based on where it will appear (social media, email, website, etc.) 4. **Measure results**: Track engagement metrics to see how your STAR copy performs 5. **Refine over time**: Continuously improve your copy based on audience feedback and performance data """) else: st.error("💥 **Failed to generate STAR Copy. Please try again!**") def generate_star_copy(brand_name, description, situation, task, action, result, target_audience, unique_selling_point, tone_style): system_prompt = """You are an expert copywriter specializing in the STAR (Situation-Task-Action-Result) framework. Your expertise is in creating compelling, narrative-driven marketing copy that tells a complete story from problem to solution. Your copy is authentic, specific to the brand, and focused on demonstrating concrete results and benefits.""" prompt = f"""Create 3 different marketing campaigns for {brand_name}, which is a {description}. TARGET AUDIENCE: {target_audience} UNIQUE SELLING POINT: {unique_selling_point} TONE & STYLE: {tone_style} Use the STAR framework with these elements: - **Situation**: {situation} - **Task**: {task} - **Action**: {action} - **Result**: {result} For each campaign: 1. Create a compelling headline that captures attention 2. Write 2-3 paragraphs that follow the STAR framework 3. End with a strong call to action 4. Explain how each element of the STAR framework is used in the copy 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