{"id":"704e8422-acac-4479-92a8-7c690b372d32","shortId":"4hTYgy","kind":"skill","title":"seo-ads","tagline":"Paid-search competitive landscape for a domain or keyword. Pulls SE Ranking's PPC data — domain ad keyword footprint, ad copy patterns, who else bids on the same keywords, SERP shopping/ad-pack visibility — and produces a competitive ads brief plus a recommended bid-keyword short","description":"# Paid-Search Intelligence (Ads)\n\nMap a domain's paid-search footprint and the competitive landscape around its target keywords. Output: a brief on what the brand is bidding on, who else bids on the same terms, ad-copy patterns the leading competitors use, SERP ad+shopping presence per keyword, and a recommended bid-keyword shortlist.\n\n## Prerequisites\n\n- SE Ranking MCP server connected.\n- User provides: (a) a target domain OR a target keyword (skill detects which), (b) target country (default `us`).\n\n## Process\n\n1. **Validate input & preflight**\n   - Determine: domain mode (analyse a brand's paid footprint) or keyword mode (analyse the bidding landscape for one keyword).\n   - `DATA_getCreditBalance` — surface remaining credits.\n\n2. **Domain mode** `DATA_getDomainAdsByDomain`\n   - Pull paid keywords the target domain bids on.\n   - For each: keyword, search volume, CPC, position, ad copy (title + description), URL.\n   - Sort by traffic-weighted score (`volume × CTR-by-paid-position × bid-share`).\n\n3. **Keyword mode** `DATA_getDomainAdsByKeyword`\n   - Pull all domains bidding on the target keyword.\n   - For each: domain, ad position, ad copy, URL.\n   - Surface the top 10 advertisers + their copy patterns.\n\n4. **Intent enrichment** `DATA_getKeywordQuestions`\n   - For the keyword(s) in scope, pull related questions.\n   - Identifies question-phrased intent variants worth bidding on (often cheaper, higher conversion).\n\n5. **SERP ad/shopping presence** `DATA_getSerpResults`\n   - For top 5 keywords (domain mode) or the target keyword (keyword mode):\n     - Use SERP-feature filters to detect ad-pack composition: `tads` (top ads above organic), `bads` (bottom ads below organic), `sads` (shopping ads / Google Shopping pack), `mads` (mobile/map-pack ads).\n     - Top SERP ad slots (positions 1-4 above organic, 1-3 below).\n     - Shopping pack presence (carousel of product cards).\n     - Image pack, local pack — these displace ad inventory.\n   - Capture which advertisers occupy those slots.\n\n6. **Ad copy pattern analysis**\n   - Cluster ad headlines + descriptions by recurring patterns.\n   - Identify: USP language used by leaders, pricing/discount mentions, audience segmentation, CTA verbs.\n   - Highlight outliers (advertisers doing something different).\n\n7. **Paid-keyword gap (domain mode)** `DATA_getDomainKeywords` with `type: 'adv'`\n   - Pull the user's domain's paid keywords using the `type: 'adv'` switch.\n   - For each top competitor (from step 2 or `DATA_getDomainCompetitors` with `type: 'adv'`): pull their paid keywords with `type: 'adv'`.\n   - Diff: paid keywords competitors bid on that the user's domain doesn't.\n   - This becomes the highest-leverage portion of the bid-keyword shortlist (step 8).\n   - Skip in keyword mode (no domain to gap against).\n\n8. **Recommended bid-keyword shortlist**\n   - For domain mode: paid-keyword gap from step 7 + adjacent question-intent variants.\n   - For keyword mode: question-intent and long-tail variants that are likely cheaper than the head term.\n   - Each row: keyword, est. CPC, est. volume, who else bids, why-recommended.\n\n9. **Synthesise** `ADS.md`\n\n## Output format\n\nCreate a folder `seo-ads-{target-slug}-{YYYYMMDD}/` with:\n\n```\nseo-ads-{target-slug}-{YYYYMMDD}/\n├── ADS.md                              (synthesised brief — primary deliverable; inlines paid footprint, bidding landscape, SERP ad/shopping pack, ad copy patterns, paid keyword gap)\n├── recommended-keywords.csv            (bid-keyword shortlist — load-bearing CSV the PPC team pastes into bid tooling)\n└── evidence/\n    ├── 01-paid-footprint.md           (domain mode: brand's paid keywords — raw step output)\n    ├── 02-bidding-landscape.md        (keyword mode: advertisers on the keyword — raw step output)\n    ├── 03-question-variants.md        (DATA_getKeywordQuestions enrichment)\n    ├── 04-serp-ad-shopping-pack.md    (SERP feature inventory per keyword)\n    ├── 05-ad-copy-patterns.md         (clustered headline/description patterns)\n    └── 06-paid-keyword-gap.md         (domain mode: type='adv' diff vs competitors)\n```\n\nStep files 01, 02, 04, 05, 06 are inlined as sections in `ADS.md`; the copies in `evidence/` preserve the raw step outputs for reproducibility.\n\n`ADS.md` follows this shape:\n\n```markdown\n# Paid-Search Intelligence: {target}\n\n> Snapshot dated {YYYY-MM-DD} · Country: {country} · Mode: {domain | keyword}\n\n## Footprint summary\n- Paid keywords: {n}\n- Estimated paid traffic: {n}/mo\n- Average CPC: ${n}\n- SERP slots covered: {n} of top-4 above organic across {n} target keywords\n\n## Top 10 paid keywords (domain mode)\n\n| Keyword | Volume | CPC | Position | Ad copy excerpt |\n|---|---|---|---|---|\n| {kw} | {n} | ${n} | {pos} | \"{headline} — {snippet}\" |\n| ...\n\n## Bidding landscape (keyword mode — for \"{keyword}\")\n\n| Advertiser | Position | Ad copy excerpt | URL |\n|---|---|---|---|\n| {domain} | {pos} | \"{headline} — {snippet}\" | {url} |\n| ...\n\n## Ad copy patterns (top patterns observed)\n\n1. **Pricing-led:** \"{N}% off — start at ${X}/mo\" — used by {n} advertisers.\n2. **Outcome-led:** \"Get {specific outcome} in {time}\" — used by {n}.\n3. **Trust-led:** \"Trusted by {n} {audience}\" — used by {n}.\n4. ...\n\n## SERP feature inventory\n\n| Keyword | Top ads | Shopping pack | PAA | Image pack |\n|---|---|---|---|---|\n| {kw} | {advertiser list} | {✓/✗} | {✓/✗} | {✓/✗} |\n| ...\n\n## Recommended bid-keyword shortlist\n\nSee `recommended-keywords.csv`. Top 10:\n\n| Keyword | Volume | Est. CPC | Why |\n|---|---|---|---|\n| {kw} | {n} | ${n} | Question-intent variant; competitor X bids on head term but not this. |\n| ...\n\n## Constraints / caveats\n- CPC and volume estimates are directional. Actual costs depend on Quality Score, time of day, audience, etc.\n- {Note any ad-copy that's clearly seasonal / promotional and may not represent steady-state.}\n\n## Recommended next step\nCross-reference these paid keywords with `seo-keyword-cluster` output to find under-served paid clusters. For organic content opportunities corresponding to these paid keywords, run `seo-keyword-niche`.\n```\n\n`recommended-keywords.csv` columns: `keyword,volume,cpc_estimate,position_target,intent,competitor_count,why_recommended`\n\n## Tips\n\n- Respect rate limit. Domain mode: ~3–5 calls. Keyword mode: ~3 calls. Plus a few SERP queries.\n- Cost: ~10–20 credits typical for domain mode; ~5–10 for keyword mode.\n- **CPC estimates lag.** SE Ranking's CPC data is not real-time auction data; treat as ±30% directional.\n- Ad copy often reveals competitor positioning before product launches do — periodic review (quarterly) catches strategic shifts.\n- Question-intent variants often have lower CPC and higher conversion than head terms. The shortlist in step 8 prioritises these.\n- Pair with `seo-keyword-niche` for organic content opportunities derived from paid keyword research.\n- Pair with `seo-competitor-pages` if the bidding landscape reveals \"X vs Y\" / \"alternatives\" intent — those keywords convert best as comparison pages, not paid ads.\n- **Ads data via shared DATA_* tools** — beyond the dedicated `DATA_getDomainAdsByDomain` / `DATA_getDomainAdsByKeyword`, the `type: 'adv'` enum switch on `DATA_getDomainKeywords`, `DATA_getDomainKeywordsComparison`, `DATA_getDomainCompetitors`, `DATA_getDomainPages`, and similar tools surfaces the paid view of the same data structures. Combine with the `tads/bads/sads/mads` SERP-feature filters and the CPC filter on SERP queries to map paid landscape comprehensively.\n- Don't recommend paid keywords without context. The shortlist is a starting point for the PPC team, not an autopilot.","tags":["seo","ads","skills","seranking","agent-skills","ai-search","anthropic","backlinks","claude","claude-code","claude-plugin","claude-skills"],"capabilities":["skill","source-seranking","skill-seo-ads","topic-agent-skills","topic-ai-search","topic-anthropic","topic-backlinks","topic-claude","topic-claude-code","topic-claude-plugin","topic-claude-skills","topic-content-brief","topic-ga4","topic-keyword-research","topic-mcp"],"categories":["seo-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/seranking/seo-skills/seo-ads","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add seranking/seo-skills","source_repo":"https://github.com/seranking/seo-skills","install_from":"skills.sh"}},"qualityScore":"0.454","qualityRationale":"deterministic score 0.45 from registry signals: · indexed on github topic:agent-skills · 9 github stars · SKILL.md body (7,583 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:08:35.163Z","embedding":null,"createdAt":"2026-05-18T13:14:08.278Z","updatedAt":"2026-05-18T19:08:35.163Z","lastSeenAt":"2026-05-18T19:08:35.163Z","tsv":"'-3':316 '-4':312,669 '/mo':659,727 '01':607 '01-paid-footprint.md':563 '02':608 '02-bidding-landscape.md':573 '03-question-variants.md':583 '04':609 '04-serp-ad-shopping-pack.md':587 '05':610 '05-ad-copy-patterns.md':593 '06':611 '06-paid-keyword-gap.md':597 '1':134,311,315,718 '10':226,677,778,904,912 '2':162,400,732 '20':905 '3':202,744,891,896 '30':933 '4':231,755 '5':258,266,892,911 '6':339 '7':369,466 '8':441,451,969 '9':504 'across':672 'actual':808 'ad':3,21,24,41,54,89,97,182,218,220,284,289,294,299,305,308,331,340,345,514,522,540,686,703,712,761,822,935,1012,1013 'ad-copi':88,821 'ad-pack':283 'ad/shopping':260,538 'adjac':467 'ads.md':506,527,617,629 'adv':380,392,406,413,601,1028 'advertis':227,335,365,576,701,731,768 'altern':1001 'analys':141,150 'analysi':343 'around':67 'auction':929 'audienc':359,751,817 'autopilot':1091 'averag':660 'b':128 'bad':292 'bear':553 'becom':428 'best':1006 'beyond':1019 'bid':29,47,79,83,106,152,173,200,210,252,418,437,454,500,535,548,560,695,772,793,995 'bid-keyword':46,105,436,453,547,771 'bid-shar':199 'bottom':293 'brand':77,143,566 'brief':42,73,529 'call':893,897 'captur':333 'card':324 'carousel':321 'catch':948 'caveat':801 'cheaper':255,486 'clear':826 'cluster':344,594,849,857 'column':873 'combin':1052 'comparison':1008 'competit':7,40,65 'competitor':94,397,417,604,791,881,939,991 'composit':286 'comprehens':1071 'connect':114 'constraint':800 'content':860,980 'context':1078 'convers':257,961 'convert':1005 'copi':25,90,183,221,229,341,541,619,687,704,713,823,936 'correspond':862 'cost':809,903 'count':882 'countri':130,645,646 'cover':665 'cpc':180,495,661,684,782,802,876,916,922,958,1062 'creat':509 'credit':161,906 'cross':840 'cross-refer':839 'csv':554 'cta':361 'ctr':195 'ctr-by-paid-posit':194 'data':19,157,165,205,234,262,376,402,584,923,930,1014,1017,1022,1024,1032,1034,1036,1038,1050 'date':640 'day':816 'dd':644 'dedic':1021 'default':131 'deliver':531 'depend':810 'deriv':982 'descript':185,347 'detect':126,282 'determin':138 'diff':414,602 'differ':368 'direct':807,934 'displac':330 'doesn':425 'domain':11,20,57,120,139,163,172,209,217,268,374,385,424,447,458,564,598,648,680,707,889,909 'els':28,82,499 'enrich':233,586 'enum':1029 'est':494,496,781 'estim':655,805,877,917 'etc':818 'evid':562,621 'excerpt':688,705 'featur':279,589,757,1058 'file':606 'filter':280,1059,1063 'find':852 'folder':511 'follow':630 'footprint':23,62,146,534,650 'format':508 'gap':373,449,463,545 'get':736 'getcreditbal':158 'getdomainadsbydomain':166,1023 'getdomainadsbykeyword':206,1025 'getdomaincompetitor':403,1037 'getdomainkeyword':377,1033 'getdomainkeywordscomparison':1035 'getdomainpag':1039 'getkeywordquest':235,585 'getserpresult':263 'googl':300 'head':489,795,963 'headlin':346,693,709 'headline/description':595 'higher':256,960 'highest':431 'highest-leverag':430 'highlight':363 'identifi':245,351 'imag':325,765 'inlin':532,613 'input':136 'intellig':53,637 'intent':232,249,470,477,789,880,953,1002 'inventori':332,590,758 'keyword':13,22,33,48,70,101,107,124,148,156,169,177,203,214,238,267,273,274,372,388,410,416,438,444,455,462,473,493,544,549,569,574,579,592,649,653,675,679,682,697,700,759,773,779,844,848,866,870,874,894,914,976,985,1004,1076 'kw':689,767,784 'lag':918 'landscap':8,66,153,536,696,996,1070 'languag':353 'launch':943 'lead':93 'leader':356 'led':721,735,747 'leverag':432 'like':485 'limit':888 'list':769 'load':552 'load-bear':551 'local':327 'long':480 'long-tail':479 'lower':957 'mad':303 'map':55,1068 'markdown':633 'may':830 'mcp':112 'mention':358 'mm':643 'mobile/map-pack':304 'mode':140,149,164,204,269,275,375,445,459,474,565,575,599,647,681,698,890,895,910,915 'n':654,658,662,666,673,690,691,722,730,743,750,754,785,786 'next':837 'nich':871,977 'note':819 'observ':717 'occupi':336 'often':254,937,955 'one':155 'opportun':861,981 'organ':291,296,314,671,859,979 'outcom':734,738 'outcome-l':733 'outlier':364 'output':71,507,572,582,626,850 'paa':764 'pack':285,302,319,326,328,539,763,766 'page':992,1009 'paid':5,51,60,145,168,197,371,387,409,415,461,533,543,568,635,652,656,678,843,856,865,984,1011,1045,1069,1075 'paid-keyword':370,460 'paid-search':4,50,59,634 'pair':972,987 'past':558 'pattern':26,91,230,342,350,542,596,714,716 'per':100,591 'period':945 'phrase':248 'plus':43,898 'point':1084 'portion':433 'pos':692,708 'posit':181,198,219,310,685,702,878,940 'ppc':18,556,1087 'preflight':137 'prerequisit':109 'presenc':99,261,320 'preserv':622 'price':720 'pricing-l':719 'pricing/discount':357 'primari':530 'prioritis':970 'process':133 'produc':38 'product':323,942 'promot':828 'provid':116 'pull':14,167,207,242,381,407 'qualiti':812 'quarter':947 'queri':902,1066 'question':244,247,469,476,788,952 'question-int':468,475,787,951 'question-phras':246 'rank':16,111,920 'rate':887 'raw':570,580,624 'real':927 'real-tim':926 'recommend':45,104,452,503,770,836,884,1074 'recommended-keywords.csv':546,776,872 'recur':349 'refer':841 'relat':243 'remain':160 'repres':832 'reproduc':628 'research':986 'respect':886 'reveal':938,997 'review':946 'row':492 'run':867 'sad':297 'scope':241 'score':192,813 'se':15,110,919 'search':6,52,61,178,636 'season':827 'section':615 'see':775 'segment':360 'seo':2,513,521,847,869,975,990 'seo-ad':1,512,520 'seo-competitor-pag':989 'seo-keyword-clust':846 'seo-keyword-nich':868,974 'serp':34,96,259,278,307,537,588,663,756,901,1057,1065 'serp-featur':277,1056 'serv':855 'server':113 'shape':632 'share':201,1016 'shift':950 'shop':98,298,301,318,762 'shopping/ad-pack':35 'short':49 'shortlist':108,439,456,550,774,966,1080 'similar':1041 'skill':125 'skill-seo-ads' 'skip':442 'slot':309,338,664 'slug':517,525 'snapshot':639 'snippet':694,710 'someth':367 'sort':187 'source-seranking' 'specif':737 'start':724,1083 'state':835 'steadi':834 'steady-st':833 'step':399,440,465,571,581,605,625,838,968 'strateg':949 'structur':1051 'summari':651 'surfac':159,223,1043 'switch':393,1030 'synthesis':505,528 'tad':287 'tads/bads/sads/mads':1055 'tail':481 'target':69,119,123,129,171,213,272,516,524,638,674,879 'target-slug':515,523 'team':557,1088 'term':87,490,796,964 'time':740,814,928 'tip':885 'titl':184 'tool':561,1018,1042 'top':225,265,288,306,396,668,676,715,760,777 'topic-agent-skills' 'topic-ai-search' 'topic-anthropic' 'topic-backlinks' 'topic-claude' 'topic-claude-code' 'topic-claude-plugin' 'topic-claude-skills' 'topic-content-brief' 'topic-ga4' 'topic-keyword-research' 'topic-mcp' 'traffic':190,657 'traffic-weight':189 'treat':931 'trust':746,748 'trust-l':745 'type':379,391,405,412,600,1027 'typic':907 'under-serv':853 'url':186,222,706,711 'us':132 'use':95,276,354,389,728,741,752 'user':115,383,422 'usp':352 'valid':135 'variant':250,471,482,790,954 'verb':362 'via':1015 'view':1046 'visibl':36 'volum':179,193,497,683,780,804,875 'vs':603,999 'weight':191 'why-recommend':501 'without':1077 'worth':251 'x':726,792,998 'y':1000 'yyyi':642 'yyyy-mm-dd':641 'yyyymmdd':518,526","prices":[{"id":"29696719-b8d6-4d3c-b4f2-c3ca7347d800","listingId":"704e8422-acac-4479-92a8-7c690b372d32","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"seranking","category":"seo-skills","install_from":"skills.sh"},"createdAt":"2026-05-18T13:14:08.278Z"}],"sources":[{"listingId":"704e8422-acac-4479-92a8-7c690b372d32","source":"github","sourceId":"seranking/seo-skills/seo-ads","sourceUrl":"https://github.com/seranking/seo-skills/tree/main/skills/seo-ads","isPrimary":false,"firstSeenAt":"2026-05-18T13:14:08.278Z","lastSeenAt":"2026-05-18T19:08:35.163Z"}],"details":{"listingId":"704e8422-acac-4479-92a8-7c690b372d32","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"seranking","slug":"seo-ads","github":{"repo":"seranking/seo-skills","stars":9,"topics":["agent-skills","ai-search","answer-engine-optimization","anthropic","backlinks","claude","claude-code","claude-plugin","claude-skills","content-brief","ga4","generative-engine-optimization","keyword-research","mcp","mcp-server","search-console","seo","seo-tools","seranking","site-audit"],"license":"mit","html_url":"https://github.com/seranking/seo-skills","pushed_at":"2026-05-11T20:07:40Z","description":"Claude SEO Skills — production Claude Agent Skills for the SE Ranking MCP server. Content briefs, AI Search share of voice, audits, backlink gaps, keyword clusters, schema, sitemap, GEO, and more.","skill_md_sha":"14f798201461eb46edd3cf2b316032beb84a3df9","skill_md_path":"skills/seo-ads/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/seranking/seo-skills/tree/main/skills/seo-ads"},"layout":"multi","source":"github","category":"seo-skills","frontmatter":{"name":"seo-ads","description":"Paid-search competitive landscape for a domain or keyword. Pulls SE Ranking's PPC data — domain ad keyword footprint, ad copy patterns, who else bids on the same keywords, SERP shopping/ad-pack visibility — and produces a competitive ads brief plus a recommended bid-keyword shortlist. Use when the user asks \"paid search analysis\", \"competitor ads\", \"PPC competitive\", \"ad copy intelligence\", \"shopping pack\", \"who bids on this keyword\", or \"paid keyword footprint\"."},"skills_sh_url":"https://skills.sh/seranking/seo-skills/seo-ads"},"updatedAt":"2026-05-18T19:08:35.163Z"}}