SEO Operations
AI SEO Ops

python3 telemetry/versioncheck.py 2>/dev/null || true
# AI SEO Ops ## Preamble (runs on skill start) ```bash # 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.
Overview
AI-powered SEO operations: keyword intelligence, competitor gap analysis, GSC optimization, and trend detection.
Manual install (npx, ZIP)
npx skills add ericosiu/ai-marketing-skills --skill seo-ops -g -a claude-codenpx degit ericosiu/ai-marketing-skills/seo-ops#main ~/.claude/skills/seo-opsConnects with Agent Alley MCP · agentalley.io/mcp
Files included
SKILL.md5.8 KB
Read SKILL.md here
Show the full text177 lines
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. Seetelemetry/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 URLGOOGLE_CLIENT_ID/GOOGLE_CLIENT_SECRET— for GSC OAuthYOUR_DOMAIN— your root domain
Optional:
AHREFS_TOKEN— enables Ahrefs keyword data and competitor analysisCOMPETITORS— comma-separated competitor domainsBRAVE_API_KEY— enables X/Twitter trend scanningCONTENT_VERTICALS— comma-separated topics for trend relevance scoringTREND_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
- Weekly: Run
content_attack_brief.pyfor the full intelligence report - Daily: Run
gsc_client.py --strikingto monitor striking distance keywords - 2x/week: Run
trend_scout.pyto catch trending topics early - Monthly: Review competitor gaps and adjust
COMPETITORSlist
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
| 1 | # AI SEO Ops |
| 2 | |
| 3 | ## Preamble (runs on skill start) |
| 4 | |
| 5 | |
| 6 | # Version check (silent if up to date) |
| 7 | python3 telemetry/version_check.py 2>/dev/null || true |
| 8 | |
| 9 | # Telemetry opt-in (first run only, then remembers your choice) |
| 10 | python3 telemetry/telemetry_init.py 2>/dev/null || true |
| 11 | |
| 12 | |
| 13 | > **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`. |
| 14 | |
| 15 | |
| 16 | |
| 17 | AI-powered SEO operations: keyword intelligence, competitor gap analysis, GSC optimization, and trend detection. |
| 18 | |
| 19 | ## When to Use |
| 20 | |
| 21 | User asks for keyword research, content brief, or SEO analysis |
| 22 | User wants to find quick-win keywords from Google Search Console |
| 23 | User needs a competitor gap analysis |
| 24 | User wants to identify trending topics for content creation |
| 25 | User asks about decaying content or traffic drops |
| 26 | User wants a prioritized list of keywords to target |
| 27 | |
| 28 | ## Tools |
| 29 | |
| 30 | ### Content Attack Brief (`content_attack_brief.py`) |
| 31 | |
| 32 | Full keyword intelligence pipeline. Requires `AHREFS_TOKEN` and GSC auth. |
| 33 | |
| 34 | |
| 35 | # Run the full brief |
| 36 | python content_attack_brief.py |
| 37 | |
| 38 | |
| 39 | **What it produces:** |
| 40 | Topic fingerprint from your content library |
| 41 | BOFU money keywords ranked by Impact × Confidence |
| 42 | Trending keywords with sparkline visualizations |
| 43 | Competitor gap analysis (keywords they rank for, you don't) |
| 44 | Decaying page alerts (traffic drops >30%) |
| 45 | Execution pipeline (auto-create → semi-auto → team) |
| 46 | |
| 47 | **Output:** Prints formatted report to stdout + saves JSON to `OUTPUT_DIR/content-attack-brief-latest.json` |
| 48 | |
| 49 | ### GSC Client (`gsc_client.py`) |
| 50 | |
| 51 | Google Search Console API client. Works as CLI or importable library. |
| 52 | |
| 53 | |
| 54 | # CLI usage |
| 55 | python gsc_client.py --queries 50 --days 28 |
| 56 | python gsc_client.py --striking # Striking distance keywords (pos 4-20) |
| 57 | python gsc_client.py --pages 100 --days 7 |
| 58 | python gsc_client.py --trend # Daily click/impression trend |
| 59 | python gsc_client.py --devices # Mobile vs desktop split |
| 60 | python gsc_client.py --sites # List verified properties |
| 61 | python gsc_client.py --json --queries 25 # JSON output |
| 62 | |
| 63 | |
| 64 | |
| 65 | # Library usage |
| 66 | from gsc_client import GSCClient |
| 67 | |
| 68 | gsc = GSCClient() |
| 69 | rows = gsc.striking_distance(days=28, min_position=4, max_position=20) |
| 70 | for row in rows: |
| 71 | print(f"{row['keys'][0]}: pos {row['position']:.1f}, {row['impressions']} impressions") |
| 72 | |
| 73 | |
| 74 | ### GSC Auth (`gsc_auth.py`) |
| 75 | |
| 76 | One-time OAuth setup for Google Search Console access. |
| 77 | |
| 78 | |
| 79 | python gsc_auth.py |
| 80 | # Opens browser → Google Sign-In → saves token locally |
| 81 | |
| 82 | |
| 83 | ### Trend Scout (`trend_scout.py`) |
| 84 | |
| 85 | Multi-source trend detection. No API keys required for basic functionality. |
| 86 | |
| 87 | |
| 88 | python trend_scout.py |
| 89 | |
| 90 | |
| 91 | **Sources:** Google Trends RSS, Hacker News, Reddit, X/Twitter (needs `BRAVE_API_KEY`), YouTube outlier detection |
| 92 | |
| 93 | **Output:** Prints summary + saves JSON to `OUTPUT_DIR/flash-trends-latest.json` and markdown report. |
| 94 | |
| 95 | ## Configuration |
| 96 | |
| 97 | All scripts read from environment variables. Copy `.env.example` to `.env` and fill in your values. |
| 98 | |
| 99 | Required: |
| 100 | `GSC_SITE_URL` — your Google Search Console property URL |
| 101 | `GOOGLE_CLIENT_ID` / `GOOGLE_CLIENT_SECRET` — for GSC OAuth |
| 102 | `YOUR_DOMAIN` — your root domain |
| 103 | |
| 104 | Optional: |
| 105 | `AHREFS_TOKEN` — enables Ahrefs keyword data and competitor analysis |
| 106 | `COMPETITORS` — comma-separated competitor domains |
| 107 | `BRAVE_API_KEY` — enables X/Twitter trend scanning |
| 108 | `CONTENT_VERTICALS` — comma-separated topics for trend relevance scoring |
| 109 | `TREND_SUBREDDITS` — comma-separated subreddits to monitor |
| 110 | |
| 111 | ## Scoring Model |
| 112 | |
| 113 | Keywords are scored on two axes: |
| 114 | |
| 115 | **Impact (0-10):** Volume + CPC + Funnel Stage + Trend direction |
| 116 | **Confidence (0-10):** Keyword Difficulty + Current ranking position + Topic authority |
| 117 | |
| 118 | **Priority = Impact × Confidence** (max 100) |
| 119 | |
| 120 | ## Funnel Classification |
| 121 | |
| 122 | **BOFU:** Commercial/transactional intent, or keywords containing "agency", "services", "pricing", "best", "vs", "hire" |
| 123 | **MOFU:** Informational with buying signals — "how to", "guide", "roi", "case study" |
| 124 | **TOFU:** Pure informational |
| 125 | |
| 126 | ## Recommended Workflow |
| 127 | |
| 128 | **Weekly:** Run `content_attack_brief.py` for the full intelligence report |
| 129 | **Daily:** Run `gsc_client.py --striking` to monitor striking distance keywords |
| 130 | **2x/week:** Run `trend_scout.py` to catch trending topics early |
| 131 | **Monthly:** Review competitor gaps and adjust `COMPETITORS` list |
| 132 | |
| 133 | ## SEO/AEO/GEO Closed Loop |
| 134 | |
| 135 | Use analytics readbacks before promoting any SEO, AEO, GEO, or content-refresh playbook change. |
| 136 | |
| 137 | Inputs: |
| 138 | GSC clicks, impressions, CTR, average position, queries, pages |
| 139 | GA4 sessions, engaged sessions, conversions, assisted leads |
| 140 | Ahrefs rankings, backlinks, traffic estimates, keyword movement |
| 141 | ClickFlow opportunities where available |
| 142 | AI-search / answer-engine / GEO visibility where available |
| 143 | CMS/page change log |
| 144 | |
| 145 | Judgment: |
| 146 | Compare baseline vs candidate windows. |
| 147 | Segment by page, query, topic, intent, and source. |
| 148 | Track confounders: seasonality, indexing lag, brand spikes, campaigns, tracking changes, and unrelated site edits. |
| 149 | |
| 150 | Promotion rule: |
| 151 | Promote the playbook patch only if the candidate beats baseline or exposes a repeatable signal. |
| 152 | Otherwise mark it `unproven`, keep testing, or rollback. |
| 153 | |
| 154 | Common readback windows: |
| 155 | Content refresh: 7, 14, 28, and 56 days |
| 156 | New content: 14, 28, 56, and 90 days |
| 157 | Technical SEO fix: daily for 7 days, then 28-day readback |
| 158 | AEO/GEO visibility: weekly, because answer engines are noisy gremlins with citations |
| 159 | |
| 160 | Required readback fields: |
| 161 | change made |
| 162 | owner |
| 163 | page/query/topic affected |
| 164 | baseline window |
| 165 | candidate window |
| 166 | source systems pulled |
| 167 | primary and secondary metrics |
| 168 | caveats |
| 169 | decision: promote / keep testing / rollback / unproven |
| 170 | next playbook patch |
| 171 | |
| 172 | ## Dependencies |
| 173 | |
| 174 | |
| 175 | pip install -r requirements.txt |
| 176 | |
| 177 |
Details
- License
- MIT
- Stars on the repo
- ★ 3,615
- Checked
- Source
- ericosiu/ai-marketing-skills ↗
- Creator
- ericosiu · 34 listings
Similar skills
See all →
SkillAgent Browsing Auditor
SkillBacklink Profile Analysis
SkillCMS Configuration Helper
SkillBacklink Comparison Tool
SkillWeb Vitals Auditor
SkillSEO Publishing LoopMore from ericosiu
SkillVideo Moment Extraction Agent
SkillConversion Operations
SkillFinance Operations
SkillRevenue Intelligence Dashboard
SkillSales Pipeline Manager
SkillValue-Based Sales Playbook