Read a broken migration from its own sitemap

The Content Factory · Migration Recovery

David Meerman Scott wrote two blogs on TypePad for years — his Apollo artifact collection and the renovation of his 1958 mid-century house. When TypePad wound down and the posts moved to WordPress, the migration broke in a dozen quiet ways: photos went dead, dates got scrambled, URLs came out mangled. Here’s the move most people skip: you can read almost all of that damage straight out of the site’s own sitemap, before you touch a single page. We did it across 124 posts, and every fix traces to a file — not a guess.

The sitemap is the fastest audit you’re not running

When a blog gets moved between platforms, the wreckage is rarely random. Importers make the same mistakes every time, and they leave the same fingerprints — most of them sitting in /sitemap.xml, free, one request, no login. Before crawling a single post on apolloartifacts.com or techbuiltrenovation.com, the sitemap already told us what broke and where.

Rule we hold to: a number you report has to come from a file you can open. The importer’s own log claimed one post count; the live sitemap showed 124. We trust the sitemap, every time — the live site can’t round up, can’t misremember, can’t be optimistic. Count it, don’t estimate it.

124
Apollo posts live — counted from the sitemap, not estimated
55
Images across 48 posts propped up by an Archive proxy or a dead host
50
Posts still on raw TypePad slugs; 77 stamped with the import date
18
Old permalinks reconnected to their new homes, reconstructed from the data

What a broken migration leaves in the sitemap

Every fingerprint below maps to an exact fix. Learn to spot them and you can triage a migration in minutes instead of days.

Fingerprint in the live sitemapWhat it provesFix
Slug is an under_score string cut to ~15 chars (apollo_command__2, moon_rock_conta)The raw TypePad slug rode over untouched — WordPress uses hyphens, never underscoresRewrite to a human slug, 301 the old one SEO
lastmod is the import day (Oct 14, 2025) on a post that’s really from 2007The date got reset to the day the importer ran, not the day David wrote itBackdate to the true date TRUST
Image src starts web.archive.org/…im_/ or a dead /images/ pathThe photo only “works” by borrowing the Internet Archive — one outage and it’s gonePull the id_ full-res original, rehost to WP media BROKEN
That same archived src contains /images/2007/04/30/The post’s real publish date, handed to you for freeUse it to backdate AND rebuild the old URL FREE DATA
A slug plus -2 next to its twinThe importer created a duplicateMerge, keep the better copy, 301 the loser DUPE
Typos frozen into the URL: reonovation, russion, biographisA bad slug is now a permanent, indexable addressFix the slug, 301 the misspelling EMBARRASSING

The fourth row is the quiet winner. A broken image is annoying; the path inside that broken image is a gift — it carries the year, month, and day the post was published, which is exactly what you need to un-break the date and reconstruct the old permalink for the redirect. One defect hands you the fix for two others.

The recovery package

Everything below is derived from the live sites and checked against a file you can open. Nothing is estimated. Run in this order:

1. Slugs & dates. A triage sheet — 81 posts, each row carrying its exact fix and the true date pulled from the original image path.
2. Images. A runnable script that pulls the full-resolution originals from the Archive, uploads them to the WordPress media library, and writes a swap map for the 55 fragile images.
3. Redirects. 18 reconstructed 301s in .htaccess form, so the old Wikipedia / Forbes / WNYC / collectSPACE links land on the right new post.
4. Duplicates. The three -2 pairs, merged, loser redirected.
5. Typos. The flagship reonovation, the russion page, the biographis post — fixed and redirected.

One step we ran differently: enumerating posts that are missing entirely needs the Internet Archive’s index, which the build environment couldn’t reach. Rather than estimate it, we wrote the exact query into the README so it runs the second it’s on a machine with Archive access. A blocked step you hand off precisely beats a guessed number you have to walk back.

Don’t audit a migration by eye. The sitemap already knows what broke — underscore slugs, import-day dates, borrowed photos, real dates hidden in image paths. Read it first.

Steal this checklist

1. Pull /sitemap.xml before you crawl anything — it’s the cheapest, fastest read on a migration’s health.
2. Count from the live site, not the importer’s log. A number that doesn’t trace to a file you can open is an estimate, so label it or replace it.
3. Scan slugs for underscores and truncation, lastmod for the import date, image src for proxied or dead hosts.
4. Mine the image paths — /images/YYYY/MM/DD/ hands you the true publish date for free.
5. When a step is blocked, hand off the exact command — don’t paper over the gap with a plausible guess.

The one line that carries the method: the sitemap is a confession the migration can’t help making — read it before you trust anything else.

David’s archive is recoverable: every broken photo has a full-res original waiting in the Archive, and eighteen years of inbound links get their destinations back. The sites stay honest the same way every build in this series does — nothing publishes without a change list you can see first. Same discipline we run on the CXOTalk inventory audit and the Billy Batt delta.

Run a Quick Audit on your own site → How the Content Factory works →

Dennis Yu
Dennis Yu
Dennis Yu is the CEO of Local Service Spotlight, a platform that amplifies the reputations of contractors and local service businesses using the Content Factory process. He is a former search engine engineer who has spent a billion dollars on Google and Facebook ads for Nike, Quiznos, Ashley Furniture, Red Bull, State Farm, and other brands. Dennis has achieved 25% of his goal of creating a million digital marketing jobs by partnering with universities, professional organizations, and agencies. Through Local Service Spotlight, he teaches the Dollar a Day strategy and Content Factory training to help local service businesses enhance their existing local reputation and make the phone ring. Dennis coaches young adult agency owners serving plumbers, AC technicians, landscapers, roofers, electricians, and believes there should be a standard in measuring local marketing efforts, much like doctors and plumbers must be certified.