Help us improve
Share bugs, ideas, or general feedback.
From Build Swift Apps
Manages Apple Ads via `asc ads`: auth, org lookup, campaigns, ad groups, keywords, reports, raw API requests, and safe live testing.
npx claudepluginhub xopoko/build-swift-apps --plugin build-swift-appsHow this skill is triggered — by the user, by Claude, or both
Slash command
/build-swift-apps:appstore-ads-operatorThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Apple Ads auth is separate from App Store Connect auth. Start read-only and require approval before live mutations.
Analyzes Apple Ads (formerly Apple Search Ads) campaign structure, bid health, Custom Product Pages, and attribution for mobile app advertisers.
Guides usage of the `asc` CLI for App Store Connect: command discovery, auth, output formatting, pagination, schemas, canonical verbs, Apple Ads, and timeout configuration.
Routes CLI commands for managing Meta Ads accounts, campaigns, ad sets, ads, and insights. Auto-activates when Meta Ads CLI or media buying intent is detected.
Share bugs, ideas, or general feedback.
Apple Ads auth is separate from App Store Connect auth. Start read-only and require approval before live mutations.
asc ads --help or subgroup help before scripting.--output json for automation.--org, or set ASC_ADS_ORG_ID.--file.asc ads auth login --name "Marketing" --client-id "$ASC_ADS_CLIENT_ID" \
--team-id "$ASC_ADS_TEAM_ID" --key-id "$ASC_ADS_KEY_ID" \
--private-key "$ASC_ADS_PRIVATE_KEY_PATH" --org "$ASC_ADS_ORG_ID" --network
export ASC_ADS_CLIENT_ID="SEARCHADS_CLIENT_ID"
export ASC_ADS_TEAM_ID="SEARCHADS_TEAM_ID"
export ASC_ADS_KEY_ID="KEY_ID"
export ASC_ADS_PRIVATE_KEY_PATH="$HOME/.asc/apple-ads-private-key.pem"
export ASC_ADS_ORG_ID="123456"
asc ads auth status --validate --output json
asc ads auth doctor --output json
asc ads me view --output json
asc ads acls --output json
Org precedence: --org, ASC_ADS_ORG_ID, stored profile org_id, config ads.org_id.
asc ads campaigns --org "123456" --paginate --output json
asc ads campaigns view --org "123456" --campaign 987654321 --output json
asc ads ad-groups list --org "123456" --campaign 987654321 --output json
asc ads apps search --org "123456" --query "My App" --limit 10 --output json
asc ads product-pages list --org "123456" --adam-id 1234567890 --states VISIBLE --output json
asc ads creatives list --org "123456" --limit 100 --output json
asc ads geo search --org "123456" --query "San Francisco" --country-code US --limit 10 --output json
asc ads reports campaigns --org "123456" --file reporting-request.json --output json
asc ads reports keywords --org "123456" --campaign 987654321 --file reporting-request.json --output json
Reporting/find endpoints keep pagination in the JSON body.
asc ads campaigns create --org "123456" --file campaign.json --output json
asc ads campaigns update --org "123456" --campaign 987654321 --file campaign-update.json --output json
asc ads ad-groups create --org "123456" --campaign 987654321 --file ad-group.json --output json
asc ads targeting-keywords create-bulk --org "123456" --campaign 987654321 --ad-group 123456789 --file keywords.json --output json
asc ads targeting-keywords delete-bulk --org "123456" --campaign 987654321 --ad-group 123456789 --file keyword-ids.json --confirm --output json
asc ads campaigns delete --org "123456" --campaign 987654321 --confirm
For raw API gaps:
asc ads api request --method POST --path v5/campaigns/find --org "123456" --file selector.json --output json
Raw paths must be Apple Ads v5 paths or full https://api.searchads.apple.com/api/v5/... URLs. DELETE still requires --confirm.
Start with me view and acls; print org ID; create paused/future-dated resources named ASC CLI Live Test <timestamp>; save IDs; delete only the test parent campaign/ad group; list again to confirm cleanup. Apple may reject direct deletion for default product page creative ads.