Home/Case Studies/Automated SEO Blog
Case Study

How We Built a Fully Automated SEO Blog for a Cleaning Company

A residential cleaning company needed consistent blog content to build organic search traffic. We built a system that writes, publishes, and manages SEO blog posts twice a week with zero human input. Here's exactly how it works and what it cost.

Industry: Residential Cleaning
Florida, Texas, California, Georgia, DMV
Built in 1 week

The Client

The client is a residential cleaning company operating across Florida, Texas, California, Georgia, and the DC metro area. They generate roughly 70 leads per week, almost entirely through Google Local Services Ads.

The business was growing, but 95% of its leads came from a single paid channel. There was no organic search presence, no blog, and no content strategy. If ad costs went up or lead quality dropped, there was no fallback.

The Problem

The owner knew SEO could diversify their lead sources, but didn't have time to write blog posts, didn't want to hire a content writer, and didn't want to pay an agency $2,000-5,000/month for mediocre content.

The question was: could we build a system that handles the entire content pipeline autonomously, from topic selection to publishing, with no ongoing human input?

What We Built

We built two things for this project. First, a custom website from scratch using Claude Code (an AI coding tool). Second, a fully automated blog pipeline that runs on its own.

The Website

The entire website was built using Claude Code, an AI-powered development tool. This includes 33+ pages: a homepage, 5 service pages, 12 service area pages, an About page, FAQ, Reviews, Contact, and a full blog section. The site is built on Next.js, deployed on Railway, and auto-deploys every time new content is pushed.

The site was built with SEO in mind from the start: structured data (schema markup) on every page, a dynamically generated sitemap, Google Analytics with custom conversion events, and Google Search Console integration.

The Blog Automation

The automation runs on n8n, an open-source workflow platform. Every Monday and Thursday at 9am, it:

  1. 1Pulls the next unpublished topic from a Google Sheet queue
  2. 2Sends a detailed prompt to Claude (Anthropic's AI) with SEO instructions, brand voice guidelines, and content structure requirements
  3. 3Receives a 1,500-2,200 word blog post back as structured JSON with title, meta description, category, and full HTML content
  4. 4Pushes the file directly to GitHub, which triggers an automatic website deploy
  5. 5Updates the Google Sheet to mark the topic as published with the date and live URL

The entire pipeline runs in about 90 seconds. No human reviews the content, picks the topic, or touches the publish button.

System Architecture

📋
Google Sheet
Topic Queue
🤖
Claude AI
Content Generation
📦
GitHub
Version Control
🚀
Railway
Auto-Deploy
🌐
Live Site
Published Post

Orchestrated by n8n, running on a schedule. No human in the loop.

The Prompt Engineering

The quality of the output depends entirely on the prompt. A generic "write a blog post about cleaning" produces generic content that won't rank. The prompt we built includes specific instructions for:

  • -SEO structure: keyword placement in title, H2s, first paragraph, and meta description
  • -Content differentiation: specific product recommendations, pro tips, common mistakes sections, and professional experience references
  • -Brand voice: writing as a knowledgeable friend, not a robot
  • -Internal linking: connecting blog posts to service pages and related content
  • -FAQ sections: structured Q&A format that targets featured snippets
  • -Readability: short paragraphs, bulleted lists, bold key takeaways

Here's a simplified version of the prompt structure. The production version is customized for this specific business, their service areas, their internal linking structure, and their brand voice.

You are a senior content strategist writing for [Company Name],
a [business type] serving [service areas].

Write a blog post about: "[Topic]"
Primary keyword: "[Keyword]"

REQUIREMENTS:
- 1,500-2,200 words
- Include 2+ specific product recommendations with reasoning
- Include at least 1 "pro tip" only a professional would know
- Include a "common mistakes" section
- Include a FAQ section with 3-4 questions
- Use the primary keyword 4-6 times naturally
- Short paragraphs (2-3 sentences max)
- Conclude with a soft CTA to your services

OUTPUT FORMAT:
Return valid JSON with: title, description, category,
readingTime, and content (full HTML).

The full production prompt is roughly 3x longer and includes specific service page slugs, local area references, and detailed HTML formatting instructions.

Topic Strategy

We seeded the Google Sheet with 65 blog topics across 9 categories, giving the system roughly 8 months of content without needing any input. Topics were selected based on:

  • -High-intent search queries for residential cleaning services
  • -Seasonal cleaning topics that align with when people search
  • -Local SEO keywords targeting specific service areas
  • -Common customer questions the team hears on calls
  • -Long-tail keywords with lower competition but clear intent

Each topic in the sheet includes the topic title, target keyword, category, slug, and optional service area for local targeting. When the queue runs low, seeding another batch is a one-time task.

The Numbers

2
Blog posts per week
Monday and Thursday at 9am
65
Topics pre-loaded
~8 months of content queued
1,500-2,200
Words per post
Long-form, SEO-optimized
Zero
Human input required
Fully autonomous after setup

Cost Comparison

Content agencies typically charge per article or per month for blog management. Here's what this same output would cost through traditional channels vs. the automated system:

Content AgencyFreelance WriterThis System
Monthly cost$2,000-5,000$800-2,000~$15-25
Posts per month4-84-88-9
Cost per post$250-625$100-250~$2-3
Your time per post30-60 min review30-60 min review0 min
Annual cost$24,000-60,000$9,600-24,000~$200-300

System cost includes Claude API usage (~$0.15-0.25 per post) and n8n Cloud hosting (~$20/month). Does not include one-time setup cost.

Tech Stack

n8n Cloud
Workflow automation and scheduling
Claude (Anthropic)
AI content generation
Google Sheets
Topic queue and status tracking
GitHub API
File push and version control
Next.js + Railway
Website and auto-deployment
Claude Code
Built the entire website

How to Replicate This

If you want to build this system for your own business, here's what's involved:

1. Set up your website for blog content
Your site needs a blog section that can render posts from files or a CMS. This project uses JSON files pushed to a Git repo, but you could also use WordPress, Webflow, or any platform that accepts content via API.
2. Create an n8n Cloud account
n8n is the automation platform that orchestrates the workflow. You'll need a cloud account or a self-hosted instance. Connect it to Google Sheets (OAuth), set up HTTP request nodes for the Claude API and GitHub API.
3. Get a Claude API key
Sign up at Anthropic's console and load API credits. Each blog post costs roughly $0.15-0.25 in API usage. At 8 posts/month, that's about $1.50-2.00/month.
4. Build your topic queue
Create a Google Sheet with columns for topic, keyword, category, slug, status, published_date, and URL. Research keywords relevant to your business and fill in 30-60 topics.
5. Write the prompt
This is the hardest part. The prompt needs to encode your brand voice, SEO strategy, content structure, internal linking strategy, and output format. A weak prompt produces generic content that won't rank.
6. Build the n8n workflow
Connect the nodes: Schedule Trigger, Google Sheets (read), Code (build prompt), HTTP Request (Claude API), Code (parse response), HTTP Request (GitHub push), Google Sheets (update status). Configure error handling and retries.
7. Test end-to-end
Run the workflow manually and verify: the post appears on your site, the content is well-structured, internal links work, the sheet gets updated, and the slug matches your URL structure.
8. Activate and monitor
Set the schedule, activate the workflow, and check the execution logs weekly for the first month. After that, it runs on its own.

Honest note: The setup is the hard part. If you're comfortable with APIs, workflow automation, and prompt engineering, you can build this yourself. If terms like "OAuth," "API endpoint," or "JSON schema" aren't familiar, the setup will be frustrating. That's not a knock on you. It's just a different skill set.

Want this built for your cleaning company?

I build custom automation systems for cleaning companies. If you want a blog pipeline like this, or you're curious what else can be automated in your operations, let's talk.

Book a Strategy Call

Free, 30 minutes. No pitch deck, just a conversation about your business.