create-image-fal
Generate or edit an image via any FAL image model (nano-banana edit, gpt-image, flux, ...), ROUTED THROUGH THE fal-proxy so it bills the Ads agent. image_urls…
Scrape competitor ads from Google Ads by domain. Returns ad creatives, formats, and campaign details. Use for competitive ad research and messaging analysis.
$ npx -y skills add gooseworks-ai/goose-skills --skill google-ad-scraper --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/google-ad-scraperContext preview
The summary Claude sees to decide when to auto-load this skill.
Scrape competitor ads from Google Ads by domain. Returns ad creatives, formats, and campaign details. Use for competitive ad research and messaging analysis.
name: google-ad-scraper description: Scrape competitor ads from Google Ads by domain. Returns ad creatives, formats, and campaign details. Use for competitive ad research and messaging analysis.
Scrape ads from Google Ads using the Apify `burbn/google-ads-search` actor. Search by domain to get ad creatives, formats, and campaign details.
Requires `APIFY_API_TOKEN` env var (or `--token` flag).
# Search by domain (recommended) python3 skills/google-ad-scraper/scripts/search_google_ads.py \ --domain "hubspot.com" # Search by company name (resolves to domain via transparency center) python3 skills/google-ad-scraper/scripts/search_google_ads.py \ --company "Nike" # Limit results python3 skills/google-ad-scraper/scripts/search_google_ads.py \ --domain "hubspot.com" --max-ads 30 # Human-readable summary python3 skills/google-ad-scraper/scripts/search_google_ads.py \ --domain "stripe.com" --output summary
1. **Domain Input**: Pass the target company's domain directly via `--domain` 2. **Company Name Resolution** (optional): If only `--company` is provided, the script searches Google Ads Transparency Center using Apify's web-scraper (Puppeteer) to resolve the company name to advertiser info 3. **Ad Scraping**: Calls the Apify `burbn/google-ads-search` actor with `{"domain": "...", "maxItems": N}` 4. **Output**: Returns ads as JSON or human-readable summary
| Flag | Default | Description | |------|---------|-------------| | `--domain` | none | Company domain (e.g. hubspot.com) — recommended | | `--company` | none | Company name (resolved to domain via transparency center) | | `--max-ads` | 50 | Maximum number of ads to return | | `--output` | json | Output format: `json` or `summary` | | `--token` | env var | Apify token (prefer `APIFY_API_TOKEN` env var) | | `--timeout` | 300 | Max seconds to wait for Apify run |
At least one of `--company` or `--domain` is required.
Each ad in the output contains:
{
"advertiserId": "AR13129532367502835713",
"advertiserName": "Nike, Inc.",
"creativeId": "CR12345678901234567890",
"originalUrl": "https://www.nike.com/",
"imageUrl": "https://...",
"variantFormat": "TEXT",
"variantContent": "Shop the latest Nike shoes...",
"variants": [...],
"variantCount": 3,
"startDate": "2026-01-15"
}**Output fields:**
| Field | Description | |-------|-------------| | `advertiserId` | Google Ads advertiser ID | | `advertiserName` | Company/advertiser display name | | `creativeId` | Unique ID for the ad creative | | `originalUrl` | Destination URL the ad links to | | `imageUrl` | URL of the ad image (if applicable) | | `variantFormat` | Ad format (TEXT, IMAGE, VIDEO, etc.) | | `variantContent` | Ad copy/text content | | `variants` | Array of ad variants | | `variantCount` | Number of variants for this creative | | `startDate` | Date the ad first appeared |
python3 skills/google-ad-scraper/scripts/search_google_ads.py \ --domain "competitor.com" --max-ads 100 --output summary
# Run for each competitor domain
for domain in "competitor1.com" "competitor2.com" "competitor3.com"; do
python3 skills/google-ad-scraper/scripts/search_google_ads.py \
--domain "$domain" --max-ads 50
donePut your AI agent on the growth team. Research customers and competitors, analyze what is working, create the next campaign, and learn from the result.
Repo: gooseworks-ai/goose-skills
Generate or edit an image via any FAL image model (nano-banana edit, gpt-image, flux, ...), ROUTED THROUGH THE fal-proxy so it bills the Ads agent. image_urls…
Generate a single photoreal or designed image with OpenAI gpt-image via fal.ai. Supports gpt-image-1 (default, fixed sizes — the FAL fallback for Higgsfield's…
Generate an instrumental music bed via ElevenLabs Music, ROUTED THROUGH THE elevenlabs-proxy so it bills the Ads agent. Trims any sparse intro, loudnorm, fades…
Image-to-video (or text-to-video) via any FAL video model (Kling, Seedance, Veo), ROUTED THROUGH THE GooseWorks fal-proxy so the call bills the Ads agent. The…
Generate a voiceover (VO) clip via ElevenLabs text-to-speech, ROUTED THROUGH THE elevenlabs-proxy so it bills the Ads agent. Voice id + script text come from…
Shared helper that routes ALL paid media generation (FAL image/video, ElevenLabs music) through the GooseWorks proxies so every call bills the Ads agent —…