Competitor Content Cadence Monitor
Periodically diffs each competitor's sitemap and content to detect newly published and materially updated URLs, extract…
Updated
Use this skill
$ npx skills add seoskills.sh/competitor-content-monitorAbout this skill
Competitor Content Cadence Monitor is a Competitor and SERP Analysis skill for AI agents, published in the seoskills.sh catalog. Reach for it when your work involves sERP breakdowns, competitor profiling, and gap analysis. Install it with one command and it runs inside your own agent, so the work happens in your workflow, not a separate SEO tool.
SKILL.md
Competitor Content Cadence Monitor
AGENT ROLE: Autonomous competitive-content agent. Diff each competitor's current sitemap/content against the prior snapshot, classify new vs updated URLs, and emit the JSON in references/output.schema.json. Stateful across runs via previous.
OBJECTIVE
For each competitor, detect which URLs are newly published or materially updated since the last run, extract their topic and publish/modified dates, and summarize content velocity and topical focus — a stateful intelligence feed.
INPUTS
competitors(REQUIRED): array of{ domain, sitemap_url? }(sitemap auto-discovered from robots.txt if omitted).previous(OPTIONAL): prior run'ssnapshots(competitor→{url→lastmod}); absent on first run (baseline).sample_new_content(OPTIONAL bool, default true): fetch new URLs to extract title/topic (adds requests).max_urls_per_competitor(OPTIONAL, default 5000).
AUTHENTICATION / RUNTIME
- No API key. Keyless HTTPS GET, UA
seoskills-content-monitor/1.0, honor robots.
EXPECTED TOOL CALLS
- Run
scripts/competitor_content.py --competitors competitors.json [--previous previous.json]. - Per competitor: fetch robots.txt → sitemap index → child sitemaps; collect
{loc, lastmod}. IFsample_new_content: GET each NEW url to extract<title>/datePublished.
PROCEDURE (deterministic, per competitor)
STEP 1 — DISCOVER + PARSE the sitemap(s); collect {url: lastmod} (up to the cap).
STEP 2 — IF no previous snapshot THEN status="baseline"; return the snapshot only (no diff).
STEP 3 — DIFF vs previous:
NEW: url absent from the previous snapshot.UPDATED: url present butlastmodnewer than before.REMOVED: url in previous but gone now (deindexed/pruned). STEP 4 — ENRICH new URLs (if enabled): GET title +datePublished; classify topic from URL path + title tokens (bounded, best-effort). STEP 5 — VELOCITY:new_per_weeksince last run; topic distribution of new content. EMIT per-competitor diffs + velocity, and the currentsnapshotsfor persistence.
RATE LIMITS & ERROR HANDLING
- Politeness: ≤ 5 concurrent per host, ≥ 150ms spacing. Sitemap fetch failure → mark competitor
sitemap_unreachable, carry forward its previous snapshot (do not report false NEW/REMOVED). - Content sampling
429/503from a host → stop sampling that host, keep the diff (markenrichment="partial"). - HARD cap
max_urls_per_competitor(hit_cap=true).
MISSING / INSUFFICIENT DATA
- IF a sitemap lacks
lastmodTHENUPDATEDcannot be detected for that competitor — only NEW/REMOVED — setupdate_detection=falseand note it. - First run per competitor is always baseline — expected, not an error.
- Never assert REMOVED from a single failed sitemap fetch; require a successful fetch showing the URL absent.
OUTPUT
One JSON object per references/output.schema.json. The snapshots MUST be persisted for the next run.
FILES
scripts/competitor_content.py— sitemap discovery/diff, new-content enrichment, velocity.references/output.schema.json— output contract.
Not using the CLI? Copy the SKILL.md and paste it straight into ChatGPT, Claude, or any agent.
Embed a badge
Install into your agent
More in Competitor and SERP Analysis
seo-competitor-pages
Generate SEO-optimized competitor comparison and alternatives pages. Covers "X vs Y" layouts, "alternatives to X" pages, feature matrices, schema markup, and conversion optimization. Use when user says "comparison page", "vs page", "alternatives page", "competitor comparison", "X vs Y", "versus", "compare competitors", or "alternative to".
Organic Share-of-Voice Tracker
Tracks rankings for a keyword universe and computes each domain's organic share of voice weighted by position CTR and s…
SERP Competitor Landscape Mapper
Fetches SERPs for a keyword universe and tallies each domain's ranking positions to compute SERP presence and average p…
SERP Winners & Losers Detector
Compares ranking snapshots for a keyword set across two periods and computes each domain's net position change and keyw…
Competitor Content Gap Matrix
Builds each competitor's ranking-keyword set and diffs them against the target's to find shared gaps — terms multiple c…