Google Ad Scraper

Estrae gli annunci Google live di un concorrente per dominio tramite un attore Apify; richiede un token Apify

di gooseworks-ai · gooseworks-ai/goose-skills

Richiede configurazione ★ 6.4/10

Google Ad Scraper — Estrae gli annunci Google live di un concorrente per dominio tramite un attore Apify; richiede un token Apify

Cosa fa

Avvolge una CLI Python che chiama l'attore Apify `burbn/google-ads-search` per recuperare gli annunci che un dato dominio sta attualmente eseguendo su Google, restituendo ID inserzionista, ID creativo, formato annuncio, testo annuncio, URL di destinazione e data di inizio come JSON o una tabella. Si attiva quando si chiede di estrarre o cercare gli annunci Google di un concorrente, ricercare i loro creativi pubblicitari o analizzare il messaggio dietro i loro annunci di ricerca e display. Richiede un APIFY_API_TOKEN (o una chiave API Gooseworks) e un'esecuzione Apify a pagamento per dominio.

Rapporto di test

Trovata la skill in skills/ads/capabilities/google-ad-scraper/ (SKILL.md, scripts/search_google_ads.py, skill.meta.json tutti HTTP 200) e eseguito lo script localmente: --help, missing-args e missing-token si comportano tutti come documentato, e format_summary è stato renderizzato correttamente su un set di dati mock modellato secondo lo schema documentato. Non sono riuscito a eseguire uno scraping reale (richiede APIFY_API_TOKEN più un'esecuzione a pagamento dell'attore Apify), quindi outputMeasured è falso; ho verificato che l'alternativa baseline è genuinamente bloccata — curl di adstransparency.google.com restituisce un bundle JS da 2.5 MB dove gli unici hit "hubspot" sono il parametro di query eco, zero creativi. Due difetti concreti trovati tramite esecuzione, non solo lettura: lo stub di una ricerca di inserzionista riuscita mostra che il flag --company non può mai funzionare, perché resolve_advertiser_id restituisce {advertiser_id, advertiser_name, url} mentre main() richiede result["domain"] ed esce con 1 ("Could not resolve company name to domain"); e la tabella di riepilogo --output raccomandata omette variantContent, il campo del testo dell'annuncio da cui dipende il caso d'uso di "analisi del messaggio" della skill stessa. Nessun pattern pericoloso (nessun curl|sh, nessun base64, nessuna esfiltrazione di segreti, nessun testo di iniezione), sebbene il token API sia passato come parametro di query URL ?token= e inviato a api.gooseworks.ai quando GOOSEWORKS_API_KEY è impostato.

Testato il: 2026-07-21 · Claude Code 2.x (agent harness)

Installazione

git clone --depth 1 https://github.com/gooseworks-ai/goose-skills.git /tmp/google-ad-scraper-src
mkdir -p ~/.claude/skills
cp -R /tmp/google-ad-scraper-src/skills/ads/capabilities/google-ad-scraper ~/.claude/skills/google-ad-scraper
# pip3 install requests   # undeclared dependency, no requirements.txt in the skill
# export APIFY_API_TOKEN=apify_api_...   # or GOOSEWORKS_API_KEY=... to route via api.gooseworks.ai
# Run: python3 ~/.claude/skills/google-ad-scraper/scripts/search_google_ads.py \
#        --domain hubspot.com --max-ads 30 --output summary
# Note: SKILL.md's examples use skills/google-ad-scraper/scripts/... which matches neither the repo layout nor the install dir.

Comandi e prompt di esempio

  • /google-ad-scraperEstrae gli annunci Google live di un concorrente per dominio tramite un attore Apify; richiede un token Apify

Gli skill si attivano con richieste in linguaggio naturale, senza comandi da ricordare. Dopo l'installazione, prompt come questi lo attivano (in inglese):

  • Scrape our competitor's Google Ads by domain
  • Show me what ad formats this competitor is running
  • Research competitor messaging from their Google ads