Alejandro Rioja.
AI Agents

Ho creato una competenza Claude che gestisce i miei annunci Facebook — ecco il codice

Alejandro Rioja
Alejandro Rioja
4 min di lettura
TL;DR

Ho creato una competenza Claude che legge il mio account Meta Ads tramite la Graph API, identifica i sotto-performer, riscrive il testo degli annunci nella mia voce di marca e crea nuovi set di annunci senza che io debba toccare Gestione annunci. Il tutto in meno di 300 righe di TypeScript. Il ROI è stato immediato: ho ridotto il tempo settimanale di gestione degli annunci da ~3 ore a circa 20 minuti.

Newsletter gratuita

Ogni mercoledì. 28.400+ operatori. Zero riempitivo.

Indice

Aggiornato giugno 2026.

TL;DR: Ho creato una competenza Claude che legge il mio account Meta Ads tramite la Graph API, identifica i sotto-performer, riscrive il testo degli annunci nella mia voce di marca e crea nuovi set di annunci senza che io debba toccare Gestione annunci. Il tutto in meno di 300 righe di TypeScript. Il ROI è stato immediato: ho ridotto il tempo settimanale di gestione degli annunci da ~3 ore a circa 20 minuti.

[Lettura dell’operatore] Gestisco annunci per Pickleland e per il mio brand di consulenza. Due account, pubblici diversi, affaticamento creativo costante. Passavo i pomeriggi della domenica in Gestione annunci a fare cose che dovrebbe fare un modello. Così l’ho automatizzato.

Perché ho smesso di gestire manualmente gli annunci Facebook

Il lavoro reale di gestione degli annunci Facebook si divide in tre compiti:

  1. Monitoraggio — verificare quali set di annunci stanno bruciando soldi vs. generandoli
  2. Diagnosi — capire perché qualcosa sta sotto-performando (affaticamento creativo? targeting sbagliato? pagina di destinazione?)
  3. Iterazione — scrivere nuovo testo, creare nuovi set di annunci, regolare i budget

Il compito 1 è meccanico. Il compito 3 è principalmente meccanico (con un vincolo di voce). Il compito 2 richiede giudizio — ed è l’unico che trae vantaggio dall’avere un umano nel ciclo.

Una competenza Claude può fare il 1 e il 3. Rivedo i risultati del compito 2 prima che qualsiasi cosa venga pubblicata. Questa è l’architettura su cui mi sono assestato.

La configurazione della Meta Graph API (questa è la parte noiosa)

Prima di qualsiasi codice: è necessario un account Meta Business, un Utente di sistema e un token di accesso permanente. Il portale per sviluppatori di Facebook è ostile ma il percorso è:

  1. Creare una Meta App su developers.facebook.com (tipo: Business)
  2. Aggiungere il prodotto Marketing API
  3. Nel tuo Portfolio aziendale → Impostazioni → Utenti → Utenti di sistema, creare un utente di sistema e dargli il ruolo ADVERTISER sul tuo account pubblicitario
  4. Generare un token con questi permessi: ads_read, ads_management, business_management

Memorizza il token come META_ACCESS_TOKEN e l’ID del tuo account pubblicitario (formato: act_XXXXXXXX) come META_AD_ACCOUNT_ID nel tuo .env.

La struttura dei file della competenza

code
.claude/skills/fb-ads/
  SKILL.md          ← istruzioni che Claude legge
  index.ts          ← l'implementazione effettiva dello strumento
  types.ts          ← tipi condivisi

Il SKILL.md è ciò che dice a Claude quando e come usare la competenza. Il mio dice:

markdown
# Facebook Ads Manager Skill

Use this skill when the user says "check my ads", "run ads report",
"pause underperformers", or "write new ad copy". Never run this
without explicit user instruction — it touches live ad spend.

## What it can do
- Pull performance data for all active ad sets (last 7 or 30 days)
- Flag ad sets with ROAS < 1.5 or CTR < 0.8% as underperformers
- Rewrite ad copy for flagged creatives in Ale's voice
- Create new ad sets with revised copy (PAUSED by default — you approve before activating)

## What it will NOT do
- Change budgets on live ad sets without explicit confirmation
- Activate new ad sets automatically
- Delete anything

Il vincolo “non attivare mai automaticamente” è non negoziabile. Questa competenza crea elementi nello stato IN PAUSA. Rivedo e attivo manualmente. Qualsiasi cosa che tocchi la spesa pubblicitaria in tempo reale necessita di un punto di controllo umano.

Il codice TypeScript principale

(I blocchi di codice rimangono in inglese — viene tradotto solo il testo circostante.)

Come lo uso quotidianamente

La competenza viene invocata da Claude Code (il mio strumento quotidiano). Una tipica sessione del lunedì mattina:

code
> check my ads from the last 7 days

Claude esegue runAdsReport(7), formatta i risultati come una tabella, segnala i sotto-performer e chiede se voglio riscritture. Dico di sì. Genera nuovo testo, mi mostra entrambe le versioni fianco a fianco e crea set di annunci IN PAUSA con il nuovo creativo. Li rivedo in Gestione annunci, attivo quelli che mi piacciono e archivio i perdenti.

Tempo totale: 20 minuti. Zero pomeriggi della domenica in Gestione annunci.

Cosa questo non sostituisce

La competenza non può dirmi se un problema di adattamento prodotto-mercato si sta travestendo da problema di testo. Se il ROAS è pessimo ovunque, si tratta di un problema di funnel o di offerta, non di titolo. Claude riscriverà fedelmente il testo su un funnel rotto — e le riscritture non lo salveranno.

Il passaggio diagnostico è ancora mio. Leggo il report, guardo i dati del funnel e decido se stiamo iterando il creativo o risolvendo qualcosa a monte. L’agente è veloce in tutto tranne che in quel giudizio.

La conclusione dell’operatore

Se stai gestendo annunci manualmente e toccando Gestione annunci più di due volte a settimana, stai svolgendo operazioni che dovrebbe fare uno script. La Graph API è ben documentata e il flusso di permessi di Meta, sebbene fastidioso, è una configurazione una tantum. Costruisci la competenza in un pomeriggio. Il ritorno in tempo recuperato si manifesta nella prima settimana.

Continua a leggere

Ricevi il manuale dell'IA nella tua casella di posta

Ogni mercoledì. 28.400+ operatori. Zero riempitivo.

↵ per tutti i risultati esc esc per chiudere