{"id":"eed0dcb2-fb7a-4f7c-aae4-327543a792da","shortId":"XeKj4Z","kind":"skill","title":"seo-keyword-cluster","tagline":"Build a content cluster plan from seed keywords: intent-grouped clusters, pillar+spokes architecture with H1/H2 suggestions per spoke, prioritised build order, and an internal-linking map. Plans a content tier across many articles (vs `seo-content-brief` which produces a single a","description":"# Keyword Cluster\n\nTransform seed keywords into a prioritised cluster plan: each cluster grouped by search intent and theme, with volume totals, a pillar concept, spoke articles, and suggested H1/H2 for each spoke.\n\n## Prerequisites\n\n- SE Ranking MCP server connected.\n- User provides: (a) 3 to 20 seed keywords, (b) target market country (default: `us`), and optionally (c) minimum volume threshold (default: 100/mo), (d) maximum KD (default: 60).\n\n## Process\n\n1. **Expand seeds** `DATA_getRelatedKeywords`, `DATA_getSimilarKeywords`, `DATA_getLongTailKeywords`\n   - For each seed, pull related + similar + long-tail variants in the target country.\n   - Target at least 100 candidate keywords per seed; de-duplicate across seeds.\n\n2. **Question-based expansion** `DATA_getKeywordQuestions`\n   - Pull question-intent keywords for the top 5 seeds.\n   - These usually become spoke articles with PAA/featured-snippet potential.\n\n3. **Clean and filter**\n   - Remove keywords below min volume and above max KD.\n   - Strip branded terms the target does not own.\n   - Tag each keyword with detected intent: informational, commercial, transactional, navigational.\n\n4. **Cluster by SERP overlap** `DATA_getSerpResults` (or `DATA_getSerpTaskAdvancedResults`)\n   - Group keywords by how Google actually ranks them — shared top-10 organic URLs — not by text similarity. Token-overlap clustering manufactures cannibalisation; see `references/serp-overlap-methodology.md` for the full algorithm and anti-pattern callouts.\n   - **Budget guard before running.** Compute `estimated_credits = num_candidate_keywords × per_keyword_cost` where `per_keyword_cost = 3` (SERP-standard, default) or `10` (SERP-advanced, only if downstream needs AIO/PAA). Standard is sufficient for clustering. If `estimated_credits > 500`, surface the figure to the user and offer two paths: (a) proceed with SERP-standard, (b) trim the candidate set by raising the min-volume / lowering the max-KD thresholds in step 3 and re-running. If the user already requested SERP-advanced and the estimate exceeds 500, additionally offer SERP-standard as a cheaper fallback.\n   - **Fetch SERPs** (one call per unique candidate keyword, cached for the session) — see `references/serp-overlap-methodology.md` § \"Caching\". Total SERP fetches = number of keywords, not number of pairs.\n   - **Pairwise overlap scoring.** For each pair within an intent pre-group (see `references/serp-overlap-methodology.md` § \"Pre-Grouping\" for the optimisation that avoids full O(N²)), count shared URLs in the top 10 organic. Apply thresholds: 7-10 shared = same post (merge keywords), 4-6 = same cluster, 2-3 = interlink across clusters, 0-1 = separate clusters or exclude.\n   - **Form clusters** from the connected components in the 4-6+ overlap graph. Target 5 to 12 clusters. Each cluster gets a name, primary keyword, secondary keywords, total volume, weighted KD.\n   - Classify each cluster as pillar-worthy (broad, high volume, informational) or spoke-only (narrow, specific).\n\n5. **Pillar plus spokes architecture**\n   - For each pillar cluster, nominate 3 to 7 spoke articles (each one from a sub-cluster or question).\n   - For each spoke, draft an H1 and 3 to 5 H2s.\n   - Map internal-link structure: pillar links to all spokes, spokes link back to pillar, spokes cross-link where topically adjacent.\n\n6. **Prioritise**\n   - Applied **after** clusters are formed via SERP-overlap in step 4 — the formula scores already-grouped clusters, it does not influence which keywords cluster together.\n   - Score each cluster: volume (40%) + inverse KD (30%) + commercial intent weighting (30%).\n   - Output a prioritised build order.\n\n7. **Quality scorecard** (post-synthesis validation)\n   - After `PLAN.md` is written, run a 4-metric quality scorecard against the produced plan and warn the user if any metric fails. Inspired by theirs' post-execution scorecard model — adapted to our cluster-plan output (we score the *plan*, not generated content, since `seo-keyword-cluster` stops at the architecture).\n   - **Cannibalisation (zero tolerance).** No two clusters in the plan should share ≥ 40% SERP overlap with each other (computed from the cached SERP matrix in step 4). If two clusters trip this gate, re-merge them and re-run from step 5 onward.\n   - **Orphan (zero tolerance).** Every spoke article in the plan must be linked from its pillar in the internal-link map produced in step 5. Any spoke without an inbound link from its pillar is an orphan.\n   - **Coverage.** The pillar page in each cluster must cover ≥ 70% of the cluster's high-volume keywords (top half of the cluster by volume) in its primary keyword + secondary keyword set, or via the H2s drafted in step 5. Below 70% means the pillar is too narrow for the cluster it heads.\n   - **Anchor diversity.** Across all internal links inside a cluster (pillar↔spoke + spoke↔spoke), no single anchor text should be used > 40% of the time. Concentration above 40% is an over-optimisation signal.\n   - **Output.** If all four metrics pass, append a single line to `PLAN.md` under \"## Quality scorecard\": `All gates passed (cannibalisation/orphan/coverage/anchor-diversity).` If **any** metric fails, append a \"## Quality scorecard\" section to `PLAN.md` with red/yellow/green rows for each metric (red = fail, yellow = within 10% of threshold, green = pass), and annotate the verdict header at the top of `PLAN.md` with `(needs review — N quality-gate failures)`. Also write the same scorecard verbatim to `06-quality-scorecard.md` in the output folder so it's auditable independently.\n\n## Output format\n\nCreate a folder `seo-keyword-cluster-{target-slug}-{YYYYMMDD}/` with:\n\n```\nseo-keyword-cluster-{target-slug}-{YYYYMMDD}/\n├── 01-seed-expansion.md\n├── 02-filtered-keywords.md\n├── 03-cluster-assignment.md      (SERP overlap matrix + cluster groupings)\n├── 06-quality-scorecard.md       (evidence) — 4-metric gate result; written every run\n├── keywords.csv\n└── PLAN.md\n```\n\n`PLAN.md` follows this shape:\n\n```markdown\n# Cluster Plan: {topic} {(needs review — N quality-gate failures) if step 7 flagged any}\nMarket: {country}\nSeeds: {seed list}\n\n## Summary\n- Keywords analysed: {n}\n- Clusters formed: {n}\n- Estimated combined monthly volume: {n}\n- Pillars: {n}, spokes: {n}\n- Clustering method: SERP-overlap top-10 (mode: {standard | advanced}, ~{credits} credits)\n\n## Build order\n\n### Cluster 1: {cluster name} [PILLAR]\n- Primary keyword: {kw} ({volume}/mo, KD {kd})\n- Secondary: {list}\n- Total volume: {n}/mo\n- Priority score: {n}\n\n#### Pillar page\n- H1: {H1}\n- H2s: {list}\n\n#### Spoke articles\n1. **{spoke title}**\n   - H1: {H1}\n   - H2s: {list}\n   - Target keyword: {kw} ({volume})\n2. **{spoke title}** ...\n\n### Cluster 2: {cluster name} [SPOKE-ONLY]\n...\n\n## Internal linking map\n- Pillar A links to: spokes A1, A2, A3\n- Spoke A1 links back to: pillar A, and cross-links to spoke B2 (topical overlap)\n...\n\n## Quality scorecard\n{If all four gates pass:}\nAll gates passed (cannibalisation/orphan/coverage/anchor-diversity).\n\n{If any fail, render this table instead:}\n| Gate | Status | Detail |\n|---|---|---|\n| Cannibalisation (no two clusters ≥40% SERP overlap) | RED / YELLOW / GREEN | {detail} |\n| Orphan (every spoke linked from its pillar) | RED / YELLOW / GREEN | {detail} |\n| Coverage (pillar covers ≥70% of cluster's high-volume keywords) | RED / YELLOW / GREEN | {detail} |\n| Anchor diversity (no anchor used >40% of internal links per cluster) | RED / YELLOW / GREEN | {detail} |\n\n## Raw data\n- keywords.csv: full enriched keyword list\n- 03-cluster-assignment.md: every keyword and its cluster (incl. SERP overlap matrix)\n- 06-quality-scorecard.md: standalone copy of the scorecard above (evidence)\n```\n\n`keywords.csv` columns:\n`keyword,volume,kd,cpc,intent,cluster,role_in_cluster`\n\n## Tips\n\n- Respect Data API rate limit: 10 requests per second. With 20 seeds and 3 expansion endpoints, this is ~60 calls; pace sequentially.\n- Call `DATA_getCreditBalance` before running. The dominant cost driver is now the SERP-overlap pass in step 4: ≈ 3 credits per candidate keyword in SERP-standard mode (default), ≈ 10 credits in SERP-advanced. A typical 40-keyword candidate set is ≈ 120 credits standard / ≈ 400 credits advanced. Step 4's budget guard surfaces this estimate to the user before fetching any SERPs and offers a cheaper-fallback path if the estimate exceeds 500 credits.\n- Do not lump different intents into the same cluster even if the keywords are semantically similar. \"Best X\" (commercial) and \"What is X\" (informational) deserve separate content.\n- Pillar pages fail when they try to rank for too narrow a query. The primary keyword of a pillar cluster should have volume > 1,000/mo and be broad enough to justify a 3,000+ word article.\n- The priority score is a starting point, not a mandate. Ask the user to review the top 3 clusters before committing a quarter of content.\n- **Cluster merging is now SERP-driven, not text-driven.** If two clusters share ≥ 40% SERP overlap with each other, the step-7 cannibalisation gate flags them — re-merge those clusters and re-run from step 5.","tags":["seo","keyword","cluster","skills","seranking","agent-skills","ai-search","anthropic","backlinks","claude","claude-code","claude-plugin"],"capabilities":["skill","source-seranking","skill-seo-keyword-cluster","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-keyword-cluster","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 (9,108 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:36.554Z","embedding":null,"createdAt":"2026-05-18T13:14:10.199Z","updatedAt":"2026-05-18T19:08:36.554Z","lastSeenAt":"2026-05-18T19:08:36.554Z","tsv":"'-1':433 '-10':229,417,983 '-3':428 '-6':424,447 '-7':1388 '/mo':1000,1008 '0':432 '000':1337 '000/mo':1328 '01-seed-expansion.md':917 '02-filtered-keywords.md':918 '03-cluster-assignment.md':919,1148 '06-quality-scorecard.md':885,925,1158 '1':117,992,1020,1327 '10':276,412,855,1183,1230 '100':143 '100/mo':110 '12':453 '120':1243 '2':153,427,1031,1035 '20':94,1188 '3':92,178,270,329,495,516,1191,1219,1336,1357 '30':578,582 '4':209,423,446,555,601,673,927,1218,1250 '40':575,659,802,808,1093,1131,1238,1380 '400':1246 '5':168,451,485,518,690,716,768,1404 '500':293,346,1275 '6':542 '60':115,1196 '7':416,497,588,953 '70':738,770,1114 'a1':1049,1053 'a2':1050 'a3':1051 'across':38,151,430,784 'actual':224 'adapt':625 'addit':347 'adjac':541 'advanc':279,341,986,1235,1248 'aio/paa':284 'algorithm':247 'alreadi':337,560 'already-group':559 'also':878 'analys':963 'anchor':782,797,1126,1129 'annot':861 'anti':250 'anti-pattern':249 'api':1180 'append':821,838 'appli':414,544 'architectur':19,489,647 'articl':40,76,174,499,697,1019,1339 'ask':1350 'audit':893 'avoid':402 'b':97,310 'b2':1065 'back':532,1055 'base':156 'becom':172 'best':1293 'brand':192 'brief':45 'broad':475,1331 'budget':253,1252 'build':5,26,586,989 'c':105 'cach':364,370,668 'call':359,1197,1200 'callout':252 'candid':144,261,313,362,1222,1240 'cannibalis':241,648,1089,1389 'cannibalisation/orphan/coverage/anchor-diversity':833,1078 'cheaper':354,1268 'cheaper-fallback':1267 'classifi':468 'clean':179 'cluster':4,8,16,52,59,62,210,239,289,426,431,435,439,454,456,470,493,506,546,562,569,573,629,643,653,676,735,741,751,779,790,903,912,923,941,965,977,991,993,1034,1036,1092,1116,1136,1153,1173,1176,1285,1323,1358,1365,1378,1397 'cluster-plan':628 'column':1167 'combin':969 'commerci':206,579,1295 'commit':1360 'compon':443 'comput':257,665 'concentr':806 'concept':74 'connect':88,442 'content':7,36,44,638,1303,1364 'copi':1160 'cost':265,269,1207 'count':406 'countri':100,139,957 'cover':737,1113 'coverag':729,1111 'cpc':1171 'creat':897 'credit':259,292,987,988,1220,1231,1244,1247,1276 'cross':537,1061 'cross-link':536,1060 'd':111 'data':120,122,124,158,214,217,1142,1179,1201 'de':149 'de-dupl':148 'default':101,109,114,274,1229 'deserv':1301 'detail':1088,1099,1110,1125,1140 'detect':203 'differ':1280 'divers':783,1127 'domin':1206 'downstream':282 'draft':512,765 'driven':1371,1375 'driver':1208 'duplic':150 'endpoint':1193 'enough':1332 'enrich':1145 'estim':258,291,344,968,1256,1273 'even':1286 'everi':695,932,1101,1149 'evid':926,1165 'exceed':345,1274 'exclud':437 'execut':622 'expand':118 'expans':157,1192 'fail':616,837,852,1081,1306 'failur':877,950 'fallback':355,1269 'fetch':356,373,1261 'figur':296 'filter':181 'flag':954,1391 'folder':889,899 'follow':937 'form':438,548,966 'format':896 'formula':557 'four':818,1072 'full':246,403,1144 'gate':679,831,876,929,949,1073,1076,1086,1390 'generat':637 'get':457 'getcreditbal':1202 'getkeywordquest':159 'getlongtailkeyword':125 'getrelatedkeyword':121 'getserpresult':215 'getserptaskadvancedresult':218 'getsimilarkeyword':123 'googl':223 'graph':449 'green':858,1098,1109,1124,1139 'group':15,63,219,392,397,561,924 'guard':254,1253 'h1':514,1014,1015,1023,1024 'h1/h2':21,79 'h2s':519,764,1016,1025 'half':748 'head':781 'header':864 'high':476,744,1119 'high-volum':743,1118 'inbound':721 'incl':1154 'independ':894 'influenc':566 'inform':205,478,1300 'insid':788 'inspir':617 'instead':1085 'intent':14,66,163,204,389,580,1172,1281 'intent-group':13 'interlink':429 'intern':31,522,710,786,1041,1133 'internal-link':30,521,709 'invers':576 'justifi':1334 'kd':113,190,325,467,577,1001,1002,1170 'keyword':3,12,51,55,96,145,164,183,201,220,262,264,268,363,376,422,461,463,568,642,746,757,759,902,911,962,997,1028,1121,1146,1150,1168,1223,1239,1289,1319 'keywords.csv':934,1143,1166 'kw':998,1029 'least':142 'limit':1182 'line':824 'link':32,523,526,531,538,703,711,722,787,1042,1046,1054,1062,1103,1134 'list':960,1004,1017,1026,1147 'long':133 'long-tail':132 'lower':321 'lump':1279 'mandat':1349 'mani':39 'manufactur':240 'map':33,520,712,1043 'markdown':940 'market':99,956 'matrix':670,922,1157 'max':189,324 'max-kd':323 'maximum':112 'mcp':86 'mean':771 'merg':421,682,1366,1395 'method':978 'metric':602,615,819,836,850,928 'min':185,319 'min-volum':318 'minimum':106 'mode':984,1228 'model':624 'month':970 'must':701,736 'n':405,873,946,964,967,972,974,976,1007,1011 'name':459,994,1037 'narrow':483,776,1314 'navig':208 'need':283,871,944 'nomin':494 'num':260 'number':374,378 'o':404 'offer':301,348,1265 'one':358,501 'onward':691 'optimis':400,813 'option':104 'order':27,587,990 'organ':230,413 'orphan':692,728,1100 'output':583,631,815,888,895 'over-optimis':811 'overlap':213,238,382,448,552,661,921,981,1067,1095,1156,1214,1382 'paa/featured-snippet':176 'pace':1198 'page':732,1013,1305 'pair':380,386 'pairwis':381 'pass':820,832,859,1074,1077,1215 'path':303,1270 'pattern':251 'per':23,146,263,267,360,1135,1185,1221 'pillar':17,73,473,486,492,525,534,706,725,731,773,791,973,995,1012,1044,1057,1106,1112,1304,1322 'pillar-worthi':472 'plan':9,34,60,608,630,635,656,700,942 'plan.md':596,826,844,869,935,936 'plus':487 'point':1346 'post':420,592,621 'post-execut':620 'post-synthesi':591 'potenti':177 'pre':391,396 'pre-group':390,395 'prerequisit':83 'primari':460,756,996,1318 'prioriti':1009,1341 'prioritis':25,58,543,585 'proceed':305 'process':116 'produc':47,607,713 'provid':90 'pull':129,160 'qualiti':589,603,828,840,875,948,1068 'quality-g':874,947 'quarter':1362 'queri':1316 'question':155,162,508 'question-bas':154 'question-int':161 'rais':316 'rank':85,225,1311 'rate':1181 'raw':1141 're':332,681,686,1394,1400 're-merg':680,1393 're-run':331,685,1399 'red':851,1096,1107,1122,1137 'red/yellow/green':846 'references/serp-overlap-methodology.md':243,369,394 'relat':130 'remov':182 'render':1082 'request':338,1184 'respect':1178 'result':930 'review':872,945,1354 'role':1174 'row':847 'run':256,333,599,687,933,1204,1401 'score':383,558,571,633,1010,1342 'scorecard':590,604,623,829,841,882,1069,1163 'se':84 'search':65 'second':1186 'secondari':462,758,1003 'section':842 'see':242,368,393 'seed':11,54,95,119,128,147,152,169,958,959,1189 'semant':1291 'seo':2,43,641,901,910 'seo-content-brief':42 'seo-keyword-clust':1,640,900,909 'separ':434,1302 'sequenti':1199 'serp':212,272,278,308,340,350,357,372,551,660,669,920,980,1094,1155,1213,1226,1234,1263,1370,1381 'serp-advanc':277,339,1233 'serp-driven':1369 'serp-overlap':550,979,1212 'serp-standard':271,307,349,1225 'server':87 'session':367 'set':314,760,1241 'shape':939 'share':227,407,418,658,1379 'signal':814 'similar':131,235,1292 'sinc':639 'singl':49,796,823 'skill' 'skill-seo-keyword-cluster' 'slug':906,915 'source-seranking' 'specif':484 'spoke':18,24,75,82,173,481,488,498,511,529,530,535,696,718,792,793,794,975,1018,1021,1032,1039,1048,1052,1064,1102 'spoke-on':480,1038 'standalon':1159 'standard':273,285,309,351,985,1227,1245 'start':1345 'status':1087 'step':328,554,672,689,715,767,952,1217,1249,1387,1403 'stop':644 'strip':191 'structur':524 'sub':505 'sub-clust':504 'suffici':287 'suggest':22,78 'summari':961 'surfac':294,1254 'synthesi':593 'tabl':1084 'tag':199 'tail':134 'target':98,138,140,195,450,905,914,1027 'target-slug':904,913 'term':193 'text':234,798,1374 'text-driven':1373 'theme':68 'threshold':108,326,415,857 'tier':37 'time':805 'tip':1177 'titl':1022,1033 'togeth':570 'token':237 'token-overlap':236 'toler':650,694 'top':167,228,411,747,867,982,1356 'topic':540,943,1066 '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' 'total':71,371,464,1005 'transact':207 'transform':53 'tri':1309 'trim':311 'trip':677 'two':302,652,675,1091,1377 'typic':1237 'uniqu':361 'url':231,408 'us':102 'use':801,1130 'user':89,299,336,612,1259,1352 'usual':171 'valid':594 'variant':135 'verbatim':883 'verdict':863 'via':549,762 'volum':70,107,186,320,465,477,574,745,753,971,999,1006,1030,1120,1169,1326 'vs':41 'warn':610 'weight':466,581 'within':387,854 'without':719 'word':1338 'worthi':474 'write':879 'written':598,931 'x':1294,1299 'yellow':853,1097,1108,1123,1138 'yyyymmdd':907,916 'zero':649,693","prices":[{"id":"1e2fc894-b17d-4f62-b610-a709473cf6ef","listingId":"eed0dcb2-fb7a-4f7c-aae4-327543a792da","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:10.199Z"}],"sources":[{"listingId":"eed0dcb2-fb7a-4f7c-aae4-327543a792da","source":"github","sourceId":"seranking/seo-skills/seo-keyword-cluster","sourceUrl":"https://github.com/seranking/seo-skills/tree/main/skills/seo-keyword-cluster","isPrimary":false,"firstSeenAt":"2026-05-18T13:14:10.199Z","lastSeenAt":"2026-05-18T19:08:36.554Z"}],"details":{"listingId":"eed0dcb2-fb7a-4f7c-aae4-327543a792da","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"seranking","slug":"seo-keyword-cluster","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":"c146e413d393a245befabaf90b7155d5ab247c3e","skill_md_path":"skills/seo-keyword-cluster/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/seranking/seo-skills/tree/main/skills/seo-keyword-cluster"},"layout":"multi","source":"github","category":"seo-skills","frontmatter":{"name":"seo-keyword-cluster","description":"Build a content cluster plan from seed keywords: intent-grouped clusters, pillar+spokes architecture with H1/H2 suggestions per spoke, prioritised build order, and an internal-linking map. Plans a content tier across many articles (vs `seo-content-brief` which produces a single article from a topic; vs `seo-page` which audits one existing URL). Use when the user asks for keyword clustering, topical map, pillar content strategy, content cluster plan, or content calendar from a keyword list."},"skills_sh_url":"https://skills.sh/seranking/seo-skills/seo-keyword-cluster"},"updatedAt":"2026-05-18T19:08:36.554Z"}}