Skill detail
apify-ads-intelligence
Includes Meta ad intelligence but is cross-platform competitor research, not Meta Ads operations.
Inspect before use
Automated review checks relevance, not safety or endorsement. Read the source instructions before using this skill.
SKILL.md
The saved excerpt is a snapshot from review. The external source remains the complete and most current version.
--- name: apify-ads-intelligence description: Research, spy on, and analyze ads across Meta (Facebook & Instagram), Google (Ads Transparency Center + paid search results), TikTok (Ads Library + Creative Center), LinkedIn Ad Library, and X (Twitter — promoted tweets, best-effort) using Apify Actors. Use when user asks about competitor ads, ad library research, winning creatives, ad copy analysis, landing page audits from ads, cross-platform ad audits, brand transparency checks, or any task involving paid ad creatives, advertiser data, or ad targeting from public ad libraries. author: Sameh Jarour author_url: https://github.com/samehjarour --- # Ads Intelligence Cluster Answer natural language questions about ads, ad libraries, and competitor advertising activity by routing to the right Apify Actor and delivering a synthesized answer. **CLI rules:** Always pass `--user-agent apify-awesome-skills/apify-ads-intelligence`, `--json` (or the relevant `--format` flag on `datasets get-items`), and `2>/dev/null`. The `--user-agent` flag is critical for telemetry — never omit it. ## Note on platform coverage - **Meta, Google, TikTok, LinkedIn**: real public ad libraries with rich data (creatives, targeting, dates, reach where disclosed). - **X (Twitter)**: no public ad library exists. Coverage is a **best-effort workaround** that scrapes a brand's tweets and flags items with non-empty `card` field or `source` containing "Ads" as likely promoted. Always include the caveat in synthesis output. ## Note on overlap with `apify-ecommerce` That skill has an `ads-intelligence` intent that routes to `apify/facebook-ads-scraper` for shallow Meta-ad lookups. This skill is the deep dive across all five platforms. If you only need Meta ads as a side detail of an ecommerce question, stay in `apify-ecommerce`. If ads are the main task, use this skill. ## Prerequisites (No need to check it upfront) - Apify CLI v1.5.0+ (`npm install -g apify-cli`) - `jq` (recommended for response parsing and filtering; `brew install jq` on macOS, `apt install jq` on Linux) - Authentication via one of: - `apify login` (OAuth, opens browser) - `APIFY_TOKEN` env variable (e.g. `export APIFY_TOKEN=...` or `.env` file) - Token from [Apify Console → Settings → Integrations](https://console.apify.com/settings/integrations) Verify auth: `apify info --user-agent apify-awesome-skills/apify-ads-intelligence` — should show username and userId. ## Workflow Copy this checklist and track progress: ``` Task Progress: - [ ] Step 1: Detect intent and select Actor(s) - [ ] Step 2: Fetch Actor schema - [ ] Step 3: Ask user preferences (output format, result count, country) - [ ] Step 4: Run the Actor (or Actors in parallel for cross-platform-audit) and fetch results - [ ] Step 5: Synthesize a direct answer (not a data dump) ``` ### Step 1: Detect Intent and Select Actor Classify the user's message into an intent, then pick the right Actor. **Intent signals:** | Signals in user message | Intent | |-------------------------|--------| | "what ads is X running", "competitor [brand] ads", "[brand] FB/Google/TikTok/LinkedIn/X/Twitter ads", "show ads from [page]", "promoted tweets from [brand]" | `competitor-ads` | | "ads about [topic]", "find [keyword] ads", "ads for [vertical]", "fitness/fintech/saas ads" | `keyword-ads` | | "trending ads", "winning ads", "top ads", "best performing", "long-running ads", "creative inspiration" | `top-creatives` | | "where do these ads go", "landing pages from ads", "click destinations", "ad funnels" | `landing-page-audit` | | "compare X's ads across platforms", "all ads from [brand]", "cross-platform ad audit" | `cross-platform-audit` | If multiple intents detected, ask: *"Do you want [intent A] or [intent B]?"* **Actor routing — always try Primary first, switch to Fallback only if it fails or returns 0 results:** | Intent | Platform | Primary Actor | Fallback Actor | |--------|----------|---------------|----------------| | `competitorRead the full source on GitHub (opens external page)