AI
Development

Using Claude to migrate content from Umbraco to WordPress

Written by
Sam Phillips

Technical Director

Contents

We worked with our client to move around almost 500 pieces of content (posts, events, PDFs) from an Umbraco site into a new Content Management System.

We built a migration tool using Claude Cowork that was able to inspect the source site in Chrome to determine the HTML structure.

The tool then wrote Python scripts to scrape the content and upload it into WordPress via the REST API.

The workflow

The process for each content type followed the same pattern:

Point Claude at a sample page

Claude opened the sample page in Chrome, inspected the DOM, and identified the right selectors for titles, dates, content, metadata, images, etc.

Use Claude to build a scraper

Claude built a Python script that visits every page, extracts the structured data, and saves it to a JSON file.
Where the listing page used JavaScript pagination (load-more buttons), Claude automated Chrome to click through and grab all the URLs first.

Use Claude to build an importer

Claude built a second script that was able to read the JSON, upload images to the WP media library, map fields to ACF, and create posts via the REST API.

Feed back any errors

We reviewed the output and where errors were returned (wrong field names, ACF validation errors), we’d paste the traceback, and Claude would fix the script. This feedback loop is a similar pattern we use across our AI workflow consultancy engagements.

Most issues were resolved in one round.

Post-import fixes

After the bulk import, we ran other scripts to clean up formatting (strip bold from headings, remove inline styles, convert tables to paragraphs) and add data that came later (author attribution mapped from a WordPress XML export of the team CPT).

What you’d need for a similar migration

Access

  • Public URL for the old site.
  • WordPress admin with an Application Password on the new site.
  • ACF field groups with “Show in REST API” enabled.

What to give Claude

  • A sample page URL from the source.
  • The ACF field export (JSON) from the destination so it knows the field names and types.
  • Any WordPress XML exports if you need to cross-reference data (e.g. mapping authors to team members) – we used this so Claude knew which team members had been added to the team post type when linking authors.

There will likely be a few iterations per content type as you hit edge cases (content that doesn’t match the expected structure, ACF validation quirks, JS-rendered pages that need browser automation).

If you’re considering a similar CMS migration, get in touch with our AI services team who can scope and run the process for you.

Related news

News
Technical SEO

Content migrations: how to maintain and improve visibility

7 min read
News
AI
Technical SEO

10 things that block your website from AI search (and how to fix each one)

8 min read
News
AI
Technical SEO

Building an AI workflow to create content

10 min read
News
AI
Technical SEO
Uncategorized

How to optimise your content strategy around AI search

8 min read