Jay Johnson

From Manual Markdown to Automated Jekyll: Streamlining Blog Development

This transformation was accomplished in a single Claude Code session

My personal website started simple - maybe too simple. Raw Markdown files, manual everything, and a workflow that had slowly become my nemesis. Here’s how I turned that around in one productive afternoon with some AI assistance.

The Reality Check

It happened again. I’d sit down to write a blog post and immediately get bogged down in the tedious manual process. My website started as the simplest possible setup: raw Markdown files in a blog/ directory with manual index updates.

While this got me writing initially, the development workflow had slowly become painful:

Previous Process (30-45 minutes):

  1. Create new .md file in blog/ directory (~2 minutes)
  2. Write content with proper formatting (~20-30 minutes)
  3. Manually update index.md with new post link (~2 minutes)
  4. Test changes by pushing to GitHub and waiting for Pages deployment (~5-10 minutes)
  5. Fix any formatting issues and repeat cycle (~5+ minutes)

The biggest pain points were the usual suspects:

I knew what needed fixing, but the thought of setting up Jekyll properly, configuring Docker, writing automation scripts… it felt like a weekend project I’d never get around to.

Enter Claude Code

Then I had an idea. What if I could just talk through the whole setup with an AI? Using Claude Code, I transformed the entire development workflow in a single interactive session.

My 20 years of software development experience helped me know which pain points to tackle and what good tooling looks like. But the AI handled all the complex implementation details that would have taken me days of research, configuration, and troubleshooting.

Key Improvements

1. Proper Jekyll Structure

2. Local Development Environment

3. Streamlined Commands

make serve        # Start local server + open browser
make build        # Build site
make create-issue # GitHub issue creation

New Process (2-3 minutes)

Creating a new post now:

  1. Run make serve (starts local server, opens browser automatically)
  2. Create _posts/YYYY-MM-DD-title.md with front matter
  3. Write content with instant preview
  4. Commit and push when ready

That’s it. No more manual index updates, no more style inconsistencies, no more waiting around for deployments to see if I broke something.

Claude Code Development Process

The AI-driven development session tackled complex integration challenges seamlessly:

Conversational Problem-Solving:

Intelligent Automation:

Real-Time Adaptation:

Technical Implementation

What Claude Code delivered in one session:

Jekyll Configuration:

Docker Setup:

Makefile Automation:

Content Migration:

Results: 15x Faster Iteration

The workflow improvements created dramatic time savings:

Task Before After Improvement
Start development Push to GitHub (~5-10 min) make serve (~30 sec) 10-20x faster
See changes Wait for deployment (~5-10 min) Instant with live reload Immediate
Add new post Manual index update (~2 min) Automatic Eliminated
Fix styling issues Multiple deploy cycles (~15+ min) Instant local preview 15x+ faster

Total time to publish: Down from 30-45 minutes to 2-3 minutes.

Key Learnings

  1. Experience guides automation priorities - 20 years of working with various repositories taught me which manual steps become the biggest bottlenecks over time.

  2. Start simple, evolve thoughtfully - The basic Markdown approach got me writing, then I added tooling when pain points became clear.

  3. Local development is essential - Years of debugging deployment-only feedback loops taught me this lesson the hard way.

  4. Automation eliminates errors - Having maintained many CLI tools, I knew which manual processes inevitably lead to mistakes.

  5. Docker makes environments predictable - Experience with environment inconsistencies across teams made this an obvious choice.

  6. Make is still relevant - Despite newer alternatives, Make’s universality makes it ideal for simple project commands.

  7. AI accelerates experienced judgment - Claude Code didn’t replace my architectural decisions, but eliminated the implementation grunt work.

Advanced Workflow Features

After establishing the core Jekyll setup, we added sophisticated development tools:

GitHub Integration:

Smart PR Generation: The PR automation analyzes your branch changes and generates compelling descriptions with:

URL Length Handling: GitHub has URL limits (~8KB), so the script intelligently truncates content while preserving the most valuable impact information.

Development Workflow Evolution

Session 1: Basic static site Session 2: Jekyll transformation
Session 3: Docker optimization Session 4: Advanced tooling and PR automation

Each iteration built upon the previous improvements, demonstrating how to evolve a codebase thoughtfully without losing simplicity.

The Meta Moment

This blog post itself demonstrates the new workflow in action. Created and updated multiple times during the development session:

These improvements were developed through an iterative process with Claude Code, focusing on practical developer experience enhancements.

Time Investment Analysis

Claude Code Session: ~4 hours total

Manual Implementation Estimate: 2-3 days

AI Advantage: 6-8x faster development with higher quality

The key insight: Experience told me what to automate, but AI handled how to implement it efficiently.

The Mind-Bending Part

Here’s what really hit me afterward: I used AI to automate my automation workflows. Let that sink in for a second.

It’s not just using a tool - it’s using AI to build better tools for working with AI. Each command becomes a force multiplier for the next development session.

Here’s my philosophy: Every manual step is friction. Every context switch pulls you out of the flow. Every repeated task is creativity wasted on busywork.

The goal isn’t just efficiency - it’s creating space for the actual creative work. The thinking, the writing, the problem-solving that actually matters.

Quantified Results

Ongoing Development Time:

Error Reduction:

Quality Improvements:

What’s Next

This foundation opens up some interesting possibilities:

The ultimate goal? Eliminate every piece of friction between idea and implementation.

Final Thoughts

Sometimes the best way to improve your writing is to eliminate everything that makes writing harder.

And sometimes the best way to improve your development process is to let AI automate the automation itself.

This blog post? Created using the exact workflow it describes. Meta enough for you?