Fase 4: Execução20 min
#16Criar 56 Ads via API
Criar automaticamente 56 anúncios distribuídos nos 13 adsets, usando os 15 melhores criativos, tudo em modo PAUSADO.
PAUSED e rate limiting
Todos os 56 ads são criados com status PAUSED. O script usa time.sleep(1) entre cada chamada para evitar rate limiting (Erro #9).
Criar ads automaticamente
13_criar_ads.py
python
import requests
import time
import json
# 15 top criativos identificados no script 01
TOP_CRIATIVOS = [
{"name": "Video Depoimento Ana", "object_story_id": "123_456"},
{"name": "Carrossel Resultados", "object_story_id": "123_789"},
# ... 13 mais
]
def criar_ad(adset_id, criativo, token):
url = f"https://graph.facebook.com/v21.0/act_{ACCOUNT_ID}/ads"
payload = {
"name": f"WIA9-{adset_key} | {criativo['name']}",
"adset_id": adset_id,
"status": "PAUSED",
"creative": {"object_story_id": criativo["object_story_id"]},
"access_token": token,
}
response = requests.post(url, json=payload)
time.sleep(1) # Evitar rate limit!
return response.json()
# Loop: para cada adset, criar ads com os criativos relevantes
for adset in adsets:
for criativo in adset["criativos"]:
resultado = criar_ad(adset["id"], criativo, TOKEN)
log.append(resultado)Naming convention
python
# Padrão de nomenclatura dos ads:
# WIA9-{ADSET_KEY} | {CREATIVE_NAME}
#
# Exemplos:
# WIA9-ELITE-ENGAJ-IG | Video Depoimento Ana
# WIA9-GOOD-VV-30D | Carrossel Resultados
# WIA9-COLD-INTEREST-MKTDIGITAL | Reels Transformação
# Distribuição:
# ~4 criativos por adset
# 13 adsets × ~4 criativos = ~56 ads
# Todos PAUSED para revisão manualResultados esperados
Ao final: