After years of running my blog on WordPress, I finally made the leap to a modern stack: Astro + GitHub + Cloudflare Pages.
This wasn’t just a change in technology; it was a shift in philosophy. Here is the “Why” and “How” behind my transition to a code-centric, AI-native blogging environment.
The Philosophy: Why Move Away from GUI?
1. GUI is a Bottleneck for AI Workflows
In the AI era, the traditional web-based GUI (like the WordPress Gutenberg editor) feels increasingly like an artifact of the past. Writing directly in a code editor (VS Code) allows me to leverage AI thought partners and coding assistants much more effectively.
Markdown is the universal language of LLMs—manipulating text as data is far more efficient than clicking through a cluttered dashboard. By moving to a text-based workflow, my content is now “AI-ready” by default.
2. Direct Code Ownership (Content as Code)
WordPress often feels like a “black box” where your content and design are trapped in a database and a mess of plugins. By moving to a Static Site Generator (SSG) like Astro, my entire site—content, logic, and configuration—exists as a single Git repository. I can refactor 133 articles in seconds using simple scripts or global search-and-replace.
3. The Power of Cloudflare
Choosing Cloudflare Pages was a strategic decision. It provides global edge delivery, world-class security, and a seamless CI/CD pipeline from GitHub—all with zero maintenance cost for a personal blog.
The Migration Process: Cleansing the Legacy
Migrating from WordPress is notorious for being “dirty.” My goal was to create a “Pure Markdown” environment where the legacy HTML bloat was stripped away.
Step 1: Data Extraction & Sanitization
I exported my data into a WordPress XML (WXR) format. Instead of using a generic plugin, I wrote a custom Node.js migration script to handle the heavy lifting:
- Stripping Gutenberg Bloat: Removed all “ and other block-level comments to get back to clean text.
- CDATA Removal: Thoroughly cleaned XML-specific wrappers from titles and content.
- Regex-driven Formatting: Converted HTML headings, bold text, and lists into their Markdown equivalents.
Step 2: Preserving SEO (301 Redirects)
Maintaining search engine rankings was non-negotiable. Over the years, my articles were scattered across various categories like /column/, /sports/, and /finance/.
To preserve my “Link Juice,” I implemented Dynamic Redirects in astro.config.mjs. This maps legacy directory structures to the new, clean /posts/ directory automatically:
redirects: {
'/column/[slug]': '/posts/[slug]',
'/sports/[slug]': '/posts/[slug]',
'/finance/[slug]': '/posts/[slug]',
// ...mapping all legacy categories
}
Step 3: Minimalist Design (Text-First)
During the migration, I made a conscious choice to remove unnecessary images and hero decorations. Design Minimalism is a core value of this new version. High-quality typography and ample whitespace make the site incredibly fast and focus the reader’s attention purely on the content. It’s a bold move, but in the age of information overload, less is truly more.
Conclusion: A Future-Proof Blog
The new aishoo.com is now a high-performance, developer-friendly site. It’s no longer just a CMS; it’s a codebase. Whether I’m writing a new post or updating the site’s logic, I do it through my terminal and editor.
This is the freedom I was looking for: Content as Code.