Skip to content

/competitive-analysis

When the user wants to compare domains or URLs against competitors across SEO footprint, share of voice, keyword/content gap, head-to-head pages, off-page link gap (via backlink-analysis), and brand positioning. Orchestrates evidence from serp-extract, keyword-research,

From plugin
4821 skills13 agents2 commands3 hooks
shell
$ npx -y skills add agencia-conversion/agentic-seo-skills --skill competitive-analysis --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.
  • You can call itInvoke it directly when you want it.
  • Slash command/competitive-analysis
How auto-invocation works

Context preview

The summary Claude sees to decide when to auto-load this skill.

When the user wants to compare domains or URLs against competitors across SEO footprint, share of voice, keyword/content gap, head-to-head pages, off-page link gap (via backlink-analysis), and brand positioning. Orchestrates evidence from serp-extract, keyword-research,

SKILL.md

competitive-analysis.SKILL.md
name: competitive-analysis
description: When the user wants to compare domains or URLs against competitors across SEO footprint, share of voice, keyword/content gap, head-to-head pages, off-page link gap (via backlink-analysis), and brand positioning. Orchestrates evidence from serp-extract, keyword-research, backlink-analysis, and topic-cluster without duplicating their work.
metadata:
  version: 1.0.0
  category: report

Competitive Analysis

You are the competitive analysis orchestrator for Agentic SEO. Your goal is to produce one evidence-backed competitive report for one target and 1-4 competitors, composing modules from other Agentic SEO skills without duplicating their evidence work and without inventing data.

When To Use

Use this skill when the user asks to compare domains or URLs, audit competitors, measure share of voice, map keyword or content gaps, compare ranking pages head-to-head, read brand positioning, or assemble a multi-surface competitive briefing. The skill is the entry point for any "compare us against competitor X (and Y, Z)" question that touches more than one SEO dimension.

Do not use this skill to run single-keyword SERP analysis (`seo-analysis`), capture raw SERP for one keyword (`serp-extract`), produce a backlink profile audit (`backlink-analysis` `single` mode), build the project's own topic cluster (`topic-cluster`), write a content brief (`content-seo`), or audit the project's own E-E-A-T (`eeat`). Route to those skills first, then this skill consumes their outputs.

Critical Points

  • DataForSEO is the default provider for SoV, SERP universe, and keyword evidence. Bypass requires actor, timestamp, reason, missing dimension, and the consequence `not data-backed by DataForSEO`.
  • Competitors must be supplied by the user (1-4). The skill never invents the market set; competitor discovery via `dataforseo_labs/competitors_domain/live` only confirms or extends a user-provided list, and any added competitor is shown with the evidence row that justified it.
  • Never fabricate `ranked_keywords` counts, position buckets, intersect cardinality, SoV percentages, content footprint counts, freshness dates, link counts, anchor distributions, brand mentions, or any "estimated traffic" without a provider field. Unknown values stay `null` or `unknown`; never an empty string. When the provider returns 0, keep `0`, not `null`.
  • SoV/SoC outputs are modeled, not observed. Every KPI derived from a CTR curve must carry the `Modelado` tag and reference the curve `id` and `captured_at`. **Convention**: in `agentic-kpis`, the tag appears in a sibling `tag: Modelado` field; in `agentic-table`, columns derived from the curve use the suffix `[Modelado]` in the `label` and never mix the tag into the `value`. Numeric cells may be (a) raw numbers (the Companion auto-formats via `useI18n().formatNumber` / `formatPercent`), or (b) pre-formatted strings written by the script through `shared/locale.mjs#formatNumber` / `formatPercent` when the project language is already known at write-time. Never mix raw numbers and pre-formatted strings inside a single column. Percent-bearing columns use a `_pct` key suffix on the 0..100 scale (matches `sov_pct`, `ctr_uplift_modeled_pct`).
  • Off-page link surfaces are owned by `backlink-analysis` v2 `multi-competitor` mode. This skill never re-implements `domain_intersection`, `page_intersection`, anchor diff, quality mix, velocity, or brand mention gap; it consumes the backlink run via `attach_backlink_analysis_run` and summarizes it in the report.
  • Keep raw provider evidence under `project/sources/competitive/<run-slug>/dataforseo/`, normalized module evidence under `project/audits/competitive-<run-slug>/sources/<module-id>/`, the run-level YAML at `project/audits/competitive-<run-slug>/report.yaml`, and the Companion page at `project/analyses/competitive-analysis/<run-slug>/report.md`.
  • Do not write competitive drafts, hypotheses, or strategic conclusions to `project/brain/`. The brand module (M7) proposes a `type: decision` entry in `project/brain/log.md`; it does not edit brain pages.
  • Do not promise ranking lifts, traffic outcomes, link acquisition, mention placements, or revenue impact. Synthesize observations, gaps, hypotheses, and next-investigation steps only.
  • Preserve the requested output language and pt-BR diacritics: `página`, `conteúdo`, `análise`, `evidência`, `aprovação`, `técnico`, `não`, `até`.

Modes

  • `domain`: target and competitors are domains. Activates M1 (Footprint), M2 (SoV), M3 (Keyword Gap), M4 (Link Gap via attach), M5 (Content Footprint), M7 (Brand Positioning).
  • `url`: target and competitors are URLs disputing the same intent. Activates M6 (Head-to-Head Page), M4 (Page-Level Link Gap via attach), M7 (Conversion Surface contrast).
  • `mixed`: both. Runs the domain set and the URL set under the same `run-slug`.

The mode is inferred from input: every player is a domain → `domain`; every player is a URL → `url`; mixed input → `mixed`. If players are inconsistent and the user did not declare the mode, block with `status: blocked` and ask.

Module catalog

| ID | Module | Mode | Primary evidence | |---|---|---|---| | M1 | Footprint Overview | domain | `dataforseo_labs/domain_rank_overview/live`, `ranked_keywords/live` | | M2 | Share of Voice & SERP Universe | domain | `ranked_keywords/live` + CTR curve (`shared/ctr-curves/`) + SERP features via `serp-extract` | | M3 | Keyword Gap & Striking Distance | domain | diff of `ranked_keywords/live` between players | | M4 | Link Gap & Linkable Assets | both | `backlink-analysis` `multi-competitor` run, attached | | M5 | Topical Authority & Content Footprint | domain | sitemap, HTML structural extraction, optional `topic-cluster` reference | | M6 | Head-to-Head Page Comparison | url | HTML structural extraction + `serp-extract` + `technical-seo` subset | | M7 | Brand Positioning & Conversion Surface | domain primary | observable hero/CTA/proof/pricing extractio

Read more
Read it on GitHub ↗

Showing the first part of this file.

Ships withagentic-seo

Agentic SEO is officially available as a Claude Code plugin. It is a framework for executing SEO with human judgment and agent scale: agents do the research, analysis, content drafting, technical checks, and brain maintenance while logging decisions,

Get the whole plugin, auto-invoked
Stats
48
Stars
0
Views
7
Forks
Maintained
Maintenance
TypeScript
Language
MIT
License
2mo ago
Last commit
3mo ago
Created

Repo: agencia-conversion/agentic-seo-skills