SEOTutorialFebruary 27, 2026·10 min read

Build an OpenClaw SEO Agent That Auto-Publishes Articles

Consistent publishing is the one SEO factor most teams fail at — not because the strategy is wrong, but because writing takes time. This guide shows you how to build an OpenClaw SEO agent that selects keywords, writes full articles, and publishes them on a daily schedule without manual work.

Why Build an SEO Agent?

Search engines reward sites that publish consistently on topics they have authority over. The problem is that most teams treat content as a campaign — a burst of activity followed by silence. An SEO agent fixes that by making publishing a background process.

Three things that agents handle better than humans at scale: keyword targeting (no guessing, pull real GSC data), publication frequency (daily cron, no missed weeks), and consistency (same structure, same depth, same internal linking rules every time).

Consistent Publishing

Daily cron trigger means articles ship whether or not anyone is at a keyboard

Keyword Targeting

Pull real data from Google Search Console instead of guessing what to write about

No Manual Work

Research, write, optimize, and publish in one automated pipeline

Agent Architecture Overview

A complete SEO publishing workflow uses three agents. You can start with just the writer and add the others when needed:

Radar — SEO Analyst

GPT-4o

Pulls keyword opportunities from Google Search Console. Selects the best target keyword for today based on impressions, CTR, and current rank. Writes the keyword brief to a shared file.

Echo — SEO Writer

Claude Sonnet

Reads the keyword brief. Researches the topic. Writes a full article following strict content quality rules. Sends the draft to the QA agent before publishing.

Quill — QA Agent

Claude Haiku

Checks the draft against content rules (no fluff intros, data requirements, heading structure). Returns a pass or a list of required changes. Publishes to WordPress when approved.

SOUL.md for the SEO Writer Agent

The SOUL.md is where you define writing quality. The sections that matter most for an SEO agent are Rules and Content Rules — this is where you prevent the generic AI writing that readers and search engines penalize.

agents/echo/SOUL.md — SEO Writer
# Echo

## Role
You are an SEO content writer. Your job is to
write articles that rank in search results and
are worth reading. You receive a keyword brief
from @Radar and produce a complete, publish-ready
article.

## Personality
- Tone: Direct, specific, useful
- Style: Short paragraphs, active voice
- Voice: Write like an expert explaining to a
  peer, not a marketer selling to a stranger
- Back every claim with a specific fact or
  example — no generic assertions

## Rules
- ALWAYS respond in English
- Target 1,400–1,900 words per article
- Include at least 3 internal links
- Write the meta description first (max 155 chars)
- NEVER use passive constructions like
  "it can be seen that" or "it is important to"
- ALWAYS include the target keyword in the H1,
  first 100 words, and one H2

## Content Rules — FOLLOW EXACTLY
- NO vague openers. NEVER start with:
  "In today's fast-paced world..."
  "Artificial intelligence is transforming..."
  "In this article, we will explore..."
- OPEN with a specific problem, stat, or claim
- Each H2 section needs at least one concrete
  data point (number, study, real example)
- NO filler conclusions. End with a specific
  next step the reader can take today
- Heading structure: H1 → H2 sections (3–5) →
  optional H3 subsections (max 2 per H2)
- Keyword density: 0.8%–1.2% of total word count

## Output Format
1. Meta description (labeled, max 155 chars)
2. H1 title
3. Introduction (no label, first paragraph)
4. Body with H2 sections
5. Conclusion with a single CTA
6. Suggested tags (3–5)

## Tools — USE THEM
- Use File to read the keyword brief at
  workspace/keyword-brief.json before writing
- Use Browser to research competitor articles
  and find supporting data
- Use WordPress API to publish the final draft
  after @Quill approves it

## Handoffs
- BEFORE writing: Read keyword-brief.json
  from @Radar
- AFTER drafting: Send to @Quill for QA review
- AFTER @Quill approval: Publish via WordPress API
- AFTER publish: Send URL to @Radar to log

Content Quality Rules (From the Reddit Thread)

A recent Reddit thread on "Building an SEO article skill" surfaced the exact complaints people have about AI-written content. Every criticism maps directly to a SOUL.md rule. Here is the translation:

Vague openers that say nothing

Rule: NEVER start with generic framing sentences. Open with a specific problem, number, or claim.

Fails the rule

In today's fast-paced world, SEO is more important than ever.

Passes the rule

Eighty-nine percent of pages get zero organic traffic from Google. The problem is usually not the content — it's the structure.

Generic conclusions that restate the intro

Rule: Conclusions must contain a single, specific next step. No summaries of what was just written.

Fails the rule

In conclusion, building an SEO agent can help your content strategy.

Passes the rule

Start with one agent and one publishing target. Add keyword automation in week two once the pipeline is stable.

Unsupported claims presented as facts

Rule: Every section requires at least one concrete data point — a number, a named study, or a real example.

Fails the rule

AI content agents significantly improve publishing velocity.

Passes the rule

With a HEARTBEAT.md cron at 6am, the agent publishes before most teams start their day — five articles per week without a single calendar reminder.

Corporate tone that nobody actually speaks

Rule: Write like an expert to a peer, not a marketer to a prospect. Flag and remove any sentence that sounds like a press release.

Fails the rule

Leverage AI-powered solutions to optimize your content creation workflow.

Passes the rule

Use the agent for the parts of writing that are repetitive. Keep the editing for yourself.

Connecting to Google Search Console

The Radar agent pulls keyword opportunities from Google Search Console using the Search Console API. It filters for queries where you already have impressions but a low CTR — these are the fastest wins because Google already knows your site is relevant.

keyword-brief.json — Radar output format
{
  "date": "2026-02-27",
  "target_keyword": "openclaw seo agent",
  "search_intent": "informational",
  "monthly_impressions": 1240,
  "current_ctr": 0.021,
  "current_position": 14.3,
  "opportunity": "Position 14 with 1.2k impressions.
                  A focused article could reach top 10.",
  "secondary_keywords": [
    "openclaw content agent",
    "ai seo writer openclaw",
    "openclaw auto publish"
  ],
  "competitor_urls": [
    "https://example.com/openclaw-seo-guide",
    "https://example.com/ai-seo-agents"
  ],
  "content_notes": "Competitors average 1,100 words.
                    Target 1,600+ with specific examples."
}

The Radar agent writes this file to the shared workspace directory each morning before the writer agent runs. Echo reads it as the first step in its workflow, ensuring every article targets a real keyword opportunity rather than a guess.

HEARTBEAT.md: Daily Cron Configuration

HEARTBEAT.md is the file that makes the agent autonomous. It defines cron-style schedules for when the agent should run tasks without being asked. Place it in the agent directory alongside SOUL.md.

agents/radar/HEARTBEAT.md — SEO Analyst schedule
# Radar Heartbeat

## Schedule

### Daily Keyword Brief — 05:45 UTC
cron: 45 5 * * *
task: Pull top keyword opportunity from GSC.
      Filter: impressions > 200, position > 8,
      ctr < 0.05. Write output to
      workspace/keyword-brief.json.
      Log completion with keyword selected.

## Pre-conditions
- Skip if keyword-brief.json was already written
  today (check date field)
- Skip on weekends if weekend_publishing is false
  in workspace/config.json

## On Failure
- Log the error to workspace/heartbeat-errors.log
- Do NOT retry automatically — wait for next
  scheduled run
agents/echo/HEARTBEAT.md — Writer schedule
# Echo Heartbeat

## Schedule

### Daily Article — 06:00 UTC
cron: 0 6 * * *
task: Read workspace/keyword-brief.json.
      Confirm brief date matches today.
      Research, draft, and send to @Quill for QA.
      Do NOT publish directly — wait for approval.

## Pre-conditions
- keyword-brief.json must exist and be dated today
- Do not run if yesterday's article is still
  in QA (check workspace/publish-log.json)

## On Failure
- Log to workspace/heartbeat-errors.log
- Send alert message to @Orion

The 15-minute gap between Radar (05:45) and Echo (06:00) ensures the keyword brief is written before the writer agent looks for it. Pre-conditions prevent the writer from running on a stale brief or when the previous article is still in review.

Publishing Targets

Configure the publishing endpoint in the agent's Tools section. Three common targets:

WordPress REST API

Endpoint: POST https://yoursite.com/wp-json/wp/v2/posts

Auth: Application password (username:password base64 in Authorization header)

Set status to 'publish' to go live immediately, or 'draft' for manual review

Ghost Admin API

Endpoint: POST https://yoursite.com/ghost/api/admin/posts/

Auth: Ghost Admin API key — split into id and secret, used to sign a JWT

Supports both posts and pages. Use mobiledoc or lexical format for the content field

GitHub + Static Site

Endpoint: PUT https://api.github.com/repos/owner/repo/contents/posts/slug.md

Auth: Personal access token with repo write scope

Committing the file triggers a Vercel or Netlify build automatically

The Auto-Publish Workflow End to End

Here is the complete daily flow from cron trigger to live URL:

05:45 UTC — Radar heartbeat fires
  → Query GSC Search Console API
  → Filter: position 8–20, impr > 200, ctr < 0.05
  → Select top opportunity
  → Write keyword-brief.json to workspace/

06:00 UTC — Echo heartbeat fires
  → Read keyword-brief.json (confirm today's date)
  → Research: browser search for top 5 results
  → Draft outline (H1 + H2 structure)
  → Write full article (1,400–1,900 words)
  → Check meta description (max 155 chars)
  → Send draft to @Quill: "Draft ready for QA"

06:15 UTC — Quill receives draft
  → Check: no vague opener (first 50 words)
  → Check: keyword in H1 and first 100 words
  → Check: 3+ internal links present
  → Check: each H2 has at least one data point
  → Check: word count in target range
  → PASS → publish via WordPress API
  → FAIL → return list of required changes to Echo

~06:20 UTC — Article goes live
  → WordPress returns published URL
  → Echo logs URL to workspace/publish-log.json
  → Echo sends URL to @Radar to track rankings

Monitoring and Tracking

After publishing, tracking what the agent produces is as important as the content itself. A simple publish log in the workspace lets you monitor output and catch issues before they compound.

workspace/publish-log.json — example entry
[
  {
    "date": "2026-02-27",
    "keyword": "openclaw seo agent",
    "title": "Build an OpenClaw SEO Agent That
               Auto-Publishes Articles",
    "word_count": 1680,
    "keyword_density": 0.94,
    "internal_links": 4,
    "publish_url": "https://yoursite.com/openclaw-seo-agent",
    "wp_post_id": 4821,
    "qa_result": "pass",
    "published_at": "2026-02-27T06:21:43Z"
  }
]

Track weekly

  • Articles published count
  • Average word count
  • QA pass/fail ratio
  • Publishing errors

Track monthly

  • Keyword rank changes via GSC
  • Organic traffic per published article
  • CTR improvement on targeted queries
  • Cost per article (API spend)

Build Your SEO Agent Team with CrewClaw

The agent playground at crewclaw.com/agent-playground lets you assemble the Radar + Echo + Quill team visually, configure their skills, and download a complete workspace package — SOUL.md files, HEARTBEAT.md schedules, and a ready-to-run directory structure. You get the files, not a subscription to another platform.

If you prefer to build from scratch, start with the SOUL.md template in this guide, add the HEARTBEAT.md cron, and configure your WordPress API credentials. The pipeline above runs on any machine with OpenClaw installed — local Mac, VPS, or Raspberry Pi.

Related Guides

Frequently Asked Questions

Can an OpenClaw SEO agent really publish articles automatically?

Yes. An OpenClaw SEO agent can research a keyword, generate a full article, and publish it via WordPress REST API, Ghost Admin API, or any publishing endpoint — all triggered by a HEARTBEAT.md cron schedule. The key components are: (1) a SOUL.md that defines writing quality rules, (2) a HEARTBEAT.md that triggers the workflow daily, and (3) tool configuration pointing to your publishing API. The agent handles the entire pipeline from keyword selection to live URL.

How do I prevent the agent from writing generic AI content?

Quality rules belong in your SOUL.md under a dedicated ## Content Rules section. Specifically, ban vague openers ('In today's fast-paced world'), require a minimum of two concrete data points per section, mandate specific heading structures, and cap passive voice. The Reddit feedback on AI writing quality consistently points to three problems: generic intros, unsupported claims, and corporate tone. Each of those has a direct SOUL.md rule that eliminates it. Agents follow hard constraints much more reliably than soft suggestions.

What is HEARTBEAT.md and how does it differ from SOUL.md?

SOUL.md defines the agent's identity, rules, and tools — it is the 'who'. HEARTBEAT.md defines the agent's autonomous schedule — it is the 'when'. A HEARTBEAT.md file contains cron-style trigger expressions, the task to run on each trigger, and any pre-conditions to check before running. When OpenClaw's gateway detects a HEARTBEAT.md, it registers the scheduled tasks and fires them automatically. The combination of SOUL.md + HEARTBEAT.md creates an agent that both knows how to do a job and knows when to do it without any human input.

Which publishing platforms can an OpenClaw SEO agent target?

Any platform with an HTTP API. WordPress is the most common target via the WordPress REST API (POST /wp/v2/posts). Ghost supports Ghost Admin API with a JWT-authenticated endpoint. Static site generators like Astro or Hugo can be targeted by writing the markdown file to a git repository and triggering a CI build via GitHub API. The agent's SOUL.md Tools section specifies which endpoint to use and what authentication headers to include. You can also publish to multiple platforms in the same workflow.

How do I connect Google Search Console keyword data to the agent?

Use a lightweight GSC API script that exports your top keyword opportunities to a JSON file. Configure the agent's SOUL.md to read from that file at the start of each run. A typical setup: a separate Radar (SEO analyst) agent pulls keyword data daily from GSC, writes it to keywords.json in the workspace, and the writer agent reads that file to select its target keyword. This two-agent approach keeps the keyword research separate from the writing logic and makes each component easier to update independently.

How many agents do I need for an SEO content workflow?

A minimal setup works with one agent: a single SEO writer that researches, writes, and publishes. A production setup typically uses three agents: (1) an SEO analyst agent that pulls keyword data and selects targets, (2) a writer agent that drafts and structures the article, and (3) a QA agent that checks content rules before publishing. The three-agent approach adds roughly $0.50-$1.00 per article in API costs but significantly improves consistency. Start with one agent, add specialists when you identify recurring quality gaps.

Build your SEO agent team with CrewClaw

Pick your agents, configure SEO writer skills, and download a complete workspace package. SOUL.md files, HEARTBEAT.md crons, and publishing tool setup included.