Systems Lab

Agent skill

seo-ops

activeNeeds a keyActs undeclared798 words

Filed under Content and SEO.

From ericosiu/ai-marketing-skills · 21 skills · 3,449 · pushed 2026-08-16

What it does when it runs

Read from the skill and the 7 files bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.

Keys and connectors you must supply
  • AHREFS_TOKEN
  • BRAVE_API_KEY
  • CLIENT_SECRET
  • GOOGLE_CLIENT_SECRET
Hosts it reaches
  • accounts.google.com
  • ahrefs.com
  • api.ahrefs.com
  • api.search.brave.com
  • brave.com
  • console.cloud.google.com
  • hacker-news.firebaseio.com
  • levelingup.beehiiv.com
  • news.ycombinator.com
  • oauth2.googleapis.com
  • reddit.com
  • singlebrain.com
  • trends.google.com
  • www.example.com
  • www.googleapis.com
  • www.reddit.com
  • www.singlegrain.com
Tool permissions it declares
No allowed-tools in the frontmatter. It does act, so it runs under whatever permissions your session already grants.
Actions present in the files
shellwrites filesnetwork

Ask about seo-ops

Opens your assistant with this page's verified links already in the prompt.

Is this safe to install?ClaudeChatGPT
Adapt it to my stackClaudeChatGPT
What else do I need for it to workClaudeChatGPT
Rather ask a human? Talk to Cheetah
git clone --depth 1 --filter=blob:none --sparse https://github.com/ericosiu/ai-marketing-skills.git /tmp/ai-marketing-skills
git -C /tmp/ai-marketing-skills sparse-checkout set "seo-ops"
mkdir -p ~/.claude/skills/seo-ops
cp -R "/tmp/ai-marketing-skills/seo-ops/." ~/.claude/skills/seo-ops/

Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗

The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.

Before you install: this skill will not complete its job on a bare agent. It needs AHREFS_TOKEN, BRAVE_API_KEY, CLIENT_SECRET, GOOGLE_CLIENT_SECRET, which you have to obtain separately.

Reproduced in full from ericosiu/ai-marketing-skills/blob/2eb0f34edb8d6111ca8b2930fed92413c9af7002/seo-ops/SKILL.md, which is licensed MIT (repository). 798 words, 20 headings.

AI SEO Ops

Preamble (runs on skill start)

# Version check (silent if up to date)
python3 telemetry/version_check.py 2>/dev/null || true

# Telemetry opt-in (first run only, then remembers your choice)
python3 telemetry/telemetry_init.py 2>/dev/null || true

Privacy: This skill logs usage locally to ~/.ai-marketing-skills/analytics/. Remote telemetry is opt-in only. No code, file paths, or repo content is ever collected. See telemetry/README.md.


AI-powered SEO operations: keyword intelligence, competitor gap analysis, GSC optimization, and trend detection.

When to Use

  • User asks for keyword research, content brief, or SEO analysis
  • User wants to find quick-win keywords from Google Search Console
  • User needs a competitor gap analysis
  • User wants to identify trending topics for content creation
  • User asks about decaying content or traffic drops
  • User wants a prioritized list of keywords to target

Tools

Content Attack Brief (content_attack_brief.py)

Full keyword intelligence pipeline. Requires AHREFS_TOKEN and GSC auth.

# Run the full brief
python content_attack_brief.py

What it produces:

  • Topic fingerprint from your content library
  • BOFU money keywords ranked by Impact × Confidence
  • Trending keywords with sparkline visualizations
  • Competitor gap analysis (keywords they rank for, you don't)
  • Decaying page alerts (traffic drops >30%)
  • Execution pipeline (auto-create → semi-auto → team)

Output: Prints formatted report to stdout + saves JSON to OUTPUT_DIR/content-attack-brief-latest.json

GSC Client (gsc_client.py)

Google Search Console API client. Works as CLI or importable library.

# CLI usage
python gsc_client.py --queries 50 --days 28
python gsc_client.py --striking                    # Striking distance keywords (pos 4-20)
python gsc_client.py --pages 100 --days 7
python gsc_client.py --trend                       # Daily click/impression trend
python gsc_client.py --devices                     # Mobile vs desktop split
python gsc_client.py --sites                       # List verified properties
python gsc_client.py --json --queries 25           # JSON output
# Library usage
from gsc_client import GSCClient

gsc = GSCClient()
rows = gsc.striking_distance(days=28, min_position=4, max_position=20)
for row in rows:
    print(f"{row['keys'][0]}: pos {row['position']:.1f}, {row['impressions']} impressions")

GSC Auth (gsc_auth.py)

One-time OAuth setup for Google Search Console access.

python gsc_auth.py
# Opens browser → Google Sign-In → saves token locally

Trend Scout (trend_scout.py)

Multi-source trend detection. No API keys required for basic functionality.

python trend_scout.py

Sources: Google Trends RSS, Hacker News, Reddit, X/Twitter (needs BRAVE_API_KEY), YouTube outlier detection

Output: Prints summary + saves JSON to OUTPUT_DIR/flash-trends-latest.json and markdown report.

Configuration

All scripts read from environment variables. Copy .env.example to .env and fill in your values.

Required:

  • GSC_SITE_URL — your Google Search Console property URL
  • GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRET — for GSC OAuth
  • YOUR_DOMAIN — your root domain

Optional:

  • AHREFS_TOKEN — enables Ahrefs keyword data and competitor analysis
  • COMPETITORS — comma-separated competitor domains
  • BRAVE_API_KEY — enables X/Twitter trend scanning
  • CONTENT_VERTICALS — comma-separated topics for trend relevance scoring
  • TREND_SUBREDDITS — comma-separated subreddits to monitor

Scoring Model

Keywords are scored on two axes:

Impact (0-10): Volume + CPC + Funnel Stage + Trend direction Confidence (0-10): Keyword Difficulty + Current ranking position + Topic authority

Priority = Impact × Confidence (max 100)

Funnel Classification

  • BOFU: Commercial/transactional intent, or keywords containing "agency", "services", "pricing", "best", "vs", "hire"
  • MOFU: Informational with buying signals — "how to", "guide", "roi", "case study"
  • TOFU: Pure informational

Recommended Workflow

  1. Weekly: Run content_attack_brief.py for the full intelligence report
  2. Daily: Run gsc_client.py --striking to monitor striking distance keywords
  3. 2x/week: Run trend_scout.py to catch trending topics early
  4. Monthly: Review competitor gaps and adjust COMPETITORS list

SEO/AEO/GEO Closed Loop

Use analytics readbacks before promoting any SEO, AEO, GEO, or content-refresh playbook change.

Inputs:

  • GSC clicks, impressions, CTR, average position, queries, pages
  • GA4 sessions, engaged sessions, conversions, assisted leads
  • Ahrefs rankings, backlinks, traffic estimates, keyword movement
  • ClickFlow opportunities where available
  • AI-search / answer-engine / GEO visibility where available
  • CMS/page change log

Judgment:

  • Compare baseline vs candidate windows.
  • Segment by page, query, topic, intent, and source.
  • Track confounders: seasonality, indexing lag, brand spikes, campaigns, tracking changes, and unrelated site edits.

Promotion rule:

  • Promote the playbook patch only if the candidate beats baseline or exposes a repeatable signal.
  • Otherwise mark it unproven, keep testing, or rollback.

Common readback windows:

  • Content refresh: 7, 14, 28, and 56 days
  • New content: 14, 28, 56, and 90 days
  • Technical SEO fix: daily for 7 days, then 28-day readback
  • AEO/GEO visibility: weekly, because answer engines are noisy gremlins with citations

Required readback fields:

  • change made
  • owner
  • page/query/topic affected
  • baseline window
  • candidate window
  • source systems pulled
  • primary and secondary metrics
  • caveats
  • decision: promote / keep testing / rollback / unproven
  • next playbook patch

Dependencies

pip install -r requirements.txt

Files bundled with it

These load only when the skill asks for them, so they cost nothing until it runs.

Other skills for the same job

Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.

Need help setting it up?

This page tells you what seo-ops does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.

Book a call →

The directory stays free. There is nothing gated behind this.