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

par gooseworks-ai · gooseworks-ai/goose-skills

Fonctionne avec configuration ★ 6.4/10

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

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 domain
  • Show me what ad formats this competitor is running
  • Research competitor messaging from their Google ads