SEO (Site Audit + Content Writer + Competitor Analysis)

Improves Google rankings with search engine optimization (SEO): audits, keyword research, content optimization, technical fixes, schema, and links. Not for paid search ads (PPC/SEM…

Iván

@ivangdavila

Install

$ openclaw skills install @ivangdavila/seo

All persistent data (site profiles, config, audit history, keyword tracking) lives in ~/Clawic/data/seo/. If you have data at an old location (~/seo/ or ~/clawic/seo/), move it to ~/Clawic/data/seo/. Read setup.md on first use; memory-template.md holds the file format.

When To Use

  • Auditing a site: indexing, technical health, on-page, content, links, structure
  • Diagnosing a ranking or organic traffic drop, a deindexed page, or a core-update hit
  • Writing, refreshing, or consolidating content to rank for a target query
  • Keyword research, opportunity sizing, competitor gap analysis, cannibalization
  • Shipping structural changes safely: migrations, redesigns, hreflang, faceted navigation, programmatic pages
  • Earning visibility in the surfaces above the ten blue links: snippets, packs, AI Overviews
  • Not for paid search ads (PPC, Google Ads bidding, quality score) or for content planning with no search target — route to content-marketing

Quick Reference

SituationRead
Ranking or organic traffic droppedTriage below first, then recovery.md
Core update hit, manual action, hacked or spammy pages, reconsideration requestrecovery.md
First pass on a new site, scoping an audit, writing the deliverableaudits.md
Picking keywords, sizing opportunity, competitor gaps, cannibalizationkeywords.md
Deciding what to write, intent, E-E-A-T, thin content, AI-written draftscontent.md
Bottom-funnel pages: alternatives, "vs", best-X, pricing, integrations, glossarycommercial-pages.md
Titles, meta descriptions, headings, URLs, image alt texton-page.md
Site structure, click depth, topic clusters, subdomain vs subfolder, index bloat, new site from zeroarchitecture.md
Pages not indexed, robots.txt, canonicals, sitemaps, status codes, duplicates, log filestechnical.md
Slow pages, LCP / INP / CLS failing, PageSpeed vs field dataperformance.md
React/Vue/Angular site, content missing from view-source, SPA routing, soft 404sjavascript.md
JSON-LD, rich results, review stars, breadcrumbs, product feedsschema.md
Internal links, backlinks, anchor text, outreach, disavowlinks.md
Physical location or service area, Google Business Profile, reviews, map packlocal.md
Product and category pages, faceted navigation, variants, out-of-stock, paginationecommerce.md
Multiple languages or countries, hreflang, geotargeting, translated duplicatesinternational.md
Domain change, replatform, redesign, URL restructure, HTTP to HTTPSmigrations.md
Featured snippets, People Also Ask, sitelinks, image and video results, pixel positionserp-features.md
AI Overviews, AI Mode, ChatGPT and Perplexity citations, AI crawlers, llms.txtai-search.md
Search Console data, exports, regex filters, proving a change worked, forecasting, reportingsearch-console.md
Bing, IndexNow, Applebot, Yandex, Naver, Baidu, privacy enginesother-engines.md
Publisher work: Top Stories, Google News, Discover traffic, paywallsnews-discover.md
Generating hundreds or thousands of templated pagesprogrammatic.md
WordPress, Shopify, Webflow, Wix, Next.js platform quirkscms-platforms.md
Anything else SEORun the audit checklist below, then route from the area that fails

Core Rules

  1. Audit before prescribing. Fixed order: manual actions → indexing → intent match → technical → content → links. Diagnosing content quality on a page Google never indexed wastes the engagement; every layer above depends on the one before it.
  2. The SERP is the spec. Before writing or prescribing format, search the exact query in the target market. Page 1 defines format, depth, and freshness. If page 1 is all product grids, a 3,000-word guide will not rank there at any quality level.
  3. Improve before you create. Pages at position 4-15 in Search Console with impressions at or above min_impressions (Configuration; default 100/month) are the highest-ROI work: better snippet, filled content gaps, internal links. Write a new page only when no existing URL targets the intent. Example: a page at position 8 with 1,000 monthly impressions needs a title rewrite and two internal links — not a competing new article, which triggers rule 4.
  4. One intent per page. Two URLs alternating in Search Console for the same query = cannibalization: Google splits signals and both underperform. Fix: 301 the weaker into the stronger, merge unique content. Map keywords by intent, not by string — Google clusters variants onto one page.
  5. Technical floor. Core Web Vitals "good" thresholds (Google, field data at p75): LCP < 2.5s, INP < 200ms, CLS < 0.1. HTTPS, mobile-first, self-referencing canonicals, clean sitemap. Technical debt caps everything content can earn.
  6. E-E-A-T is signals, not a score. No E-E-A-T meter exists — demonstrate it: author bios with verifiable credentials, first-hand evidence (photos, data, tests), citations, contact and about pages. Decisive for YMYL topics (health, finance, legal, safety).
  7. Links: earn, never buy. Bought links risk manual actions that take months to recover from after cleanup. Internal links are the lever you fully control — spend them before any outreach.
  8. Iterate from Search Console, not assumptions. Each symptom has a different fix: CTR far below the position curve → rewrite the snippet. Impressions but no clicks → intent or SERP-feature problem. No impressions → indexing or relevance problem. GSC tells you which; guessing does not.
  9. Size the prize before doing the work. expected monthly clicks = volume × CTR at the realistic position × (1 − feature discount). Worked: 2,000 searches/mo, realistic landing spot position 5 (~5-10% CTR), an AI Overview and an ads block above → 2,000 × 0.07 × 0.6 ≈ 84 clicks/mo. If that number does not justify the build, say so before writing.

Ranking Drop Triage

In order — stop at the first confirmed cause:

  1. GSC → Manual Actions + Security Issues. If flagged, that IS the diagnosis (recovery.md).
  2. URL Inspection on hit pages: still indexed? Google-selected canonical changed to another URL?
  3. Recent deploys: robots.txt edits, stray noindex, redirect changes, template changes shipped near the drop date.
  4. Drop date vs Google's announced update dates. Aligned = sitewide quality reassessment, not a page bug — fix the weakest content across the site.
  5. Search the lost queries: did the SERP change format or gain features (AI Overview, more ads, a pack) that push you down visually at the same rank?
  6. Backlinks: links lost on your side, or a competitor gained them.
  7. Seasonality and tracking: compare year-over-year, and confirm the drop is not analytics (broken tag, bot filter, property change) before treating it as SEO.
  8. None conclusive → gap-compare the pages that replaced you (keywords.md).

SEO Audit Checklist

Indexing:

  • Important pages indexed — verify with URL Inspection and the Page indexing report, not the site: operator
  • No important pages blocked in robots.txt
  • XML sitemap submitted to Search Console, only canonical 200-status URLs in it
  • No stray noindex on pages that should rank
  • No page both robots.txt-blocked AND noindexed — blocked crawl means Google never sees the noindex, so the page can stay indexed

Technical:

  • Core Web Vitals passing (thresholds in rule 5)
  • Mobile-friendly, HTTPS with no mixed content
  • No crawl errors, no soft 404s, no server errors in Search Console
  • Redirect chains ≤3 hops
  • Rendered HTML contains the main content (JavaScript sites)

On-Page:

  • Unique title tags (50-60 chars), meta descriptions (150-160 chars)
  • One H1 per page with the target term; proper heading hierarchy
  • Images with alt text; internal links to and from the page

Content:

  • Search intent matched (rule 2)
  • No cannibalization (rule 4)
  • No thin or duplicate content; dead pages improved, consolidated, or removed

Off-Page and Entity:

  • Google Business Profile complete (local businesses)
  • Backlink profile checked for toxic patterns
  • Brand queries return the right result, sitelinks, and knowledge panel where applicable

Content Writing Process

  1. Keyword research — target keyword, volume, SERP reality check (keywords.md)
  2. Intent analysis — search the query in the target market; page 1 is the format spec
  3. Gap + gain — cover what ranking pages cover, then add what none of them have
  4. Write — answer the query in the first ~100 words, then structure per content.md
  5. Optimize — title, meta, headers, internal links from strong pages, schema
  6. Publish — request indexing once, log in ~/Clawic/data/seo/memory.md, review GSC after a few weeks

What Takes How Long

Honest ranges beat invented dates; every one of these is mechanism, not promise.

ChangeTime to effectMechanism
Title or meta rewriteDays to appear, 2-4 weeks to judgeNeeds a recrawl, then enough impressions for CTR to be readable
New page, established siteIndexed in days; competitive movement 3-6 monthsDiscovery is fast; earning position takes links and engagement history
New domainMonths before competitive queries moveNo confirmed sandbox — the delay is missing links, history, and coverage
Core Web Vitals fix~4 weeks before field data reflects itCrUX field data is a 28-day rolling window; lab scores change instantly
301 migration2-8 weeks of turbulence, longer on large sitesGoogle must recrawl every redirected URL to transfer signals
Manual action revokedDays to weeks after reconsiderationHuman review queue; recovery of position is separate and slower
Core update recoveryUsually at the next update, not between themSitewide reassessments are recomputed on update cycles
Disavow fileWeeks to monthsApplied as links are recrawled, not on upload

Output Gates

Before delivering recommendations or content:

  • Did I search the actual query in the target market, or am I prescribing format from memory?
  • Did I check for an existing page targeting this intent before recommending a new one?
  • Is every number I cite from this skill's files or the user's own data, not improvised?
  • Does each recommendation name the exact URL and the exact change ("rewrite /pricing title to lead with X"), not "improve content"?
  • Did I size the prize (rule 9) so the user can refuse the work?
  • Am I promising a date? State the mechanism and a range from What Takes How Long, never a deadline.

Configuration

User-dependent variables. Defaults apply until the user states a preference; store them in ~/Clawic/data/seo/config.yaml.

VariableTypeDefaultEffect
site_typeblog | ecommerce | saas | local | news | directory | autoautoWeights the audit checklist and decides which guide the router opens first; auto infers from URL patterns and page templates on first look
target_markettext (locale, e.g. en-US)en-USWhich SERP to check, which spelling variant to write, and whether hreflang and local guidance apply
tool_accessgsc-only | paid-suitegsc-onlygsc-only keeps every workflow on free data (GSC, Trends, SERPs); paid-suite unlocks backlink-index and difficulty-score steps
risk_postureconservative | standard | aggressiveconservativeGates link tactics, external anchor ratios, and how much templated page generation to recommend
cmswordpress | shopify | webflow | wix | headless | other | autoautoPicks the implementation path for every fix (where redirects, robots, and metadata actually live)
min_impressionsnumber (impressions/month)100Floor for every opportunity list: striking distance (rule 3, keywords.md, search-console.md) and the traffic-at-stake cutoff for the audit Top 5. Below it, a page cannot produce a readable CTR or click change — raise it on large sites
voice_filepathnoneBrand voice guide at ~/Clawic/data/seo/<file>; governs drafted copy, never the SEO structure

Preference areas — customizable dimensions; a stated preference gets recorded in config.yaml and applied:

  • Reporting: audit depth (one-page priorities vs full report), technical vs business language, which KPI leads (clicks, conversions, revenue)
  • Conventions: URL and slug style, title formula (brand position and separator), heading patterns, internal anchor style
  • Scope boundaries: sections that are off-limits (legal, careers, docs), staging hosts, URLs never to touch
  • Implementation: whether the agent edits files and writes patches or hands over specs and tickets
  • Measurement: reporting property, comparison window, whether branded queries are excluded from "SEO traffic"
  • Thresholds: floors that gate what gets worked on — impressions (min_impressions), traffic at stake for a finding to make the Top 5, minimum sample before a test is called
  • Cadence: rank and GSC review frequency, content refresh schedule, reporting date

Traps

TrapWhy it failsDo instead
Writing before checking the SERPFormat mismatch = no ranking at any qualityRule 2: the SERP is the spec
New article for a query an existing page ranks 4-15 forCannibalization splits signalsImprove the existing page (rule 3)
Chasing keyword densityNo density threshold exists; stuffing detection is pattern-basedCover the topic, use variants naturally
noindex on a robots.txt-blocked pageGoogle never crawls it, never sees the noindexAllow crawl until deindexed, then block
Changing URLs without 301sLinks and authority now point at 404sMap every old URL to its closest new match
Buying links or PBNsPayment and network footprints → manual actionEarn links via assets and digital PR
Reporting rank without checking the rendered SERP#1 under an AI Overview and four ads earns a fraction of historical #1 clicksCheck pixel position, not just rank
Judging index coverage with site:domain.comThe operator is an estimate and excludes results Google chooses to hidePage indexing report + URL Inspection
Re-requesting indexing for the same URL repeatedlyThe queue is not a priority auction; nothing acceleratesFix the reason it was not indexed (quality, duplicate, discovery)
Fixing every warning a crawler emitsCrawl tools flag non-signals (meta keywords, long titles on pages with no impressions)Rank issues by the traffic at stake, then fix
Optimizing a page whose Google-selected canonical is another URLEvery signal you add credits the other URLResolve the canonical conflict first
Reporting "average position improved" as a winAverage position moves when the query mix changes; new long-tail impressions drag it down while traffic growsReport clicks and conversions, positions per query

Where Experts Disagree

  • Word count. Studies show correlation between length and ranking; nobody serious claims causation. Cover the intent fully, then stop — padding is a negative.
  • Disavow. Google says it is unnecessary without a manual action; some practitioners still disavow after obvious spam attacks. Default: don't, unless a manual action names links.
  • Exact-match anchors. They move rankings in tests AND they are the first pattern link-spam systems check. The disagreement is the safe ratio, not the risk — keep exact match a small minority of external anchors.
  • Subdomain vs subfolder. Google states both can rank; migration case studies keep showing subfolder gains. Unresolved: whether the gains come from the structure or from the consolidation and relaunch links that accompany the move. Default subfolder for new builds; do not migrate a working subdomain for this reason alone.
  • Optimizing for AI Overviews. One camp treats citation as the new goal; the other says citations that suppress clicks are a bad trade and defends click-worthy queries instead. Both are right per query type — decide per page with the click data, not sitewide.

Related Skills

More Clawic skills, get them at https://clawic.com/skills/seo (install if the user confirms):

  • content-marketing — Content strategy
  • analytics — Traffic analysis
  • market-research — Competitive analysis
  • html — HTML optimization
  • web — Web development

Feedback

Part of Clawic, the verified skill library. Get this skill: https://clawic.com/skills/seo.

Related skills

Technical Seo Checker

@aaron-he-zhu

Use when the user asks to "check technical SEO"; audits crawlability, indexing, Core Web Vitals, robots.txt, sitemaps, canonicals, redirects, and migrations....

65.5k

SEO Intelligence & Competitor Analysis Pro

@qqyule

Perform deep SEO competitor analysis, including keyword research, backlink checking, and content strategy mapping. Use when the user wants to analyze a website's competitors or improve their own SEO ranking by studying the competition.

1511k

Competitor Analysis

@aaron-he-zhu

Use when the user asks to "analyze competitors" or "竞品分析"; benchmarks competitor keywords, content, backlinks, AI citations, and traffic share into strengths...

79.9k

Apify Ultimate Scraper

@apify

Universal AI-powered web scraper for any platform. Scrape data from Instagram, Facebook, TikTok, YouTube, Google Maps, Google Search, Google Trends, Booking.com, and TripAdvisor. Use for lead generation, brand monitoring, competitor analysis, influencer discovery, trend research, content analytics, audience analysis, or any data extraction task.

62.9k

GEO Optimization

@capt-marbles

Generative Engine Optimization (GEO) for AI search visibility. Optimize content to appear in ChatGPT, Perplexity, Claude, and Google AI Overviews. Use when optimizing websites, pages, or content for LLM discoverability and citation.

94.8k

apple-search-ads

@ivangdavila

Plans, launches, and optimizes Apple Search Ads (Apple Ads, ASA) campaigns for iOS apps: bids, keywords, budgets, CPA, attribution. Use for paid iOS user acquisition and App Store ads — launching or restructuring campaigns, mining search-term reports, graduating keywords, defending brand terms, scaling spend, expanding to new countries, testing Custom Product Pages, wiring AdServices or SKAdNetwork attribution, automating reports and changes via the Campaign Management API, or diagnosing why CPA spiked, keywords get no impressions, a campaign stops spending its budget, ads got rejected, or ASA, SKAN, and MMP install counts disagree. Not for App Store listing optimization itself (ASO).

11.4k