from dotenv import load_dotenv import streamlit as st import os import google.generativeai as genai from story_formulas import story_formulas from styles import apply_styles, format_story_output # Cargar variables de entorno load_dotenv() # Configurar API de Google Gemini genai.configure(api_key=os.getenv("GOOGLE_API_KEY")) # Función para obtener la respuesta del modelo Gemini def get_gemini_response(input_prompt, formula_type, length, mood, target_audience, cta_type, temperature): if not input_prompt: return "Por favor, escribe un mensaje para generar contenido." formula = story_formulas[formula_type] model = genai.GenerativeModel('gemini-2.0-flash') full_prompt = f""" You are a creative storyteller. Write THREE different {mood} stories in Spanish about "{input_prompt}" using everyday words and natural conversation. Each story should use exactly {length} words. Target Audience: {target_audience} Call to Action: {cta_type} Story Formula: {formula_type} {formula["description"]} Keep in mind: - Write for {target_audience} - Use simple, clear language - Tell the story in short paragraphs - The CTA must be conversational and focus on benefits: * Instead of: "Inscríbete al curso de marketing" * Use: "¿Quieres aprender a conseguir más clientes? Acompáñanos este jueves..." * Instead of: "Reserva tu consulta" * Use: "Da el primer paso hacia tu transformación aquí..." CRITICAL INSTRUCTIONS: - Output ONLY the story text - DO NOT include any labels like (Problem), (Solution), etc. - DO NOT include any structural markers or formula explanations - Write as a continuous narrative with natural paragraph breaks - The story should flow naturally between sections without any visible structure markers - Make the CTA feel like a natural part of the conversation, focusing on what the reader will gain - Avoid promotional language in the CTA - DO NOT explain or mention the formula parts in the text - Separate each story with "---" Format: Three clean story texts with natural paragraphs, separated by "---", no labels, no explanations. """ 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="Story Generator", page_icon=":pencil:", layout="wide") # Agregar después de st.set_page_config y antes del título # Leer y mostrar el manual en el sidebar with open("manual.md", "r", encoding="utf-8") as file: manual_content = file.read() st.sidebar.markdown(manual_content) # Título de la app st.markdown("