Systems Lab

Agent skill

gtm-competitor-ad-watch

Track the ads your competitors run on Meta and Google, and what is new since last time.

activeReaches the webInstructions only473 words

Filed under Positioning and messaging.

From loootai/gtm-skills · 15 skill entries · 0 · pushed 2026-10-08

What it does when it runs

Track the ads your competitors run on Meta and Google, and what is new since last time. Use when the user says "what ads are my competitors running", "competitor ad watch", "new Facebook ads from these brands", "which competitor ads have run longest" or "ad angles my competitors test". Reads the Meta Ad Library and Google ads transparency data through looot, about $0.002 to $0.006 per competitor, and keeps state in a JSON file.

Automated analysis of the skill and the 0 files bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.

Keys and connectors you must supply
None found.
Hosts it reaches
  • acme.com
  • api.looot.ai
Tool permissions it declares
No allowed-tools in the frontmatter. It only issues instructions, so there is nothing to bound.
Actions present in the files
None. Instructions only.

Ask about gtm-competitor-ad-watch

Opens your assistant with this page's verified links already in the prompt.

Is this safe to install?ClaudeChatGPT
Adapt it to my stackClaudeChatGPT
What else do I need for it to workClaudeChatGPT
Rather ask a human? Talk to Cheetah
git clone --depth 1 --filter=blob:none --sparse https://github.com/loootai/gtm-skills.git /tmp/gtm-skills
git -C /tmp/gtm-skills sparse-checkout set "skills/gtm-competitor-ad-watch"
mkdir -p ~/.claude/skills/gtm-competitor-ad-watch
cp -R "/tmp/gtm-skills/skills/gtm-competitor-ad-watch/." ~/.claude/skills/gtm-competitor-ad-watch/

Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗

The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.

Reproduced in full from loootai/gtm-skills/blob/1cb22eede6829b8f9fa87a78e6957a97e4032bd5/skills/gtm-competitor-ad-watch/SKILL.md, which is licensed MIT (repository). 473 words, 11 headings.

Competitor ad watch

An ad that keeps running for months is an ad that converts. This skill reads each competitor's active ads, records when each ad started, flags new ads since the last check and the long runners, and groups the copy by angle so the user sees what competitors are testing.

Needs looot connected (MCP server https://api.looot.ai/mcp, or the looot skill from npx skills add loootai/looot-skills). Searching and inspecting are free; runs are paid from the prepaid balance.

Ask for these inputs

  • Competitors: brand names and domains (up to 20).
  • Country (default US) and platforms (Meta by default, Google optional).
  • Where state lives (default ad-watch.json).

Steps and prices

Prices are the cheapest live provider in the public looot catalog on 2026-10-08. inspect shows the live price.

#Job idInputPrice on 2026-10-08
1ads.meta.searchthe brand name or page, countryfrom $0.00188 per call
2 (optional)Google ads transparency: search the catalog for google ads transparency and use the job id it returnsthe domaincheck inspect before quoting

Expected total: about $0.002 per competitor per check on Meta; 10 competitors weekly ≈ $0.02.

Quote before you run

  1. Competitors × platforms × the prices above. For step 2, quote only after inspect.
  2. Tell the user the total and the balance; wait for a yes. More than 100 runs: an explicit yes.
  3. Cap each run with fallback.maxCostUsd (0.02).

Run it

Inspect once: some providers take a page id, others a search term; the paging field also differs.

run {"endpointId": "job:ads.meta.search", "input": {"query": "Acme", "country": "US"}, "idempotencyKey": "ads-2026-W41-acme", "fallback": {"maxAttempts": 3, "maxCostUsd": 0.02}}

Keep only ads whose page name or link domain matches the competitor. For each ad record: ad id, start date, days running, headline, body, call to action, landing URL. Compare ad ids with the state file. Group copy into angles (price, speed, a named rival, social proof, a feature, an offer) by the main claim of the headline.

Output format

# Ad watch, week 2026-W41 (US, Meta), 6 competitors, cost $0.012

| Competitor | Active ads | New since last check | Longest running (days) | Top angle |
|---|---|---|---|---|
| Acme | 23 | 4 | 141 | price |

## New ads
- Acme, started 2026-10-04: "Half the price of <rival>" -> https://acme.com/compare (angle: price)

## Long runners (90+ days)
- Acme, 141 days: "Set up in 5 minutes" (angle: speed)

Cost and stop rules

  • One page of ads per competitor unless the user asks for more.
  • Two failures on a competitor: list it under errors.

When not to use this skill

  • One brand's Meta ads, one time: looot-meta-ads-library in loootai/looot-skills.

Other skills for the same job

Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.

Need help setting it up?

This page tells you what gtm-competitor-ad-watch does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.

Book a call →

The directory stays free. There is nothing gated behind this.