Google Ad Scraper
Récupère les annonces Google Ads actives d'un concurrent par domaine via un acteur Apify ; nécessite un jeton Apify
Fonctionne avec configuration
Ce que fait
Enveloppe une CLI Python qui appelle l'acteur Apify `burbn/google-ads-search` pour récupérer les annonces qu'un domaine donné diffuse actuellement sur Google, renvoyant l'ID de l'annonceur, l'ID de la création, le format de l'annonce, le texte de l'annonce, l'URL de destination et la date de début au format JSON ou sous forme de tableau. Se déclenche lorsque vous demandez de scraper ou de rechercher les Google Ads d'un concurrent, de rechercher leurs créations publicitaires ou d'analyser le message derrière leurs annonces de recherche et d'affichage. Nécessite un APIFY_API_TOKEN (ou une clé API Gooseworks) et une exécution Apify payante par domaine.
Rapport de test
Compétence trouvée à skills/ads/capabilities/google-ad-scraper/ (SKILL.md, scripts/search_google_ads.py, skill.meta.json tous HTTP 200) et script exécuté localement : --help, chemins missing-args et missing-token se comportent tous comme documenté, et format_summary rendu correctement sur un jeu de données factice formaté selon le schéma documenté. Je n'ai pas pu exécuter un vrai scrape (nécessite APIFY_API_TOKEN plus une exécution payante d'acteur Apify), donc outputMeasured est faux ; j'ai vérifié que l'alternative de base est réellement bloquée — curl de adstransparency.google.com renvoie un bundle JS de 2,5 Mo où les seuls hits "hubspot" sont le paramètre de requête écho, zéro créatifs. Deux défauts concrets trouvés par l'exécution, pas seulement la lecture : la simulation d'une recherche d'annonceur réussie montre que le flag --company ne peut jamais fonctionner, car resolve_advertiser_id renvoie {advertiser_id, advertiser_name, url} tandis que main() nécessite result["domain"] et se termine avec 1 ("Could not resolve company name to domain") ; et le tableau récapitulatif --output recommandé supprime variantContent, le champ de copie d'annonce dont dépend le cas d'utilisation "messaging analysis" de la compétence. Pas de modèles dangereux (pas de curl|sh, pas de base64, pas d'exfiltration de secrets, pas de texte d'injection), bien que le jeton API soit passé comme paramètre de requête URL ?token= et soit envoyé à api.gooseworks.ai lorsque GOOSEWORKS_API_KEY est set.
Testé le: 2026-07-21 · Claude Code 2.x (agent harness)
Installation
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.
Commandes et exemples de prompts
/google-ad-scraperRécupère les annonces Google Ads actives d'un concurrent par domaine via un acteur Apify ; nécessite un jeton Apify
Les skills se déclenchent sur des demandes en langage courant — aucune commande à retenir. Après installation, des prompts comme ceux-ci l'activent (en anglais) :
Scrape our competitor's Google Ads by domainShow me what ad formats this competitor is runningResearch competitor messaging from their Google ads