The Problem
Keyword research is where most niche sites quietly stall.
Not because it’s hard.
Because it’s just slow enough to avoid - and vague enough to do poorly.
You open a tool, type something like “backyard fire pit,” and suddenly you have:
hundreds of keywords
no clear direction
no idea what’s actually worth writing
So you either:
overthink it
or pick randomly
Neither works.
What I Built
This week I built an AI agent to handle the first step of the system: finding usable keywords automatically.
At a high level, it:
pulls seed keywords from a Google Sheet
expands them using DataForSEO
sends them to Claude for idea generation
cleans the output
appends everything back into a structured sheet
sends me a Slack message when it’s done
The goal wasn’t perfection.
It was:
remove the friction of getting started
The Workflow
Here’s the actual workflow running in n8n:

How it runs (simple version)
Trigger runs on a schedule
Pulls seed keywords from a Google Sheet
Sends them to DataForSEO for expansion
Extracts keyword data
Sends to Claude to generate additional ideas and angles
Parses and cleans the response
Appends results back into the sheet
Sends a Slack notification when complete
Nothing fancy. Just connected steps.
What Actually Happened
I ran this on a small set of backyard-related seed keywords.
It generated:
~100 keyword ideas per run
a mix of obvious and unexpected angles
Ranked them according to monthly volume, difficulty, content type, content quality, reason for being chosen and a few other metrics
About 85–90% were usable without changes.
What surprised me
It didn’t just expand keywords.
It started generating:
specific use cases
constraint-based queries
angles I wouldn’t have typed manually
Example:
Instead of:
“fire pit ideas”
It generated:
“fire pit ideas for small patios under $300”
That’s where it became useful.
What didn’t work
Some outputs were:
too generic
repetitive
slightly off-topic
Left alone, it creates noise.
What I Changed
After the first run, I made a few adjustments:
tightened the Claude prompt to force specificity
filtered out repeated patterns
added basic cleanup in the parsing step
That improved signal pretty quickly.
Still not perfect—but much better.
Where This Fits
This is now step one of the system:
Research → Brief → Write → Publish → Link → Grow
If the input is weak, everything downstream is weaker.
The Output
Here’s what the output actually looks like:

You end up with:
structured keyword ideas
usable angles
enough volume to start writing immediately
The Template
If you want to replicate this:
Inputs
Google Sheet (seed keywords)
DataForSEO API
Claude API
n8n
Core Logic
Expand keywords
Generate angles
Clean output
Store results
Notify completion
Bottom Line
This isn’t perfect.
It still needs filtering.
It still produces some noise.
But it removes the hardest part:
starting
And that’s enough for now.
Next Week
Next, I’m turning these keywords into structured content briefs.
That’s where this starts becoming a real system.
I’m building this nights and weekends—between a full-time job and two kids under 3—to see how far AI agents can actually go in the real world.
