Análise
Fase 2: Análise15 min

#04Análise de Criativos

Extrair e analisar performance de todos os criativos. Identificar top performers por CPA, ROAS e engajamento. Separar vídeo de imagem.

O que este script faz

O script 01 puxa TODOS os ads da conta com seus criativos e calcula métricas de performance: CPA (Custo por Aquisição), ROAS (Return on Ad Spend), CTR, e CPV (Custo por Venda). Separa os criativos em rankings de melhor para pior.

Extrair dados de criativos

01_criativos.py
python
from facebook_business.adobjects.adaccount import AdAccount
from facebook_business.adobjects.ad import Ad

# Campos necessários para análise de criativos
fields = [
    "ad_name",
    "adset_name",
    "campaign_name",
    "spend",
    "impressions",
    "clicks",
    "actions",
    "cost_per_action_type",
    "video_30_sec_watched_actions",
]

# Parâmetros: últimos 90 dias, breakdown por ad
params = {
    "time_range": {"since": "2024-12-01", "until": "2025-02-28"},
    "level": "ad",
    "filtering": [{"field": "spend", "operator": "GREATER_THAN", "value": "0"}],
}

insights = account.get_insights(fields=fields, params=params)

Calcular métricas

python
def calcular_metricas(row):
    spend = float(row.get("spend", 0))
    impressions = int(row.get("impressions", 0))
    clicks = int(row.get("clicks", 0))
    
    # Extrair purchases das actions
    purchases = 0
    revenue = 0
    for action in row.get("actions", []):
        if action["action_type"] == "purchase":
            purchases = int(action["value"])
        if action["action_type"] == "omni_purchase":
            revenue = float(action["value"])
    
    ctr = (clicks / impressions * 100) if impressions > 0 else 0
    cpv = (spend / purchases) if purchases > 0 else float("inf")
    roas = (revenue / spend) if spend > 0 else 0
    
    return {"ctr": ctr, "cpv": cpv, "roas": roas, "purchases": purchases}

Top 15 criativos

Na Imersão 9, os 15 melhores criativos foram identificados por object_story_id e reutilizados na criação automática de 56 ads. Este script é a base para essa seleção.

Resultados esperados

Ao final deste passo: