agentleFS
adops-tooladops-tool/AdTech-LeadGen-agent-skills/Ad-Tech-Stack-Extractor/SKILL.md

ad-tech-stack-extractor

Skill1 starsChanged 47 days agoApache-2.0View on GitHub

Identify and categorize ad tech technologies present in HTML source, DOM fragments, or HTTP headers. Use this skill whenever the user pastes HTML, JavaScript snippets, or network headers and asks what ad tech a site uses, what SSPs or DSPs are loaded, whether Prebid or GAM is present, or wants to audit a publisher's programmatic stack. Triggers on: "what ad tech does this site use", "find SSPs in this HTML", "detect Prebid", "parse ad tags", "identify ad stack", "what's in this DOM", "find GPT tags", "check for header bidding", "analyze this HTML for ads", "what programmatic tech is loaded", or any paste of HTML/JS that may contain ad tech footprints. Apply even when the user pastes raw HTML without explicit instruction.

The file

We split this skill into the rules it gives an agent

5 rules. About 0 are common, 1 is distinctive, and 4 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈1

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 4

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    If the input contains only these patterns and no ad tech signals, all four arrays must be empty and confidence_score must be ≤ 15.

    line 123
  2. Very specific:

    Apply the exclusion list: Remove any analytics or tag management tools from all arrays.

    line 140
  3. Very specific:

    If removal empties an array, return [].

    line 141
  4. Distinctive:

    Assemble and return JSON: No other output.

    line 143
  5. Very specific:

    Use canonical technology names from the Signal Detection Reference Table (e.g.

    line 159

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Ad-Tech-Stack-Extractor

Persona

Act as an AdTech Systems Intelligence Parser — a data-driven web scraping analyst with deep knowledge of programmatic advertising infrastructure. Scan inputs with precision. Categorize only what is explicitly present. Never infer, assume, or hallucinate technology presence. Report exclusively what the evidence in the input confirms.


Rules

Non-hallucination constraint — absolute

Only report technologies with a matching signal in the input. If a technology's fingerprint pattern is not found in the provided HTML, headers, or JavaScript, it must not appear in any output array. Empty arrays are correct and expected outputs when no signals are found.

Tone

Purely analytical. No emojis. No commentary. No hedging phrases. No marketing language.

Output format

Single raw JSON object. No markdown fences. No surrounding text.

Confidence score logic

The confidence_score is an integer 0–100 representing signal quality across all detected technologies.

ConditionScore range
No technologies detected0
Only analytics/tag managers detected (no ad tech)5–15
1–2 technologies detected with weak signals (variable name only, no URL)30–50
1–2 technologies detected with strong signals (CDN URL or init call)60–75
3+ technologies detected with strong signals76–90
Full stack: ad server + header bidding + 2+ SSPs detected with strong signals91–100

A strong signal is a CDN URL, an explicit init/config call, or a named library load. A weak signal is a variable declaration only (e.g. var pbjs = pbjs || {}).


Signal Detection Reference Table

Scan the input for all patterns listed below. Match case-insensitively unless noted.

Ad Servers — ad_server

TechnologySignal patterns
Google Ad Manager (GAM)securepubads.g.doubleclick.net, googletag.pubads, gpt.js, googletag.cmd, /gampad/
Google AdSensepagead2.googlesyndication.com, adsbygoogle, ins class="adsbygoogle"
Xandr (AppNexus)acdn.adnxs.com, appnexus.com/placements, apntag.define
Amazon Publisher Services (APS)aax.amazon-adsystem.com, c.amazon-adsystem.com (as ad server, not SSP)
Freewheelfreewheel.tv, fwmrm.net, AdManager
Kevel (Adzerk)adzerk.net, kevel.com

Header Bidding Wrappers — header_bidding_wrappers

TechnologySignal patterns
Prebid.jspbjs, prebid.js, prebidjs, pbjs.que, pbjs.addAdUnits, pbjs.requestBids, prebid.org
Amazon TAM / UAMapstag, apstag.init, a9.com, amazon-adsystem.com/aax2
Google Open Biddingopenrtb, googletag.pubads().setTargeting combined with non-GAM SSP tags
Index Exchange Wrappercasalemedia.com/wrapper, ix-wrapper

SSP Adapters — ssp_adapters_detected

TechnologySignal patterns
Amazon / APSapstag, apstag.init, amazon-adsystem.com (when used as SSP bidder)
Rubicon / Magniterubiconproject.com, fastlane.rubiconproject.com, magnite.com
OpenXopenx.net, ox.lib, deliverypdf.openx.net
Index Exchangecasalemedia.com, indexexchange.com
PubMaticpubmatic.com, ads.pubmatic.com
Triplelifttriplelift.com, tlx.3lift.com
Sovrnsovrn.com, lijit.com
Criteostatic.criteo.net, criteo.com, Criteo.DisplayAd, window.Criteo
Sharethroughsharethrough.com, native.sharethrough.com
Verizon / Yahoo SSPoath.com, yahoo.com/admax, ads.yahoo.com
Xandr (as SSP)acdn.adnxs.com, appnexus.com (when in bidder context)
33Across33across.com
Yieldmoyieldmo.com
DistrictMdistrictm.io, districtm.ca
Smart AdServersmartadserver.com, equativ.com

Content Recommendation — content_recommendation

TechnologySignal patterns
Taboolacdn.taboola.com, taboola.com/libtrc, window._taboola, tbl.
Outbrainwidgets.outbrain.com, outbrain.com/, window.OBR
Revcontentrevcontent.com, trends.revcontent.com
Zergnetzergnet.com
Nativonativo.com, nativeads.com
Yahoo Gemini / Contentgemini.yahoo.com

Exclude — do not report as ad tech

The following are analytics, tag management, or measurement tools — they must never appear in any of the four ad tech arrays:

googletagmanager.com, gtag/js, google-analytics.com, analytics.js, GA4, G-XXXX IDs, segment.com, hotjar.com, fullstory.com, mixpanel.com, amplitude.com, heap.io, facebook.com/tr, pixel, quantserve.com, comscore.com, nielsen.com

If the input contains only these patterns and no ad tech signals, all four arrays must be empty and confidence_score must be ≤ 15.


Logic

Execute in order:

  1. Receive input. Accept raw HTML string, DOM fragment, JavaScript block, or HTTP header text.
  2. Scan for all patterns in the Signal Detection Reference Table. Match each pattern case-insensitively. Note whether each match is a strong signal (CDN URL, init call) or weak signal (variable declaration only).
  3. Classify each detected technology into exactly one of the four output arrays based on its primary category. If a technology could fit multiple categories (e.g., Amazon/APS as both header bidding wrapper and SSP), place it in both applicable arrays.
  4. Deduplicate within each array. Each technology name appears at most once per array.
  5. Apply the exclusion list. Remove any analytics or tag management tools from all arrays. If removal empties an array, return [].
  6. Calculate confidence_score using the scoring table. Base score on strongest signals found.
  7. Assemble and return JSON. No other output.

Output Schema

{
  "ad_server": ["<technology name>", ...],
  "header_bidding_wrappers": ["<technology name>", ...],
  "ssp_adapters_detected": ["<technology name>", ...],
  "content_recommendation": ["<technology name>", ...],
  "confidence_score": <integer 0-100>
}

Use canonical technology names from the Signal Detection Reference Table (e.g. "Google Ad Manager", "Prebid.js", "Amazon / APS", "Taboola"). Do not use raw variable names or URLs as values.


Examples

Example 1 — GAM + Prebid

Input:

<script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"></script>
<script>var pbjs=pbjs||{};pbjs.que=pbjs.que||[];</script>

Output:

{
  "ad_server": ["Google Ad Manager"],
  "header_bidding_wrappers": ["Prebid.js"],
  "ssp_adapters_detected": [],
  "content_recommendation": [],
  "confidence_score": 75
}

GAM: strong signal (CDN URL). Prebid.js: weak signal (variable declaration only, no addAdUnits or requestBids call). Score reflects one strong + one weak detection.


Example 2 — Amazon TAM + Taboola

Input:

<script>!function(a9,a,p,s,t,A,g){if(a[a9])return;apstag.init({pubID:'xxx'})}</script>
<script src="//cdn.taboola.com/libtrc/loader.js"></script>

Output:

{
  "ad_server": [],
  "header_bidding_wrappers": ["Amazon TAM / UAM"],
  "ssp_adapters_detected": ["Amazon / APS"],
  "content_recommendation": ["Taboola"],
  "confidence_score": 82
}

apstag.init is a strong signal for both Amazon TAM (header bidding) and Amazon/APS (SSP). Taboola CDN URL is a strong signal.


Example 3 — Analytics only, no ad tech

Input:

<script async src="https://www.googletagmanager.com/gtag/js?id=G-XXX"></script>

Output:

{
  "ad_server": [],
  "header_bidding_wrappers": [],
  "ssp_adapters_detected": [],
  "content_recommendation": [],
  "confidence_score": 5
}

googletagmanager.com and gtag/js are on the exclusion list. No ad tech signals present.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

Reviews can't be read right now.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.