Skip to main content
Axcora Technology
Sovereign Web Architect & AI Research Lab
View all authors

Migrate from WordPress to Pycora Pro — Zero Hosting Cost

· 3 min read
Axcora Technology
Sovereign Web Architect & AI Research Lab

WordPress powers 43% of the web. But it also brings:

  • Monthly hosting costs
  • Security updates
  • Plugin bloat
  • Slow page loads
  • Database maintenance

Pycora Pro converts your WordPress site to static HTML — no database, no PHP, no monthly fees.

Here's how.

Why Migrate​

WordPressPycora Pro
Hosting$10–30/month$0
DatabaseRequiredNone
SecurityPatches monthlyZero attack surface
Speed1–3s load< 500ms
MaintenanceWeeklyNone
BackupPlugin requiredGit

Step 1 — Export WordPress Content​

Option A: WordPress Export Tool​

  1. Log in to WordPress admin
  2. Go to Tools → Export
  3. Select All content
  4. Click Download Export File

You'll get an .xml file.

Option B: WP-CLI​

wp export --dir=./export

Step 2 — Convert to Markdown​

Use the wordpress-export-to-markdown tool:

npx wordpress-export-to-markdown

Follow the prompts. You'll get Markdown files in output/.

Step 3 — Organize Content​

Move posts to Pycora's content structure:

mkdir -p content/posts
mv output/posts/*.md content/posts/

Each file should look like:

---
title: "My WordPress Post"
date: 2024-01-20
tags: [wordpress, migration]
---

# My WordPress Post

Content here...

Step 4 — Convert Images​

Download WordPress images:

# From your WordPress uploads folder
wget -r -np -nH --cut-dirs=3 -R index.html https://yoursite.com/wp-content/uploads/

Move to Pycora:

mv uploads/* static/img/

Update image paths in Markdown:

![Old](https://yoursite.com/wp-content/uploads/2024/01/image.jpg)
→
![Old](/img/2024/01/image.jpg)

WordPress URLs are usually:

/blog/2024/01/20/my-post/

Pycora Pro URLs are:

/posts/my-post/

To keep old URLs working, add redirects in static/_redirects:

/blog/* /posts/:splat 301

Step 6 — Choose a Theme​

Pycora Pro ships with a bento design system. Pick a layout:

  • Blog — for content sites
  • Portfolio — for creative work
  • Company profile — for businesses

Edit content/index.md and _data/site.yaml to match your brand.

Step 7 — Test Everything​

python ssg.py
python dev.py

Check:

  • All posts render
  • Images load
  • Links work
  • Tags are correct
  • Feeds are generated

Step 8 — Deploy​

Push to GitHub, then connect to Cloudflare Pages:

git add .
git commit -m "migrated from WordPress"
git push

See our Cloudflare Pages guide for details.

Step 9 — Set Up Redirects​

To keep SEO, redirect old WordPress URLs to new Pycora URLs:

static/_redirects:

/wp-content/uploads/* /img/:splat 301
/category/* /tags/:splat 301
/feed/ /feed.xml 301

Step 10 — Submit New Sitemap​

  1. Generate sitemap.xml automatically
  2. Submit to Google Search Console
  3. Submit to Bing Webmaster Tools

What About WordPress Features?​

WordPress FeaturePycora Pro Replacement
PostsMarkdown in content/posts/
PagesMarkdown in content/
CategoriesTags
CommentsDisqus or Utterances
SearchPagefind (client-side)
Contact formFormspree
SEOBuilt-in + JSON-LD
AnalyticsPlausible or Fathom

Cost Savings​

WordPressPycora Pro
Hosting (1 year)$180$0
Plugins$200$0
Theme$60$145 (one-time)
Total first year$440$145
Total year 2+$440$0

Pycora Pro saves you $295+ in the first year, $440+ every year after.

Get Pycora Pro​

Ready to ditch WordPress? Get Pycora Pro on Gumroad.

Next Steps​

Pycora vs Astro — Python vs JavaScript for Modern Static Sites

· 3 min read
Axcora Technology
Sovereign Web Architect & AI Research Lab

Astro is one of the most popular static site generators in 2026. It's fast, flexible, and has a huge ecosystem.

Pycora Pro takes a different approach: pure Python, zero client JS, zero build step.

Here's how they compare.

The Core Difference​

AstroPycora Pro
LanguageJavaScript / TypeScriptPython
RuntimeNode.jsPython 3.8+
BuildVite + esbuildPlain Python
Template engineAstro / JSXJinja2 + PAX
Client JSOpt-in islands0 KB by default
Dependenciesnpm (many)pip (4)

Build Speed​

AstroPycora Pro
Cold build (40 pages)3.8s0.87s
Incremental0.9s0.4s
Memory220 MB65 MB

Pycora is 4x faster on the same content.

Client JavaScript​

Astro ships ~15 KB of client JS by default (for hydration, view transitions, etc.).

Pycora Pro ships 0 KB. All interactivity is pure HTML/CSS or opt-in vanilla JS.

For sites that don't need client-side interactivity, this is a huge win for performance.

Dependencies​

Astro​

npm install
# ~500 packages in node_modules

Pycora Pro​

pip install jinja2 markdown pyyaml watchdog
# 4 packages

Astro has a build step. Pycora doesn't.

Templating​

Astro​

---
const posts = await getCollection('posts');
---
<html>
<body>
{posts.map(post => (
<article>
<h2>{post.data.title}</h2>
</article>
))}
</body>
</html>

Pycora Pro​

{% for post in collections.posts %}
<article>
<h2>{{ post.title }}</h2>
</article>
{% endfor %}

Both are clean. Jinja2 is more familiar to Python developers.

Content Format​

Astro — Content Collections​

src/content/posts/
├── post-01.md
└── post-02.md

Pycora Pro​

content/posts/
├── post-01.md
└── post-02.md

Same idea. Both use Markdown + frontmatter.

Deployment​

Both deploy anywhere. Both are static.

ProviderAstroPycora
Cloudflare Pages✅✅
Vercel✅✅
Netlify✅✅
GitHub Pages✅✅

Pycora advantage: no Node.js on the build server. Python is already there.

When to Use Astro​

  • You need React/Vue/Svelte components
  • You want view transitions
  • You need a rich ecosystem of integrations
  • Your team knows JavaScript

When to Use Pycora Pro​

  • You prefer Python
  • You want zero client JS
  • You want faster builds
  • You want zero npm dependencies
  • You want a built-in CMS

Can You Use Both?​

Yes. Astro has a Python integration via @astrojs/python. But you're still running Node.

Pycora Pro is Python all the way.

The Verdict​

Use caseRecommendation
Content site, no JSPycora Pro
Interactive appAstro
Python teamPycora Pro
JS teamAstro
Performance-firstPycora Pro
Component-heavyAstro

Get Pycora Pro​

Pycora Pro is $145, one payment, own forever.

Get Pycora Pro on Gumroad →

Why We Built a Python SSG in 2026

· 3 min read
Axcora Technology
Sovereign Web Architect & AI Research Lab
Mesin Kasir
Founder, Axcora Technology

In 2026, static site generators are everywhere. Astro, Eleventy, Hugo, Jekyll — the list goes on. So why did we build another one?

Because none of them ran on Python.

The Problem​

Every SSG forces you into a language ecosystem:

SSGLanguage
JekyllRuby
EleventyJavaScript
AstroJavaScript
HugoGo
GatsbyJavaScript
HexoJavaScript

If you're a Python developer, you're stuck. Either:

  1. Learn a new language for your static site
  2. Use Jekyll and deal with Ruby dependency hell

Neither is good.

Python Developers Are Everywhere​

Python is the most popular programming language in the world. It's used for:

  • Data science
  • Machine learning
  • Web scraping
  • Automation
  • Backend APIs
  • Static sites

Yet there was no first-class Python SSG.

What We Built​

Pycora Pro is a Python-native static site generator. It uses:

  • Python 3.8+ — no compilation, no version managers
  • Jinja2 — the most popular Python template engine
  • Markdown — with YAML frontmatter
  • PAX — our custom template loader

The result: a static site generator that feels like Python.

Why Not Just Use Jekyll?​

Jekyll works. But:

  • Ruby is a second language. Most Python devs don't know it.
  • Gem dependencies break. Every Ruby update, every gem update.
  • Slow builds. Jekyll is 4–5x slower than Pycora.
  • No Python integration. Can't use pandas, requests, or any Python library.

Why Not Eleventy or Astro?​

Both are excellent. But:

  • Node.js dependency. You need Node + npm + a bundler.
  • JavaScript-only. Can't import Python modules.
  • Build complexity. Astro has a build step; Pycora doesn't.
  • Bundle size. Astro ships client JS by default; Pycora ships 0 KB.

The Python Advantage​

Using Python for static sites gives you:

1. Scripting​

Generate content programmatically:

# fetch_posts.py
import requests

posts = requests.get("https://api.example.com/posts").json()

for post in posts:
with open(f"content/posts/{post['slug']}.md", "w") as f:
f.write(f"---\ntitle: {post['title']}\n---\n\n{post['body']}")

2. Data Processing​

Use pandas, numpy, or any Python library to generate content:

import pandas as pd

df = pd.read_csv("data.csv")

for _, row in df.iterrows():
# generate markdown from CSV
...

3. No Runtime​

Output is still pure static HTML. Python is only used at build time.

4. Zero Client JS​

Pycora ships 0 KB client JavaScript by default. Your site loads instantly.

Performance​

Pycora ProJekyllEleventyAstro
Build 40 pages0.87s4.2s2.1s3.8s
RuntimePythonRubyNodeNode
Client JS0 KB0 KB0 KB~15 KB
Dependencies4 pip packagesRuby + gemsNode + npmNode + npm

The Philosophy​

We're not trying to replace Astro or Eleventy. We're giving Python developers a native option.

If you're a Python developer, you shouldn't have to learn JavaScript to build a static site.

Get Pycora Pro​

Pycora Pro is $145, one payment, own forever.

  • Python 3.8+
  • Jinja2 + PAX
  • Bento design system
  • Decap CMS included
  • Unlimited projects

Get Pycora Pro on Gumroad →

Next Steps​

Deploy Pycora Pro to Cloudflare Pages in 5 Minutes

· 3 min read
Axcora Technology
Sovereign Web Architect & AI Research Lab
Creativitas
Axcora on Fiverr — 72+ escrow-verified deliveries

Pycora Pro outputs pure static HTML. That means you can host it for free on Cloudflare Pages — unlimited bandwidth, automatic HTTPS, and continuous deployment from GitHub.

Here's the full walkthrough.

Prerequisites​

  • Pycora Pro installed locally
  • A GitHub account
  • A Cloudflare account (free)

Step 1 — Push to GitHub​

If your project isn't on GitHub yet:

git init
git add .
git commit -m "initial commit"
git remote add origin https://github.com/YOUR_USERNAME/pycora-site.git
git push -u origin main

Step 2 — Test the Build Locally​

Before deploying, make sure the build works:

python ssg.py

You should see:

Ready in 0.87s - 41 files - MEDUSA v2.4.6

The output/ folder now contains your static site.

Step 3 — Connect to Cloudflare Pages​

  1. Go to pages.cloudflare.com
  2. Click Create a project
  3. Click Connect to Git
  4. Authorize Cloudflare to access your GitHub account
  5. Select your repository

Step 4 — Configure Build Settings​

SettingValue
Project namepycora-site (or your choice)
Production branchmain
Framework presetNone
Build commandpython ssg.py
Build output directoryoutput

Important: Cloudflare needs Python 3.8+ in the build environment. Cloudflare Pages has Python pre-installed.

Environment Variables (Optional)​

If your ssg.py needs any environment variables:

KeyValue
PYTHON_VERSION3.11

Step 5 — Deploy​

Click Save and Deploy.

Cloudflare will:

  1. Clone your repository
  2. Install Python dependencies
  3. Run python ssg.py
  4. Upload output/ to their CDN
  5. Give you a URL like https://pycora-site.pages.dev

First deploy takes 1–2 minutes. Subsequent deploys are faster.

Step 6 — Add a Custom Domain​

  1. Go to your project → Custom domains
  2. Click Set up a custom domain
  3. Enter your domain (e.g. pycora.axcora.com)
  4. Follow the DNS instructions

If your domain is already on Cloudflare, DNS is configured automatically.

Step 7 — Automatic HTTPS​

Cloudflare provisions an SSL certificate automatically. No configuration needed.

Your site is now available at https://yourdomain.com with:

  • ✅ Automatic HTTPS
  • ✅ HTTP/3 support
  • ✅ Global CDN
  • ✅ Unlimited bandwidth
  • ✅ DDoS protection

Continuous Deployment​

Every push to main triggers a new deploy:

git add .
git commit -m "update homepage"
git push

Cloudflare rebuilds and deploys automatically. You get a preview URL for every commit.

Troubleshooting​

Build fails with "python: not found"​

Add a .python-version file to your repo:

3.11

Or set PYTHON_VERSION in environment variables.

Build succeeds but pages are blank​

Check that content/index.md exists and has valid frontmatter. Run python ssg.py locally and check for errors.

404 on subpages​

Cloudflare Pages handles trailing slashes automatically. If you have issues, add a _redirects file:

/* /index.html 200

Alternative Providers​

ProviderFree TierBuild Command
Cloudflare PagesUnlimited bandwidthpython ssg.py
Vercel100 GB/monthpython ssg.py
Netlify100 GB/monthpython ssg.py
GitHub Pages1 GB storagePush output/ to gh-pages

Cost Comparison​

ProviderCost
Pycora Pro + Cloudflare Pages$145 once + $0/month
WordPress + hosting$10–30/month
Webflow$29/month
Squarespace$16/month

Pycora Pro pays for itself in under 6 months.

Get Pycora Pro​

Ready to deploy? Get Pycora Pro on Gumroad — one payment, own forever.

Next Steps​

Pycora vs Jekyll — Python vs Ruby for Static Sites

· 3 min read
Axcora Technology
Sovereign Web Architect & AI Research Lab

Jekyll has been the default static site generator for over a decade. But its Ruby dependency has become a pain point for developers who've moved on to Python.

Pycora Pro is a Python-native alternative. Same Markdown + YAML workflow, same layout inheritance, but zero Ruby.

Here's how they compare.

The Core Difference​

JekyllPycora Pro
LanguageRubyPython
RuntimeRuby + BundlerPython 3.8+
Template engineLiquidJinja2 + PAX
Build speedSecondsMilliseconds
DependenciesGems, Bundlerpip (4 packages)
DeployAny static hostAny static host
LicenseMITMIT

Dependencies​

Jekyll​

Jekyll requires Ruby, then gems, then Bundler. On a fresh machine:

# Install Ruby (varies by OS)
brew install ruby

# Install Jekyll
gem install jekyll bundler

# Install project gems
bundle install

Every time Ruby updates, gems break. Every time a gem updates, Bundler complains. This is dependency hell.

Pycora Pro​

pip install jinja2 markdown pyyaml watchdog

Four packages. That's it. Python 3.8+ is already on most machines.

Build Speed​

We built a test site with 40 Markdown files, 10 layouts, and 5 partials.

JekyllPycora Pro
Cold build4.2s0.87s
Incremental1.8s0.4s
Memory180 MB65 MB

Pycora Pro is 4–5x faster on the same content.

Templating​

Jekyll — Liquid​

{% for post in site.posts limit:3 %}
<a href="{{ post.url }}">{{ post.title }}</a>
{% endfor %}

Pycora Pro — Jinja2 + PAX​

{% for post in posts | limit(3) %}
<a href="{{ post.url }}">{{ post.title }}</a>
{% endfor %}

PAX auto-converts old Liquid-style slices:

{{ posts[:3] }} → {{ posts | limit(3) }}

So if you're migrating from Jekyll, most Liquid templates work with minor tweaks.

Content Format​

Both use Markdown + YAML frontmatter.

Jekyll​

---
layout: post
title: "My Post"
date: 2024-01-20
tags: [python, ssg]
---

Pycora Pro​

---
layout: layouts/post
title: "My Post"
date: 2024-01-20
tags: [python, ssg]
---

Almost identical. The only difference: Pycora uses layouts/post instead of post.

Deployment​

Both output static HTML. Both deploy anywhere.

ProviderJekyllPycora Pro
Cloudflare Pages✅✅
Vercel✅✅
Netlify✅✅
GitHub Pages✅✅

Pycora Pro advantage: no Ruby version manager needed on the build server. Python is already there.

Developer Experience​

Jekyll​

  • Plugin ecosystem is mature
  • Liquid is limited for complex logic
  • Ruby debugging required for theme development
  • Slow feedback loop on large sites

Pycora Pro​

  • Python native — use any Python library
  • Jinja2 is more powerful than Liquid
  • Built-in Decap CMS admin
  • Live reload via python dev.py

When to Use Jekyll​

  • You already know Ruby
  • You need a specific Jekyll plugin
  • You're maintaining an existing Jekyll site

When to Use Pycora Pro​

  • You prefer Python
  • You want faster builds
  • You want zero Ruby dependencies
  • You want a built-in CMS
  • You want a premium bento design out of the box

Migrating from Jekyll​

Migration is straightforward:

  1. Rename _posts/ → content/posts/
  2. Convert Liquid templates to Jinja2 (PAX handles most of it)
  3. Move _config.yml → _data/site.yaml
  4. Run python ssg.py

See our Jekyll migration guide for details.

Get Pycora Pro​

Pycora Pro is $145, one payment, own forever.

  • Unlimited projects
  • No license key
  • No renewal
  • White-label resale allowed

Get Pycora Pro on Gumroad →