Hi, I’m Kei.
This post is about migrating old blog articles — entries that had been sitting untouched for a long time — into WordPress. “Migration” sounds tidy, but the reality was more like an archaeological dig through nearly two decades of neglected diary entries.
A Home Server That’s Been Running Since 2003
I set up my home server in 2003, back in university. Being in an information science department, the urge to run my own server came naturally. Broadband had just started spreading at the time, and getting a fixed IP at home and running Linux on it was a hobby with its own sense of accomplishment.
I started blogging around 2005, using a blog engine called Movable Type. The content was a mix of tech topics and everyday life — pure diary style. Seminar updates, part-time job stories, a brand-new laptop. Reading back through it, the entries read like snapshots of who I was at the time, cut at exactly the resolution of that moment.
Fifteen Years Asleep
I kept writing for a few years into working life, but as my job in Tokyo picked up intensity, updates drifted to a stop. When you’re catching the last train or a taxi home every night, there’s no room for blogging. I kept telling myself I’d get back to it when things settled down. About fifteen years passed.
The server had stayed on, so the old blog data was still there — nothing deleted. But the Movable Type system was essentially untouched, and while the posts were technically still accessible, they were quietly sitting somewhere nobody found their way to anymore.
“I want to clean this up someday.” But manually moving hundreds of articles wasn’t realistic, and writing a scraping script from scratch felt like too much friction. So “someday” kept sliding further out — that particular kind of task: high startup cost, easy to postpone.
What Finally Made Me Do It
This year I migrated my home server’s entire site to WordPress. In the course of that, I started wondering if I could bring the old blog posts along too.
The honest other reason: Claude Code. Claude Code is an AI coding assistant that runs in the terminal. You describe what you want in plain language, and it writes and runs the scripts. No need to write code yourself.
Part of what had made me stop blogging in the first place was the friction — write the post, format the HTML, upload to the server. That chain of steps was a quiet barrier. Now I just talk to Claude Code and it handles posting. “Maybe I can write again” was a feeling that came after that environment was in place. And if I was going to start writing again, I wanted to bring the old posts along with me.
One Line Was All It Took
What I told Claude Code was essentially just that.
“There’s an old blog at https://h.keikun.info/~blog/kei/. I want to migrate all the posts to WordPress.”
Claude Code worked through what was needed step by step and generated a Node.js script.
- Crawl the old blog’s monthly archive pages and collect every article URL
- Extract the title, body, date, and category from each article page
- Upload images from the articles to the WordPress media library and rewrite the URLs
- Register each article via the WordPress REST API, preserving the original post date
What I did was read through the plan and say “go ahead.” Claude Code handled everything from script design to execution.
287 articles migrated. Posts written between 2005 and 2009, now sitting in WordPress with their original timestamps intact.
One thing that made me laugh: a character encoding issue turned “Magical Banana” (a word-association game) into “Maguro Banana” (tuna banana) in one post. Completely different meaning, but I audibly reacted when I spotted it. When technical glitches end in laughter, you count yourself lucky.
Alongside the article migration, I was also rebuilding the original site layout — which had been done in static HTML and CSS — as a WordPress theme. That part was honestly more demanding than moving the articles. WordPress’s template hierarchy, functions.php structure — areas where starting from scratch solo would take real effort. Even so, it came together through conversation with Claude Code.
Wrapping Up
Work I’d thought would be a grind was done before I knew it. “A single word and it moved” is close to how it felt. When 287 articles appeared in the admin panel, there was a clean satisfaction to it.
Posts I wrote twenty years ago on a home server I set up myself are now in WordPress, managed on that same server. There’s something quietly affecting about that — the same self, the same machine, two decades apart.
What I find interesting about Claude Code is how it breaks through the “I want to, but I can’t get started” state. You don’t need the technical skills to write the scripts — if you can say what you want, things start moving. This migration was one example of that. If you have old data sitting somewhere, things you want to organize but haven’t touched — it might be worth giving it a try.
And after the migration, working with Claude Code has continued. Even the act of writing has changed considerably through that dialogue. I’ll write about that another time.
— Kei