⠿✓Media Extraction
Capture
Walk each site's uploads tree and extract original images only — skipping WordPress derivatives, resolving filename collisions, and routing every file to images, logos or icons.
Discussion draft
The automations that are technically possible for the Preiss rebuild, ordered top to bottom by priority within each phase — the working assumption is a fixed budget, worked down the list as far as it reaches.
Walk each site's uploads tree and extract original images only — skipping WordPress derivatives, resolving filename collisions, and routing every file to images, logos or icons.
Map every extracted image back to the WordPress attachment it came from, so the association survives after the old site is gone. The only route from a renamed, re-encoded file back to its original post.
Alt text for every attachment, carried in the manifest alongside the image. The live sites hold full coverage in hand-written SEO copy.
Resolve and extract the colour logo, monochrome logo, favicon and map marker from theme options, across the several generations of ACF field names still in use.
Extract the eight theme colour keys per site, resolving older and newer ACF option names and reporting which are unset.
Extract the property's social profile URL for each network from theme options, taking only the current generation of fields so stale ACF defaults are not carried over.
Collect every third-party snippet from all three places they live: the ACF script manager fields, the HFCM plugin, and raw theme partials.
Extract the Google Maps key, reviews API key and property slug, and find every Panoskin tour ID by matching on value rather than field name, since sites store them inconsistently.
Export the hot spot post type and rewrite it into the new theme's structure — field keys remapped, user data stripped, distances recomputed from the property origin. Ready to import as-is.
Extract every page's ACF flexible-content module stack — module type, order, and each module's field values — from the live database. This is the structural backbone the rebuild's pages are generated from.
Capture each amenity as an icon and label pair, in its group — the live sites split them into Community Amenities and Apartment Features. Icons are extracted today as bare SVGs with no record of which amenity they belong to.
Record which images belong to which gallery group, and in what order. The live galleries divide into Community and Apartment sets; without this, gallery images arrive as an undifferentiated pile.
Export Yoast titles, meta descriptions and OG data per page. The live sites carry hand-written, property-specific metadata that would otherwise have to be re-authored from nothing.
Capture the resident services block from the Resources page — Resident Portal, SimpleBills, Rent Reporting, Renters Insurance and the rest — as icon, title, description and link. The set varies by property.
Capture each property's latitude and longitude as a first-class exported value, feeding the map section every site runs. The pipeline already derives these internally for hot spot distances, then discards them.
Record the complete set of live URLs per site as the source side of an old-to-new redirect map. Small — roughly eight URLs per site plus floor plan children — but only obtainable while the old site is up.
Capture the property-specific FAQ outliers by diffing each site's questions against the portfolio-standard set, which carries as a template. Roughly four questions per site are genuinely unique.
Extract the remaining global theme options: typography choices, layout toggles, and any site-wide display settings the old theme exposes.
Convert every extracted raster image to WebP so the published asset tree is a single format, scaling down anything past the maximum dimension.
Run images through the LetsEnhance API to raise resolution where the new theme's placements demand more than the source provides.
Determine what each image was used for — hero, in-content, gallery — by tracing which ACF fields referenced it. This turns the extracted image set from a pile into a placement map.
Pass scraped copy through the PM's targeted prompts to tighten, expand and improve it, emitting machine-readable output rather than prose.
Apply the same treatment to Yoast titles and meta descriptions, improving on what the old site had instead of merely porting it.
Serialize the scraped and enhanced content into a single importable per-site format that the build stage consumes.
Map each old-theme module type to its new-theme equivalent, including field-level correspondence and rules for modules with no direct counterpart.
Generate alt text for any image that arrives without it, so nothing ships to a new site uncredited.
Pre-crop images to the aspect ratios the new theme's slots expect, so placements are not distorted or awkwardly cropped at render time.
Identify duplicate and near-duplicate images across a site's uploads and collapse them, reducing both the import volume and the visual repetition.
Flag images that are too small, too compressed, or otherwise unusable before they reach a new site, so problems surface as a list rather than as a bad page.
Map extracted colours onto the new theme's colour tokens, checking contrast so the rebuild starts accessible.
Identify new-theme modules that have no corresponding source content, producing an explicit list of what a site is missing before it is built.
Provision a WordPress installation with the correct theme and required plugins activated, ready to receive content.
Create the staging site itself via the RunCloud API, so no manual server work is needed to start a rebuild.
Import processed images into the new site's media library, carrying alt text and preserving the association back to the original attachment.
Create the new site's pages — titles, slugs, hierarchy, templates — from the captured page inventory.
Generate the privacy policy, terms of service, cookie policy and pet policy pages on each new site, from shared boilerplate plus the per-property specifics.
Populate each generated page's modules with the enhanced content and processed images, assembling the actual page bodies.
Write global theme options into the new site — colours, typography, brand assets, social links, API keys and property settings.
Install the captured third-party scripts into the HFCM plugin on the new site, preserving placement and activation state.
Write the exported and enhanced SEO titles and descriptions onto their corresponding new pages.
Import the transformed hot spot export into the new site. The export side is already built; nothing consumes it yet.
Build the new site's menus and assign them to the theme's menu locations.
Populate widget areas, footer columns and sidebars on the new site.
Install the old-to-new redirect map on the new site so existing inbound links and search rankings survive cutover.
Create the required user accounts and roles on each new site as part of provisioning.