Gsc Analyst banner
aurelien-dio aurelien-dio

Gsc Analyst

Development community

Description

Claude Code skill that turns Google Search Console exports into a prioritized SEO action plan: fitted CTR curves, statistically tested anomalies, SERP absorption detection

Installation

This entry records only its repository, not the path inside it, so there is no exact command to give. Open the source below and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

README

GSC Analyst

A Claude Code skill that turns a Google Search Console export into a prioritized SEO action plan.

Dropping Search Console CSVs into an AI agent already works. The problem is that the analysis it produces is fluent and often wrong, because Search Console data invites specific mistakes: average position read as a rank, CTR anomalies that are sampling noise, traffic "declines" that are last November, and AI Overview impact asserted as fact when Search Console does not report it.

This skill encodes what an experienced SEO checks before drawing a conclusion.

Install

git clone https://github.com/aurelien-dio/gsc-analyst.git
cd gsc-analyst
./install.sh

Then open Claude Code and say: *"analyze this Search Console export"* with the ZIP from Search Console's Export button.

Requires Python 3.9+ and Claude Code. Dependencies install into an isolated venv at `~/.claude/skills/gsc-analyst/.venv/`; your system Python is untouched, and `./uninstall.sh` removes everything.

What it analyzes

Analysis What it answers
Brand / non-brand split Is SEO growing, or is it harvesting existing demand?
Year-over-year trend Is traffic actually falling, or is this seasonal?
SERP absorption cohort Which queries lost clicks with ranking intact?
CTR anomalies Which titles underperform their position, significantly?
Striking distance Where does a rank gain convert into real clicks?
Cannibalization Which queries have several of your URLs competing?
Concentration How much traffic rests on how few pages?
Device and country Where does the traffic mix explain poor aggregates?

The parts that are not obvious

**Average position is never treated as a rank.** It is an impression-weighted mean, a query alternating between 3 and 15 reports 9, a position it never held. Every position-derived claim is scoped accordingly.

**The expected CTR curve is fitted from your own data**, not taken from a published ta