{"id":"97ad8dc4-1f33-4767-afcb-6ef40170f236","shortId":"QtZ4fk","kind":"skill","title":"seo-rank-tracking","tagline":"Set up and run rank tracking using Ahrefs MCP: pick the right keywords to track, segment them by purpose, set baselines, and define alert thresholds. Use this skill when starting a new tracking project, baselining for a campaign, choosing what to monitor, or building a rank repor","description":"# SEO Rank Tracking\n\nSet up and run an ongoing rank tracking program using Ahrefs MCP data. Stack-agnostic. Produces a tracked keyword set, segmentation, baseline, alert thresholds, and a review cadence.\n\n---\n\n## When to use\n\n- Starting rank tracking for a new property or section\n- Baselining before a campaign, content launch, or major site change\n- Deciding what keywords are worth tracking\n- Setting up a ranking dashboard for stakeholders\n- Establishing alert thresholds for ranking drops\n- Reviewing whether the current tracked set is still meaningful\n\n## When NOT to use\n\n- Keyword discovery (use `seo-keyword`)\n- Competitor keyword analysis (use `seo-keyword-gap-audit`)\n- Diagnosing a ranking change that already happened (use `seo-traffic-diagnosis`)\n- Single-page audits (use `seo-onpage`)\n\n---\n\n## Required inputs\n\n- Target property\n- Target market and language\n- Business priorities (which segments matter)\n- Existing ranked keywords (Ahrefs Site Explorer)\n- Stakeholder reporting cadence (weekly, monthly, quarterly)\n- Confirmation Ahrefs MCP and Rank Tracker access\n\n---\n\n## The framework: tracking taxonomy\n\nA good tracked keyword set has structure. Random keyword lists produce noisy dashboards. Segmented keyword sets produce signal.\n\nGroup every tracked keyword into one of four buckets.\n\n### Bucket 1: Brand keywords\n\nQueries containing the brand name (and major variants and misspellings).\n\nWhy track:\n\n- Detect brand visibility issues\n- Catch competitors bidding on the brand\n- Spot reputation problems early\n\nVolume in this bucket: typically 10-30 keywords for most brands.\n\nHealthy signal: position 1 for all variants. Anything else is investigate-worthy.\n\n### Bucket 2: Money keywords\n\nQueries that drive (or should drive) revenue: high-intent transactional and evaluation-stage queries directly tied to the business model.\n\nWhy track:\n\n- These are the keywords that pay the bills\n- Movement here directly affects revenue\n- Stakeholders care most about these\n\nVolume in this bucket: 30-100 keywords for most properties. More for ecommerce.\n\nHealthy signal: top 3-5 positions. Watch for position drift in either direction.\n\n### Bucket 3: Opportunity keywords\n\nQueries the property is currently ranking on page 2-3 (positions 11-30) with potential to break into top 10.\n\nWhy track:\n\n- These are the active growth bets\n- Movement reflects whether content investment is working\n- Quick wins typically come from this bucket\n\nVolume in this bucket: 50-200 keywords typically.\n\nHealthy signal: trending toward page 1 over a 90-day window.\n\n### Bucket 4: Competitor benchmark keywords\n\nA representative sample of head and torso queries shared with the competitor set, used to track relative position over time.\n\nWhy track:\n\n- Measure share of voice\n- Spot competitor gains in real time\n- Provide industry context for movement\n\nVolume in this bucket: 50-150 keywords.\n\nHealthy signal: relative position improving or holding within a defined competitive band.\n\n---\n\n## Selection criteria\n\n### Brand bucket\n\n- Brand name (exact)\n- Brand name + product or service\n- Brand name common misspellings\n- Brand name + \"review\", \"vs\", \"alternative\"\n- Brand-owned product names if relevant\n\n### Money bucket\n\n- Top 20 ranked keywords by traffic value (Ahrefs Site Explorer)\n- Top transactional queries from Search Console with non-trivial impressions\n- Conversion-driving queries identified in analytics\n- Strategic head terms from `seo-keyword-gap-audit` output\n\nQuality over volume. 50 well-chosen money keywords beats 500 noisy ones.\n\n### Opportunity bucket\n\n- All keywords currently ranking positions 11-30 with monthly volume above a relevance-appropriate threshold\n- Queries with rising impression volume in Search Console\n- Output from the keyword gap audit's quick wins list\n\nRefresh this bucket quarterly. Opportunity is a moving target.\n\n### Competitor benchmark bucket\n\n- Keywords where 3+ competitors rank in top 20\n- Mix of head, torso, and informational queries\n- Sized to represent the broader category\n\nThis bucket is for relative comparison, not absolute targeting.\n\n---\n\n## Segmentation beyond buckets\n\nTag every tracked keyword on additional dimensions for filtering:\n\n| Tag | Purpose |\n| --- | --- |\n| Topic or pillar | Group by editorial theme |\n| Funnel stage | TOFU, MOFU, BOFU |\n| Content type expected | Article, product page, calculator, etc. |\n| Page mapped | Which URL is targeting this query |\n| Country and language | For multi-market sites |\n| Device | Desktop, mobile |\n| SERP feature presence | Featured snippet, AI overview, video, etc. |\n\nTagging up front pays off when filtering reports later.\n\n---\n\n## Baselines\n\nCapture the starting state on day one.\n\nFor each keyword, record:\n\n- Current position\n- Current SERP composition (top 10 domains, dominant content type, SERP features present)\n- Current click-through rate at that position (from Search Console if available)\n- Date of baseline\n\nBaselines are the reference for measuring future movement. Without one, every dashboard is just current state.\n\n---\n\n## Alert thresholds\n\nNot every position change deserves attention. Set thresholds that filter noise.\n\n### Default thresholds\n\n| Bucket | Alert if |\n| --- | --- |\n| Brand | Position drops below 1 for any tracked variant |\n| Money | Position drops by 5+ places, or out of top 10 |\n| Opportunity | Position rises into top 10 (positive alert), or drops past 30 |\n| Competitor benchmark | Aggregate share-of-voice changes by 10%+ |\n\nAdjust thresholds based on volatility of the niche. High-competition spaces need looser thresholds to reduce false alarms.\n\n### Alert routing\n\n- Brand alerts: notify SEO lead and brand manager immediately\n- Money alerts: notify SEO lead within a daily digest\n- Opportunity alerts: weekly summary\n- Competitor alerts: monthly summary\n\n---\n\n## Workflow\n\n1. **Define scope.** Target property, market, language, stakeholders.\n2. **Pull starting data.** Existing ranked keywords, Search Console queries, competitor overlap.\n3. **Build the tracked set.** 4 buckets, 200-500 total keywords for most properties.\n4. **Segment with tags.** Topic, funnel stage, page mapped, etc.\n5. **Configure tracking.** Set up Ahrefs Rank Tracker projects with tags and locations.\n6. **Capture baseline.** Day-one positions and SERP composition.\n7. **Define alert thresholds.** By bucket. Wire to notification system.\n8. **Build the dashboard.** See [`references/dashboard-template.md`](references/dashboard-template.md).\n9. **Set the cadence.** Weekly review of money + brand. Monthly review of all. Quarterly rebuild of opportunity bucket.\n10. **Iterate.** Drop dead keywords. Add new ones. Recalibrate thresholds based on noise.\n\n---\n\n## Failure patterns\n\n- **Tracking too many keywords.** A 5,000-keyword tracker is unreadable. Pick fewer, watch closer.\n- **Tracking too few.** A 30-keyword tracker misses the picture. Most properties need 200-500.\n- **No segmentation.** Untagged tracked keywords produce dashboards that cannot be filtered.\n- **No baseline.** Without day-one snapshots, \"did the campaign work\" becomes unanswerable.\n- **Alert fatigue.** Loose thresholds produce too many alerts. Stakeholders stop reading. Tighten.\n- **Set and forget.** Tracked keyword sets need quarterly review. Opportunity moves. Money keywords shift.\n- **Conflating position with traffic.** A position-1 keyword with no clicks is worse than a position-5 keyword with steady traffic. Layer in CTR and clicks data.\n- **Single-device tracking on a mobile-dominant business.** Track the device that matches the audience.\n- **Tracking aggregate position only.** Aggregate position averages can hide important movement in specific buckets. Always show by bucket.\n- **Reporting absolute position without context.** \"We are position 4\" means nothing. \"Up from position 11 over 60 days\" means something.\n\n---\n\n## Output format\n\nA rank tracking setup document with:\n\n1. **Tracking charter.** Property, scope, stakeholders, cadence.\n2. **Tracked keyword set.** All keywords with bucket and tag assignments.\n3. **Baseline snapshot.** Position, SERP composition, CTR per keyword.\n4. **Alert configuration.** Thresholds by bucket, routing.\n5. **Dashboard layout.** What charts, what filters, what is visible.\n6. **Review cadence.** Weekly, monthly, quarterly responsibilities.\n7. **Methodology notes.** Country and device settings, refresh frequency, data caveats.\n\nPlus a recurring rank report at the chosen cadence (typically weekly or monthly).\n\n---\n\n## Reference files\n\n- [`references/dashboard-template.md`](references/dashboard-template.md) - Template for the rank tracking dashboard layout, including the recurring report structure for weekly and monthly cadences.","tags":["seo","rank","tracking","claude","skills","rampstackco","agent-skills","anthropic","awesome-claude-code","awesome-claude-prompts","awesome-claude-skills","claude-code"],"capabilities":["skill","source-rampstackco","skill-seo-rank-tracking","topic-agent-skills","topic-anthropic","topic-awesome-claude-code","topic-awesome-claude-prompts","topic-awesome-claude-skills","topic-claude","topic-claude-code","topic-claude-skills","topic-good-first-issue","topic-mcp","topic-product-management","topic-seo"],"categories":["claude-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/rampstackco/claude-skills/seo-rank-tracking","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add rampstackco/claude-skills","source_repo":"https://github.com/rampstackco/claude-skills","install_from":"skills.sh"}},"qualityScore":"0.540","qualityRationale":"deterministic score 0.54 from registry signals: · indexed on github topic:agent-skills · 181 github stars · SKILL.md body (8,703 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-18T18:55:20.893Z","embedding":null,"createdAt":"2026-04-30T01:01:30.781Z","updatedAt":"2026-05-18T18:55:20.893Z","lastSeenAt":"2026-05-18T18:55:20.893Z","tsv":"'-1':1087 '-100':341 '-150':474 '-200':413 '-3':375 '-30':272,378,577 '-5':353,1097 '-500':912,1030 '000':1007 '1':237,280,421,798,884,1171 '10':271,385,736,813,819,835,986 '11':377,576,1157 '2':291,374,892,1178 '20':519,624 '200':911,1029 '3':352,363,619,904,1189 '30':340,825,1020 '4':428,909,918,1151,1198 '5':807,928,1006,1205 '50':412,473,559 '500':566 '6':941,1215 '60':1159 '7':951,1222 '8':961 '9':968 '90':424 'absolut':645,1144 'access':204 'activ':391 'add':991 'addit':655 'adjust':836 'affect':329 'aggreg':828,1126,1129 'agnost':70 'ahref':12,65,189,199,525,933 'ai':705 'alarm':854 'alert':28,78,120,776,792,821,855,858,867,876,880,953,1055,1062,1199 'alreadi':158 'altern':508 'alway':1139 'analysi':146 'analyt':545 'anyth':284 'appropri':585 'articl':676 'assign':1188 'attent':783 'audienc':1124 'audit':152,168,554,600 'avail':756 'averag':1131 'band':487 'base':838,996 'baselin':25,39,77,96,718,759,760,943,1043,1190 'beat':565 'becom':1053 'benchmark':430,615,827 'bet':393 'beyond':648 'bid':258 'bill':325 'bofu':672 'brand':238,243,253,261,276,490,492,495,500,504,510,794,857,863,976 'brand-own':509 'break':382 'broader':636 'bucket':235,236,269,290,339,362,407,411,427,472,491,517,570,607,616,639,649,791,910,956,985,1138,1142,1185,1203 'build':48,905,962 'busi':181,314,1117 'cadenc':83,194,971,1177,1217,1241,1266 'calcul':679 'campaign':42,99,1051 'cannot':1039 'captur':719,942 'care':332 'catch':256 'categori':637 'caveat':1232 'chang':105,156,781,833 'chart':1209 'charter':1173 'choos':43 'chosen':562,1240 'click':746,1091,1106 'click-through':745 'closer':1015 'come':404 'common':502 'comparison':643 'competit':486,846 'competitor':144,257,429,443,459,614,620,826,879,902 'composit':734,950,1194 'configur':929,1200 'confirm':198 'conflat':1081 'consol':533,594,754,900 'contain':241 'content':100,397,673,739 'context':466,1147 'convers':540 'conversion-driv':539 'countri':689,1225 'criteria':489 'ctr':1104,1195 'current':128,370,573,730,732,744,774 'daili':873 'dashboard':116,221,771,964,1037,1206,1255 'data':67,895,1107,1231 'date':757 'day':425,724,945,1046,1160 'day-on':944,1045 'dead':989 'decid':106 'default':789 'defin':27,485,885,952 'deserv':782 'desktop':698 'detect':252 'devic':697,1110,1120,1227 'diagnos':153 'diagnosi':164 'digest':874 'dimens':656 'direct':310,328,361 'discoveri':139 'document':1169 'domain':737 'domin':738,1116 'drift':358 'drive':296,299,541 'drop':124,796,805,823,988 'earli':265 'ecommerc':348 'editori':666 'either':360 'els':285 'establish':119 'etc':680,708,927 'evalu':307 'evaluation-stag':306 'everi':228,651,770,779 'exact':494 'exist':186,896 'expect':675 'explor':191,527 'failur':999 'fals':853 'fatigu':1056 'featur':701,703,742 'fewer':1013 'file':1247 'filter':658,715,787,1041,1211 'forget':1069 'format':1164 'four':234 'framework':206 'frequenc':1230 'front':711 'funnel':668,923 'futur':766 'gain':460 'gap':151,553,599 'good':210 'group':227,664 'growth':392 'happen':159 'head':436,547,627 'healthi':277,349,416,476 'hide':1133 'high':302,845 'high-competit':844 'high-int':301 'hold':482 'identifi':543 'immedi':865 'import':1134 'impress':538,590 'improv':480 'includ':1257 'industri':465 'inform':630 'input':174 'intent':303 'invest':398 'investig':288 'investigate-worthi':287 'issu':255 'iter':987 'keyword':17,74,108,138,143,145,150,188,212,217,223,230,239,273,293,321,342,365,414,431,475,521,552,564,572,598,617,653,728,898,914,990,1004,1008,1021,1035,1071,1079,1088,1098,1180,1183,1197 'languag':180,691,890 'later':717 'launch':101 'layer':1102 'layout':1207,1256 'lead':861,870 'list':218,604 'locat':940 'loos':1057 'looser':849 'major':103,246 'manag':864 'mani':1003,1061 'map':682,926 'market':178,695,889 'match':1122 'matter':185 'mcp':13,66,200 'mean':1152,1161 'meaning':133 'measur':454,765 'methodolog':1223 'miss':1023 'misspel':249,503 'mix':625 'mobil':699,1115 'mobile-domin':1114 'model':315 'mofu':671 'money':292,516,563,803,866,975,1078 'monitor':46 'month':196,579,881,977,1219,1245,1265 'move':612,1077 'movement':326,394,468,767,1135 'multi':694 'multi-market':693 'name':244,493,496,501,505,513 'need':848,1028,1073 'new':36,92,992 'nich':843 'nois':788,998 'noisi':220,567 'non':536 'non-trivi':535 'note':1224 'noth':1153 'notif':959 'notifi':859,868 'one':232,568,725,769,946,993,1047 'ongo':60 'onpag':172 'opportun':364,569,609,814,875,984,1076 'output':555,595,1163 'overlap':903 'overview':706 'own':511 'page':167,373,420,678,681,925 'past':824 'pattern':1000 'pay':323,712 'per':1196 'pick':14,1012 'pictur':1025 'pillar':663 'place':808 'plus':1233 'posit':279,354,357,376,449,479,575,731,751,780,795,804,815,820,947,1082,1086,1096,1127,1130,1145,1150,1156,1192 'potenti':380 'presenc':702 'present':743 'prioriti':182 'problem':264 'produc':71,219,225,1036,1059 'product':497,512,677 'program':63 'project':38,936 'properti':93,176,345,368,888,917,1027,1174 'provid':464 'pull':893 'purpos':23,660 'qualiti':556 'quarter':197,608,981,1074,1220 'queri':240,294,309,366,439,530,542,587,631,688,901 'quick':401,602 'random':216 'rank':3,9,50,53,61,88,115,123,155,187,202,371,520,574,621,897,934,1166,1236,1253 'rate':748 'read':1065 'real':462 'rebuild':982 'recalibr':994 'record':729 'recur':1235,1259 'reduc':852 'refer':763,1246 'references/dashboard-template.md':966,967,1248,1249 'reflect':395 'refresh':605,1229 'relat':448,478,642 'relev':515,584 'relevance-appropri':583 'repor':51 'report':193,716,1143,1237,1260 'repres':433,634 'reput':263 'requir':173 'respons':1221 'revenu':300,330 'review':82,125,506,973,978,1075,1216 'right':16 'rise':589,816 'rout':856,1204 'run':8,58 'sampl':434 'scope':886,1175 'search':532,593,753,899 'section':95 'see':965 'segment':20,76,184,222,647,919,1032 'select':488 'seo':2,52,142,149,162,171,551,860,869 'seo-keyword':141 'seo-keyword-gap-audit':148,550 'seo-onpag':170 'seo-rank-track':1 'seo-traffic-diagnosi':161 'serp':700,733,741,949,1193 'servic':499 'set':5,24,55,75,112,130,213,224,444,784,908,931,969,1067,1072,1181,1228 'setup':1168 'share':440,455,830 'share-of-voic':829 'shift':1080 'show':1140 'signal':226,278,350,417,477 'singl':166,1109 'single-devic':1108 'single-pag':165 'site':104,190,526,696 'size':632 'skill':32 'skill-seo-rank-tracking' 'snapshot':1048,1191 'snippet':704 'someth':1162 'source-rampstackco' 'space':847 'specif':1137 'spot':262,458 'stack':69 'stack-agnost':68 'stage':308,669,924 'stakehold':118,192,331,891,1063,1176 'start':34,87,721,894 'state':722,775 'steadi':1100 'still':132 'stop':1064 'strateg':546 'structur':215,1261 'summari':878,882 'system':960 'tag':650,659,709,921,938,1187 'target':175,177,613,646,686,887 'taxonomi':208 'templat':1250 'term':548 'theme':667 'threshold':29,79,121,586,777,785,790,837,850,954,995,1058,1201 'tie':311 'tighten':1066 'time':451,463 'tofu':670 'top':351,384,518,528,623,735,812,818 'topic':661,922 'topic-agent-skills' 'topic-anthropic' 'topic-awesome-claude-code' 'topic-awesome-claude-prompts' 'topic-awesome-claude-skills' 'topic-claude' 'topic-claude-code' 'topic-claude-skills' 'topic-good-first-issue' 'topic-mcp' 'topic-product-management' 'topic-seo' 'torso':438,628 'total':913 'toward':419 'track':4,10,19,37,54,62,73,89,111,129,207,211,229,251,317,387,447,453,652,801,907,930,1001,1016,1034,1070,1111,1118,1125,1167,1172,1179,1254 'tracker':203,935,1009,1022 'traffic':163,523,1084,1101 'transact':304,529 'trend':418 'trivial':537 'type':674,740 'typic':270,403,415,1242 'unanswer':1054 'unread':1011 'untag':1033 'url':684 'use':11,30,64,86,137,140,147,160,169,445 'valu':524 'variant':247,283,802 'video':707 'visibl':254,1214 'voic':457,832 'volatil':840 'volum':266,336,408,469,558,580,591 'vs':507 'watch':355,1014 'week':195,877,972,1218,1243,1263 'well':561 'well-chosen':560 'whether':126,396 'win':402,603 'window':426 'wire':957 'within':483,871 'without':768,1044,1146 'work':400,1052 'workflow':883 'wors':1093 'worth':110 'worthi':289","prices":[{"id":"06fc2a95-49c5-482e-9c22-3a8d900c38f8","listingId":"97ad8dc4-1f33-4767-afcb-6ef40170f236","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"rampstackco","category":"claude-skills","install_from":"skills.sh"},"createdAt":"2026-04-30T01:01:30.781Z"}],"sources":[{"listingId":"97ad8dc4-1f33-4767-afcb-6ef40170f236","source":"github","sourceId":"rampstackco/claude-skills/seo-rank-tracking","sourceUrl":"https://github.com/rampstackco/claude-skills/tree/main/skills/seo-rank-tracking","isPrimary":false,"firstSeenAt":"2026-04-30T01:01:30.781Z","lastSeenAt":"2026-05-18T18:55:20.893Z"}],"details":{"listingId":"97ad8dc4-1f33-4767-afcb-6ef40170f236","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"rampstackco","slug":"seo-rank-tracking","github":{"repo":"rampstackco/claude-skills","stars":181,"topics":["agent-skills","anthropic","awesome-claude-code","awesome-claude-prompts","awesome-claude-skills","claude","claude-code","claude-skills","good-first-issue","mcp","product-management","seo","show-hn","showcase","showdev","web-design","web-development"],"license":"mit","html_url":"https://github.com/rampstackco/claude-skills","pushed_at":"2026-05-10T22:40:22Z","description":"Stack-agnostic Claude Skills covering the full website lifecycle: brand, design, content, SEO, dev, ops, growth, and research. Build, ship, audit, optimize.","skill_md_sha":"c1cb19809d8f804d591fd770cabf807a8b2bb0f2","skill_md_path":"skills/seo-rank-tracking/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/rampstackco/claude-skills/tree/main/skills/seo-rank-tracking"},"layout":"multi","source":"github","category":"claude-skills","frontmatter":{"name":"seo-rank-tracking","description":"Set up and run rank tracking using Ahrefs MCP: pick the right keywords to track, segment them by purpose, set baselines, and define alert thresholds. Use this skill when starting a new tracking project, baselining for a campaign, choosing what to monitor, or building a rank reporting cadence. Triggers on rank tracking, keyword tracking, monitor rankings, track positions, what should we track, ranking dashboard, baseline rankings, alert thresholds. Also triggers when a stakeholder wants weekly or monthly ranking visibility."},"skills_sh_url":"https://skills.sh/rampstackco/claude-skills/seo-rank-tracking"},"updatedAt":"2026-05-18T18:55:20.893Z"}}