Complete Blogger to GitHub Pages Migration Guide

Step-by-Step Instructions

Part 1: Export Your Blogger Content

  1. Open your web browser and go to www.blogger.com
  2. Sign in with your Google account
  3. Select your Positive Lifes blog from the dashboard
  4. Click on Settings in the left sidebar
  5. Scroll down and click on Other
  6. Under “Import & back up”, click the Back up content button
  7. Save the XML file to your computer (it will be named something like blog-MM-DD-YYYY.xml)

Part 2: Set Up Your Local Environment

Install Prerequisites (if not already installed)

On Windows:

  1. Install Python from python.org
  2. Install Ruby from rubyinstaller.org
  3. Install Git from git-scm.com

On Mac:

# Install Homebrew if not installed
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# Install Python, Ruby, and Git
brew install python ruby git

On Linux (Ubuntu/Debian):

sudo apt update
sudo apt install python3 ruby-full git build-essential

Part 3: Clone and Set Up Repository

Open Terminal (Mac/Linux) or Command Prompt (Windows):

# Clone the repository
git clone https://github.com/MyRechargeHub1/POSITIVE_LIFES.git

# Navigate into the directory
cd POSITIVE_LIFES

# Switch to the migration branch
git checkout claude/migrate-blogger-github-pages-01LbKUXZBQXquk4kxcyATC2J

# Install Ruby dependencies
gem install bundler
bundle install

Part 4: Convert Blogger Posts to Jekyll

# Run the conversion script
# Replace "path/to/blog-export.xml" with your actual file path
python3 blogger_to_jekyll.py ~/Downloads/blog-MM-DD-YYYY.xml

# Example:
# python3 blogger_to_jekyll.py ~/Downloads/blog-01-15-2024.xml

What the script does:

  • Reads your Blogger XML export
  • Extracts all blog posts (ignoring comments and settings)
  • Converts HTML content to Markdown
  • Creates properly formatted Jekyll posts in the _posts/ directory
  • Preserves dates, titles, tags, and author information

You should see output like:

Parsing blog-01-15-2024.xml...
Created: 2024-01-15-your-post-title.md
Created: 2024-01-14-another-post.md
...
✓ Conversion complete!
  Posts created: 254
  Items skipped: 12
  Output directory: _posts

Part 5: Review the Converted Posts

# View the created posts
ls -l _posts/

# Test the site locally
bundle exec jekyll serve

Open http://localhost:4000 in your browser to preview your site!

Check for:

  • Post titles are correct
  • Dates are preserved
  • Images are displaying (you may need to update image URLs)
  • Formatting looks good
  • Tags are assigned properly

Part 6: Fix Images (if needed)

If your Blogger images aren’t loading, you have two options:

Option A: Keep Blogger-hosted images (easiest)

  • Images should work automatically if they’re on Blogger’s CDN
  • URLs like https://blogger.googleusercontent.com/... will continue to work

Option B: Download and host images on GitHub

# Create images directory
mkdir -p assets/images

# Manually download images from Blogger and place in assets/images/
# Then update image URLs in your posts from:
#   ![](https://blogger.googleusercontent.com/...)
# To:
#   ![](/assets/images/image-name.jpg)

Part 7: Commit and Push Changes

# Stage all the new posts
git add _posts/

# Commit with a descriptive message
git commit -m "Import 254 blog posts from Blogger

- Converted from Blogger XML export
- All posts with original dates preserved
- Tags and categories maintained
- Ready for GitHub Pages deployment"

# Push to GitHub
git push origin claude/migrate-blogger-github-pages-01LbKUXZBQXquk4kxcyATC2J

Part 8: Create Pull Request and Merge

  1. Go to https://github.com/MyRechargeHub1/POSITIVE_LIFES
  2. You’ll see a banner saying “Compare & pull request” - click it
  3. Review the changes
  4. Click “Create pull request”
  5. Add a description like “Complete Blogger migration with all posts”
  6. Click “Merge pull request”
  7. Confirm the merge

Part 9: Enable GitHub Pages

  1. Go to repository Settings tab
  2. Scroll down to Pages section (in the left sidebar)
  3. Under “Source”:
    • Branch: Select main
    • Folder: Select / (root)
    • Click Save
  4. Under “Custom domain”:
    • Enter: www.positivelifes.com
    • Click Save
    • Check “Enforce HTTPS” (may take a few minutes to become available)

Part 10: Configure DNS for Custom Domain

Go to your domain registrar (where you purchased positivelifes.com):

Add these DNS records:

Type: A
Name: @
Value: 185.199.108.153

Type: A
Name: @
Value: 185.199.109.153

Type: A
Name: @
Value: 185.199.110.153

Type: A
Name: @
Value: 185.199.111.153

Type: CNAME
Name: www
Value: myrechargehub1.github.io

DNS propagation takes 24-48 hours, but often works within a few hours.

Part 11: Verify Deployment

After GitHub Actions completes (check the Actions tab):

  1. Visit: https://myrechargehub1.github.io/POSITIVE_LIFES
  2. Once DNS is configured, visit: https://www.positivelifes.com

Your site should be live! 🎉

Troubleshooting

“Python not found” error

  • Windows: Make sure Python is in your PATH
  • Mac/Linux: Use python3 instead of python

“Bundle command not found”

gem install bundler

“Permission denied” error

# On Mac/Linux, you may need sudo:
sudo gem install bundler

Posts not showing up

  • Check the date in your post filename is not in the future
  • Ensure posts are in _posts/ directory
  • Make sure filenames follow format: YYYY-MM-DD-title.md

Images not loading

  • Use full URLs from Blogger (they’ll continue to work)
  • Or download images to assets/images/ and update URLs

Custom domain not working

  • Wait 24-48 hours for DNS propagation
  • Check DNS records are correct
  • Ensure CNAME file exists in repository
  • Verify GitHub Pages settings show your domain

Getting Help

If you run into issues:

  1. Check the error message carefully
  2. Review this guide step-by-step
  3. Check GitHub Actions tab for build errors
  4. Verify all commands completed successfully

Summary Checklist

  • Export Blogger XML file
  • Install Python, Ruby, Git
  • Clone repository
  • Run conversion script
  • Review converted posts locally
  • Commit and push posts
  • Merge pull request to main
  • Enable GitHub Pages
  • Configure DNS
  • Wait for DNS propagation
  • Visit live site!

Estimated time: 1-2 hours (plus DNS wait time)


Questions? Check the main README.md or Jekyll documentation.