File size: 4,417 Bytes
09eb0d7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7a03e7d
09eb0d7
 
 
 
7a03e7d
09eb0d7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
from dotenv import load_dotenv
import streamlit as st
import os
import google.generativeai as genai
from cta_formulas import cta_formulas
from styles import apply_styles

# Cargar variables de entorno
load_dotenv()

# Configurar API de Google Gemini
genai.configure(api_key=os.getenv("GOOGLE_API_KEY"))

def get_gemini_response(product_service, target_audience, desired_action, formula_type, temperature):
    if not product_service or not target_audience or not desired_action:
        return "Por favor, completa todos los campos requeridos."
    
    formula = cta_formulas[formula_type]
    
    model = genai.GenerativeModel('gemini-2.0-flash')
    full_prompt = f"""
    You are an expert copywriter specialized in creating persuasive Calls to Action (CTAs).
    Analyze (internally, don't include in output) the following information:

    BUSINESS INFORMATION:
    Product/Service: {product_service}
    Target Audience: {target_audience}
    Desired Action: {desired_action}
    CTA Type: {formula_type}
    {formula["description"]}

    EXAMPLES TO FOLLOW:
    {formula["examples"]}

    First, analyze (but don't show) these points:
    1. TARGET AUDIENCE ANALYSIS:
       - What motivates them to take action?
       - What obstacles prevent them from acting?
       - What immediate benefits are they seeking?
       - What fears or doubts do they have?
       - What language and tone resonates with them?

    2. PERSUASION ELEMENTS:
       - How to make the desired action more appealing?
       - What emotional triggers will resonate most?
       - How to create a sense of urgency naturally?
       - What unique value proposition to emphasize?
       - How to minimize perceived risk?

    Based on your internal analysis, create FIVE different CTAs following EXACTLY the formula structure:
    {formula["description"]}
    
    CRITICAL INSTRUCTIONS:
    - Follow the exact formula structure shown in the description above
    - Create FIVE different CTAs using the same formula pattern
    - ALL CTAs MUST BE IN SPANISH
    
    Use these examples as reference for the formula structure:
    {formula["examples"]}
    Output EXACTLY in this format based on {formula_type}:
    1. Follow format from {formula["examples"]}
    
    2. Follow format from {formula["examples"]}
    
    3. Follow format from {formula["examples"]}
    """
    
    response = model.generate_content([full_prompt], generation_config={"temperature": temperature})
    return response.parts[0].text if response and response.parts else "Error al generar contenido."

# Configurar la aplicación Streamlit
st.set_page_config(page_title="CTA Generator", page_icon="🎯", layout="wide")

# Aplicar estilos
st.markdown(apply_styles(), unsafe_allow_html=True)

# Título de la app
st.markdown("<h1>Generador de CTAs Persuasivos</h1>", unsafe_allow_html=True)
st.markdown("<h3>Crea llamados a la acción que motiven a tu audiencia a dar el siguiente paso.</h3>", unsafe_allow_html=True)

# Crear dos columnas
col1, col2 = st.columns([1, 1])

# Columna izquierda para inputs
with col1:
    target_audience = st.text_area(
        "¿Cuál es tu público objetivo?",
        placeholder="Ejemplo: Emprendedores que buscan automatizar su negocio..."
    )
    
    product_service = st.text_area(
        "¿Cuál es tu producto o servicio?",
        placeholder="Ejemplo: Curso de automatización con IA, Software de gestión..."
    )
    
    desired_action = st.text_area(
        "¿Qué acción quieres que realicen?",
        placeholder="Ejemplo: Registrarse al webinar, Descargar la guía gratuita..."
    )
    
    with st.expander("Opciones avanzadas"):
        formula_type = st.selectbox(
            "Tipo de CTA:",
            options=list(cta_formulas.keys())
        )
        
        temperature = st.slider(
            "Nivel de creatividad:",
            min_value=0.0,
            max_value=2.0,
            value=1.0,
            step=0.1,
            help="Valores más altos generan CTAs más creativos pero menos predecibles."
        )
    
    generate_button = st.button("Generar CTAs")

# Columna derecha para resultados
with col2:
    if generate_button and (response := get_gemini_response(
        product_service,
        target_audience,
        desired_action,
        formula_type,
        temperature
    )):
        st.markdown("### Tus Llamados a la Acción")
        st.write(response)