Skip to content
Taking 2 projects at a timeBook a 20-min call
Book a 20-min callhello@theweb0.com

ConceptA tool I would build. Not client work.

A content mover that shows its work.

Hundreds of pages have to leave the old CMS. This reads each one, turns it into clean blocks for the new one, and counts the words on both sides so a lost paragraph can’t hide.

Concept

Not client work
Drawn for
A marketing team with hundreds of pages in an old CMS and a new one waiting.
The problem
Four hundred posts to copy and paste by hand, and every paste is a chance to lose a paragraph, a link or an image nobody notices until a customer does.
The money
No number here, on purpose. I found no public figure for the hours a page takes to move by hand, so I won’t quote one. The angle is risk: every page pasted by hand can lose something, and a batch that is counted and reviewed can’t lose it quietly.
Belongs to
Migrations

Every company, person and number on these screens is made up. Nobody has bought this yet.

Live demo

Markup in. Blocks out. Count both.

A made-up page, moved in your browser. Nothing is fetched and nothing is written anywhere.

DemoPress play. Markup goes in on the left, typed blocks come out on the right, and the counter keeps score. One chunk will wait for you.

How we pack a tent for winter

Blog post 214 of 412
1 needs a person
  1. [vc_row][vc_column width="2/3"]

    <h1 class="entry-title" style="font-size:42px">How we pack a tent for winter</h1>

    Headinglevel 1Inline size dropped

    How we pack a tent for winter

  2. <p style="text-align:justify"><span style="color:#333">A wet tent packed in October is a mouldy tent in April. Here is the routine we use in the warehouse. It takes ten minutes.</span></p>

    Rich textInline colour and justify dropped

    A wet tent packed in October is a mouldy tent in April. Here is the routine we use in the warehouse. It takes ten minutes.

  3. [caption id="attachment_812" align="alignnone" width="1024"]

    <img src="/wp-content/uploads/2023/10/IMG_2231-1024x683.jpg" alt="A tent hung up to dry in a warehouse" />

    Drying takes a full day.[/caption]

    ImageOriginal file fetched, not the resized copy

    tent-drying.jpg

    Alt: A tent hung up to dry in a warehouse

    Drying takes a full day.

  4. <h2><strong>What you need</strong></h2>

    Headinglevel 2Bold inside a heading dropped

    What you need

  5. <ul><li>A soft brush</li><li>Lukewarm water, no soap</li>

    <li>Somewhere dry for 24 hours</li><li>A loose cotton bag</li></ul>

    List4 items

    • A soft brush
    • Lukewarm water, no soap
    • Somewhere dry for 24 hours
    • A loose cotton bag
  6. <blockquote class="wp-block-quote"><p>Never store it in the stuff sack. Compression is for the trail, not the attic.</p>

    <cite>Jonas, warehouse lead</cite></blockquote>

    Quote

    Never store it in the stuff sack. Compression is for the trail, not the attic.

    Jonas, warehouse lead

  7. <p>Brush off the dirt, rinse it and hang it up. Short on space? <a href="http://www.fernhill.example/?p=1507">Our note on drying indoors</a> has a trick with a clothes rail.</p>

    Rich text1 link rewritten to its new address

    Brush off the dirt, rinse it and hang it up. Short on space? Our note on drying indoors has a trick with a clothes rail.

  8. [contact-form-7 id="88" title="Ask the warehouse"]

    Form

    Needs a person. A form plugin’s shortcode, “Ask the warehouse”. The new site has no form like it yet.

  9. <a class="btn btn-primary btn-lg" href="/shop/tents/" target="_blank">See the winter tents</a>

    Button1 link rewritten to its new address

    See the winter tentsgoes to /products/tents

  10. <script>jQuery('.entry-title').fitText(1.2);</script>

    [/vc_column][/vc_row]

    Left behind

    1 script and 4 layout shortcodes. They carry no content.

Text preserved
100%
Words in, words out
103 in 103 out, of 103
Links rewritten
2 of 2
Images re-hosted
1 of 1
Needs a person
1

Concept

Page transform

One old page becomes typed blocks. The word count is taken on both sides, so a lost paragraph shows.

The rest of the tool

Two more screens.

What is in the old CMS, and where every field of it goes in the new one.
  1. Fernhill content
    Inventory546
    Model mapper1
    Page transform
    The run
    Review queue81
    Run log
    Lena VossHead of marketing
    Fernhill contentInventory
    Crawl againMap the model
    Pages to move
    546
    412 posts, 134 other pages
    Built with the page builderPage builder
    259
    47% of what moves
    Need a person
    81
    a form or an embed on the page
    Oldest page
    2016
    10 years of markup habits
    WhatHow manyHow it was builtWatch out forYearsPlan
    Blog posts412Classic editor 287, page builder 12531 with a form or an embed2016 to 2026Move
    Case studies96Page builder12 with an embed2018 to 2026Move
    Landing pages38Page builderAll 38 have a form2021 to 2026Move, forms by hand
    Authors9Profiles2 no longer work hereMove 7
    Media files3,870Uploads folder412 are used nowhereMove the 3,458 in use
    Tag and category archives214Generated by the CMSNo content of their ownNot moved. Rebuilt from the posts
    Written whenPages a year, by how they were built
    Classic editorPage builder

    The page builder came in 2018. Every page since carries its shortcodes, so those are the pages the mover reads block by block.

    Crawled 9 Nov, 08:12Read from the database, not scraped from the pagesNothing has been written to the new CMS

    Concept

    Inventory

    Everything in the old CMS: how many, how each was built, and which ones a script should not move alone.

    1 / 2
  2. Fernhill content
    Inventory546
    Model mapper1
    Page transform
    The run
    Review queue81
    Run log
    Lena VossHead of marketing
    Model mapperBlog post
    1 field has no homeApprove the mappingApprove

    Old CMS 13 fields

    post_titleText
    post_nameText
    post_dateDate
    post_authorUser id
    post_contentHTML and shortcodes
    post_excerptText
    _thumbnail_idMedia id
    categoryTerm
    post_tagTerms
    _yoast_wpseo_titleText
    _yoast_wpseo_metadescText
    client_logoUsed on 14 posts
    views_countDropped on purpose

    New model 10 fields

    titleText
    slugSlug
    summaryText
    coverImage
    bodyBlocks
    authorReference
    topicsReferences
    publishedAtDate
    seo.titleText
    seo.descriptionText

    client_logo has no home. It is filled in on 14 posts. Add an image field to the new model, or drop it on purpose.

    Add a logo fieldDrop it

    Concept

    Model mapper

    Every old field joined to its new one. A field with no home stops the run until someone decides.

    2 / 2

The money

What it would be worth.

Weeks of copying and pasting become one batch that somebody reviews.

There is no honest benchmark for this, so make your own: time ten pages moved by hand, with the checking. Then put your numbers in. That is the work the batch replaces, and the review still takes a person.

What moving it by hand would cost

Type your numbers and the sum appears here.

Your numbers, your estimate. I found no public figure for minutes per page, so time ten pages yourself before you trust this.

Want this for real?

Tell me what yours has to do. In 20 minutes you will know whether it is worth building, and what I would cut from this drawing.

I would scope it as a migration: from €12k, usually 2–4 weeks. What that includes