Inventory the existing publication

Begin with a list of public article URLs and their corresponding source files. Capture titles, descriptions, publication dates, authors, images, internal links, and any redirects already in place. Astro's Markdown documentation is relevant to file-based content, while Google's migration guidance explains the importance of URL planning. For a hypothetical infrastructure startup moving tutorials into a CMS, the source repository is not the whole website: templates and build-time transformations may contribute important content that must be captured separately.

Map source features to destination features

Identify Markdown extensions, custom components, callouts, diagrams, and code highlighting used by the old site. Decide how each will become editable content in the CMS. Do not assume raw source text will produce equivalent output. Create a conversion plan for unsupported structures and preserve meaning before decorative similarity. The infrastructure startup may use a custom component for terminal commands; importing its tag literally would leave readers with unexplained markup. Test the most complex articles early because they reveal the true migration scope better than a simple welcome post.

Preserve addresses where practical

Keeping existing article URLs reduces the number of moving parts. If routes must change, create an old-to-new mapping and implement direct redirects. Update canonical metadata, internal links, and sitemap entries consistently. Include image paths in the migration plan, since a successful HTML migration can still leave broken illustrations. Do not redirect unrelated retired content to arbitrary articles just to avoid an error. For the startup, each tutorial should either retain its address, move to a clear replacement, or receive a deliberate retirement decision.

Run a staged content comparison

Import a sample into a nonpublic review environment and compare rendered output against the existing pages. Check headings, lists, code, tables, links, and downloadable assets. Verify dates and authors rather than allowing every imported post to look newly published by the migration account. Keep a record of source identities and destination identifiers so rerunning the import updates the same items. A failed import should be recoverable without manual duplicate deletion. Once the sample passes, expand in controlled batches and review exceptions separately.

Cut over with an observation plan

Freeze or carefully reconcile edits during the final transfer so last-minute changes are not lost. Deploy the new routes and redirects, then inspect a sample of important pages and known edge cases. Compare the public URL inventory with the new sitemap and check for missing articles. Monitor error logs and search reporting after release. Keep the original source available for correction and recovery rather than deleting it immediately. The infrastructure startup's migration is complete when readers can still follow old links and editors can maintain the imported content reliably.

Retain a migration exceptions list with an owner for each unresolved issue. An unsupported diagram, missing author, or broken download should remain visible until deliberately fixed or accepted, rather than disappearing into a generic completion report.

PUT IT TO WORK

Inventory rendered content, preserve URL mappings, and validate complex articles before migrating the full library.

Sources & further reading

Official documentation informs this guide. Examples are illustrative, and product interfaces or limits can change.

THE WORKSPACE WE'RE BUILDING

From search signals to a useful first draft.

SERP.so is in development. Join the waitlist for a workspace that connects research, content review, and publishing.

Join early access ↗