Quick overview
This workflow runs weekly, uses Bright Data to fetch Meta Ad Library results for your competitor search terms, extracts ad age and landing URLs, summarizes angles with OpenAI (GPT-5.6), and emails an HTML digest through Gmail while deduplicating previously reported ads via an n8n Data Table.
How it works
- Runs on a weekly schedule.
- Builds Meta Ad Library search URLs for each watch term and fetches the result pages via Bright Data Web Unlocker.
- Parses each results page into individual ads, extracting the library ID, advertiser, ad text, offer, creative URL, start date, days running, and unwrapped landing page URL (including UTM parameters).
- Sorts and caps ads per term, marks ads as “proven” once they exceed the configured days-running threshold, and deduplicates ads that appear under multiple terms.
- Checks an n8n Data Table to keep only ads that have never been reported before, then stores the new library IDs for future runs.
- Fetches a small set of top landing pages (one per domain) through Bright Data and extracts live offer/price cues to compare against the ad promise.
- Uses OpenAI to summarize the dominant offers and angles (including advertiser names and day counts) and sends a formatted HTML email digest via Gmail.
Setup
- Add a Bright Data Web Unlocker zone and configure HTTP Header Auth credentials (Authorization: Bearer <key>) for the Bright Data requests.
- Add an OpenAI credential (model set to gpt-5.6-terra) and a Gmail credential for sending the digest.
- Create an n8n Data Table named
meta_ads_seen with a library_id column.
- Update the Settings values for
watch_terms, country, proven_after_days, caps for ads/landing pages, and the recipient address in email_to.