{"id":"1094806f-ce72-4e1f-ace6-280363a74cd6","shortId":"jnHw6s","kind":"skill","title":"website-migration-audit","tagline":"Compare a production site against a staging/redesign version — SEO parity, content integrity, missing pages, and launch readiness","description":"# Website Migration Audit\n\nCompare a production website against a staging or redesigned version to catch SEO regressions, missing pages, content drift, and launch blockers before going live.\n\nUse this skill when a site is being rebuilt, redesigned, re-platformed, or migrated to a new CMS — especially when the work is done by an external consultant or agency and needs review before launch.\n\n## Usage\n\n```\n/website-migration-audit example.com staging.example.com\n/website-migration-audit example.com staging.example.com --deep\n```\n\n## Instructions\n\nYou are a website migration QA specialist. Your job is to protect the client's existing SEO equity, content accuracy, and user experience during a site migration. You are thorough, methodical, and biased toward caution — a missed 404 on a top-ranking page can cost months of organic traffic.\n\nWhen both URLs are provided, run the full audit below. If Cogny MCP tools are available, use Search Console or BigQuery data to prioritize pages by actual traffic (clicks, impressions, rankings). Without MCP, fall back to sitemap crawling and public data.\n\n---\n\n## Steps\n\n### 1. Identify top SEO pages on the production site\n\n**With Cogny MCP (preferred):** Query Search Console or BigQuery for the top 25 pages by clicks over the last 3 months. Record clicks, impressions, CTR, and average position for each.\n\n```sql\n-- Example: BigQuery Search Console export\nSELECT\n  url,\n  SUM(clicks) AS total_clicks,\n  SUM(impressions) AS total_impressions,\n  ROUND(SAFE_DIVIDE(SUM(clicks), SUM(impressions)) * 100, 2) AS ctr_pct,\n  ROUND(SAFE_DIVIDE(SUM(sum_position), SUM(impressions)), 1) AS avg_position\nFROM `searchconsole.searchdata_url_impression`\nWHERE data_date >= DATE_SUB(CURRENT_DATE(), INTERVAL 90 DAY)\n  AND search_type = 'WEB'\nGROUP BY url\nORDER BY total_clicks DESC\nLIMIT 25\n```\n\n**Without MCP:** Fetch `/sitemap.xml` from the production site and extract all URLs. Use WebSearch `site:example.com` to estimate which pages have the most visibility.\n\nClassify pages into priority tiers:\n- **Critical** (top 5 by clicks) — any issue is a launch blocker\n- **High** (top 6-15) — issues should be fixed before launch\n- **Medium** (top 16-25) — issues should be fixed within first week\n- **Standard** (all remaining) — verify they exist, spot-check content\n\n### 2. URL parity check\n\nFor every production URL found in step 1 (plus sitemap, key navigation pages, and legal pages like privacy policy), fetch the equivalent path on the staging site.\n\nRecord the HTTP status:\n- **200** — page exists, proceed to content comparison\n- **301/302** — note the redirect target, verify it's intentional\n- **404** — **flag as blocker** if Critical/High tier, warning if Medium/Standard\n- **500** — flag as blocker regardless of tier\n\nPresent results as a table:\n\n```\nURL Parity Check: [production] vs [staging]\n\nBLOCKERS:\n| URL               | Prod Status | Staging Status | Traffic (3mo) | Tier     |\n|-------------------|-------------|----------------|---------------|----------|\n| /important-page/  | 200         | 404            | 500 clicks    | Critical |\n\nOK:\n| URL               | Prod Status | Staging Status | Tier     |\n|-------------------|-------------|----------------|----------|\n| /                 | 200         | 200            | Critical |\n| /services/        | 200         | 200            | High     |\n```\n\nAlso check:\n- Trailing slash consistency (if production uses trailing slashes, staging must too)\n- Case sensitivity (URLs should match case exactly)\n- Query parameter handling\n\n### 3. SEO element comparison\n\nFor all Critical and High tier pages, fetch both production and staging versions and compare:\n\n**Title tags:**\n- Must match exactly (or be intentionally improved)\n- Flag any missing titles, duplicates, or significant changes\n\n**H1 tags:**\n- Each page should have exactly one H1\n- Content should match or be intentionally improved\n- Flag missing H1s or multiple H1s\n\n**Meta descriptions:**\n- Compare content, flag if removed\n- Note if production is missing them too (common — not a regression)\n\n**Canonical tags:**\n- Each staging page should have `<link rel=\"canonical\">` pointing to the production URL\n- Flag self-referencing canonicals pointing to the staging domain\n\n**Meta robots:**\n- Staging should have `noindex` to prevent Google from indexing it\n- Verify this will be removed before launch\n\n**Heading hierarchy:**\n- Compare H1 > H2 > H3 structure\n- Flag skipped heading levels (e.g., H1 directly to H4)\n\nPresent as a comparison table per page.\n\n### 4. Content integrity check\n\nFor all Critical and High tier pages, compare:\n\n**Text content:**\n- Body text should match or be intentionally updated\n- Flag missing sections, truncated content, or placeholder text\n- Watch for lorem ipsum, \"TODO\", or template artifacts\n\n**Contact information:**\n- Phone numbers must match exactly\n- Email addresses must match exactly\n- Physical address must match exactly\n- Business hours must match exactly\n\n**Pricing and offers:**\n- Any pricing displayed must match production exactly\n- Package names, descriptions, and prices\n- Discount percentages, tax deduction info\n\n**Images:**\n- All production images should be present on staging\n- Flag broken images (src returning 404)\n- Check that alt text is preserved\n\n**CTAs and forms:**\n- All call-to-action buttons present\n- Button text matches\n- Links point to correct destinations\n- Forms have all required fields\n\n### 5. Navigation and site structure\n\n**Header:**\n- Logo links to homepage\n- Menu items match production\n- Dropdown/submenu structure preserved\n- Mobile menu works (check viewport meta tag)\n\n**Footer:**\n- All footer links present and working\n- Contact information matches\n- Legal links present (privacy policy, terms)\n- Social media links correct\n\n**Internal linking:**\n- Cross-links between pages preserved\n- No links pointing to staging domain (should use relative paths or production domain)\n- No broken internal links\n\n### 6. Technical checks\n\n**Sitemap:**\n- `/sitemap.xml` exists and is valid\n- Contains all indexable pages\n- No 404 URLs listed\n- URLs use production domain (not staging)\n\n**Robots.txt:**\n- `/robots.txt` exists\n- Does not block important resources\n- References sitemap\n\n**HTTPS:**\n- All pages load over HTTPS\n- No mixed content (HTTP resources on HTTPS page)\n\n**Performance (spot check):**\n- Staging is not significantly slower than production\n- No large unoptimized images\n- No render-blocking resources missing\n\n**Language and locale:**\n- `<html lang=\"...\">` attribute matches production\n- Character encoding correct (Swedish characters, accents, etc.)\n\n### 7. Functional testing\n\n- [ ] Contact form submits successfully\n- [ ] Cookie consent banner appears and functions\n- [ ] Phone numbers are clickable (`tel:` links) on mobile\n- [ ] External links open correctly\n- [ ] 404 page exists and is helpful\n\n### 8. Generate the audit report\n\nPresent findings as a structured report:\n\n```\nWebsite Migration Audit\nProduction: [url]\nStaging: [url]\nDate: [date]\nPages analyzed: [N]\n\nLAUNCH READINESS: [BLOCKED / READY WITH WARNINGS / READY]\n\n━━━ BLOCKERS (must fix before launch) ━━━\n\n[B1] Missing page: /important-page/\n     Traffic: 500 clicks/3mo, avg position 4.9\n     Impact: Will lose page-1 ranking immediately\n     Fix: Create page on staging with matching content\n\n[B2] ...\n\n━━━ WARNINGS (should fix before launch) ━━━\n\n[W1] Title tag changed: /services/\n     Production: \"Services | Brand Name\"\n     Staging: \"Our Services\"\n     Impact: May affect CTR for existing rankings\n     Fix: Restore original title tag\n\n[W2] ...\n\n━━━ SEO SCORECARD ━━━\n\n| Check                    | Status | Details                          |\n|--------------------------|--------|----------------------------------|\n| URL parity               | X/Y OK | [N] pages missing                |\n| Title tags               | X/Y OK | [N] changed                      |\n| H1 tags                  | X/Y OK | [N] missing or changed           |\n| Meta descriptions        | X/Y OK | [N] removed                      |\n| Canonical tags           | X/Y OK | [N] missing or wrong             |\n| Contact info             | PASS   | All matching                     |\n| Pricing                  | PASS   | All matching                     |\n| Images                   | X/Y OK | [N] broken                       |\n| Internal links           | X/Y OK | [N] broken                       |\n| Sitemap                  | PASS   | [N] URLs                         |\n| Robots.txt               | PASS   |                                  |\n| HTTPS                    | PASS   |                                  |\n\n━━━ PRE-LAUNCH CHECKLIST ━━━\n\nBefore switching DNS / going live:\n- [ ] All blockers resolved\n- [ ] Remove noindex tags from staging\n- [ ] Update canonical URLs to production domain\n- [ ] Verify sitemap references production URLs\n- [ ] Submit updated sitemap to Google Search Console\n- [ ] Set up 301 redirects for any changed URLs\n- [ ] Verify analytics tracking (GA4 / GTM) is installed\n- [ ] Take baseline screenshots of top pages in Google Cache\n\n━━━ POST-LAUNCH MONITORING (first 4 weeks) ━━━\n\nWeek 1:\n- Monitor Search Console for crawl errors daily\n- Check indexed page count hasn't dropped\n- Verify top pages still appear in search results\n- Monitor 404 errors in server logs\n\nWeek 2-4:\n- Compare click/impression data week-over-week\n- Check average position for key pages\n- Verify no new crawl issues\n- Monitor Core Web Vitals in Search Console\n```\n\n## Deeper Analysis with Live Data\n\nIf Cogny MCP is connected, this skill automatically enhances the audit with:\n\n**Google Search Console / BigQuery:** actual traffic data to prioritize pages by real-world SEO impact — clicks, impressions, CTR, and average position.\n\n**Bing Webmaster Tools:** Bing-specific crawl issues, indexing status, and traffic data.\n\nConnect your accounts via [Cogny](https://cogny.com) ($9/mo per channel), then re-run the audit for traffic-weighted prioritization.\n\nFor ongoing monitoring after launch, use `/seo-monitor`.","tags":["website","migration","audit","claude","code","marketing","skills","cognyai","agent-skills","ai-agents","claude-code","claude-skills"],"capabilities":["skill","source-cognyai","skill-website-migration-audit","topic-agent-skills","topic-ai-agents","topic-claude-code","topic-claude-skills","topic-cluade-mcp","topic-cursor","topic-geo","topic-growth-hacking","topic-llm","topic-marketing","topic-mcp","topic-seo"],"categories":["claude-code-marketing-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/cognyai/claude-code-marketing-skills/website-migration-audit","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add cognyai/claude-code-marketing-skills","source_repo":"https://github.com/cognyai/claude-code-marketing-skills","install_from":"skills.sh"}},"qualityScore":"0.474","qualityRationale":"deterministic score 0.47 from registry signals: · indexed on github topic:agent-skills · 48 github stars · SKILL.md body (10,015 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:58:08.297Z","embedding":null,"createdAt":"2026-04-24T12:57:29.909Z","updatedAt":"2026-05-18T18:58:08.297Z","lastSeenAt":"2026-05-18T18:58:08.297Z","tsv":"'-1':990 '-15':338 '-25':348 '-4':1198 '/important-page':454,979 '/robots.txt':854 '/seo-monitor':1302 '/services':470,1011 '/sitemap.xml':298,834 '/website-migration-audit':86,89 '1':186,263,377,1167 '100':250 '16':347 '2':251,366,1197 '200':401,455,467,468,471,472 '25':207,294 '3':214,497 '301':1137 '301/302':408 '3mo':452 '4':637,1164 '4.9':985 '404':131,417,456,731,844,935,1191 '5':326,761 '500':427,457,981 '6':337,830 '7':910 '8':941 '9/mo':1282 '90':279 'accent':908 'account':1278 'accuraci':113 'action':745 'actual':170,1245 'address':683,688 'affect':1021 'agenc':79 'also':474 'alt':734 'analysi':1225 'analyt':1144 'analyz':962 'appear':920,1186 'artifact':674 'attribut':900 'audit':4,24,152,944,954,1239,1290 'automat':1236 'avail':159 'averag':221,1207,1261 'avg':265,983 'b1':976 'b2':1001 'back':178 'banner':919 'baselin':1151 'bias':126 'bigqueri':164,203,227,1244 'bing':1263,1267 'bing-specif':1266 'block':858,894,966 'blocker':45,334,420,430,445,971,1110 'bodi':651 'brand':1014 'broken':727,827,1085,1091 'busi':692 'button':746,748 'cach':1158 'call':743 'call-to-act':742 'canon':573,589,1064,1118 'case':487,492 'catch':36 'caution':128 'chang':532,1010,1049,1057,1141 'channel':1284 'charact':903,907 'check':364,369,441,475,640,732,781,832,879,1034,1175,1206 'checklist':1103 'classifi':319 'click':172,210,217,234,237,247,291,328,458,1257 'click/impression':1200 'clickabl':926 'clicks/3mo':982 'client':107 'cms':67 'cogni':155,196,1230,1280 'cogny.com':1281 'common':569 'compar':5,25,515,557,616,648,1199 'comparison':407,500,633 'connect':1233,1276 'consent':918 'consist':478 'consol':162,201,229,1134,1170,1223,1243 'consult':77 'contact':675,792,913,1072 'contain':839 'content':15,41,112,365,406,542,558,638,650,663,871,1000 'cooki':917 'core':1218 'correct':754,804,905,934 'cost':139 'count':1178 'crawl':181,1172,1215,1269 'creat':994 'critic':324,459,469,503,643 'critical/high':422 'cross':808 'cross-link':807 'ctas':738 'ctr':219,253,1022,1259 'current':276 'daili':1174 'data':165,184,272,1201,1228,1247,1275 'date':273,274,277,959,960 'day':280 'deduct':715 'deep':92 'deeper':1224 'desc':292 'descript':556,709,1059 'destin':755 'detail':1036 'direct':627 'discount':712 'display':702 'divid':245,257 'dns':1106 'domain':594,818,825,850,1122 'done':73 'drift':42 'drop':1181 'dropdown/submenu':775 'duplic':529 'e.g':625 'element':499 'email':682 'encod':904 'enhanc':1237 'equiti':111 'equival':391 'error':1173,1192 'especi':68 'estim':312 'etc':909 'everi':371 'exact':493,520,539,681,686,691,696,706 'exampl':226 'example.com':87,90,310 'exist':109,361,403,835,855,937,1024 'experi':116 'export':230 'extern':76,931 'extract':304 'fall':177 'fetch':297,389,508 'field':760 'find':947 'first':354,1163 'fix':342,352,973,993,1004,1026 'flag':418,428,525,549,559,585,621,659,726 'footer':785,787 'form':740,756,914 'found':374 'full':151 'function':911,922 'ga4':1146 'generat':942 'go':47,1107 'googl':603,1132,1157,1241 'group':285 'gtm':1147 'h1':533,541,617,626,1050 'h1s':551,554 'h2':618 'h3':619 'h4':629 'handl':496 'hasn':1179 'head':614,623 'header':766 'help':940 'hierarchi':615 'high':335,473,505,645 'homepag':770 'hour':693 'http':399,872 'https':863,868,875,1098 'identifi':187 'imag':717,720,728,890,1081 'immedi':992 'impact':986,1019,1256 'import':859 'impress':173,218,239,242,249,262,270,1258 'improv':524,548 'index':605,841,1176,1271 'info':716,1073 'inform':676,793 'instal':1149 'instruct':93 'integr':16,639 'intent':416,523,547,657 'intern':805,828,1086 'interv':278 'ipsum':670 'issu':330,339,349,1216,1270 'item':772 'job':102 'key':380,1210 'languag':897 'larg':888 'last':213 'launch':20,44,84,333,344,613,964,975,1006,1102,1161,1300 'legal':384,795 'level':624 'like':386 'limit':293 'link':751,768,788,796,803,806,809,814,829,928,932,1087 'list':846 'live':48,1108,1227 'load':866 'local':899 'log':1195 'logo':767 'lorem':669 'lose':988 'match':491,519,544,654,680,685,690,695,704,750,773,794,901,999,1076,1080 'may':1020 'mcp':156,176,197,296,1231 'media':802 'medium':345 'medium/standard':426 'menu':771,779 'meta':555,595,783,1058 'method':124 'migrat':3,23,63,98,120,953 'miss':17,39,130,527,550,566,660,896,977,1043,1055,1069 'mix':870 'mobil':778,930 'monitor':1162,1168,1190,1217,1298 'month':140,215 'multipl':553 'must':485,518,679,684,689,694,703,972 'n':963,1041,1048,1054,1062,1068,1084,1090,1094 'name':708,1015 'navig':381,762 'need':81 'new':66,1214 'noindex':600,1113 'note':409,562 'number':678,924 'offer':699 'ok':460,1040,1047,1053,1061,1067,1083,1089 'one':540 'ongo':1297 'open':933 'order':288 'organ':142 'origin':1028 'packag':707 'page':18,40,137,168,190,208,314,320,382,385,402,507,536,577,636,647,811,842,865,876,936,961,978,989,995,1042,1155,1177,1184,1211,1250 'paramet':495 'pariti':14,368,440,1038 'pass':1074,1078,1093,1097,1099 'path':392,822 'pct':254 'per':635,1283 'percentag':713 'perform':877 'phone':677,923 'physic':687 'placehold':665 'platform':61 'plus':378 'point':580,590,752,815 'polici':388,799 'posit':222,260,266,984,1208,1262 'post':1160 'post-launch':1159 'pre':1101 'pre-launch':1100 'prefer':198 'present':434,630,723,747,789,797,946 'preserv':737,777,812 'prevent':602 'price':697,701,711,1077 'priorit':167,1249,1295 'prioriti':322 'privaci':387,798 'proceed':404 'prod':447,462 'product':7,27,193,301,372,442,480,510,564,583,705,719,774,824,849,886,902,955,1012,1121,1126 'protect':105 'provid':148 'public':183 'qa':99 'queri':199,494 'rank':136,174,991,1025 're':60,1287 're-platform':59 're-run':1286 'readi':21,965,967,970 'real':1253 'real-world':1252 'rebuilt':57 'record':216,397 'redesign':33,58 'redirect':411,1138 'refer':861,1125 'referenc':588 'regardless':431 'regress':38,572 'relat':821 'remain':358 'remov':561,611,1063,1112 'render':893 'render-block':892 'report':945,951 'requir':759 'resolv':1111 'resourc':860,873,895 'restor':1027 'result':435,1189 'return':730 'review':82 'robot':596 'robots.txt':853,1096 'round':243,255 'run':149,1288 'safe':244,256 'scorecard':1033 'screenshot':1152 'search':161,200,228,282,1133,1169,1188,1222,1242 'searchconsole.searchdata':268 'section':661 'select':231 'self':587 'self-referenc':586 'sensit':488 'seo':13,37,110,189,498,1032,1255 'server':1194 'servic':1013,1018 'set':1135 'signific':531,883 'site':8,54,119,194,302,309,396,764 'sitemap':180,379,833,862,1092,1124,1130 'skill':51,1235 'skill-website-migration-audit' 'skip':622 'slash':477,483 'slower':884 'social':801 'source-cognyai' 'specialist':100 'specif':1268 'spot':363,878 'spot-check':362 'sql':225 'src':729 'stage':31,395,444,449,464,484,512,576,593,597,725,817,852,880,957,997,1016,1116 'staging.example.com':88,91 'staging/redesign':11 'standard':356 'status':400,448,450,463,465,1035,1272 'step':185,376 'still':1185 'structur':620,765,776,950 'sub':275 'submit':915,1128 'success':916 'sum':233,238,246,248,258,259,261 'swedish':906 'switch':1105 'tabl':438,634 'tag':517,534,574,784,1009,1030,1045,1051,1065,1114 'take':1150 'target':412 'tax':714 'technic':831 'tel':927 'templat':673 'term':800 'test':912 'text':649,652,666,735,749 'thorough':123 'tier':323,423,433,453,466,506,646 'titl':516,528,1008,1029,1044 'todo':671 'tool':157,1265 'top':135,188,206,325,336,346,1154,1183 'top-rank':134 'topic-agent-skills' 'topic-ai-agents' 'topic-claude-code' 'topic-claude-skills' 'topic-cluade-mcp' 'topic-cursor' 'topic-geo' 'topic-growth-hacking' 'topic-llm' 'topic-marketing' 'topic-mcp' 'topic-seo' 'total':236,241,290 'toward':127 'track':1145 'traffic':143,171,451,980,1246,1274,1293 'traffic-weight':1292 'trail':476,482 'truncat':662 'type':283 'unoptim':889 'updat':658,1117,1129 'url':146,232,269,287,306,367,373,439,446,461,489,584,845,847,956,958,1037,1095,1119,1127,1142 'usag':85 'use':49,160,307,481,820,848,1301 'user':115 'valid':838 'verifi':359,413,607,1123,1143,1182,1212 'version':12,34,513 'via':1279 'viewport':782 'visibl':318 'vital':1220 'vs':443 'w1':1007 'w2':1031 'warn':424,969,1002 'watch':667 'web':284,1219 'webmast':1264 'websearch':308 'websit':2,22,28,97,952 'website-migration-audit':1 'week':355,1165,1166,1196,1203,1205 'week-over-week':1202 'weight':1294 'within':353 'without':175,295 'work':71,780,791 'world':1254 'wrong':1071 'x/y':1039,1046,1052,1060,1066,1082,1088","prices":[{"id":"35a1273a-b3f0-4d99-a2e3-f469a3849376","listingId":"1094806f-ce72-4e1f-ace6-280363a74cd6","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"cognyai","category":"claude-code-marketing-skills","install_from":"skills.sh"},"createdAt":"2026-04-24T12:57:29.909Z"}],"sources":[{"listingId":"1094806f-ce72-4e1f-ace6-280363a74cd6","source":"github","sourceId":"cognyai/claude-code-marketing-skills/website-migration-audit","sourceUrl":"https://github.com/cognyai/claude-code-marketing-skills/tree/main/skills/website-migration-audit","isPrimary":false,"firstSeenAt":"2026-04-24T12:57:29.909Z","lastSeenAt":"2026-05-18T18:58:08.297Z"}],"details":{"listingId":"1094806f-ce72-4e1f-ace6-280363a74cd6","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"cognyai","slug":"website-migration-audit","github":{"repo":"cognyai/claude-code-marketing-skills","stars":48,"topics":["agent-skills","ai-agents","claude-code","claude-skills","cluade-mcp","cursor","geo","growth-hacking","llm","marketing","mcp","seo","vibe","windsurf"],"license":null,"html_url":"https://github.com/cognyai/claude-code-marketing-skills","pushed_at":"2026-05-07T20:57:53Z","description":"Marketing skills for Claude Code — SEO audits and implementation, ad analysis, ad optimization. Free skills need no account. $9/mo for live Search Console, Bing & LinkedIn data.","skill_md_sha":"ab6d8112f17336d7a152800ec2cf4f837e295a7c","skill_md_path":"skills/website-migration-audit/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/cognyai/claude-code-marketing-skills/tree/main/skills/website-migration-audit"},"layout":"multi","source":"github","category":"claude-code-marketing-skills","frontmatter":{"name":"website-migration-audit","description":"Compare a production site against a staging/redesign version — SEO parity, content integrity, missing pages, and launch readiness"},"skills_sh_url":"https://skills.sh/cognyai/claude-code-marketing-skills/website-migration-audit"},"updatedAt":"2026-05-18T18:58:08.297Z"}}