playbook-ad-library

Generates a cold-email personalization line from a company's active Meta Ad Library ads.

678|243|Updated Mar 10, 2026
One-click install
npx skills add https://github.com/growthenginenowoslawski/coldoutboundskills --skill playbook-ad-library
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: playbook-ad-library
Source: https://github.com/growthenginenowoslawski/coldoutboundskills/tree/main/skills/playbooks/playbook-ad-library
Command: npx skills add https://github.com/growthenginenowoslawski/coldoutboundskills --skill playbook-ad-library

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Cold email personalization requires knowing what a prospect is actively advertising, but the Meta Ad Library is keyed to Facebook Pages while lead lists are keyed to company domains, and naive lookups return the wrong company's page or fabricated ad claims.

Core Features & Use Cases

  • Verified page discovery chain: Resolves a bare domain to a verified Facebook Page via website HTML scraping, gated SERP search, and a rendering proxy, with three anti-false-positive gates.
  • Metered ad fetching with cost controls: Calls the Apify facebook-ads-scraper with onlyTotal billing, a 45-day domain cache, and dedup to prevent per-ad billing surprises.
  • Guarded line writer: Produces a lowercase ad_library_line merge field using a locked prompt, deterministic lint guards, an ungrounded-words check, and a mandatory truth judge on 100% of rows.
  • Use Case: Given a lead list of ecommerce brands, generate a "Noticed {{ad_library_line}}." opener for each row, abstaining safely when no verified page or usable ad exists.

Quick Start

Give the skill a list of company domains and names and ask it to generate the ad_library_line personalization line for each row using the Meta Ad Library chain.

Frequently Asked Questions about playbook-ad-library

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I find a company's Facebook page from its domain?

Scrape the company homepage HTML for a facebook.com link first, then fall back to a gated SERP search for site:facebook.com with the company name. Accept a result only if the URL has one path segment, the title contains the company name, and the slug matches the domain's second-level label.

How do I check if a company is running Facebook ads?

Use the Apify facebook-ads-scraper actor with the verified page URL, setting onlyTotal:true and activeStatus:active. This returns the active ad count and sample ad copy at one billed item per page instead of per ad.

Why does Meta Ad Library scraping return the wrong company's page?

SERP results for a brand name often surface posts on unrelated pages mentioning the brand. The playbook blocks this with three gates: a root-page URL check, a title-match check, and a slug-to-domain-label match, abstaining rather than guessing.

Does the Meta Graph API work for commercial ad data?

No. Outside the EU, Meta's ads_archive API only returns political and issue ads, so it returns nothing for commercial brands and requires a verified Business app. The playbook uses the Apify scraper instead.

How do I stop an AI from inventing ad claims in personalization lines?

Run a deterministic ungrounded-words check first, verifying every content word appears in the actual ad text, then apply a truth-judge model call on 100% of lines. Structural lint alone cannot catch semantic errors.

What are the limitations of Meta Ad Library personalization?

Roughly half of a cold list ends with an empty line because no Facebook page can be verified, and brands advertising under differently-named product pages are missed. The playbook abstains rather than loosening gates, since a wrong page costs the same as a right one.