# Building an Automated Blog Workflow from GitHub Commits

I've always had the same problem with side projects. Commit logs pile up, but my blog stays empty.

I write code. I update READMEs. But blog posts? "I'll write that later" turns into never.

So I built an automation workflow that turns commit logs into blog posts.

---

## Why git2blog Exists

I noticed a repeating pattern.

Finish a project, think "I should blog about this." Few days pass, I forget. A month later, I scroll through commits and go "Oh right, I built that." But the context is gone, so I can't write about it anymore.

The commit logs are already there. Changes, dates, context — all documented. Just need to bridge the gap between commits and blog posts.

**I wanted to eliminate that gap.**

---

## How It Works

git2blog only needs a GitHub repository URL.

1. Fetch commit logs via GitHub API
2. Claude analyzes commit messages, dates, and changes
3. Suggests blog post titles and summaries
4. Once approved, writes posts in both Korean and English
5. Publishes directly to Hashnode

The key is the **approval step**. AI shouldn't do everything automatically. Show me the title and direction first. I approve, then it writes.

I spent about 2 hours here. First version wrote directly without approval — produced weird angles like "Let's analyze the architecture of this project." Academic tone, not my style.

My blog is a trial-and-error diary, not a paper. That's why I added the proposal-approval process.

---

## Real Usage

Writing this post right now with git2blog.

Before, I wouldn't have written this. "A blog post from a single initial commit?" would've been my reaction. But looking at the commit log, I can clearly see why I built this and what problem it solves.

**Commit logs are already raw material. Just need to shape them.**

---

## Tech Stack

Built on Claude Code. Not a separate CLI tool — it works through natural conversation.

Just add Hashnode token and GitHub token to `.env`. Claude handles the rest.

Publishing script is Bash. Parsing frontmatter, calling GraphQL API — under 100 lines. Simple is best.

---

## Future Plans

Right now it's manual: "Turn this repo into a blog post." Eventually I want GitHub webhooks for automatic proposals on new commits.

Also thinking about monitoring multiple repos to generate weekly retrospectives: "This week, this project moved this much."

---

The commits are already written. We just don't realize it.

> "The moment you write code, you're also writing your blog."
