SEO Blog Autopilot, How It Works | Brothers Automate
Brothers Automate

SEO Blog
Autopilot

Five AI agents. One cron trigger. A fully autonomous pipeline that researches keywords, writes articles, publishes to production, and syndicates for backlinks, three times a week.

5
Agents
3x
Per Week
0
Human Steps
~3k
Words Per Post
How It Works

The Full Pipeline End to End

A cron job fires Mon/Wed/Fri at 2pm. Claude Code runs the skill chain, each agent passes its output to the next. No human touches the process between trigger and live post.

Cron Trigger
Mon / Wed / Fri 2pm
01
Competitor Gap Agent
Find keyword opportunities
02
Content Strategist Agent
Pick best topic, build outline
03
SEO Writer Agent
Write & humanize article
04
Publisher Agent
Validate, commit, deploy
05
Syndication Agent
Cross-post for backlinks
Live on Site
brothersautomate.com/blog/
The Agents

Five Agents.
One Pipeline.

Click any agent to expand it. Each section shows what it does, what tools it uses, and what it passes to the next agent.

01
Competitor Gap Agent
Find keyword gaps, topics competitors rank for that we don't.
Research

This agent scans our competitive landscape to find content opportunities we're missing. It discovers competitors, compares keyword profiles, scores each gap by volume, difficulty, and intent, then passes the top opportunities to the next agent.

What It Does
1Discovers top 5 organic competitors via DataForSEO domain analysis
2Pulls all keywords Brothers Automate currently ranks for
3Runs domain intersection with intersections: false to find keywords they have that we don't
4Scores keyword difficulty and classifies search intent for each gap
5Deduplicates against existing blog posts, rejects anything we already cover
6Calculates an opportunity score per keyword and ranks them
Scoring Formula
// Each factor scored 0–100, summed for final rank volume_score // >1000 = 100, 500-1000 = 75, 100-500 = 50, <100 = 25 + difficulty // KD<20 = 100, 20-40 = 80, 40-60 = 50, >60 = 20 + intent // commercial = 100, transactional = 80, info = 60 + topic_bonus // +10 for AI/automation topics, +5 for business themes = opportunity_score
Tools Used
DataForSEOcompetitors_domain
DataForSEOranked_keywords
DataForSEOdomain_intersection
DataForSEObulk_keyword_difficulty
DataForSEOsearch_intent
Output → Next Agent
competitors_discoveredTop 5 organic competitors by keyword overlap
current_rankingsAll keywords BA currently ranks for
content_gapsPrioritised keyword list with scores, volume, KD, intent
Fallback: If competitor discovery returns nothing, uses a seed list of known competitors (tryinteract.com, outgrow.co, typeform.com, leadquizzes.com, involve.me).
02
Content Strategist Agent
Select the best keyword, analyse the SERP, build a full content brief.
Strategy

Takes the scored keyword list from Agent 01 and makes the editorial decision: which topic do we write about today? It analyses the SERP, expands the keyword set, researches current data, plans internal links, and builds a detailed outline.

Selection Criteria

Relevance

Must fit BA's wheelhouse: lead gen, quiz funnels, email marketing, automation, AI tools

Linkability

Connects to 3+ existing posts for internal link opportunities

Category Balance

Prefers underrepresented categories to keep the blog diverse

Commercial Value

CPC > $2 preferred. AI automation topics get a +15 bonus.

What It Builds
1Analyses top 10 SERP results, content types, featured snippets, weak spots
2Expands to 3-5 long-tail secondary keywords and 5-8 LSI terms
3Researches current stats and People Also Ask questions via Tavily
4Plans internal links: 3-5 posts to link to, 1-3 posts that should link back
5Builds a detailed outline: H1, meta description, 5-8 H2 sections with H3s, FAQ
Tools Used
DataForSEOserp_organic_live
DataForSEOkeyword_suggestions
DataForSEOrelated_keywords
Tavilysearch
Output → Next Agent
topicSelected keyword with volume, KD, intent, opportunity score
serp_analysisContent types, featured snippets, weak spots in top 10
outlineFull H2/H3 structure with notes on what each section covers
internal_linksExisting posts to link to and posts that should link back
research_dataStatistics, PAA questions, current information
03
SEO Writer Agent
Write a 2,700-3,500 word article in brand voice, then strip every trace of AI.
Writing

The heaviest agent in the pipeline. It takes the outline and research from Agent 02, writes the full article following Brothers Automate brand voice, then runs a multi-pass humanisation process to strip AI writing patterns.

Four-Phase Writing Process
A

Research

3 Tavily queries for statistics, examples, and best practices. Extracts 3-5 citable stats and 1-2 real case studies.

B

Draft

Follows the outline section by section. Applies brand voice rules, internal links, and CTA weaving throughout.

C

Humanise

15 rules to strip AI patterns. Word kills, phrase kills, structure fixes, and voice injections.

D

Format

Wraps in Astro-compatible Markdown with frontmatter: title, description, date, category, author, tags.

Brand Voice Rules

Use These

  • "while you sleep"
  • "done-for-you"
  • "qualified leads"
  • "the system handles it"
  • "we've been there"
  • First-person plural "we"
  • Contractions always

Never Use

  • "leverage"
  • "synergy"
  • "AI-powered"
  • "revolutionary"
  • "game-changing"
  • "In today's fast-paced..."
  • "comprehensive solution"
AI Detection Kill List (Sample)
// Word-level replacements, every instance, no exceptions delve → dig into, look at, explore comprehensive → thorough, complete, full crucial → important, key, matters leverage → use, apply, put to work landscape → space, world, scene streamline → simplify, clean up, cut the fat navigate → figure out, work through, handle // Structure-level fixes Break triple patterns // avoid groups of exactly 3 Vary section lengths // no uniform blocks Mix sentence lengths // short fragments + long sentences Add opinions with reasons // minimum 2 per article Admit limitations // minimum 1 per article
Validation Checklist
Primary keyword in title, first 100 words, and at least one H2
Word count within 20% of target (2,700-3,500)
At least 3 internal links, 2 external links
Zero AI vocabulary words from kill list
At least 2 opinions, 1 limitation, 1 specific stat
Voice matches Brothers Automate brand profile
04
Publisher Agent
Validate the post, commit to git, push to deploy.
Deploy

This agent is the gatekeeper. It runs pre-flight validation on the finished article, handles category config updates if needed, commits to the git repo, and pushes to main, which triggers an automatic Vercel deployment.

Pre-Flight Checks
Slug doesn't already exist in src/content/blog/
Frontmatter has all required fields (title, description, date, category, author, tags)
Category exists in config.ts enum, or gets added if new and pre-approved
Word count > 1,000 and at least 3 H2 headers
At least 1 internal link present
Deploy Sequence
1git fetch origin && git pull origin main, sync with remote
2Write blog post to src/content/blog/[slug].md
3git add the new post (and config.ts if category was expanded)
4git commit with structured message including keyword data
5git push origin main → Vercel auto-deploys
Commit Message Format
Add blog post: [title] SEO Blog Autopilot Keyword: [primary_keyword] ([volume]/mo, KD [kd]) Category: [category] Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Error handling: If push is rejected, retries with git pull --rebase. If rebase fails, saves the post to a backup directory and aborts, no data is lost.
05
Syndication Agent
Cross-post to Dev.to with canonical URL for backlinks.
Distribution

The final agent. It takes the published post, reformats it for Dev.to, checks for duplicates, publishes via API with the canonical URL pointing back to our site, and updates the backlink tracker.

What It Does
1Reads the blog post from src/content/blog/[slug].md
2Converts internal links to absolute URLs and maps tags to Dev.to format (max 4)
3Appends a bio footer linking back to Brothers Automate
4Checks backlink tracker to prevent duplicate syndication
5Publishes via Dev.to API with canonical_url set to our post
6Updates backlink-tracker.json with the new syndication record
Why Canonical URLs Matter

When Dev.to publishes our article with a canonical_url pointing to brothersautomate.com, Google knows our site is the original source. We get the backlink authority without duplicate content penalties. Free SEO.

Output
status"syndicated"
original_urlbrothersautomate.com/blog/[slug]/
devto_urldev.to/brothersautomate/[slug]
canonical_urlbrothersautomate.com/blog/[slug]/ (points back to us)
Under the Hood

Tech Stack & Infrastructure

Orchestration

macOS cron job triggers Claude Code in headless mode with OAuth token auth. Max 50 turns per run.

🔎

SEO Data

DataForSEO MCP server, 9 API endpoints for competitor analysis, keyword research, and SERP data.

📚

Research

Tavily search for current statistics, examples, and People Also Ask questions.

🚀

Publishing

Git push to main branch auto-deploys via Vercel. Astro static site generation. Zero-downtime.

🔗

Syndication

Dev.to REST API with canonical URLs. Backlink tracker JSON for deduplication.

📋

Logging

Full run logs with timestamps. 30-day retention. Every agent action is traceable.

Safety & Guardrails

What Happens When Things Break

Every stage has fallback logic. The pipeline is designed to fail safely, no bad content reaches production.

No Competitors Found

Falls back to a seed list of 5 known competitors in our space.

Unknown Category

Agent proposes from a pre-approved list. New categories are added to config.ts automatically.

Slug Already Exists

Publisher agent aborts immediately. No overwrite, no data loss.

Git Push Rejected

Retries with rebase. If that fails, saves post to backup directory and aborts cleanly.

Dev.to Rate Limited

Waits 30 seconds, retries once. If still blocked, aborts syndication, post is still live on our site.

Already Syndicated

Checks backlink tracker before publishing. Duplicate posts are caught and skipped.