Skills iannuttall seo

seo

Use it when:
You want to know why Google traffic dropped, which pages are close to page one, whether a page is indexed, or how a Google update hit you.
It does:
Runs the free seo CLI or its MCP tools: Search Console reports, before-and-after comparisons, index checks, crawls, internal links, keyword and backlink research.
You get:
Answers from your own numbers, each result ending with the next command to run.
Keeps:
A list of the issues it found, with the ones you marked fixed or ignored, so old issues aren't reported again as new.
Needs:
The seo CLI, run through npx, or its hosted MCP server, and a Google sign-in for your data; crawls and the AI-writing lint need no sign-in.
Also:
Lints drafts for lines that read as AI-written, and builds a new data-driven site on Astro and Cloudflare, one step at a time.

TL;DR

seo is a free SEO tool for agents, shipped as a CLI and an MCP server, and this skill is its map. The agent uses the MCP tools when they're connected, hosted at seoskill.dev or run locally, and otherwise the seo command. Crawling a site, local and staging ones included, needs no sign-in, and neither does the lint that flags AI-sounding lines in drafts and live pages. Your own data, from Search Console reports and raw rows to Google Analytics, Bing Webmaster Tools and Clicky, needs a sign-in link you approve. Other commands inspect one URL's index status and queries, compare a site before and after a date alongside Google's updates, label Google's indexing reasons, suggest internal links, research keywords, competitors and backlinks through DataForSEO or Ahrefs, and scaffold a data-driven site on Astro and Cloudflare. Results start small and expand by section or detail. The skill also tells the agent to keep a list of issues between sessions, in issues.json or a file in your project, report a Google update's effect as timing rather than its cause, and rerun the indexing check weekly with the same settings, keeping each result to compare by URL.

Summarizes the skill at defe17e.

npx skills add https://github.com/iannuttall/seo --skill seo
Total Downloads
25,400 on skills.sh, Nov 9, 2026
Repo stars
610 iannuttall/seo
First seen
Jul 11, 2026 on skills.sh
Weekly Downloads
7K
+18411% over the 8 weeks to Nov 9
Weekly values
Week toInstalls
Sep 2138
Sep 2842
Oct 548
Oct 1229
Oct 194,515
Oct 266,977
Nov 26,112
Nov 97,034
Category

SEO, copy, conversion, social media and e-commerce.

Type

Operates a CLI, API, app or bundled script to get something done.

Effect

Its own steps create or change files, git state or local tools.

Needs

A specific command-line tool or desktop app must be installed, such as gh, agent-browser, LibreOffice, Obsidian or a vendor CLI.

An account, API key or paid plan with an outside service.

Publisher

A verified publisher on skills.sh, or the company or maintainer behind the product the skill operates.

Topics
Stack

SKILL.md

From iannuttall/seo at defe17e. Checked daily, last changed Nov 6, 2026.

Frontmatter
name: seo
description: Free Google Search Console MCP server and CLI for AI agents. Reads your real Search Console, Google Analytics, Bing Webmaster Tools and Clicky data, plus DataForSEO and Ahrefs keyword research. Use it for any SEO question - why Google traffic or clicks dropped, organic traffic decline, quick wins, low CTR, striking distance keywords, content decay and declining pages, keyword cannibalization, indexing and URL inspection, one page's queries, Google update impact, the questions people ask AI that show in Search Console, competitor keywords, backlinks, technical SEO crawls, redirects, internal links, client SEO reports and building a new programmatic SEO site. Returns facts from your own data, never guesses.

seo

seo reads Search Console, Google Analytics, Bing Webmaster Tools and Clicky data, crawls sites, checks live pages, and gets keyword and backlink data from DataForSEO or Ahrefs.

Use the MCP tools when they are connected (hosted at https://seoskill.dev/mcp, or local with seo mcp serve). Otherwise use the CLI: seo, or npx -y seo. Add --json for JSON.

seo crawl --url <url> needs no sign-in and works on any site, local and staging too. The other commands need the person's data: seo login prints a link for them to approve, then run it again.

CLI MCP tool Returns
seo report --site <site> seo_report Search Console overview and sections; with no site, last week across the sites in the weekly site audit beta
seo page --url <url> seo_page One URL: live page, index status, queries
seo compare --site <site> --date <date> seo_compare Before and after a date, with Google updates
seo index --site <site> seo_index Google's indexing reasons, labelled, and pages that lost their clicks
seo research <action> seo_research Keywords, keyword ideas, SERP and SERP overlap, top pages, competitors, backlinks, pages by backlinks, link gaps, AI answer citations, for a site, subfolder (example.com/blog/) or page; provider optional; next pages are free for a day
seo data --site <site> seo_data Raw Search Console, Bing, Clicky or Google Analytics rows
seo crawl --url <url> seo_crawl Technical issues across a site
seo internal-links --site <site> or --url <url> seo_internal_links Links to add across a site, or to one page
seo lint <files> or --url <url> seo_lint Lines in a draft, title, description or live page that read as AI-written, each with a fix; --only ai for AI patterns alone; no sign-in
seo sites seo_sites The properties the person can read
seo site new <folder>, then seo site guide <step> CLI only Build a new data-driven site on Astro and Cloudflare, one step at a time. Its build runs seo site check

Each result ends with the command to run next. Start small and ask for more: a site, then a --section (section), then --detail rows or full. seo <command> --help shows the options.

Issues kept between sessions

seo report --site <site> --section issues (section "issues") checks the site again and keeps a list of what it found, each with an id, the latest check (found, not found or not checked) and what the person marked it. When the person says they fixed an issue or want it left alone, record it: --mark fixed or --mark ignored with --issues <id>,<id> (mark, issues, optional note). Read the list at the start of a session instead of reporting old issues as new. "Fixed" is the person's word; the list says when the check still finds it. The CLI and local MCP keep the list in issues.json; the hosted server keeps it only for sites in the weekly site audit. For any other site the result says the server is not storing it and ends with the list as JSON ({"version":1,"sites":{"<site>":[...]}}, the issues.json shape): save it in the person's project, such as .seo/issues.json, and pass its contents as saved with the next issues or mark call so marks carry over.

Google updates

When the person asks whether a Google update hit the site, run seo report --site <site> --section google-updates (section "google-updates"). It compares the latest ranking update's days with the same days before and says whether that is outside the site's normal movement. --end-date (end_date) picks an earlier update. Report it as timing, never as the cause.

Indexing reasons each week

seo index inspects known URLs in a fixed order (lost-click pages, Search Console pages by clicks, the sitemap, the rest), 100 by default, and labels each Google reason fix, check, expected or indexed from a live check. In the CLI or local MCP, --max-urls (max_urls) asks for more, up to today's quota, and reuses saved inspections up to 7 days old, so paging or --detail full costs no quota. Run it once for a baseline and keep the full result (--detail full). Run it again each week with the same number and compare by URL and reason: a new reason, or a URL that moved to fix, is what to report. seo keeps no history, so you store the results. Once this runs weekly, the person can turn off Search Console's indexing emails. For one URL from such an email, run seo page --url <url>.