appeeky/ua-skills

asa-negative-keywords

When the user wants to add Apple Search Ads negative keywords from search terms reports or block wasted spend.

Zobacz źródło

Jak używać

  1. Skopiuj polecenie instalacji i sprawdź źródła przed instalacją we własnym środowisku agenta.
  2. W oryginale sprawdź wymagane narzędzia, dane dostępowe i obsługiwane środowiska.
  3. Opisz dane wejściowe i oczekiwany rezultat; porównaj wynik ze źródłami.
npx skills add https://github.com/appeeky/ua-skills --skill asa-negative-keywords

Przed rozpoczęciem

  • Instalacja nie obejmuje subskrypcji modelu, limitu API ani uprawnień do plików.
  • Gwiazdki i instalacje pokazują aktywność, a nie niezależny test jakości lub bezpieczeństwa.
Oryginalny dokument Skill

Treść z repozytorium z zachowaniem nagłówków, przykładów, kodu, tabel, linków i obrazów.

ASA Negative Keywords

You are an Apple Search Ads operator focused on waste reduction. Block irrelevant search terms that drain budget without producing installs or revenue.

Why Negatives Matter

Search Match and broad match campaigns surface queries you never intended to target. Without negatives:

  • 10–30% of ASA spend goes to irrelevant searches
  • Competitor brand terms trigger accidentally
  • "Free" and "hack" intent users never convert
  • ROAS looks worse than it should on good keywords

Negatives are the highest-ROI ASA action — zero creative cost, immediate savings.

Initial Assessment

  1. Read app-ads-context.md for app category and target keywords
  2. Check asa_credentials_status
  3. Identify campaigns with Search Match or broad match enabled
  4. Default lookback: 14 days, minimum spend threshold: $5 per term

Workflow

Step 1 — Pull search terms

For each active campaign (especially Discovery and Category):

asa_report_search_terms
  campaign_id: "<id>"
  days: 14
  limit: 100

Pull from all campaigns — brand campaigns can also pick up irrelevant terms.

Step 2 — Classify terms

Flag terms matching any criteria below:

FlagCriteriaExample
Irrelevant intentTerm unrelated to app function"calculator" for a meditation app
Competitor brandRival app name you're not targetingCompetitor you're not conquesting
Zero conversionsSpend > $20, 0 installs (14d)Any high-spend zero-install term
Free/crack intentUser wants free or pirated version"free", "hack", "mod apk", "cracked"
Wrong platformAndroid terms on iOS-only app"apk", "google play"
Wrong categoryAdjacent but wrong use case"games" for a productivity app
Kids/parental mismatchAudience mismatchTerms indicating wrong age group
Low TTR waste500+ impressions, 0 tapsApple showing ad but nobody clicks

Step 3 — Choose match type

Match TypeBlocksUse when
EXACTOnly that exact querySingle bad query repeating (e.g. "spotify free")
BROADQuery + close variantsBlock entire theme (e.g. "free games")

Default to EXACT unless you see a pattern across 5+ related terms — then use BROAD.

Step 4 — Choose level

LevelScopeWhen to use
CampaignBlocks term across all ad groups in campaignMost common — use for Discovery waste
Ad groupBlocks term in one ad group onlyCompetitor ad group blocking specific rivals
asa_create_campaign_negative_keywords
  campaign_id: "<id>"
  keywords: [{ text: "...", matchType: "EXACT" }]

asa_create_adgroup_negative_keywords
  campaign_id: "<id>"
  ad_group_id: "<id>"
  keywords: [{ text: "...", matchType: "BROAD" }]

Step 5 — Verify existing negatives

Before creating, check for duplicates:

asa_list_campaign_negative_keywords
  campaign_id: "<id>"

asa_list_adgroup_negative_keywords
  campaign_id: "<id>"
  ad_group_id: "<id>"

Decision Matrix

Term profileSpendInstallsAction
Irrelevant + any spend> $50EXACT negative, campaign level
Theme pattern (5+ terms)> $50 combined0BROAD negative
Competitor (not targeting)> $100EXACT negative
Relevant but poor ROAS> $50> 0Lower bid, NOT negative
Relevant + high ROASany> 0Promote to exact match keyword
High impressions, 0 taps> 1000 imp0EXACT negative

Never negative a term that drives profitable installs — check asa_profitability at level: search_term for borderline cases.

Account-Level Negative Library

Maintain a shared list of universal negatives across all campaigns:

CategoryExample negatives
Free intentfree, gratis, kostenlos
Piracyhack, cracked, mod, apk
Wrong platformandroid, google play, apk download
Employmentjobs, hiring, career (for non-job apps)
Supportcustomer service, refund, cancel subscription

Add these to Discovery and Category campaigns at minimum. Do not add to Brand campaign (you want brand visibility).

Estimating Savings

For each negative added:

Estimated weekly savings = (term_spend_14d / 14) × 7

Sum across all negatives for the report. Typical first pass saves 10–25% of Discovery campaign spend.

Output Template

markdown
# ASA Negatives Added — [App Name] — [Date]

## Summary
- Terms reviewed: [N]
- Negatives added: [N]
- Estimated weekly savings: $___
- Campaigns updated: [list]

## Negatives added
| Term | Spend (14d) | Installs | Match | Level | Campaign |
|------|-------------|----------|-------|-------|----------|
| | $ | 0 | EXACT | Campaign | Discovery |

## Promoted to keywords (not negatived)
| Term | Spend | Installs | ROAS | Action |
|------|-------|----------|------|--------|
| | | | | Add exact match in Category |

## Skipped (needs more data)
| Term | Reason |
|------|--------|
| | Spend < $5, wait 7 more days |

## Recommended universal negatives
- [list for account-level application]

Ongoing Cadence

FrequencyAction
WeeklyReview search terms for Discovery + Category (part of asa-weekly-optimization)
After metadata changeRe-check — new keywords may attract new irrelevant terms
After CPP launchMonitor for 7 days — new creative may shift search term mix
MonthlyAudit negative list for over-blocking (check if relevant terms were blocked)

Common Mistakes

  • Negativing terms with installs that have acceptable ROAS
  • Using BROAD when EXACT is sufficient — broad can block good traffic
  • Only checking Discovery campaign — Category broad match also needs review
  • Not checking for duplicates before creating
  • Negativing at ad group level when campaign level is appropriate
  • Forgetting to negative competitor names in non-competitor campaigns

Cross-Skill Handoffs

SituationRoute to
Term is relevant but unprofitableasa-weekly-optimization (bid down)
Profitable terms to promoteasa-weekly-optimization (add keyword)
Full ROAS contextasa-roas-analysis
Metadata attracting wrong trafficaso-skills metadata-optimization

Related Skills

  • asa-weekly-optimization — Thursday negatives step in weekly cycle
  • asa-roas-analysis — profitability before negativing borderline terms
  • aso-skills apple-search-ads — match types and campaign structure
  • aso-skills keyword-research — understand intended vs. unintended keyword space

Powiązane zadania

z tego samego repozytorium

Więcej Skills

Wszystkie Skills
appeeky
Społeczność

ads-router

Single entry point that routes paid UA, mobile app ads, ad creatives, TikTok/Meta/ASA campaigns, ROAS, MMP setup, or Spark Ads requests to the correct specialist skill. Use FIRST when the user mentions ads, TikTok ads, Meta ads, Facebook ads, Apple Search Ads, ASA, CPA, CPI, ROAS, ad creative, Spark Ads, MMP, AppsFlyer, paid UA, or "help with my ad campaign" but the right skill is not obvious. Triggers "/ua-skill", "/ads-skill", "/growth-ads", "app ads help". Skip when user explicitly invokes a

instalacje
1
GitHub Stars
71
Aktualizacja
23 sie
appeeky
Społeczność

app-ads-context

When the user wants to create or update their paid growth context document with app info, ad accounts, budgets, CPI/CPA targets, LTV, and connected channels. Use when starting any paid ads project or when the user mentions "ads context", "growth brief", "my ad budget", or "target CPA". All other paid growth skills check for this file first. For organic ASO context, see app-marketing-context.

instalacje
1
GitHub Stars
71
Aktualizacja
23 sie
appeeky
Społeczność

campaign-profitability

When the user wants to know if their paid ads are profitable — LTV vs CPA, break-even CPI, ROAS, or margin after ad spend. Use when the user mentions "am I profitable on ads", "LTV vs CPA", "ad margin", "break even CPI", "can I scale ads", or "ROAS by channel". For subscription health baseline, see subscription-snapshot. For unified channel dashboard, see cross-channel-performance.

instalacje
1
GitHub Stars
71
Aktualizacja
23 sie
appeeky
Społeczność

competitor-ad-teardown

When the user wants to analyze competitor Meta ads, find what creatives competitors run, or research ad angles before creating their own. Use when the user mentions "competitor ads", "Meta Ad Library", "what ads is X running", "Facebook ads spy", "ad intelligence", or "swipe file". For generating your own creatives see meta-ad-creative or ad-creative-variants.

instalacje
1
GitHub Stars
71
Aktualizacja
23 sie