agentsclimarketplace

Competitor ad teardown

Skill redwoodmeridian/ranql-skills/plugins/ranql/skills/competitor-ad-teardown

Use when the user wants to see, analyze, or learn from competitors' ads — Facebook/Instagram or Google. Triggers include "what are my competitors running", "show me competitor ads", "what's working for [firm]", "analyze their creative", "what ads should I steal/beat", "teardown", or any competitor creative research. Produces a structured teardown of hooks, angles, offers, CTAs, formats, and proven winners that feeds the ad-creative-studio skill. Requires ranql-recon.From its SKILL.md

Install
npx -y skills add redwoodmeridian/ranql-skills --skill competitor-ad-teardown

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

7.0 KB, ~1.6k tokens by cl100k_base, as published. Nobody here has run it

Competitor Ad Teardown

Goal: turn a competitor's live ads into a structured, honest teardown you can build better creative from. The output feeds ad-creative-studio.

Step 1 — Get the exact Facebook page URLs from the user (do NOT guess)

You don't need a saved Ranql profile to do this. A teardown runs entirely off what the user gives you in the chat — you pass it straight to ads_facebook_ads as parameters. So don't send them to onboarding first; just collect what you need and run.

Facebook ad lookups fail silently if you just pass a domain. The single most reliable move is to have the exact Facebook page URL for every firm you'll analyze — theirs and each competitor's.

Ask the user to paste them. Say something like:

"To pull accurate ads, paste the Facebook page URL for your firm and for each competitor you want me to analyze — e.g. https://www.facebook.com/YourFirm. (Open their page on Facebook and copy the address bar.) If you don't have one, tell me the firm name + city and I'll try to find it, but I'll confirm it with you before trusting the results."

Rules:

  1. Never assume or invent a page URL. If you don't have a confirmed URL and can't find one you're confident about, ask — don't guess. A wrong guess shows the firm a stranger's (or spam) ads.
  2. When you do try to find one yourself: web-search "<firm name> <city> facebook", take the official page, and verify (next step). If unsure, show the user the page you found and ask "is this you/them?" before pulling.
  3. Call ads_facebook_ads with facebook_page_url set (plus domain, firm_name, city, state).
  4. For a creative teardown, add deep=true — this returns each ad's video_url, video_preview_url, and DCO carousel cards (the real creative behind {{product.name}} placeholder ads). Without it you're blind to the video and DCO ads, which are usually the winners.
  5. Check data.ownership.verified. If false, you got the wrong page — the headline says so. Get a better URL from the user and retry. Never present unverified ads as theirs (a lookup once returned an adult-app spam page for a law firm — see ranql-recondata-trust.md).

Once you have the URL and ownership is verified, the pull is reliable — the endpoint won't mislabel a confirmed page. For Google ads, call ads_google_ads (domain-based). For a fast own-vs-sector view, ads_creative_analysis.

A verified zero is a real finding: "they're not advertising on Facebook" is an opportunity, not a dead end.

Step 2 — Read the creative like a strategist

For each verified ad you get back, capture:

  • Hook — the first line / headline. What attention-grab? (question, stat, fear, offer, social proof)
  • Angle — the underlying promise or emotion (max compensation, speed, empathy, "no fee unless we win", local trust, urgency).
  • Offer / CTA — "Free Case Review", "Learn more", "Sign up", a giveaway, a guarantee.
  • Format — IMAGE / VIDEO / DCO (dynamic). Video and DCO signal budget and testing maturity.
  • Longevitydays_running / longest_running_days. Anything running 90+ days is a proven winner — the firm doesn't pay to keep losers live. These are the ads to study hardest.
  • Landing destinationlanding_url on each ad. Tells you their funnel (dedicated LP vs homepage vs intake form) — and confirms ownership (an ad linking to the firm's own domain is theirs).
  • Platforms — Facebook, Instagram, Audience Network, Messenger, Threads. Breadth = spend.

Look at the actual image/video, not just the text. Each ad carries image_url and video_preview_urlfetch and view them. Note the visual pattern: real photos vs graphics, faces vs scenes, production quality (a cinematic studio spot signals a big-brand competitor; a talking-head reel signals UGC/educational), brand colors, text density, logo placement, emotional register. Creative wins or loses on the visual — the copy is half the story. (Verified in the field: the market leader's 72-day winner was a TV-quality cinematic brand spot, not a direct-response graphic — you only learn that by looking.)

DCO (dynamic) ads show {{product.name}} placeholders instead of real copy. With deep=true, their real creative comes back in the ad's cards[] array — each card has its own image_url / video_preview_url and copy. Fetch and view those. Video ads return a video_url (the actual file — download it to sample frames or read the on-screen text) and a video_preview_url (poster frame — view it fast). The winners are usually here, so always run a teardown with deep=true.

Step 3 — Find the patterns (across ads, across competitors)

Run 2–4 top competitors (the profile's competitors list is your starting set). Then synthesize:

  • What's the dominant angle in this market? (e.g. PI firms nearly all lead with "how much is your case worth")
  • Which hooks recur? Recurrence + longevity = what converts in this market.
  • What formats dominate? If everyone runs static and one firm runs video, that's a gap.
  • What's the offer convention? ("Free Case Review" is table stakes in PI — matching it is necessary, beating it is the opportunity.)
  • Where are the gaps? An angle nobody uses, an audience nobody targets, a format nobody runs. That's your opening.

Step 4 — Produce the teardown

Deliver a structured teardown (see references/teardown-template.md):

  1. Market creative snapshot — the dominant angles, hooks, offers, formats across competitors.
  2. Proven winners — the specific 90+-day ads, with their hook/angle/why-it-works.
  3. Per-competitor summary — what each is doing and how aggressively.
  4. Gaps & openings — where this firm can differentiate.
  5. Spin recommendations — for the top 2–3 winning angles, how to take the proven structure and make it better for this firm (sharper hook, stronger proof, better offer, a format nobody's using). This is the bridge to ad-creative-studio — never copy, always spin and improve.

Reliability checklist before you present

  • Every competitor's ads came back ownership.verified: true
  • You looked at the actual creative (images), not just the JSON
  • Landing destinations make sense for that firm/practice area
  • Any "0 ads" is a verified zero, not a failed lookup

Then hand the teardown to ad-creative-studio (to build) or campaign-builder (to plan the buy). Pull the firm's own look with brand-kit-extractor first so new creative is on-brand.

What ships with it: 1 file

1.5 KB alongside SKILL.md

references/

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.