apple-search-ads
Start or tune an app Product's Apple Ads — create the Brand / Category / Competitor / Discovery campaigns from a monthly budget, or audit the account and propose bid, budget, keyword and negative changes.
Written by Kwern, after the skill of the same name in Eronred's aso-skills, MIT. Updated 2026-10-05.
The file, as Kwern runs it
Nothing below is rewritten or cut. The description a model routes on comes first, then the file itself. The whole thing, frontmatter included, is at /skills/apple-search-ads.md.
description
Start or tune an app Product's Apple Ads — create the Brand / Category / Competitor / Discovery campaigns from a monthly budget, or audit the account and propose bid, budget, keyword and negative changes. Use for "Start Apple Ads campaigns", "Apple Search Ads", "ASA", "my bids", "TTR", "Search Match", "negative keywords", "scale my campaign". For Meta, Google or TikTok paid acquisition use ads; for the pages the ad groups land on use custom-product-pages.
Two branches:
- Start — the ad account runs no campaign for this app, or the User asks to start one. Monthly budget → structure → target CPA per campaign → one Proposal per campaign. Only a Chat starts: it holds
connector_apple_ads_propose_campaign. - Tune — the campaigns exist. Audit them and turn what the data shows into spend Proposals. The Apple Ads Loop runs this branch; when the account has no campaign yet, its Output says so and names the Chat prompt "Start Apple Ads campaigns".
Benchmarks, seed lists, target CPAs and starting bids are in references/structure-and-bidding.md: read it before either branch.
Gather
read_context— positioning, ICP, competitors, target keywords, and a target CPA or LTV when the Foundation doc names one.app_store_listing— name and genres; the subtitle of each Locale fromconnector_asc_localizationswhen the ASC Connector exists.read_product_state— the App Store Surface'scountryis the app's home storefront.connector_apple_ads_campaigns— campaigns, ad groups, keywords, match types, bids, budgets and the last 30 days of spend, taps, tap installs, TTR and CPA.connector_apple_ads_search_terms— the search terms that converted, and the ones with taps and no installs.connector_asc_analyticswhen the ASC Connector exists — page views and downloads made from a page per source; their ratio onApp Store searchis the product page conversion that separates a keyword problem from a page problem.
Keyword research — connector_apple_ads_suggestions (Apple's keywords, phrases and suggested target CPA) and connector_apple_ads_search_term_popularity (search volume per term in one genre and storefront).
Without the Apple Ads Connector, lay out the structure, seeds and starting bids from the Foundation doc and app_store_listing, and name the Connection as what the creation step needs.
Start
- Monthly budget. Ask the User what they mean to spend on Apple Ads per month, in the ad account's currency, unless they already said. Size everything after it to that figure: the campaigns' daily budgets add up to about a thirtieth of it, and the plan states the split.
- Structure. The reference's four campaigns, one ad group each, with its seed lists and match types. Seed Category from Apple's keyword and phrase suggestions, with the title's and the category's terms as seeds, and rank the candidates by popularity in the app's genre and storefront; rank the Competitor names the same way and drop a name Apple does not rank. Target the home storefront unless the User names others. Name each campaign
<App> – <Type> – <storefronts>. - Target CPA per campaign. Set one per campaign from the reference's table, anchored to Apple's suggested target CPA and to LTV ÷ 3 when an LTV is known, and derive each ad group's default bid and keyword bids from it.
- Plan. Show the whole plan in one message: per campaign its name, storefronts, daily budget, target CPA, ad group, default bid, and keywords with match type and bid. Each campaign goes live enabled the moment the User approves its Proposal.
- Propose. Read the
connector-apisSkill'sreferences/apple-ads.mdwithread_reference(Creating a campaign) for what Apple accepts and where the ad account's currency is read, then callconnector_apple_ads_propose_campaignonce per campaign, carrying it whole. Itswhygives the campaign's share of the monthly budget and its target CPA. On approve, Kwern creates the campaign, its ad groups, their keywords and one ad per ad group showing the default product page. A write Apple refuses fails that Proposal with Apple's reason, and Retry resumes from what exists; when the reason needs a different plan, say what to change. A change the User asks for on a campaign still pending is oneedit_proposalcall on its Proposal, carrying the whole new plan inappleAdsCampaign.
Done when every campaign of the plan waits as its own Proposal, and the closing message lists them with their daily budgets against the monthly budget, and says the Apple Ads Loop tunes them once they are live.
Tune
Work through:
- Structure — which of the four campaigns exist, whether budgets are separated per intent, and whether Discovery feeds proven terms into exact-match ad groups.
- Keywords — per keyword: TTR, CVR, CPA against the campaign's target CPA, target CPT (
Target CPT = Target CPA × CVR) and impression share. Classify each: scale, hold, lower bid, pause. - Search terms — new converting terms to add as exact match; irrelevant terms to add as negatives; terms with 100+ taps and no install to pause.
- Pacing — month-to-date spend against the monthly budget in the briefing; a campaign that exhausts its daily budget before noon is budget-limited, one far under it is bid-limited.
- Page fit — an ad group with TTR under 3 % needs a matching custom product page (
custom-product-pages); high TTR with low CVR is a product page or paywall problem, not a bid problem.
Output: campaign audit
- Structure — Brand / Competitor / Category / Discovery, each present or missing. A missing campaign is created in a Chat, from the prompt "Start Apple Ads campaigns".
- Performance 30d — impressions, taps (TTR), tap installs (CVR), CPA and spend per campaign, against the benchmarks and the target CPAs.
- Top issues — ranked, each with its fix.
- Proposals — one per change, each carrying
current value → proposed valueand the expected effect on taps, installs and CPA. Types: keyword bid, ad-group default bid (manually bid ad groups only), campaign daily budget, pause or enable a keyword, an ad group or a campaign, negative keyword, keyword added to an existing ad group. - Scaling readiness — the reference's checklist, pass or fail, before any budget increase Proposal.
Done when every keyword with spend in the period is classified, every Proposal carries its current value, proposed value and expected effect, and the Output names the data it lacked when a Connector was absent.
Related Skills
custom-product-pages— the page each ad group lands on.metadata-optimization— the search-terms report feeds the keywords field.ads— paid acquisition on the other networks.analytics— attribution and LTV to set the target CPA.
What it discloses
The Skill reads these files only when it needs them, so the model spends nothing on them the rest of the time.
references/structure-and-bidding.md
From your accounts to a proposal
- 01
Connect what it reads
Give the Apple Ads agent the accounts it works on. Kwern never asks for a password, and an agent missing a connection says so instead of guessing.
- 02
The loop runs weekly
Before it writes a word it reads the foundation doc, which holds the positioning, the audience and the voice, and whatever its connectors return that day.
- 03
The apple-search-ads skill runs
The agent activates it when the run calls for it, and what the model then reads is the file on this page, word for word.
- 04
A proposal waits for you
Nothing is published and nothing is spent until you approve it. Approve and Kwern posts it where it holds the keys; where it does not, it hands you the text and the link.
The file, the agency, and the agent
| On your own | An agency | Kwern | |
|---|---|---|---|
| The method | Whatever you remember to do that week | Theirs, and you never get to read it | This file, open on this page |
| Who runs it | You, when there is time | An account manager, between other accounts | The Apple Ads agent, weekly |
| What it reads | What you can pull by hand | What you remembered to send them | Your connected accounts and your foundation doc |
| What comes out | A draft, sometimes | A deck, and a report at the end of the month | A proposal you approve or throw away |
| What it costs | Your evenings | A retainer | One subscription, and the model on your own key |
Questions about apple-search-ads
Pair it with
The other skills the same agents reach for during a run.
Someone is asking for what you built today.
On Reddit, on X, in ChatGPT's answers. Kwern finds them every morning and drafts the reply in your voice; you decide what goes out.