Skip to main content
Independent community resource — not affiliated with the official OpenClaw project. Learn more
Part 5 of 5OpenClaw for SEO

Content Strategy & Keyword Research with OpenClaw

What OpenClaw can and can't do for content strategy

Content strategy is where OpenClaw's ability to combine multiple data sources in a single automated workflow really shines. Rather than manually switching between Google Search Console, a keyword tool, a competitor crawler, and a spreadsheet, OpenClaw can pull from all of them, apply your prioritisation logic, and output an actionable brief or calendar entry.

Low-hanging-fruit keywords

Find queries where you rank 8–20 in GSC — one optimisation pass can push them to page one.

Keyword gap analysis

Surface keywords competitors rank for that your site doesn't, ranked by traffic opportunity.

Topic clustering

Map your existing content and keyword list onto pillar/cluster structure, flagging gaps.

Content brief generation

Generate structured briefs with target keyword, intent, SERP analysis, and outline.

Competitor content monitoring

Watch competitors' sitemaps or RSS feeds and alert you when they publish in your topic areas.

Content calendar planning

Automatically queue new content opportunities into a prioritised publishing schedule.

What OpenClaw cannot do: it cannot replace the human judgment required for brand voice, editorial standards, or publishing decisions. It cannot access paywalled research databases. Fully unreviewed AI-generated publishing is not recommended — use OpenClaw to surface and brief opportunities, then have a human produce or review the final content.

API options for keyword data

Keyword research with OpenClaw works best when you combine at least two sources: your own GSC data (free, shows actual performance) and an external keyword database (shows competitive landscape and search volumes).

API Cost What it provides Best for
Google Search Console API Free Your own site's impressions, clicks, position, CTR by query — 16 months of data Low-hanging-fruit analysis, ranking trend monitoring
DataForSEO Keywords API Pay-per-call Search volume, CPC, keyword difficulty, SERP features, related keywords Gap analysis, brief enrichment, volume validation
DataForSEO SERP API Pay-per-call Live SERP results for any keyword — titles, URLs, snippets of top-10 Competitor content monitoring, SERP feature tracking
SEMrush API Subscription Keyword gap, organic research, topic authority, keyword magic tool Enterprises with existing SEMrush subscription
Ahrefs Keywords Explorer API Subscription Keyword ideas, parent topic, traffic potential, keyword difficulty Sites already using Ahrefs for backlink monitoring (Part 4)
💡 Recommended starting stack: Google Search Console API (free) for low-hanging-fruit and trend data, plus DataForSEO Keywords API for volume and difficulty on a pay-per-call basis. For a typical 50-keyword analysis you'll spend under $2. Add the SERP API for brief generation. Total monthly cost for a medium-sized site doing weekly analysis: $10–20.

Finding low-hanging-fruit keywords from GSC

Low-hanging-fruit keywords are queries where your pages rank in positions 8–20. These pages have already demonstrated topical relevance to Google — they just need a push. Typical improvements that move the needle: adding a section that directly answers a question competitors cover, improving internal linking to the page, adding schema markup, or tightening the title tag to match the query more precisely.

OpenClaw finds them by pulling your GSC data, filtering for queries where avg_position is between 8 and 20, and scoring each opportunity using a simple formula:

# Opportunity score = impressions × (21 - position)
# A query with 1,000 impressions at position 12 scores: 1000 × (21-12) = 9,000
# A query with 200 impressions at position 9 scores:    200  × (21-9)  = 2,400
# Higher score = more traffic to gain by moving up

opportunity_score = impressions * (21 - avg_position)

Add this to your AGENTS.md rank-tracker agent (from Part 2) as an additional analysis step, or create a dedicated agent:

# AGENTS.md — low-fruit-finder agent

agents:
  low-fruit-finder:
    description: "Find GSC queries ranking 8-20 with highest traffic opportunity"
    tools:
      - google-search-console
    config:
      site_url: "sc-domain:yourdomain.com"
      date_range: last_28_days
      position_min: 8
      position_max: 20
      min_impressions: 50          # ignore queries with too little data
      top_n: 20                    # return top 20 by opportunity score
    output:
      format: markdown
      columns: [query, page, avg_position, impressions, clicks, opportunity_score]
      sort_by: opportunity_score
      sort_dir: desc
    prompt: |
      For each of the top opportunities, also suggest one specific improvement:
      - If the query is a question → add an FAQ section answering it directly
      - If the query is a comparison → add a comparison table
      - If the query contains a modifier like "best", "how to", "near me" → note the likely intent mismatch and suggest a title/H1 adjustment
      Output the improvements as a third column alongside the data.
⚠️ GSC data lag: Google Search Console data has a 2–4 day delay and aggregates impressions at the query level. A query can match multiple pages. If a single keyword appears twice in the output (because two of your pages compete for it), that's a cannibalisation signal — merge or clearly differentiate the two pages.

Keyword gap analysis against competitors

Keyword gap analysis shows you keywords your competitors rank for in the top 10 that your site does not rank for at all, or ranks very poorly for. This is your most direct route to net-new content opportunities because the demand is proven — someone is already sending traffic to your competitors for these queries.

With DataForSEO's Domain Analytics endpoint, OpenClaw can pull the top-ranking keywords for up to five competitor domains, compare them against your own GSC export, and surface the gaps ranked by estimated traffic value:

# AGENTS.md — keyword-gap agent

agents:
  keyword-gap:
    description: "Find keywords competitors rank for that we don't"
    tools:
      - dataforseo-domain-analytics
      - google-search-console
    config:
      target_domain: "yourdomain.com"
      competitor_domains:
        - "competitor1.com"
        - "competitor2.com"
        - "competitor3.com"
      dataforseo_credentials:
        login: "${DATAFORSEO_LOGIN}"
        password: "${DATAFORSEO_PASSWORD}"
      filters:
        competitor_position_max: 10   # competitor ranks top 10
        our_position_min: 21          # we rank 21+ or not at all
        min_search_volume: 100        # ignore negligible keywords
        exclude_branded: true         # skip competitor brand terms
    output:
      format: markdown_table
      columns: [keyword, volume, difficulty, best_competitor_position, our_position, opportunity_tier]
      opportunity_tier_logic: |
        HIGH   → volume > 1000 and difficulty < 40
        MEDIUM → volume 300-1000 or difficulty 40-60
        LOW    → volume < 300 or difficulty > 60
      top_n: 30
    schedule: monthly
💡 Tip: Run this analysis quarterly against a fresh competitor list. Competitors that gain significant new keyword coverage are a signal of a content strategy shift — worth monitoring more closely.

Building topic clusters

A topic cluster is a hub-and-spoke architecture: one comprehensive pillar page covers a broad topic, while multiple cluster pages go deep on specific subtopics and all interlink back to the pillar. This structure passes authority from cluster pages up to the pillar and signals to Google that your site has depth of expertise on the topic.

OpenClaw can analyse your existing sitemap plus a keyword list to map the cluster structure, identify which cluster pages are missing, and output a structured plan:

# AGENTS.md — topic-cluster-mapper agent

agents:
  topic-cluster-mapper:
    description: "Map existing content and keyword list to topic cluster structure"
    tools:
      - http-crawler
      - dataforseo-keywords
    config:
      sitemap_url: "https://yourdomain.com/sitemap.xml"
      keyword_list_file: "keywords.csv"   # CSV with columns: keyword, volume
      pillar_topics:
        - "openclaw automation"
        - "openclaw seo"
        - "openclaw integrations"
        - "openclaw setup"
    analysis:
      steps:
        - crawl_sitemap_extract_titles_and_headings
        - cluster_keywords_by_semantic_similarity
        - match_existing_pages_to_clusters
        - identify_gaps_where_no_page_exists
        - suggest_internal_links_between_cluster_and_pillar
    output:
      format: markdown
      sections:
        - cluster_map_table          # pillar → cluster pages → missing gaps
        - internal_link_suggestions  # existing pages that should link to each other
        - new_page_recommendations   # gaps with keyword, volume, suggested URL slug
    schedule: quarterly

The output is a Markdown table with three zones: covered (existing page ranks), partial (page exists but doesn't rank well for the cluster keyword), and gap (no page exists). The gap list becomes your content backlog.

Generating content briefs

Once you have a target keyword from your low-hanging-fruit list or gap analysis, OpenClaw can generate a full content brief. A good brief includes: search intent classification, target word count, suggested title and H1 variants, SERP feature opportunities, required sections based on what top-ranking pages cover, internal linking suggestions, and any schema types to implement.

# AGENTS.md — brief-generator agent

agents:
  brief-generator:
    description: "Generate a full content brief for a target keyword"
    tools:
      - dataforseo-serp
      - dataforseo-keywords
      - http-crawler
    config:
      dataforseo_credentials:
        login: "${DATAFORSEO_LOGIN}"
        password: "${DATAFORSEO_PASSWORD}"
      target_location: "United States"   # change per market
      language: "en"
    steps:
      - name: "Pull SERP top 10"
        action: serp_organic_results
        params: { keyword: "${TARGET_KEYWORD}", depth: 10 }

      - name: "Analyse top 3 pages"
        action: crawl_and_extract
        targets: top_3_serp_urls
        extract: [word_count, h2_headings, h3_headings, schema_types, faq_presence]

      - name: "Get keyword metrics"
        action: keyword_data
        params: { keyword: "${TARGET_KEYWORD}" }

      - name: "Classify search intent"
        prompt: |
          Based on the SERP results, classify the search intent as one of:
          INFORMATIONAL, NAVIGATIONAL, TRANSACTIONAL, or COMMERCIAL_INVESTIGATION.
          Explain the classification in one sentence.

    output:
      format: markdown
      sections:
        - target_keyword_and_variants
        - search_intent_classification
        - suggested_title_options: 3
        - suggested_meta_description
        - recommended_word_count
        - required_sections:         # based on what top-3 pages all cover
            source: common_headings_across_top_3
        - serp_feature_opportunities: [featured_snippet, faq, people_also_ask]
        - competitor_gaps:           # sections top-3 cover that you should also cover
            note: "do not copy — use as structural reference only"
        - internal_link_suggestions  # from topic cluster map
        - recommended_schema_types
📌 Brief vs draft: You can extend brief-generator with an additional step that uses the brief as a prompt to generate a full draft. Add generate_draft: true to the output config. However, always treat the draft as a starting point, not a finished article — review for accuracy, brand voice, and factual claims before publishing.

Competitor content monitoring

Knowing when a competitor publishes new content in your topic area lets you respond quickly — either by updating your own existing page, creating a competing piece, or adjusting your keyword prioritisation. OpenClaw can monitor competitor sitemaps or RSS feeds and alert you to new content that matches your topic clusters.

# AGENTS.md — competitor-content-watcher agent

agents:
  competitor-content-watcher:
    description: "Alert when competitors publish new content in our topic areas"
    tools:
      - http-crawler
      - dataforseo-serp
    config:
      competitor_sitemaps:
        - "https://competitor1.com/sitemap.xml"
        - "https://competitor2.com/sitemap.xml"
      topic_keywords:               # alert if new URL/title contains these
        - "openclaw"
        - "ai agent seo"
        - "automated seo workflow"
        - "heartbeat automation"
      state_file: "competitor_content_seen.json"   # tracks previously seen URLs
    logic:
      - fetch_each_sitemap
      - extract_lastmod_and_urls
      - compare_against_state_file
      - filter_new_urls_matching_topic_keywords
      - for_each_new_match:
          fetch_page_title_and_meta_description: true
          estimate_target_keywords_via_serp_api: true
    output:
      format: markdown
      include: [competitor, url, title, estimated_keyword, published_date]
      alert_if_new_matches: true
    schedule:
      frequency: weekly
      day: Monday
      time: "08:00"

Using RSS feeds instead of sitemaps

Many blogs expose an RSS feed which is easier and faster to monitor than a full sitemap. If your competitors have RSS, use the rss-reader tool instead of http-crawler and set feed_urls rather than competitor_sitemaps. RSS gives you publish dates reliably without needing to compare against a state file.

Content calendar automation

The low-hanging-fruit report, keyword gap analysis, and competitor alerts all produce a stream of content opportunities. The content calendar agent collects them, applies your prioritisation rules, and outputs a structured publishing schedule with assigned deadlines.

# AGENTS.md — content-calendar agent

agents:
  content-calendar:
    description: "Prioritise content opportunities and build a 4-week publishing schedule"
    tools:
      - file-reader              # reads outputs from other agents
    config:
      input_files:
        - "low_fruit_report.md"
        - "keyword_gap_report.md"
        - "competitor_content_alerts.md"
      publishing_capacity:
        articles_per_week: 2     # adjust to your team's capacity
      prioritisation_weights:
        opportunity_score: 0.35  # from GSC low-fruit
        search_volume: 0.30
        keyword_difficulty: -0.20  # negative = penalise hard keywords
        competitor_published: 0.15   # boost if a competitor just covered it
      deadlines:
        brief_lead_days: 7       # brief due N days before publish
      output_file: "content_calendar.md"
    prompt: |
      Build a 4-week content calendar. For each item include:
      - Week number and suggested publish date
      - Target keyword and opportunity score
      - Content type (new page, update existing, FAQ expansion)
      - Brief due date
      - Priority tier (P1/P2/P3)
      Sort by priority tier then by opportunity score within each tier.
      Flag any opportunities where a competitor published in the last 7 days as URGENT.

HEARTBEAT.md templates

Add these templates to your HEARTBEAT.md file to run content strategy workflows on autopilot.

Weekly low-hanging-fruit report

# HEARTBEAT.md — weekly content opportunities

schedule:
  - name: "Weekly Content Opportunities"
    cron: "0 7 * * 1"          # Mondays at 7 AM
    agents:
      - low-fruit-finder        # GSC positions 8-20
      - competitor-content-watcher   # new competitor posts
    output:
      file: "weekly_content_opportunities.md"
      notify: true
    prompt: |
      Combine the low-fruit keyword opportunities and any new competitor content alerts
      into a single prioritised list. For each item, note whether it is:
      - OPTIMISE EXISTING PAGE (keyword already has a ranking page, just needs improvement)
      - CREATE NEW PAGE (no existing page targets this keyword)
      - URGENT (a competitor published a competing piece this week)
      Limit to the top 5 items to keep the report actionable.

Monthly full keyword analysis

# HEARTBEAT.md — monthly keyword analysis

schedule:
  - name: "Monthly Keyword & Gap Analysis"
    cron: "0 8 1 * *"          # 1st of each month at 8 AM
    agents:
      - keyword-gap             # competitor gap analysis
      - topic-cluster-mapper    # re-map clusters with any new content
    output:
      file: "monthly_keyword_report.md"
      notify: true
    prompt: |
      Summarise the month's keyword landscape:
      1. New HIGH-tier gap keywords found this month (not seen last month)
      2. Any topic clusters where 2+ gap pages now exist (potential pillar opportunity)
      3. Keywords where we improved from gap → partial since last month
      Keep under 400 words — this is a summary for a busy content lead.

On-demand content brief trigger

# HEARTBEAT.md — auto-brief for high-opportunity keywords

schedule:
  - name: "Auto Brief on High-Score Keyword"
    trigger: on_demand          # run manually or chain from weekly report
    agents:
      - brief-generator
    input_required:
      TARGET_KEYWORD: "string"  # pass when triggering
    output:
      file: "briefs/${TARGET_KEYWORD_SLUG}_brief.md"
      notify: true

What the weekly report looks like

Here is a representative output from the weekly content opportunities report. The actual data will reflect your site's queries and search volumes.

━━ Weekly Content Opportunities — 25 Mar 2026 ━━
── Low-Hanging Fruit (GSC positions 8–20) ──
✓ P1 | OPTIMISE | "openclaw heartbeat examples"
Avg pos 11.2 | 1,840 impressions | Score 17,940
→ Add 3 worked examples to /learn/heartbeat-guide.html

✓ P1 | OPTIMISE | "openclaw agents.md format"
Avg pos 9.4 | 1,240 impressions | Score 14,136
→ Expand AGENTS.md reference section with full field glossary

! P2 | CREATE | "openclaw vs n8n comparison"
Avg pos 16.7 | 820 impressions | Score 3,526
→ No dedicated comparison page. Brief ready to generate.

⚡ P1 | URGENT | "ai agent seo automation 2026"
competitor2.com published "AI Agent SEO Automation Guide" (3 days ago)
→ They now rank #4. We rank #18. Prioritise update to /openclaw-for-seo.html

── Competitor Activity This Week ──
! competitor1.com: 2 new posts in "AI SEO" topic cluster
! competitor2.com: published comparison page targeting "openclaw alternative"

Frequently asked questions

Can OpenClaw write content for me automatically?

OpenClaw can generate briefs, outlines, and first drafts — but fully automated publishing without human review is not recommended. Use OpenClaw to surface and structure opportunities, then have a human review and refine before publishing. AI-generated content that is reviewed and edited consistently outperforms unreviewed output in both quality and ranking longevity.

What are low-hanging-fruit keywords and how does OpenClaw find them?

Low-hanging-fruit keywords are queries where your pages already rank in positions 8–20. OpenClaw finds them by querying the Google Search Console API, filtering for those positions, and scoring by impressions × (21 − position). This surfaces the queries where a small ranking improvement yields the biggest traffic gain.

Do I need paid APIs for keyword research?

Not entirely. Google Search Console API is free and provides real performance data for your site. For gap analysis and search volumes, DataForSEO charges per API call — typically $2–8 for a full monthly analysis run. Most small-to-medium sites spend $10–20 per month total without any subscription.

What is a topic cluster and how does OpenClaw build one?

A topic cluster groups related pages around a central pillar page. The pillar covers a broad topic; cluster pages go deep on subtopics and link back to the pillar. OpenClaw crawls your sitemap, clusters your keyword list by semantic similarity, and flags gaps where cluster pages are missing — giving you a prioritised list of new pages to create.

How often should I run these analyses?

Weekly for low-hanging-fruit (it piggybacks on your existing GSC rank-tracking call at negligible extra cost). Monthly for full keyword gap and competitor content analysis. On-demand for brief generation whenever a new opportunity reaches your threshold score. The HEARTBEAT templates above wire all three up automatically.