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: