149 lines
5.5 KiB
Python
149 lines
5.5 KiB
Python
#!/usr/bin/env python3
|
||
"""
|
||
Generate a complete multi-variation Facebook Ads campaign
|
||
Shows the power of bulk upload for creative testing
|
||
"""
|
||
|
||
from fb_ads_csv_generator import FBAdsCSVGenerator
|
||
|
||
def generate_full_creative_test():
|
||
"""
|
||
Generate a complete creative testing campaign with:
|
||
- 3 audience segments
|
||
- 2 creative variations per audience
|
||
- Proper UTM tracking
|
||
- Total: 6 ads ready to test
|
||
"""
|
||
generator = FBAdsCSVGenerator()
|
||
all_rows = []
|
||
|
||
# Define audiences
|
||
audiences = [
|
||
{
|
||
"name": "Tech Early Adopters",
|
||
"age_min": "25",
|
||
"age_max": "45",
|
||
"interests": "Technology,Software,Artificial Intelligence",
|
||
},
|
||
{
|
||
"name": "Business Owners",
|
||
"age_min": "30",
|
||
"age_max": "55",
|
||
"interests": "Small Business,Entrepreneurship,Business Software",
|
||
},
|
||
{
|
||
"name": "Developers",
|
||
"age_min": "22",
|
||
"age_max": "40",
|
||
"interests": "Programming,Software Development,GitHub",
|
||
},
|
||
]
|
||
|
||
# Define creative variations
|
||
creatives = [
|
||
{
|
||
"version": "v1_efficiency",
|
||
"body": "Stop wasting time on repetitive tasks. OpenClaw automates your entire workflow so you can focus on what matters. Join 10,000+ professionals who've reclaimed their day.",
|
||
"title": "Get 10 Hours Back Every Week",
|
||
"caption": "Start Your Free 14-Day Trial",
|
||
"cta": "SIGN_UP",
|
||
"image": "openclaw_efficiency_1080x1080.jpg"
|
||
},
|
||
{
|
||
"version": "v2_power",
|
||
"body": "The AI assistant that actually understands what you want. No prompt engineering required. Just tell OpenClaw your goal and watch it handle the complexity for you.",
|
||
"title": "AI That Actually Works",
|
||
"caption": "See It In Action →",
|
||
"cta": "LEARN_MORE",
|
||
"image": "openclaw_power_1080x1080.jpg"
|
||
},
|
||
]
|
||
|
||
# Generate ad for each audience × creative combination
|
||
for audience in audiences:
|
||
for creative in creatives:
|
||
ad_set_name = f"{audience['name']} - {creative['version']}"
|
||
ad_name = f"OpenClaw Ad - {audience['name']} - {creative['version']}"
|
||
|
||
# Customize targeting for each audience
|
||
row = generator.generate_traffic_campaign(
|
||
campaign_name="OpenClaw Q1 2026 Launch",
|
||
ad_set_name=ad_set_name,
|
||
ad_name=ad_name,
|
||
daily_budget=40.00, # $40/day per ad set = $240/day total
|
||
target_url="https://openclaw.com/?utm_source=facebook&utm_medium=paid_social",
|
||
ad_copy={
|
||
'body': creative['body'],
|
||
'title': creative['title'],
|
||
'caption': creative['caption']
|
||
},
|
||
image_file=creative['image']
|
||
)[0]
|
||
|
||
# Customize targeting
|
||
row["Targeting Age Min"] = audience["age_min"]
|
||
row["Targeting Age Max"] = audience["age_max"]
|
||
row["Targeting Interests"] = audience["interests"]
|
||
|
||
# Update UTM tracking
|
||
audience_slug = audience["name"].lower().replace(" ", "_")
|
||
creative_slug = creative["version"]
|
||
row["UTM Campaign"] = "openclaw_q1_2026"
|
||
row["UTM Content"] = f"{audience_slug}_{creative_slug}"
|
||
|
||
# Update Call to Action
|
||
row["Call To Action"] = creative["cta"]
|
||
|
||
all_rows.append(row)
|
||
|
||
return all_rows
|
||
|
||
|
||
if __name__ == "__main__":
|
||
generator = FBAdsCSVGenerator()
|
||
|
||
print("🚀 Generating Complete Creative Testing Campaign...")
|
||
print()
|
||
|
||
campaign_rows = generate_full_creative_test()
|
||
|
||
filename = "openclaw_creative_test_campaign.csv"
|
||
generator.write_csv(campaign_rows, filename)
|
||
|
||
print()
|
||
print("✨ Campaign Generated Successfully!")
|
||
print()
|
||
print("📊 Campaign Structure:")
|
||
print(f" • Total Ads: {len(campaign_rows)}")
|
||
print(f" • Audiences: 3 (Tech Early Adopters, Business Owners, Developers)")
|
||
print(f" • Creative Variations: 2 per audience")
|
||
print(f" • Daily Budget per Ad Set: $40")
|
||
print(f" • Total Daily Budget: ${40 * len(campaign_rows)}")
|
||
print()
|
||
print("🎯 What This Tests:")
|
||
print(" • Which audience responds best")
|
||
print(" • Which creative message resonates (efficiency vs power)")
|
||
print(" • Which CTA drives more clicks (Sign Up vs Learn More)")
|
||
print()
|
||
print("📸 Required Images:")
|
||
print(" • openclaw_efficiency_1080x1080.jpg")
|
||
print(" • openclaw_power_1080x1080.jpg")
|
||
print()
|
||
print("📋 Import Instructions:")
|
||
print(f" 1. Upload both images to your computer")
|
||
print(f" 2. Go to Meta Ads Manager")
|
||
print(f" 3. Click ⋮ > Import & Export > Import Ads")
|
||
print(f" 4. Upload {filename}")
|
||
print(f" 5. When prompted, upload both creative files")
|
||
print(f" 6. Review and publish all 6 ads at once!")
|
||
print()
|
||
print("⏱️ Time Saved vs Manual:")
|
||
print(" • Manual creation: ~45 minutes (6 ads × 7.5 min each)")
|
||
print(" • Bulk upload: ~3 minutes")
|
||
print(" • Saved: 42 minutes (93% faster)")
|
||
print()
|
||
print("🔍 Tracking:")
|
||
print(" • All ads have unique UTM_Content for attribution")
|
||
print(" • Can track performance by audience + creative in analytics")
|
||
print(" • Easy to identify winners and scale")
|