Files
ALwrity/lib/ai_writers/ai_copywriter/copywriter_dashboard.py
2025-04-08 18:37:35 +05:30

236 lines
9.4 KiB
Python

import streamlit as st
import importlib
import sys
import os
from pathlib import Path
# Add the parent directory to the path to allow importing from lib
current_dir = Path(__file__).parent
root_dir = current_dir.parent.parent.parent
sys.path.append(str(root_dir))
# Dictionary to store the input section functions
input_sections = {}
# List of copywriter modules to import
copywriter_modules = [
"ai_emotional_copywriter",
"acca_copywriter",
"app_copywriter",
"star_copywriter",
"oath_copywriter",
"quest_copywriter",
"aidppc_copywriter",
"aida_copywriter",
"pas_copywriter",
"fab_copywriter",
"4c_copywriter",
"4r_copywriter"
]
# Dynamically import all copywriter modules
for module_name in copywriter_modules:
try:
module_path = f"lib.ai_writers.ai_copywriter.{module_name}"
module = importlib.import_module(module_path)
if hasattr(module, "input_section"):
input_sections[module_name] = module.input_section
except Exception as e:
st.write(f"Debug: Error importing {module_name}: {str(e)}")
def copywriter_dashboard():
"""
Main function to display the copywriting dashboard.
This function can be called from content_generator.py when the user selects "AI Copywriter".
"""
# Define the copywriting formulas with their details
copywriting_formulas = [
{
"name": "Emotional Copywriter",
"icon": "🎭",
"description": "Create copy that resonates with your audience's emotions and drives action.",
"color": "#FF6B6B",
"module": "ai_emotional_copywriter",
"function": input_sections.get("ai_emotional_copywriter")
},
{
"name": "ACCA Copywriter",
"icon": "🎯",
"description": "Use the ACCA (Attention, Context, Content, Action) framework to create compelling copy.",
"color": "#4ECDC4",
"module": "acca_copywriter",
"function": input_sections.get("acca_copywriter")
},
{
"name": "APP Copywriter",
"icon": "🤝",
"description": "Implement the APP (Agree, Promise, Preview) formula to create persuasive copy.",
"color": "#45B7D1",
"module": "app_copywriter",
"function": input_sections.get("app_copywriter")
},
{
"name": "STAR Copywriter",
"icon": "",
"description": "Use the STAR (Situation, Task, Action, Result) framework to tell compelling stories.",
"color": "#FFD166",
"module": "star_copywriter",
"function": input_sections.get("star_copywriter")
},
{
"name": "OATH Copywriter",
"icon": "📜",
"description": "Apply the OATH (Oblivious, Apathetic, Thinking, Hurting) framework to target specific audience mindsets.",
"color": "#06D6A0",
"module": "oath_copywriter",
"function": input_sections.get("oath_copywriter")
},
{
"name": "QUEST Copywriter",
"icon": "🔍",
"description": "Use the QUEST (Question, Unpack, Emphasize, Solution, Transform) framework for narrative-driven copy.",
"color": "#118AB2",
"module": "quest_copywriter",
"function": input_sections.get("quest_copywriter")
},
{
"name": "AIDPPC Copywriter",
"icon": "💰",
"description": "Implement the AIDPPC (Attention, Interest, Desire, Proof, Persuasion, Call to Action) framework for PPC ads.",
"color": "#073B4C",
"module": "aidppc_copywriter",
"function": input_sections.get("aidppc_copywriter")
},
{
"name": "AIDA Copywriter",
"icon": "🎬",
"description": "Use the AIDA (Attention, Interest, Desire, Action) framework to guide customers through the sales funnel.",
"color": "#EF476F",
"module": "aida_copywriter",
"function": input_sections.get("aida_copywriter")
},
{
"name": "PAS Copywriter",
"icon": "🔧",
"description": "Apply the PAS (Problem, Agitate, Solution) formula to address pain points and offer solutions.",
"color": "#7209B7",
"module": "pas_copywriter",
"function": input_sections.get("pas_copywriter")
},
{
"name": "FAB Copywriter",
"icon": "💎",
"description": "Use the FAB (Features, Advantages, Benefits) framework to highlight product value.",
"color": "#3A0CA3",
"module": "fab_copywriter",
"function": input_sections.get("fab_copywriter")
},
{
"name": "4C Copywriter",
"icon": "📝",
"description": "Implement the 4C (Clear, Concise, Credible, Compelling) framework for effective messaging.",
"color": "#4361EE",
"module": "four_c_copywriter",
"function": input_sections.get("four_c_copywriter")
},
{
"name": "4R Copywriter",
"icon": "🔄",
"description": "Use the 4R (Relevance, Resonance, Response, Results) framework to connect with your audience.",
"color": "#F72585",
"module": "four_r_copywriter",
"function": input_sections.get("four_r_copywriter")
}
]
# Create a container for the dashboard
dashboard_container = st.container()
# Create a container for the formula input section
formula_container = st.container()
# Initialize session state for selected formula if it doesn't exist
if "selected_formula" not in st.session_state:
st.session_state.selected_formula = None
# If a formula is selected, show its input section
if st.session_state.selected_formula is not None:
with formula_container:
# Display the selected formula's input section
st.markdown("---")
st.markdown(f"# {st.session_state.selected_formula['icon']} {st.session_state.selected_formula['name']}")
# Add a back button
if st.button("← Back to Dashboard", key="back_to_dashboard"):
# Clear the selected formula from session state
st.session_state.selected_formula = None
st.rerun()
# Call the input section function for the selected formula
if st.session_state.selected_formula["function"]:
st.session_state.selected_formula["function"]()
else:
st.error(f"The {st.session_state.selected_formula['name']} module is not available.")
else:
with dashboard_container:
# Display the dashboard
# Header
st.markdown("""
<div style='background-color: #f0f2f6; padding: 20px; border-radius: 10px; margin-bottom: 20px;'>
<h1 style='color: #1E88E5; text-align: center;'>✍️ AI Copywriting Tools</h1>
<p style='text-align: center;'>Choose the perfect copywriting formula for your marketing needs</p>
</div>
""", unsafe_allow_html=True)
# Introduction
st.markdown("""
## Welcome to the AI Copywriting Suite
This dashboard provides access to a variety of copywriting formulas, each designed for specific marketing needs.
Select a formula below to get started with creating compelling copy for your brand.
### How to Use This Dashboard
1. Browse the available copywriting formulas below
2. Click on a formula card to access its specific tool
3. Fill in the required information
4. Generate high-quality copy tailored to your needs
""")
# Create a 3-column layout for the formula cards
col1, col2, col3 = st.columns(3)
# Display the formula cards
for i, formula in enumerate(copywriting_formulas):
# Skip formulas that don't have a function
if formula["function"] is None:
continue
# Determine which column to use
col = col1 if i % 3 == 0 else col2 if i % 3 == 1 else col3
with col:
# Create a card for each formula
st.markdown(f"""
<div style='background-color: {formula["color"]}; padding: 20px; border-radius: 10px; margin-bottom: 20px; color: white;'>
<h2 style='color: white;'>{formula["icon"]} {formula["name"]}</h2>
<p>{formula["description"]}</p>
</div>
""", unsafe_allow_html=True)
# Add a button to access the formula
if st.button(f"Use {formula['name']}", key=f"btn_{i}"):
# Store the selected formula in session state
st.session_state.selected_formula = formula
st.rerun()
# For standalone execution
if __name__ == "__main__":
st.set_page_config(
page_title="AI Copywriting Tools",
page_icon="✍️",
layout="wide",
initial_sidebar_state="expanded"
)
copywriter_dashboard()