File size: 7,313 Bytes
f201243 b3adf58 f201243 |
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 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
"""
Psychological Triggers - Core emotional drivers that make ads convert.
"""
from typing import Dict, Any, List, Optional
import random
PSYCHOLOGICAL_TRIGGERS: Dict[str, Dict[str, Any]] = {
"fear": {
"name": "Fear / Loss Aversion",
"description": "Fear of losing what you have or missing out on protection",
"copy_angles": ["Don't risk losing your home", "Protect what matters most", "Before disaster strikes"],
"visual_cues": ["warning signs", "protection imagery", "security elements"],
"color_palette": "warning",
"best_for": ["insurance", "security", "protection services"],
},
"greed": {
"name": "Greed / Savings",
"description": "Desire to save money, get more value, maximize gain",
"copy_angles": ["Save $500+ per year", "Get more for less", "Maximize your savings"],
"visual_cues": ["money imagery", "savings charts", "discount badges"],
"color_palette": "savings",
"best_for": ["financial products", "deals", "discounts"],
},
"fomo": {
"name": "FOMO (Fear of Missing Out)",
"description": "Anxiety about missing a limited opportunity",
"copy_angles": ["Limited time offer", "Only 50 spots left", "Offer expires soon"],
"visual_cues": ["countdown timers", "urgency badges", "scarcity indicators"],
"color_palette": "urgency",
"best_for": ["sales", "launches", "limited offers"],
},
"authority": {
"name": "Authority / Expertise",
"description": "Trust in experts, credentials, and established institutions",
"copy_angles": ["Doctor recommended", "Expert approved", "Industry leading"],
"visual_cues": ["credentials", "certifications", "professional imagery"],
"color_palette": "trust",
"best_for": ["health", "professional services", "premium products"],
},
"social_proof": {
"name": "Social Proof",
"description": "Following what others are doing, trust in numbers",
"copy_angles": ["Join 50,000+ customers", "5-star rated", "Most popular choice"],
"visual_cues": ["star ratings", "customer counts", "testimonials"],
"color_palette": "trust",
"best_for": ["consumer products", "services", "subscriptions"],
},
"curiosity": {
"name": "Curiosity",
"description": "Desire to learn, discover, and fill knowledge gaps",
"copy_angles": ["The secret they don't want you to know", "Discover how", "What they won't tell you"],
"visual_cues": ["mystery elements", "reveal moments", "hidden information"],
"color_palette": "premium",
"best_for": ["educational content", "reveals", "discoveries"],
},
"belonging": {
"name": "Belonging / Community",
"description": "Desire to be part of a group, tribe, or community",
"copy_angles": ["Join the community", "Be part of something", "Welcome to the family"],
"visual_cues": ["group imagery", "community symbols", "togetherness"],
"color_palette": "calm",
"best_for": ["memberships", "communities", "brands"],
},
"transformation": {
"name": "Transformation",
"description": "Desire for change, improvement, and becoming better",
"copy_angles": ["Transform your life", "Become the best version", "Change everything"],
"visual_cues": ["before/after", "progression imagery", "improvement indicators"],
"color_palette": "energy",
"best_for": ["fitness", "personal development", "lifestyle"],
},
"relief": {
"name": "Relief / Pain Relief",
"description": "Escaping pain, stress, or uncomfortable situations",
"copy_angles": ["End the stress", "Finally get relief", "Stop the pain"],
"visual_cues": ["relaxation imagery", "relief moments", "calm scenes"],
"color_palette": "calm",
"best_for": ["health", "stress relief", "solutions"],
},
"pride": {
"name": "Pride / Self-Worth",
"description": "Feeling good about oneself, achievements, and status",
"copy_angles": ["You deserve the best", "Treat yourself", "You've earned it"],
"visual_cues": ["success imagery", "achievement symbols", "premium elements"],
"color_palette": "premium",
"best_for": ["luxury", "premium products", "self-care"],
},
"urgency": {
"name": "Urgency / Time Pressure",
"description": "Need to act quickly before time runs out",
"copy_angles": ["Act now", "Today only", "Time is running out"],
"visual_cues": ["clocks", "timers", "urgent badges"],
"color_palette": "urgency",
"best_for": ["sales", "deadlines", "limited offers"],
},
"exclusivity": {
"name": "Exclusivity",
"description": "Desire for special access, VIP treatment, insider status",
"copy_angles": ["Exclusive offer", "VIP access", "By invitation only"],
"visual_cues": ["VIP badges", "exclusive tags", "premium styling"],
"color_palette": "premium",
"best_for": ["premium products", "memberships", "exclusive deals"],
},
}
# Trigger combinations that work well together
TRIGGER_COMBINATIONS: List[Dict[str, Any]] = [
{"primary": "fear", "secondary": "urgency", "name": "Fear + Urgency", "description": "Creates immediate action through fear of loss"},
{"primary": "greed", "secondary": "fomo", "name": "Savings + FOMO", "description": "Limited-time savings opportunity"},
{"primary": "social_proof", "secondary": "authority", "name": "Proof + Authority", "description": "Expert-backed with customer validation"},
{"primary": "transformation", "secondary": "curiosity", "name": "Transform + Curiosity", "description": "Discover the secret to transformation"},
{"primary": "relief", "secondary": "social_proof", "name": "Relief + Proof", "description": "Join thousands who found relief"},
{"primary": "exclusivity", "secondary": "urgency", "name": "Exclusive + Urgent", "description": "Limited VIP opportunity"},
]
def get_all_triggers() -> Dict[str, Dict[str, Any]]:
return PSYCHOLOGICAL_TRIGGERS
def get_trigger(key: str) -> Optional[Dict[str, Any]]:
return PSYCHOLOGICAL_TRIGGERS.get(key)
def get_random_trigger() -> Dict[str, Any]:
key = random.choice(list(PSYCHOLOGICAL_TRIGGERS.keys()))
return {"key": key, **PSYCHOLOGICAL_TRIGGERS[key]}
def get_trigger_combination() -> Dict[str, Any]:
return random.choice(TRIGGER_COMBINATIONS)
def get_triggers_for_niche(niche: str) -> List[Dict[str, Any]]:
niche_lower = niche.lower().replace(" ", "_").replace("-", "_")
niche_triggers = {
"home_insurance": ["fear", "greed", "social_proof", "authority", "relief"],
"glp1": ["transformation", "pride", "social_proof", "authority", "relief"],
"auto_insurance": ["fear", "greed", "social_proof", "authority", "relief"],
}
trigger_keys = niche_triggers.get(niche_lower, list(PSYCHOLOGICAL_TRIGGERS.keys())[:5])
return [{"key": k, **PSYCHOLOGICAL_TRIGGERS[k]} for k in trigger_keys if k in PSYCHOLOGICAL_TRIGGERS]
def get_copy_angles_for_trigger(trigger_key: str) -> List[str]:
trigger = get_trigger(trigger_key)
return trigger.get("copy_angles", []) if trigger else []
|