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
npx -y skills add redwoodmeridian/ranql-skills --skill competitor-ad-teardownAssembled 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:
- 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.
- 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. - Call
ads_facebook_adswithfacebook_page_urlset (plusdomain,firm_name,city,state). - For a creative teardown, add
deep=true— this returns each ad'svideo_url,video_preview_url, and DCO carouselcards(the real creative behind{{product.name}}placeholder ads). Without it you're blind to the video and DCO ads, which are usually the winners. - Check
data.ownership.verified. Iffalse, you got the wrong page — theheadlinesays 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 — seeranql-recon→data-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.
- Longevity —
days_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 destination —
landing_urlon 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_url — fetch 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. Withdeep=true, their real creative comes back in the ad'scards[]array — each card has its ownimage_url/video_preview_urland copy. Fetch and view those. Video ads return avideo_url(the actual file — download it to sample frames or read the on-screen text) and avideo_preview_url(poster frame — view it fast). The winners are usually here, so always run a teardown withdeep=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):
- Market creative snapshot — the dominant angles, hooks, offers, formats across competitors.
- Proven winners — the specific 90+-day ads, with their hook/angle/why-it-works.
- Per-competitor summary — what each is doing and how aggressively.
- Gaps & openings — where this firm can differentiate.
- 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/
- teardown-template.md1.5 KB